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

Inherits:
Object
  • Object
show all
Includes:
Bogo::Logger::Helpers
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



72
73
74
75
# File 'lib/miasma/contrib/aws.rb', line 72

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

Instance Attribute Details

#digestOpenSSL::Digest (readonly)

Returns:

  • (OpenSSL::Digest)


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

def digest
  @digest
end

#keyString (readonly)

Returns secret key.

Returns:

  • (String)

    secret key



65
66
67
# File 'lib/miasma/contrib/aws.rb', line 65

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



120
121
122
123
124
125
# File 'lib/miasma/contrib/aws.rb', line 120

def hex_sign(data, key_override = nil)
  logger.debug("hex signing data `#{data.inspect}`")
  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



86
87
88
89
90
91
92
# File 'lib/miasma/contrib/aws.rb', line 86

def hexdigest_of(content)
  logger.debug("generating hexdigest for `#{content.inspect}`")
  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



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/miasma/contrib/aws.rb', line 99

def sign(data, key_override = nil)
  logger.debug("signing data `#{data.inspect}`")
  s_key = key
  if key_override
    logger.debug("using key override for signing")
    s_key = key_override
  end
  if s_key.nil?
    logger.error("no key provided to sign")
    raise ArgumentError, "No key provided for signing data"
  end
  result = OpenSSL::HMAC.digest(digest, s_key, data.to_s)
  digest.reset
  result
end

#to_sString

Returns:

  • (String)


78
79
80
# File 'lib/miasma/contrib/aws.rb', line 78

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