lib/gibberish/hmac.rb in gibberish-1.0.0 vs lib/gibberish/hmac.rb in gibberish-1.0.1
- old
+ new
@@ -5,16 +5,34 @@
#
# Gibberish::HMAC('key', 'data') #=> 104152c5bfdca07bc633eebd46199f0255c9f49d
# Gibberish::HMAC('key', 'data', :digest => :sha256)
# #=> 5031fe3d989c6d1537a013fa6e739da23463fdaec3b70137d828e36ace221bd0
#
+ # ## OpenSSL CLI Interop
+ #
+ # echo -n "stuff" | openssl dgst -sha1 -hmac 'password'
+ #
+ # is the same as
+ #
+ # Gibberish::HMAC('password', 'stuff')
+ #
class HMAC
DIGEST = {
:sha1 => OpenSSL::Digest::Digest.new('sha1'),
:sha256 => OpenSSL::Digest::Digest.new('sha256')
}
+ # Returns the HMAC for the key and data
+ #
+ # Shorcut alias: Gibberish::HMAC(key, data)
+ #
+ # @param [String] key
+ # @param [#to_s] data
+ # @param [Hash] options
+ # @option opts [Symbol] :digest (:sha1) the digest to encode with
+ # @option opts [Boolean] :binary (false) encode the data in binary, not Base64
def self.digest(key, data, opts={})
+ data = data.to_s
digest_type = opts[:digest] || :sha1
if opts[:binary]
OpenSSL::HMAC.digest(DIGEST[digest_type], key, data)
else
OpenSSL::HMAC.hexdigest(DIGEST[digest_type], key, data)