xmlenc 0.6.0 → 0.6.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: 08accbcb8b82b64c4a4dfc285613f8f446b8b80d
4
- data.tar.gz: 5d0f1731f648ce8d1dd5323c873133493d7e6da3
3
+ metadata.gz: 2ca6e55c68b610b3555faafb61cdfbe906bf99c9
4
+ data.tar.gz: e09a38a6274ecbcbab0072740b7d77d465096db8
5
5
  SHA512:
6
- metadata.gz: 70e30230bb3c33a3f130cfa1ae6034bc83049d975aa8f38b3c9735de06040e4ada1977bd46e28c5231c8f1c9814d3a0e4e4bc4c22d0566a172001ca6d0ca0b3e
7
- data.tar.gz: 84cb6623c55aac0cca112af8dc31281b2a2d512588f4aefd35df6f297b572248f5f08f5415b82849783ea0432b7355668b47991e4281b145d06a34da483d1829
6
+ metadata.gz: 0afac48b7eacf0907ef0c8dd45a25924a8768be8ac7107d7e297d337bdbcd28ed5658eaf0e7340bfa2fe018e394764e37ae00397e695a94bad5bf8c9a1f6b1d1
7
+ data.tar.gz: 11e357408fd5b91fa3b1b6b7419c601bdd685a974d931d3e3b3b98d888678c4d61d283e2be6c947ef017d621d8ace6133b30f98101f33f49ad69d6f30c31d836
@@ -14,11 +14,15 @@ module Xmlenc
14
14
  document.xpath('//xenc:EncryptedKey', NAMESPACES).collect { |n| EncryptedKey.new(n) }
15
15
  end
16
16
 
17
- def decrypt(key)
17
+ def decrypt(key, fail_silent = false)
18
18
  encrypted_keys.each do |encrypted_key|
19
- encrypted_data = encrypted_key.encrypted_data
20
- data_key = encrypted_key.decrypt(key)
21
- encrypted_data.decrypt(data_key)
19
+ begin
20
+ encrypted_data = encrypted_key.encrypted_data
21
+ data_key = encrypted_key.decrypt(key)
22
+ encrypted_data.decrypt(data_key)
23
+ rescue OpenSSL::PKey::RSAError => e
24
+ raise e unless fail_silent
25
+ end
22
26
  end
23
27
  @document.to_xml
24
28
  end
@@ -1,3 +1,3 @@
1
1
  module Xmlenc
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -0,0 +1,79 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PaymentInfo xmlns="http://example.org/paymentv2">
3
+ <Name>John Smith</Name>
4
+ <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
5
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
6
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
7
+ <ds:RetrievalMethod URI="#_EK"/>
8
+ <ds:RetrievalMethod URI="#_EK2"/>
9
+ <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
10
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
11
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
12
+ <ds:KeyName>my-rsa-key</ds:KeyName>
13
+ <ds:X509Data>
14
+ <ds:X509Certificate>
15
+ MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
16
+ CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
17
+ U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
18
+ IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
19
+ MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
20
+ CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
21
+ MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
22
+ BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
23
+ AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
24
+ Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
25
+ xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
26
+ ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
27
+ +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
28
+ W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
29
+ HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
30
+ ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
31
+ OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
32
+ WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
33
+ p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
34
+ O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
35
+ kKO/vB9Ay64Rt88XbLnnGns=
36
+ </ds:X509Certificate>
37
+ </ds:X509Data>
38
+ </ds:KeyInfo>
39
+ <CipherData>
40
+ <CipherValue>
41
+ cCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy
42
+ Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE
43
+ uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT
44
+ UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2
45
+ 98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN
46
+ lUvE9mMjANw4zweCHsOcfw==
47
+ </CipherValue>
48
+ </CipherData>
49
+ <ReferenceList>
50
+ <DataReference URI="#ED"/>
51
+ </ReferenceList>
52
+ </EncryptedKey>
53
+ <EncryptedKey Id="EK2" xmlns="http://www.w3.org/2001/04/xmlenc#">
54
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
55
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
56
+ <ds:KeyName>my-rsa-key</ds:KeyName>
57
+ </ds:KeyInfo>
58
+ <CipherData>
59
+ <CipherValue>
60
+ dCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy
61
+ Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE
62
+ uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT
63
+ UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2
64
+ 98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN
65
+ lUvE9mMjANw4zweCHsAaa==
66
+ </CipherValue>
67
+ </CipherData>
68
+ </EncryptedKey>
69
+ </ds:KeyInfo>
70
+ <CipherData>
71
+ <CipherValue>
72
+ u2vogkwlvFqeknJ0lYTBZkWS/eX8LR1fDPFMfyK1/UY0EyZfHvbONfDHcC/HLv/f
73
+ aAOOO2Y0GqsknP0LYT1OznkiJrzx134cmJCgbyrYXd3Mp21Pq3rs66JJ34Qt3/+I
74
+ EyJBUSMT8TdT3fBD44BtOqH2op/hy2g3hQPFZul4GiHBEnNJL/4nU1yad3bMvtAB
75
+ mzhx80lJvPGLcruj5V77WMvkvZfoeEqMq4qPWK02ZURsJsq0iZcJDi39NB7OCiON
76
+ </CipherValue>
77
+ </CipherData>
78
+ </EncryptedData>
79
+ </PaymentInfo>
@@ -47,5 +47,21 @@ describe Xmlenc::EncryptedDocument do
47
47
  expect { subject.decrypt(private_key).chomp }.to raise_error(Xmlenc::EncryptedDataNotFound)
48
48
  end
49
49
  end
50
+
51
+ context 'when an EncryptedID also contains an EncryptedKey which cant be decrypted' do
52
+ let(:encrypted_xml) { File.read('spec/fixtures/encrypted_document_with_unknown_encrypted_key.xml') }
53
+
54
+ context 'when "fail_silent" is enabled' do
55
+ it 'decrypts the EncryptedID without raising an exception' do
56
+ expect(subject.decrypt(private_key, true).chomp).to eq plain_xml
57
+ end
58
+ end
59
+
60
+ context 'when "fail_silent" is disabled' do
61
+ it 'raises an exception' do
62
+ expect { subject.decrypt(private_key, false).chomp }.to raise_error(OpenSSL::PKey::RSAError)
63
+ end
64
+ end
65
+ end
50
66
  end
51
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmlenc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-23 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -160,6 +160,7 @@ files:
160
160
  - spec/fixtures/encrypted/java_to_ruby.txt
161
161
  - spec/fixtures/encrypted_document.xml
162
162
  - spec/fixtures/encrypted_document_no_ref_list.xml
163
+ - spec/fixtures/encrypted_document_with_unknown_encrypted_key.xml
163
164
  - spec/fixtures/encrypted_document_without_data.xml
164
165
  - spec/fixtures/key.pem
165
166
  - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml
@@ -223,6 +224,7 @@ test_files:
223
224
  - spec/fixtures/encrypted/java_to_ruby.txt
224
225
  - spec/fixtures/encrypted_document.xml
225
226
  - spec/fixtures/encrypted_document_no_ref_list.xml
227
+ - spec/fixtures/encrypted_document_with_unknown_encrypted_key.xml
226
228
  - spec/fixtures/encrypted_document_without_data.xml
227
229
  - spec/fixtures/key.pem
228
230
  - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml