From 54ba56ac7fe33528150169869ef90752af4f97ce Mon Sep 17 00:00:00 2001 From: geemus Date: Tue, 15 Jun 2010 21:07:15 -0700 Subject: [PATCH] make hmac stuff a bit more flexible --- lib/fog/hmac.rb | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/fog/hmac.rb b/lib/fog/hmac.rb index 58d7bbc47..fc77b2ac1 100644 --- a/lib/fog/hmac.rb +++ b/lib/fog/hmac.rb @@ -2,17 +2,33 @@ module Fog class HMAC def initialize(type, key) - @digest = case type - when 'sha1' - OpenSSL::Digest::Digest.new('sha1') - when 'sha256' - OpenSSL::Digest::Digest.new('sha256') - end @key = key + case type + when 'sha1' + setup_sha1 + when 'sha256' + setup_sha256 + end end 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