Class: Miasma::Contrib::AwsApiCore::Hmac

Inherits:
Object
  • Object
show all
Defined in:
lib/miasma/contrib/aws.rb

Overview

HMAC helper class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kind, key) ⇒ self

Create new HMAC helper

Parameters:

  • kind (String)

    digest type (sha1, sha256, sha512, etc)

  • key (String)

    secret key



70
71
72
73
# File 'lib/miasma/contrib/aws.rb', line 70

def initialize(kind, key)
  @digest = OpenSSL::Digest.new(kind)
  @key = key
end

Instance Attribute Details

#digestOpenSSL::Digest (readonly)

Returns:

  • (OpenSSL::Digest)


61
62
63
# File 'lib/miasma/contrib/aws.rb', line 61

def digest
  @digest
end

#keyString (readonly)

Returns secret key.

Returns:

  • (String)

    secret key



63
64
65
# File 'lib/miasma/contrib/aws.rb', line 63

def key
  @key
end

Instance Method Details

#hex_sign(data, key_override = nil) ⇒ String

Sign the given data and return hexdigest

Parameters:

  • data (String)
  • key_override (Object) (defaults to: nil)

Returns:

  • (String)

    hex encoded signature



111
112
113
114
115
# File 'lib/miasma/contrib/aws.rb', line 111

def hex_sign(data, key_override = nil)
  result = OpenSSL::HMAC.hexdigest(digest, key_override || key, data)
  digest.reset
  result
end

#hexdigest_of(content) ⇒ String

Generate the hexdigest of the content

Parameters:

  • content (String)

    content to digest

Returns:

  • (String)

    hashed result



84
85
86
87
88
89
# File 'lib/miasma/contrib/aws.rb', line 84

def hexdigest_of(content)
  digest << content
  hash = digest.hexdigest
  digest.reset
  hash
end

#sign(data, key_override = nil) ⇒ Object

Sign the given data

Parameters:

  • data (String)
  • key_override (Object) (defaults to: nil)

Returns:

  • (Object)

    signature



96
97
98
99
100
101
102
103
104
# File 'lib/miasma/contrib/aws.rb', line 96

def sign(data, key_override = nil)
  s_key = key_override || key
  if s_key.nil?
    raise ArgumentError.new("No key provided for signing data")
  end
  result = OpenSSL::HMAC.digest(digest, key_override || key, data.to_s)
  digest.reset
  result
end

#to_sString

Returns:

  • (String)


76
77
78
# File 'lib/miasma/contrib/aws.rb', line 76

def to_s
  "Hmac#{digest.name}"
end