Skip to content

Commit

Permalink
fall back to ruby-hmac when openssl refuses to sha256
Browse files Browse the repository at this point in the history
  • Loading branch information
geemus committed Jun 16, 2010
1 parent 54ba56a commit 7aec7fe
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 9 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -8,5 +8,6 @@ gem 'mime-types', ">= 0"
gem 'net-ssh', ">= 0"
gem 'nokogiri', ">= 0"
gem 'rspec', '>= 0'
gem 'ruby-hmac', '>= 0'
gem 'shindo', '>= 0.1.5'
gem 'builder', '>= 0'
18 changes: 12 additions & 6 deletions Gemfile.lock
Expand Up @@ -20,9 +20,11 @@ specs:
version: 1.4.2
- rspec:
version: 1.3.0
- ruby-hmac:
version: 0.4.0
- shindo:
version: 0.1.5
hash: 58a08d793d993ef27b7140767d8a94aa21a49a13
hash: 12012795f07111bf764cef89d9ba91f521c54956
sources:
- Rubygems:
uri: http://gemcutter.org
Expand All @@ -35,30 +37,34 @@ dependencies:
version: ">= 0"
group:
- :default
rspec:
rake:
version: ">= 0"
group:
- :default
rake:
rspec:
version: ">= 0"
group:
- :default
mime-types:
ruby-hmac:
version: ">= 0"
group:
- :default
net-ssh:
mime-types:
version: ">= 0"
group:
- :default
json:
net-ssh:
version: ">= 0"
group:
- :default
excon:
version: ">= 0.0.26"
group:
- :default
json:
version: ">= 0"
group:
- :default
builder:
version: ">= 0"
group:
Expand Down
1 change: 1 addition & 0 deletions fog.gemspec
Expand Up @@ -48,6 +48,7 @@ Gem::Specification.new do |s|
s.add_dependency('mime-types')
s.add_dependency('net-ssh')
s.add_dependency('nokogiri')
s.add_dependency('ruby-hmac')

## List your development dependencies here. Development dependencies are
## those that are only needed during development
Expand Down
19 changes: 16 additions & 3 deletions lib/fog/hmac.rb
Expand Up @@ -25,9 +25,22 @@ def setup_sha1
end

def setup_sha256
@digest = OpenSSL::Digest::Digest.new('sha256')
@signer = lambda do |data|
OpenSSL::HMAC.digest(@digest, @key, data)
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

Expand Down

0 comments on commit 7aec7fe

Please sign in to comment.