mixlib-authentication 1.4.0.rc.0 → 1.4.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4af0553c29d4d0ee53f281ab38ef8ed7097ba8f9
4
- data.tar.gz: 198e0ae73d73b4d5c3f39e61dd30bab6822c1031
3
+ metadata.gz: 07bcb6ac6bcde43d7a76debec94ba82dce31126b
4
+ data.tar.gz: e524d4f67e7834f75f1e0b02ac5678120aa92533
5
5
  SHA512:
6
- metadata.gz: 5613f35e48e2142c25614b39c114b9ed7412a5039eea64141bed4087408c51f4242a11b954a9d0393a85b1ecdd850dc505d2267c21eb8c3737af6a795873d4c8
7
- data.tar.gz: 071de33850bcf8120424ef0ee26e4d6013fd96fabff92c10dd69caf2da521b890d8433809080b8e86a0022f111c83edb6e47c334ed44517bb3811db856c6e8a0
6
+ metadata.gz: a76554da7dbe898d3a123786d5edb4e4cddf476f2fedb74bfd1621b0000806f9fef907726cd16dd04c0bb2c59187eddf2a6a25b327af3598006f756665bad817
7
+ data.tar.gz: 4d18f87f8557dd0fa82fd67f387749d1d228d2c9cda0c747fe3aad5f2cae834940bb57d09df35ce66747fdbcb6b2392a1b02994665bbe128dc04b95030da92aa
@@ -17,13 +17,14 @@
17
17
  #
18
18
 
19
19
  require 'mixlib/authentication'
20
+ require 'openssl'
20
21
 
21
22
  module Mixlib
22
23
  module Authentication
23
24
  class Digester
24
25
  class << self
25
26
 
26
- def hash_file(digest, f)
27
+ def hash_file(f, digest=OpenSSL::Digest::SHA1)
27
28
  digester = digest.new
28
29
  buf = ""
29
30
  while f.read(16384, buf)
@@ -36,7 +37,7 @@ module Mixlib
36
37
  #
37
38
  # ====Parameters
38
39
  #
39
- def hash_string(digest, str)
40
+ def hash_string(str, digest=OpenSSL::Digest::SHA1)
40
41
  ::Base64.encode64(digest.digest(str)).chomp
41
42
  end
42
43
 
@@ -214,11 +214,11 @@ module Mixlib
214
214
  # we hash the body.
215
215
  if file_param
216
216
  Mixlib::Authentication::Log.debug "Digesting file_param: '#{file_param.inspect}'"
217
- @hashed_body = digester.hash_file(digest, file_param)
217
+ @hashed_body = digester.hash_file(file_param, digest)
218
218
  else
219
219
  body = request.raw_post
220
220
  Mixlib::Authentication::Log.debug "Digesting body: '#{body}'"
221
- @hashed_body = digester.hash_string(digest, body)
221
+ @hashed_body = digester.hash_string(body, digest)
222
222
  end
223
223
  end
224
224
  @hashed_body
@@ -177,9 +177,9 @@ module Mixlib
177
177
  # always sign the entire request body, using the expanded multipart
178
178
  # body in the case of a file being include.
179
179
  @hashed_body ||= if self.file && self.file.respond_to?(:read)
180
- digester.hash_file(digest, self.file)
180
+ digester.hash_file(self.file, digest)
181
181
  else
182
- digester.hash_string(digest, self.body)
182
+ digester.hash_string(self.body, digest)
183
183
  end
184
184
  end
185
185
 
@@ -206,7 +206,7 @@ module Mixlib
206
206
  else
207
207
  [
208
208
  "Method:#{http_method.to_s.upcase}",
209
- "Hashed Path:#{digester.hash_string(digest, canonical_path)}",
209
+ "Hashed Path:#{digester.hash_string(canonical_path, digest)}",
210
210
  "X-Ops-Content-Hash:#{hashed_body(digest)}",
211
211
  "X-Ops-Timestamp:#{canonical_time}",
212
212
  "X-Ops-UserId:#{canonical_x_ops_user_id}"
@@ -218,7 +218,7 @@ module Mixlib
218
218
  case proto_version
219
219
  when "1.1"
220
220
  # and 1.2 if that ever gets implemented
221
- digester.hash_string(digest, user_id)
221
+ digester.hash_string(user_id, digest)
222
222
  else
223
223
  # versions 1.0 and 1.3
224
224
  user_id
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Mixlib
18
18
  module Authentication
19
- VERSION = '1.4.0.rc.0'
19
+ VERSION = '1.4.0.rc.1'
20
20
  end
21
21
  end
@@ -0,0 +1,24 @@
1
+ require 'mixlib/authentication/digester'
2
+
3
+ describe Mixlib::Authentication::Digester do
4
+ context 'backcompat' do
5
+ # The digester API should really have been private,
6
+ # however oc-chef-pedant uses it.
7
+ let(:test_string) { 'hello' }
8
+ let(:test_string_checksum) { 'qvTGHdzF6KLavt4PO0gs2a6pQ00=' }
9
+
10
+ describe '#hash_file' do
11
+ it 'should default to use SHA1' do
12
+ expect(described_class.hash_file(StringIO.new(test_string))).to(
13
+ eq(test_string_checksum))
14
+ end
15
+ end
16
+
17
+ describe '#hash_string' do
18
+ it 'should default to use SHA1' do
19
+ expect(described_class.hash_string(test_string)).to(
20
+ eq(test_string_checksum))
21
+ end
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0.rc.0
4
+ version: 1.4.0.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Opscode, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-11 00:00:00.000000000 Z
11
+ date: 2015-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-log
@@ -101,6 +101,7 @@ files:
101
101
  - lib/mixlib/authentication/signedheaderauth.rb
102
102
  - lib/mixlib/authentication/version.rb
103
103
  - mixlib-authentication.gemspec
104
+ - spec/mixlib/authentication/digester_spec.rb
104
105
  - spec/mixlib/authentication/http_authentication_request_spec.rb
105
106
  - spec/mixlib/authentication/mixlib_authentication_spec.rb
106
107
  - spec/spec_helper.rb