xmlenc 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1cd8be205f4d884ef3f5e43dc22d200ec6980be
4
- data.tar.gz: 19155cd49f925eeed4c443a77023e766175a6c5d
3
+ metadata.gz: 9e401bd2ee8c45b6fa16fb1fd964339576196184
4
+ data.tar.gz: 8a662156741e2be202bb749a384d285e31315ede
5
5
  SHA512:
6
- metadata.gz: ffe48439bb5b226859055c8cf469382213e71a314a2f0aa0b1e242ad986517b0e8ca5ee40808dd0a70fdfbb04508649b9057cc26f626fe79f36897e79145fc60
7
- data.tar.gz: a361d62f33feeb06db5765a5c319a61f7163116396b6f8c03df6ddec68af692f7d3f828a76d784df84ea1da387ee8773b2540cee0ecded33c6ee2ecb71415ca6
6
+ metadata.gz: 2ccce2142048e50481634b71b3b3a5824bdfa7ce53708eb0078e56b432ed8bb7d2d71506579c97565d866eed39c6be03a63e74745ba3aed2a326dbc30cebe074
7
+ data.tar.gz: 3941eff179a841a04850503593746c8387e08cd83efdb858e628443d258318a0c5bef62256a95da75651c4ecf7acb04739265b09d79d4723d94d95d8ee21a0e4
@@ -11,11 +11,10 @@ module Xmlenc
11
11
  :ds => 'http://www.w3.org/2000/09/xmldsig#'
12
12
  }
13
13
 
14
- class UnsupportedError < StandardError
15
- end
16
-
17
- class UnparseableMessage < StandardError
18
- end
14
+ class Error < StandardError; end
15
+ class UnsupportedError < Error; end
16
+ class UnparseableMessage < Error; end
17
+ class EncryptedDataNotFound < Error; end
19
18
 
20
19
  module Builder
21
20
  autoload :Base, 'xmlenc/builder/base'
@@ -44,10 +44,11 @@ module Xmlenc
44
44
 
45
45
  def referenced_node
46
46
  if reference_uri
47
- document.at_xpath("//xenc:EncryptedData[@Id='#{reference_uri}']", NAMESPACES)
47
+ document.at_xpath("//xenc:EncryptedData[@Id='#{reference_uri}']", NAMESPACES) ||
48
+ raise(Xmlenc::EncryptedDataNotFound.new("Encrypted data not found for: #{reference_uri}"))
48
49
  else
49
- #document.at_xpath("//xenc:EncryptedData", NAMESPACES)
50
- @node.at_xpath('ancestor::xenc:EncryptedData', Xmlenc::NAMESPACES)
50
+ @node.at_xpath('ancestor::xenc:EncryptedData', Xmlenc::NAMESPACES) ||
51
+ raise(Xmlenc::EncryptedDataNotFound.new('Encrypted data not in ancestore element'))
51
52
  end
52
53
  end
53
54
 
@@ -1,3 +1,3 @@
1
1
  module Xmlenc
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <PaymentInfo xmlns="http://example.org/paymentv2">
3
+ <Name>John Smith</Name>
4
+ <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
5
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
6
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
7
+ <ds:KeyName>my-rsa-key</ds:KeyName>
8
+ <ds:X509Data>
9
+ <ds:X509Certificate>
10
+ MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
11
+ CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
12
+ U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
13
+ IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
14
+ MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
15
+ CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
16
+ MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
17
+ BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
18
+ AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
19
+ Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
20
+ xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
21
+ ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
22
+ +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
23
+ W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
24
+ HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
25
+ ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
26
+ OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
27
+ WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
28
+ p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
29
+ O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
30
+ kKO/vB9Ay64Rt88XbLnnGns=
31
+ </ds:X509Certificate>
32
+ </ds:X509Data>
33
+ </ds:KeyInfo>
34
+ <CipherData>
35
+ <CipherValue>
36
+ cCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy
37
+ Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE
38
+ uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT
39
+ UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2
40
+ 98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN
41
+ lUvE9mMjANw4zweCHsOcfw==
42
+ </CipherValue>
43
+ </CipherData>
44
+ <ReferenceList>
45
+ <DataReference URI="#ED"/>
46
+ </ReferenceList>
47
+ </EncryptedKey>
48
+ </PaymentInfo>
@@ -39,5 +39,13 @@ describe Xmlenc::EncryptedDocument do
39
39
  it 'replaces the encrypted data with the unencrypted elements' do
40
40
  expect(subject.decrypt(private_key).chomp).to be == plain_xml
41
41
  end
42
+
43
+ context 'when encryption key is missing encryption data' do
44
+ let(:encrypted_xml) { File.read('spec/fixtures/encrypted_document_without_data.xml') }
45
+
46
+ it 'raises an error if the encrypted data cannot be found' do
47
+ expect { subject.decrypt(private_key).chomp }.to raise_error(Xmlenc::EncryptedDataNotFound)
48
+ end
49
+ end
42
50
  end
43
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmlenc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoist
@@ -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_without_data.xml
163
164
  - spec/fixtures/key.pem
164
165
  - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml
165
166
  - spec/fixtures/phaos/enc-element-3des-kt-rsa_oaep_sha1.xml
@@ -222,6 +223,7 @@ test_files:
222
223
  - spec/fixtures/encrypted/java_to_ruby.txt
223
224
  - spec/fixtures/encrypted_document.xml
224
225
  - spec/fixtures/encrypted_document_no_ref_list.xml
226
+ - spec/fixtures/encrypted_document_without_data.xml
225
227
  - spec/fixtures/key.pem
226
228
  - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml
227
229
  - spec/fixtures/phaos/enc-element-3des-kt-rsa_oaep_sha1.xml