aboutsummaryrefslogtreecommitdiffstats
path: root/lib/openssl/hmac.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/openssl/hmac.rb')
-rw-r--r--lib/openssl/hmac.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/openssl/hmac.rb b/lib/openssl/hmac.rb
index 3d442761..9bc8bc8d 100644
--- a/lib/openssl/hmac.rb
+++ b/lib/openssl/hmac.rb
@@ -9,5 +9,45 @@ module OpenSSL
OpenSSL.fixed_length_secure_compare(self.digest, other.digest)
end
+
+ class << self
+ # :call-seq:
+ # HMAC.digest(digest, key, data) -> aString
+ #
+ # Returns the authentication code as a binary string. The _digest_ parameter
+ # specifies the digest algorithm to use. This may be a String representing
+ # the algorithm name or an instance of OpenSSL::Digest.
+ #
+ # === Example
+ # key = 'key'
+ # data = 'The quick brown fox jumps over the lazy dog'
+ #
+ # hmac = OpenSSL::HMAC.digest('SHA1', key, data)
+ # #=> "\xDE|\x9B\x85\xB8\xB7\x8A\xA6\xBC\x8Az6\xF7\n\x90p\x1C\x9D\xB4\xD9"
+ def digest(digest, key, data)
+ hmac = new(key, digest)
+ hmac << data
+ hmac.digest
+ end
+
+ # :call-seq:
+ # HMAC.hexdigest(digest, key, data) -> aString
+ #
+ # Returns the authentication code as a hex-encoded string. The _digest_
+ # parameter specifies the digest algorithm to use. This may be a String
+ # representing the algorithm name or an instance of OpenSSL::Digest.
+ #
+ # === Example
+ # key = 'key'
+ # data = 'The quick brown fox jumps over the lazy dog'
+ #
+ # hmac = OpenSSL::HMAC.hexdigest('SHA1', key, data)
+ # #=> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"
+ def hexdigest(digest, key, data)
+ hmac = new(key, digest)
+ hmac << data
+ hmac.hexdigest
+ end
+ end
end
end