class Miasma::Contrib::AwsApiCore::Hmac

HMAC helper class

Attributes

digest[R]

@return [OpenSSL::Digest]

key[R]

@return [String] secret key

Public Class Methods

new(kind, key) click to toggle source

Create new HMAC helper

@param kind [String] digest type (sha1, sha256, sha512, etc) @param key [String] secret key @return [self]

# File lib/miasma/contrib/aws.rb, line 72
def initialize(kind, key)
  @digest = OpenSSL::Digest.new(kind)
  @key = key
end

Public Instance Methods

hex_sign(data, key_override = nil) click to toggle source

Sign the given data and return hexdigest

@param data [String] @param key_override [Object] @return [String] hex encoded signature

# 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) click to toggle source

Generate the hexdigest of the content

@param content [String] content to digest @return [String] hashed result

# 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) click to toggle source

Sign the given data

@param data [String] @param key_override [Object] @return [Object] signature

# 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_s() click to toggle source

@return [String]

# File lib/miasma/contrib/aws.rb, line 78
def to_s
  "Hmac#{digest.name}"
end