lib/rbnacl/hmac/sha256.rb in rbnacl-1.1.0 vs lib/rbnacl/hmac/sha256.rb in rbnacl-2.0.0.pre

- old
+ new

@@ -1,39 +1,41 @@ # encoding: binary -module Crypto +module RbNaCl module HMAC # Computes an authenticator as HMAC-SHA-256 # - # The authenticator can be used at a later time to verify the provenence of + # The authenticator can be used at a later time to verify the provenance of # the message by recomputing the HMAC over the message and then comparing it to # the provided authenticator. The class provides methods for generating # signatures and also has a constant-time implementation for checking them. # # This is a secret key authenticator, i.e. anyone who can verify signatures # can also create them. # # @see http://nacl.cr.yp.to/auth.html class SHA256 < Auth - # Number of bytes in a valid key - KEYBYTES = NaCl::HMACSHA256_KEYBYTES + extend Sodium - # Number of bytes in a valid authenticator - BYTES = NaCl::HMACSHA256_BYTES + sodium_type :auth + sodium_primitive :hmacsha256 + sodium_constant :BYTES + sodium_constant :KEYBYTES - # The crypto primitive for the HMAC::SHA256 class - # - # @return [Symbol] The primitive used - def self.primitive - :hmac_sha256 - end - + sodium_function :auth_hmacsha256, + :crypto_auth_hmacsha256, + [:pointer, :pointer, :ulong_long, :pointer] + + sodium_function :auth_hmacsha256_verify, + :crypto_auth_hmacsha256_verify, + [:pointer, :pointer, :ulong_long, :pointer] + private - def compute_authenticator(message, authenticator) - NaCl.crypto_auth_hmacsha256(authenticator, message, message.bytesize, key) + def compute_authenticator(authenticator, message) + self.class.auth_hmacsha256(authenticator, message, message.bytesize, key) end - def verify_message(message, authenticator) - NaCl.crypto_auth_hmacsha256_verify(authenticator, message, message.bytesize, key) + def verify_message(authenticator, message) + self.class.auth_hmacsha256_verify(authenticator, message, message.bytesize, key) end end end end