make hmac stuff a bit more flexible

This commit is contained in:
geemus 2010-06-15 21:07:15 -07:00
parent 3d8d40f2d6
commit 54ba56ac7f
1 changed files with 23 additions and 7 deletions

View File

@ -2,17 +2,33 @@ module Fog
class HMAC class HMAC
def initialize(type, key) def initialize(type, key)
@digest = case type
when 'sha1'
OpenSSL::Digest::Digest.new('sha1')
when 'sha256'
OpenSSL::Digest::Digest.new('sha256')
end
@key = key @key = key
case type
when 'sha1'
setup_sha1
when 'sha256'
setup_sha256
end
end end
def sign(data) def sign(data)
OpenSSL::HMAC.digest(@digest, @key, data) @signer.call(data)
end
private
def setup_sha1
@digest = OpenSSL::Digest::Digest.new('sha1')
@signer = lambda do |data|
OpenSSL::HMAC.digest(@digest, @key, data)
end
end
def setup_sha256
@digest = OpenSSL::Digest::Digest.new('sha256')
@signer = lambda do |data|
OpenSSL::HMAC.digest(@digest, @key, data)
end
end end
end end