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