Class: Gibberish::HMAC

Inherits:
Object
  • Object
show all
Defined in:
lib/gibberish/hmac.rb

Overview

Easy to use HMAC

Example

Gibberish::HMAC256('key', 'data')
  #=> 5031fe3d989c6d1537a013fa6e739da23463fdaec3b70137d828e36ace221bd0
Gibberish::HMAC1('key', 'data') # SHA1
#=> 104152c5bfdca07bc633eebd46199f0255c9f49d
Gibberish::HMAC224('key', 'data') # SHA224
  #=> 19424d4210e50d7a4521b5f0d54b4b0cff3060deddccfd894fda5b3b
Gibberish::HMAC384('key', 'data') # SHA384
  #=> c5f97ad9fd1020c174d7dc02cf83c4c1bf15ee20ec555b690ad58e62da8a00ee
      44ccdb65cb8c80acfd127ebee568958a
Gibberish::HMAC512('key', 'data') # SHA512
  #=> 3c5953a18f7303ec653ba170ae334fafa08e3846f2efe317b87efce82376253c
      b52a8c31ddcde5a3a2eee183c2b34cb91f85e64ddbc325f7692b199473579c58

OpenSSL CLI Interop

echo -n "stuff" | openssl dgst -sha256 -hmac 'password'

is the same as

Gibberish::HMAC256('password', 'stuff')

Constant Summary collapse

DIGEST =
{
  :sha1 => OpenSSL::Digest.new('sha1'),
  :sha224 => OpenSSL::Digest.new('sha224'),
  :sha256 => OpenSSL::Digest.new('sha256'),
  :sha384 => OpenSSL::Digest.new('sha384'),
  :sha512 => OpenSSL::Digest.new('sha512')
}

Class Method Summary collapse

Class Method Details

.digest(key, data, digest, opts = {}) ⇒ Object

Returns the HMAC for the key and data

Shorcut alias: Gibberish::HMAC(key, data)

Parameters:

  • key (String)
  • data (#to_s)
  • digest (Symbol)
  • opts (Hash) (defaults to: {})

Options Hash (opts):

  • :digest (Symbol) — default: :sha1

    the digest to encode with

  • :binary (Boolean) — default: false

    encode the data in binary, not Base64


46
47
48
49
50
51
52
53
# File 'lib/gibberish/hmac.rb', line 46

def self.digest(key, data, digest, opts={})
  data = data.to_s
  if opts[:binary]
    OpenSSL::HMAC.digest(DIGEST[digest], key, data)
  else
    OpenSSL::HMAC.hexdigest(DIGEST[digest], key, data)
  end
end