class Fog::HMAC

Public Class Methods

new(type, key) click to toggle source
# File lib/fog/core/hmac.rb, line 4
def initialize(type, key)
  @key = key
  case type
  when 'sha1'
    setup_sha1
  when 'sha256'
    setup_sha256
  end
end

Public Instance Methods

sign(data) click to toggle source
# File lib/fog/core/hmac.rb, line 14
def sign(data)
  @signer.call(data)
end

Private Instance Methods

setup_sha1() click to toggle source
# File lib/fog/core/hmac.rb, line 20
def setup_sha1
  @digest = OpenSSL::Digest::Digest.new('sha1')
  @signer = lambda do |data|
    OpenSSL::HMAC.digest(@digest, @key, data)
  end
end
setup_sha256() click to toggle source
# File lib/fog/core/hmac.rb, line 27
def setup_sha256
  begin
    @digest = OpenSSL::Digest::Digest.new('sha256')
    @signer = lambda do |data|
      OpenSSL::HMAC.digest(@digest, @key, data)
    end
  rescue RuntimeError => error
    unless error.message == 'Unsupported digest algorithm (sha256).'
      raise error
    else
      require 'hmac-sha2'
      @hmac = ::HMAC::SHA256.new(@key)
      @signer = lambda do |data|
        @hmac.update(data)
        @hmac.digest
      end
    end
  end
end