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