fog-aws 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -1
- data/lib/fog/aws.rb +1 -1
- data/lib/fog/aws/glacier.rb +3 -3
- data/lib/fog/aws/models/storage/file.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +22 -1
- data/lib/fog/aws/requests/glacier/create_archive.rb +1 -1
- data/lib/fog/aws/requests/glacier/upload_part.rb +1 -1
- data/lib/fog/aws/requests/sqs/send_message.rb +1 -1
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +1 -1
- data/lib/fog/aws/requests/storage/post_object_restore.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_acl.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_cors.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_notification.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +1 -1
- data/lib/fog/aws/requests/storage/put_object_acl.rb +1 -1
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +1 -1
- data/lib/fog/aws/signaturev4.rb +2 -2
- data/lib/fog/aws/storage.rb +3 -3
- data/lib/fog/aws/version.rb +1 -1
- data/tests/models/storage/file_tests.rb +1 -1
- data/tests/requests/glacier/tree_hash_tests.rb +17 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77eaa59f1f6bf9034200ca58a0927a7da17cbf33
|
4
|
+
data.tar.gz: 39ba1b65e37c525620fe03f5794113f17215a2e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92b1b41b56eb738ccd414a8829897c37c4d5a0bcfaeec4b45f4df24cf2d2ae63cf8616ccd9af9afc43cb910a220360d68ac6e7cb3f9138a545a953a4b29864cf
|
7
|
+
data.tar.gz: c8b7b3d026f41cfac0f3f7746465cc48d60cd7287e39c10c3dc61ca03fa58051a8c8ec5d84e0adf7ae96ae76a126a195f12d5f89e569a7e9a39c79b202be2d09
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,21 @@
|
|
2
2
|
|
3
3
|
## [Unreleased](https://github.com/fog/fog-aws/tree/HEAD)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/fog/fog-aws/compare/v0.9.
|
5
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v0.9.3...HEAD)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- S3: retry on 503 Service Unavailable [\#265](https://github.com/fog/fog-aws/issues/265)
|
10
|
+
- Digest::Base Error [\#261](https://github.com/fog/fog-aws/issues/261)
|
11
|
+
|
12
|
+
**Merged pull requests:**
|
13
|
+
|
14
|
+
- Updated Region 'Mumbai' ap-south-1 [\#267](https://github.com/fog/fog-aws/pull/267) ([chanakyacool](https://github.com/chanakyacool))
|
15
|
+
- Replaces usage of Digest with OpenSSL::Digest [\#266](https://github.com/fog/fog-aws/pull/266) ([esthervillars](https://github.com/esthervillars))
|
16
|
+
- AWS DNS - support newer DNS hosted zone IDs for dualstack ELBs [\#263](https://github.com/fog/fog-aws/pull/263) ([mattheworiordan](https://github.com/mattheworiordan))
|
17
|
+
|
18
|
+
## [v0.9.3](https://github.com/fog/fog-aws/tree/v0.9.3) (2016-06-20)
|
19
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v0.9.2...v0.9.3)
|
6
20
|
|
7
21
|
**Closed issues:**
|
8
22
|
|
data/lib/fog/aws.rb
CHANGED
@@ -224,7 +224,7 @@ module Fog
|
|
224
224
|
end
|
225
225
|
|
226
226
|
def self.regions
|
227
|
-
@regions ||= ['ap-northeast-1', 'ap-northeast-2', 'ap-southeast-1', 'ap-southeast-2', 'eu-central-1', 'eu-west-1', 'us-east-1', 'us-west-1', 'us-west-2', 'sa-east-1', 'cn-north-1', 'us-gov-west-1']
|
227
|
+
@regions ||= ['ap-northeast-1', 'ap-northeast-2', 'ap-southeast-1', 'ap-southeast-2', 'eu-central-1', 'eu-west-1', 'us-east-1', 'us-west-1', 'us-west-2', 'sa-east-1', 'cn-north-1', 'us-gov-west-1', 'ap-south-1']
|
228
228
|
end
|
229
229
|
|
230
230
|
def self.validate_region!(region, host=nil)
|
data/lib/fog/aws/glacier.rb
CHANGED
@@ -43,7 +43,7 @@ module Fog
|
|
43
43
|
while digests.length > 1
|
44
44
|
digests = digests.each_slice(2).map do |pair|
|
45
45
|
if pair.length == 2
|
46
|
-
Digest::SHA256.digest(pair[0]+pair[1])
|
46
|
+
OpenSSL::Digest::SHA256.digest(pair[0]+pair[1])
|
47
47
|
else
|
48
48
|
pair.first
|
49
49
|
end
|
@@ -65,13 +65,13 @@ module Fog
|
|
65
65
|
def digest_for_part(body)
|
66
66
|
chunk_count = [body.bytesize / MEGABYTE + (body.bytesize % MEGABYTE > 0 ? 1 : 0), 1].max
|
67
67
|
if body.respond_to? :byteslice
|
68
|
-
digests_for_part = chunk_count.times.map {|chunk_index| Digest::SHA256.digest(body.byteslice(chunk_index * MEGABYTE, MEGABYTE))}
|
68
|
+
digests_for_part = chunk_count.times.map {|chunk_index| OpenSSL::Digest::SHA256.digest(body.byteslice(chunk_index * MEGABYTE, MEGABYTE))}
|
69
69
|
else
|
70
70
|
if body.respond_to? :encoding
|
71
71
|
old_encoding = body.encoding
|
72
72
|
body.force_encoding('BINARY')
|
73
73
|
end
|
74
|
-
digests_for_part = chunk_count.times.map {|chunk_index| Digest::SHA256.digest(body.slice(chunk_index * MEGABYTE, MEGABYTE))}
|
74
|
+
digests_for_part = chunk_count.times.map {|chunk_index| OpenSSL::Digest::SHA256.digest(body.slice(chunk_index * MEGABYTE, MEGABYTE))}
|
75
75
|
if body.respond_to? :encoding
|
76
76
|
body.force_encoding(old_encoding)
|
77
77
|
end
|
@@ -289,7 +289,7 @@ module Fog
|
|
289
289
|
end
|
290
290
|
|
291
291
|
def part_headers(chunk, options)
|
292
|
-
md5 = Base64.encode64(Digest::MD5.digest(chunk)).strip
|
292
|
+
md5 = Base64.encode64(OpenSSL::Digest::MD5.digest(chunk)).strip
|
293
293
|
encryption_keys = encryption_customer_key_headers.keys
|
294
294
|
encryption_headers = options.select { |key| encryption_keys.include?(key) }
|
295
295
|
{ 'Content-MD5' => md5 }.merge(encryption_headers)
|
@@ -299,7 +299,7 @@ module Fog
|
|
299
299
|
{
|
300
300
|
'x-amz-server-side-encryption-customer-algorithm' => encryption,
|
301
301
|
'x-amz-server-side-encryption-customer-key' => Base64.encode64(encryption_key.to_s).chomp!,
|
302
|
-
'x-amz-server-side-encryption-customer-key-md5' => Base64.encode64(Digest::MD5.digest(encryption_key.to_s)).chomp!
|
302
|
+
'x-amz-server-side-encryption-customer-key-md5' => Base64.encode64(OpenSSL::Digest::MD5.digest(encryption_key.to_s)).chomp!
|
303
303
|
}
|
304
304
|
end
|
305
305
|
end
|
@@ -77,6 +77,9 @@ module Fog
|
|
77
77
|
|
78
78
|
{"messageSet" => [], "regionName" => "ap-southeast-2", "zoneName" => "ap-southeast-2a", "zoneState" => "available"},
|
79
79
|
{"messageSet" => [], "regionName" => "ap-southeast-2", "zoneName" => "ap-southeast-2b", "zoneState" => "available"},
|
80
|
+
|
81
|
+
{"messageSet" => [], "regionName" => "ap-south-1", "zoneName" => "ap-south-1a", "zoneState" => "available"},
|
82
|
+
{"messageSet" => [], "regionName" => "ap-south-1", "zoneName" => "ap-south-1b", "zoneState" => "available"},
|
80
83
|
]
|
81
84
|
|
82
85
|
availability_zone_info = all_zones.select { |zoneinfo| zoneinfo["regionName"] == @region }
|
@@ -3,7 +3,13 @@ module Fog
|
|
3
3
|
class AWS
|
4
4
|
|
5
5
|
def self.hosted_zone_for_alias_target(dns_name)
|
6
|
-
|
6
|
+
hosted_zones = if dns_name.match(/^dualstack\./)
|
7
|
+
elb_dualstack_hosted_zone_mapping
|
8
|
+
else
|
9
|
+
elb_hosted_zone_mapping
|
10
|
+
end
|
11
|
+
|
12
|
+
Hash[hosted_zones.select { |k, _|
|
7
13
|
dns_name =~ /\A.+\.#{k}\.elb\.amazonaws\.com\.?\z/
|
8
14
|
}].values.last
|
9
15
|
end
|
@@ -22,6 +28,21 @@ module Fog
|
|
22
28
|
}
|
23
29
|
end
|
24
30
|
|
31
|
+
# See https://forums.aws.amazon.com/message.jspa?messageID=612414
|
32
|
+
def self.elb_dualstack_hosted_zone_mapping
|
33
|
+
@elb_dualstack_hosted_zone_mapping ||= {
|
34
|
+
"ap-northeast-1" => "Z14GRHDCWA56QT",
|
35
|
+
"ap-southeast-1" => "Z1LMS91P8CMLE5",
|
36
|
+
"ap-southeast-2" => "Z1GM3OXH4ZPM65",
|
37
|
+
"eu-central-1" => "Z215JYRZR1TBD5",
|
38
|
+
"eu-west-1" => "Z32O12XQLNTSW2",
|
39
|
+
"sa-east-1" => "Z2P70J7HTTTPLU",
|
40
|
+
"us-east-1" => "Z35SXDOTRQ7X7K",
|
41
|
+
"us-west-1" => "Z368ELLRRE2KJ0",
|
42
|
+
"us-west-2" => "Z1H1FL5HABSF5",
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
25
46
|
# Returns the xml request for a given changeset
|
26
47
|
def self.change_resource_record_sets_data(zone_id, change_batch, version, options = {})
|
27
48
|
# AWS methods return zone_ids that looks like '/hostedzone/id'. Let the caller either use
|
@@ -22,7 +22,7 @@ module Fog
|
|
22
22
|
|
23
23
|
headers = {
|
24
24
|
'Content-Length' => body.bytesize.to_s,
|
25
|
-
'x-amz-content-sha256' => Digest::SHA256.hexdigest(body),
|
25
|
+
'x-amz-content-sha256' => OpenSSL::Digest::SHA256.hexdigest(body),
|
26
26
|
'x-amz-sha256-tree-hash' => Fog::AWS::Glacier::TreeHash.digest(body)
|
27
27
|
}
|
28
28
|
headers['x-amz-archive-description'] = Fog::AWS.escape(options['description']) if options['description']
|
@@ -25,7 +25,7 @@ module Fog
|
|
25
25
|
headers = {
|
26
26
|
'Content-Length' => body.bytesize.to_s,
|
27
27
|
'Content-Range' => "bytes #{offset}-#{offset+body.bytesize-1}/*",
|
28
|
-
'x-amz-content-sha256' => Digest::SHA256.hexdigest(body),
|
28
|
+
'x-amz-content-sha256' => OpenSSL::Digest::SHA256.hexdigest(body),
|
29
29
|
'x-amz-sha256-tree-hash' => hash
|
30
30
|
}
|
31
31
|
|
@@ -47,7 +47,7 @@ module Fog
|
|
47
47
|
data << "</Delete>"
|
48
48
|
|
49
49
|
headers['Content-Length'] = data.length
|
50
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).
|
50
|
+
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).
|
51
51
|
gsub("\n", '')
|
52
52
|
|
53
53
|
request({
|
@@ -22,7 +22,7 @@ module Fog
|
|
22
22
|
data = '<RestoreRequest xmlns="http://s3.amazonaws.com/doc/2006-3-01"><Days>' + days.to_s + '</Days></RestoreRequest>'
|
23
23
|
|
24
24
|
headers = {}
|
25
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
25
|
+
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).strip
|
26
26
|
headers['Content-Type'] = 'application/xml'
|
27
27
|
headers['Date'] = Fog::Time.now.to_date_header
|
28
28
|
|
@@ -37,7 +37,7 @@ module Fog
|
|
37
37
|
headers['x-amz-acl'] = acl
|
38
38
|
end
|
39
39
|
|
40
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
40
|
+
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).strip
|
41
41
|
headers['Content-Type'] = 'application/json'
|
42
42
|
headers['Date'] = Fog::Time.now.to_date_header
|
43
43
|
|
@@ -22,7 +22,7 @@ module Fog
|
|
22
22
|
data = Fog::Storage::AWS.hash_to_cors(cors)
|
23
23
|
|
24
24
|
headers = {}
|
25
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
25
|
+
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).strip
|
26
26
|
headers['Content-Type'] = 'application/json'
|
27
27
|
headers['Date'] = Fog::Time.now.to_date_header
|
28
28
|
|
@@ -86,7 +86,7 @@ module Fog
|
|
86
86
|
request({
|
87
87
|
:body => body,
|
88
88
|
:expects => 200,
|
89
|
-
:headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(body)).chomp!,
|
89
|
+
:headers => {'Content-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(body)).chomp!,
|
90
90
|
'Content-Type' => 'application/xml'},
|
91
91
|
:bucket_name => bucket_name,
|
92
92
|
:method => 'PUT',
|
@@ -54,7 +54,7 @@ module Fog
|
|
54
54
|
request({
|
55
55
|
:body => body,
|
56
56
|
:expects => 200,
|
57
|
-
:headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(body)).chomp!,
|
57
|
+
:headers => {'Content-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(body)).chomp!,
|
58
58
|
'Content-Type' => 'application/xml'},
|
59
59
|
:bucket_name => bucket_name,
|
60
60
|
:method => 'PUT',
|
@@ -27,7 +27,7 @@ DATA
|
|
27
27
|
request({
|
28
28
|
:body => data,
|
29
29
|
:expects => 204,
|
30
|
-
:headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(data)).chomp!, 'Content-Type' => 'application/xml'},
|
30
|
+
:headers => {'Content-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(data)).chomp!, 'Content-Type' => 'application/xml'},
|
31
31
|
:bucket_name => bucket_name,
|
32
32
|
:method => 'PUT',
|
33
33
|
:query => {'tagging' => nil}
|
@@ -45,7 +45,7 @@ module Fog
|
|
45
45
|
headers['x-amz-acl'] = acl
|
46
46
|
end
|
47
47
|
|
48
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
48
|
+
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).strip
|
49
49
|
headers['Content-Type'] = 'application/json'
|
50
50
|
headers['Date'] = Fog::Time.now.to_date_header
|
51
51
|
|
@@ -50,7 +50,7 @@ module Fog
|
|
50
50
|
object = {
|
51
51
|
:body => body,
|
52
52
|
'Content-Type' => options['Content-Type'],
|
53
|
-
'ETag' => Digest::MD5.hexdigest(body),
|
53
|
+
'ETag' => OpenSSL::Digest::MD5.hexdigest(body),
|
54
54
|
'Key' => object_name,
|
55
55
|
'Last-Modified' => Fog::Time.now.to_date_header,
|
56
56
|
'Content-Length' => options['Content-Length'],
|
data/lib/fog/aws/signaturev4.rb
CHANGED
@@ -40,7 +40,7 @@ module Fog
|
|
40
40
|
#{canonical_query_string(params[:query])}
|
41
41
|
#{canonical_headers(params[:headers])}
|
42
42
|
#{signed_headers(params[:headers])}
|
43
|
-
#{body_sha || Digest::SHA256.hexdigest(params[:body] || '')}
|
43
|
+
#{body_sha || OpenSSL::Digest::SHA256.hexdigest(params[:body] || '')}
|
44
44
|
DATA
|
45
45
|
canonical_request.chop!
|
46
46
|
|
@@ -48,7 +48,7 @@ DATA
|
|
48
48
|
#{ALGORITHM}
|
49
49
|
#{date.to_iso8601_basic}
|
50
50
|
#{credential_scope(date)}
|
51
|
-
#{Digest::SHA256.hexdigest(canonical_request)}
|
51
|
+
#{OpenSSL::Digest::SHA256.hexdigest(canonical_request)}
|
52
52
|
DATA
|
53
53
|
|
54
54
|
string_to_sign.chop!
|
data/lib/fog/aws/storage.rb
CHANGED
@@ -585,7 +585,7 @@ module Fog
|
|
585
585
|
params[:headers]['x-amz-content-sha256'] = 'STREAMING-AWS4-HMAC-SHA256-PAYLOAD'
|
586
586
|
params[:headers]['x-amz-decoded-content-length'] = params[:headers].delete 'Content-Length'
|
587
587
|
else
|
588
|
-
params[:headers]['x-amz-content-sha256'] ||= Digest::SHA256.hexdigest(params[:body] || '')
|
588
|
+
params[:headers]['x-amz-content-sha256'] ||= OpenSSL::Digest::SHA256.hexdigest(params[:body] || '')
|
589
589
|
end
|
590
590
|
signature_components = @signer.signature_components(params, date, params[:headers]['x-amz-content-sha256'])
|
591
591
|
params[:headers]['Authorization'] = @signer.components_to_header(signature_components)
|
@@ -692,8 +692,8 @@ AWS4-HMAC-SHA256-PAYLOAD
|
|
692
692
|
#{date.to_iso8601_basic}
|
693
693
|
#{signer.credential_scope(date)}
|
694
694
|
#{previous_signature}
|
695
|
-
#{Digest::SHA256.hexdigest('')}
|
696
|
-
#{Digest::SHA256.hexdigest(data)}
|
695
|
+
#{OpenSSL::Digest::SHA256.hexdigest('')}
|
696
|
+
#{OpenSSL::Digest::SHA256.hexdigest(data)}
|
697
697
|
DATA
|
698
698
|
hmac = signer.derived_hmac(date)
|
699
699
|
hmac.sign(string_to_sign.strip).unpack('H*').first
|
data/lib/fog/aws/version.rb
CHANGED
@@ -99,7 +99,7 @@ Shindo.tests("Storage[:aws] | file", ["aws"]) do
|
|
99
99
|
@directory.files.get('multipart-encrypted-upload',
|
100
100
|
'x-amz-server-side-encryption-customer-algorithm' => 'AES256',
|
101
101
|
'x-amz-server-side-encryption-customer-key' => Base64.encode64(encryption_key).chomp!,
|
102
|
-
'x-amz-server-side-encryption-customer-key-MD5' => Base64.encode64(Digest::MD5.digest(encryption_key.to_s)).chomp!
|
102
|
+
'x-amz-server-side-encryption-customer-key-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(encryption_key.to_s)).chomp!
|
103
103
|
).body == "x" * 6*1024**2
|
104
104
|
end
|
105
105
|
|
@@ -1,27 +1,27 @@
|
|
1
1
|
Shindo.tests('AWS::Glacier | glacier tree hash calcuation', ['aws']) do
|
2
2
|
|
3
3
|
tests('tree_hash(single part < 1MB)') do
|
4
|
-
returns(Digest::SHA256.hexdigest('')) { Fog::AWS::Glacier::TreeHash.digest('')}
|
4
|
+
returns(OpenSSL::Digest::SHA256.hexdigest('')) { Fog::AWS::Glacier::TreeHash.digest('')}
|
5
5
|
end
|
6
6
|
|
7
7
|
tests('tree_hash(multibyte characters)') do
|
8
8
|
body = ("\xC2\xA1" * 1024*1024)
|
9
9
|
body.force_encoding('UTF-8') if body.respond_to? :encoding
|
10
10
|
|
11
|
-
expected = Digest::SHA256.hexdigest(
|
12
|
-
Digest::SHA256.digest("\xC2\xA1" * 1024*512) + Digest::SHA256.digest("\xC2\xA1" * 1024*512)
|
11
|
+
expected = OpenSSL::Digest::SHA256.hexdigest(
|
12
|
+
OpenSSL::Digest::SHA256.digest("\xC2\xA1" * 1024*512) + OpenSSL::Digest::SHA256.digest("\xC2\xA1" * 1024*512)
|
13
13
|
)
|
14
14
|
returns(expected) { Fog::AWS::Glacier::TreeHash.digest(body)}
|
15
15
|
end
|
16
16
|
|
17
17
|
tests('tree_hash(power of 2 number of parts)') do
|
18
18
|
body = ('x' * 1024*1024) + ('y'*1024*1024) + ('z'*1024*1024) + ('t'*1024*1024)
|
19
|
-
expected = Digest::SHA256.hexdigest(
|
20
|
-
Digest::SHA256.digest(
|
21
|
-
Digest::SHA256.digest('x' * 1024*1024) + Digest::SHA256.digest('y' * 1024*1024)
|
19
|
+
expected = OpenSSL::Digest::SHA256.hexdigest(
|
20
|
+
OpenSSL::Digest::SHA256.digest(
|
21
|
+
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
|
22
22
|
) +
|
23
|
-
Digest::SHA256.digest(
|
24
|
-
Digest::SHA256.digest('z' * 1024*1024) + Digest::SHA256.digest('t' * 1024*1024)
|
23
|
+
OpenSSL::Digest::SHA256.digest(
|
24
|
+
OpenSSL::Digest::SHA256.digest('z' * 1024*1024) + OpenSSL::Digest::SHA256.digest('t' * 1024*1024)
|
25
25
|
)
|
26
26
|
)
|
27
27
|
|
@@ -30,11 +30,11 @@ Shindo.tests('AWS::Glacier | glacier tree hash calcuation', ['aws']) do
|
|
30
30
|
|
31
31
|
tests('tree_hash(non power of 2 number of parts)') do
|
32
32
|
body = ('x' * 1024*1024) + ('y'*1024*1024) + ('z'*1024*1024)
|
33
|
-
expected = Digest::SHA256.hexdigest(
|
34
|
-
Digest::SHA256.digest(
|
35
|
-
Digest::SHA256.digest('x' * 1024*1024) + Digest::SHA256.digest('y' * 1024*1024)
|
33
|
+
expected = OpenSSL::Digest::SHA256.hexdigest(
|
34
|
+
OpenSSL::Digest::SHA256.digest(
|
35
|
+
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
|
36
36
|
) +
|
37
|
-
Digest::SHA256.digest('z' * 1024*1024)
|
37
|
+
OpenSSL::Digest::SHA256.digest('z' * 1024*1024)
|
38
38
|
)
|
39
39
|
|
40
40
|
returns(expected) { Fog::AWS::Glacier::TreeHash.digest(body)}
|
@@ -47,12 +47,12 @@ Shindo.tests('AWS::Glacier | glacier tree hash calcuation', ['aws']) do
|
|
47
47
|
|
48
48
|
tree_hash.add_part('z'* 1024*1024 + 't'*1024*1024)
|
49
49
|
|
50
|
-
expected = Digest::SHA256.hexdigest(
|
51
|
-
Digest::SHA256.digest(
|
52
|
-
Digest::SHA256.digest('x' * 1024*1024) + Digest::SHA256.digest('y' * 1024*1024)
|
50
|
+
expected = OpenSSL::Digest::SHA256.hexdigest(
|
51
|
+
OpenSSL::Digest::SHA256.digest(
|
52
|
+
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
|
53
53
|
) +
|
54
|
-
Digest::SHA256.digest(
|
55
|
-
Digest::SHA256.digest('z' * 1024*1024) + Digest::SHA256.digest('t' * 1024*1024)
|
54
|
+
OpenSSL::Digest::SHA256.digest(
|
55
|
+
OpenSSL::Digest::SHA256.digest('z' * 1024*1024) + OpenSSL::Digest::SHA256.digest('t' * 1024*1024)
|
56
56
|
)
|
57
57
|
)
|
58
58
|
returns(expected) { tree_hash.hexdigest}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lane
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|