xmlenc 0.0.1

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.
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnkFwp4y9Zn
3
+ rGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7JxMG7z+hE
4
+ B1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/AZD8Ub/kB
5
+ GOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH+YPjRgLC
6
+ QfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikWW5yiWUmB
7
+ ya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABAoIBAFK+PIiC4hqTBNjj
8
+ WOrPwNH3WmmgS8jPXOp54NzF1+bbfErj+BGMvDRy8oMDUxF72qgujD/Y3canWQcl
9
+ 55Yc04/gIGZNYHNotUUx2M21tTIPcuZvRWjxsi57ILj/DHmQsJyX+dcqDtuE7KU7
10
+ dtlwvyZ8koWRpOg9YZDKLpo1m2ET0RjyNEm9fvt6m3ZwSawA9Yu0xSVvVIukNIl7
11
+ eimQzBYeGQwGwhMgMoybQWjwIOpnbvcRfT/iAh9n/AyXcjtOMGwWhifjel+U1XMM
12
+ hrcL3mA5xb+gGQpZ7TToTfmOEJeVCh9BRKpgniH4JVClhiTOeN4VTLZYg/BGmGTj
13
+ rEZKX4ECgYEAigDXtsEns9+QVsQKYolI/GE0Edkd1OkyGw11N3YIMNNzOotcDKoU
14
+ 0/Jt1hI7NaWRgi9/LyphmEM/dBaNnrNW6GPIETSjUQ9FuK2LywkNUiM2D+UFsLlq
15
+ EJ4S50/7kdXOC3t9rm9tiIPyqwJKNxRmyAAKfiRbYiEtqqR5zdGXcBECgYEA8ZoG
16
+ xTcXI7pqmkWcI87siHhth1jFCGv3EMwAeIy4tk4HBkxjZoBy/hU2mxviYPhuFEPj
17
+ JTKEbiQRebVLwaTJxs543deGQ1shdVHT1005wyGyhuIVXYC56Xhu+8B2y32650/X
18
+ wRTSUXxP/eQ+Qb2MeDPZ0XgpHhU74Za4F812eE8CgYABNwqvKDoyQjiiGu3Aelbz
19
+ KePseE3j7v2q8U5j450k2Oe9zzZLQkAWsZ638McmrMOAMuzavHPJhGYNnpk2mXud
20
+ Zit/w0fg0dKaUqTVb8n3PCogr7KCIM/HP60I7lJXsVs0DK1JmN+NASRkzwtaOsrA
21
+ 3gc5nxZS4dnmE7ai0kKUEQKBgEfA/xHDctPhoZd/5QedhRJi8eSosJv3tMEAVYN4
22
+ B8PdGKj+NudSbtSXaEhY17sFDWxnXSbHAh3UCHylI4K3dlXdLHh2ciG/BwjY7Jmd
23
+ DfKuJ1939fB3Mr/sTMnoN1/oT4IzbFij3nLlALze9L6BlR5+B8r2bP/KPqaZJMOs
24
+ +epxAoGAdV6yhdRcUrSBg6e8Q2f1or7LeYzi6xWjf1RRjqPOgf6VB/xiMmF6RnZK
25
+ uRUzK9ieRnAhtDFJTS1nPbfVLPSsASzxAaGQGdZ3AsHD4jp03jCyKtBaPKdDzeVr
26
+ rrIYPcyZ4OBeoFWUvzlDEtEcqJc3ONwpNWal7nhKEbb/AjqFmpg=
27
+ -----END RSA PRIVATE KEY-----
File without changes
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ describe Xmlenc::EncryptedData do
4
+ let(:encrypted_xml) { File.read('spec/fixtures/encrypted_document.xml') }
5
+ let(:doc) { Nokogiri::XML::Document.parse(encrypted_xml) }
6
+ let(:encrypted_data_node) { doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES) }
7
+ let(:key) { %w(ba1407b67c847b0a85a33c93286c401d).pack('H*') }
8
+ subject { described_class.new(encrypted_data_node) }
9
+
10
+ describe 'document' do
11
+ it 'returns the nokogiri document' do
12
+ expect(subject.document).to be_a(Nokogiri::XML::Document)
13
+ end
14
+ end
15
+
16
+ describe 'encryption_method' do
17
+ it 'returns the encryption method' do
18
+ expect(subject.encryption_method).to be == encrypted_data_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES)
19
+ end
20
+ end
21
+
22
+ describe 'cipher_value' do
23
+ it 'returns the cipher value' do
24
+ expect(subject.cipher_value).to be == <<-CV.gsub(/[\n\s]/, '')
25
+ u2vogkwlvFqeknJ0lYTBZkWS/eX8LR1fDPFMfyK1/UY0EyZfHvbONfDHcC/HLv/f
26
+ aAOOO2Y0GqsknP0LYT1OznkiJrzx134cmJCgbyrYXd3Mp21Pq3rs66JJ34Qt3/+I
27
+ EyJBUSMT8TdT3fBD44BtOqH2op/hy2g3hQPFZul4GiHBEnNJL/4nU1yad3bMvtAB
28
+ mzhx80lJvPGLcruj5V77WMvkvZfoeEqMq4qPWK02ZURsJsq0iZcJDi39NB7OCiON
29
+ CV
30
+ end
31
+ end
32
+
33
+ describe 'decrypt' do
34
+ describe 'aes128-cbc' do
35
+ it 'replaces returns the decrypted value' do
36
+ expect(subject.decrypt(key).gsub(/[\n\s]/, '')).to be == <<-XML.gsub(/[\n\s]/, '')
37
+ <CreditCard Currency="USD" Limit="5,000">
38
+ <Number>4019 2445 0277 5567</Number>
39
+ <Issuer>Bank of the Internet</Issuer>
40
+ <Expiration Time="04/02"/>
41
+ </CreditCard>
42
+ XML
43
+ end
44
+ end
45
+
46
+ describe 'aes256-cbc' do
47
+ it 'replaces returns the decrypted value' do
48
+ encrypted_data_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace <<-XML
49
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"></EncryptionMethod>
50
+ XML
51
+ subject.stub(:cipher_value) { 'DpNYC0Np5hHaQAUyHWpM3MQ99wkDFtGRc7TywqxmhI4sJKDXM5SRjVlKf6st5wOz' }
52
+ key = %w(b0621c35317af207b92e3a6b317a122a93772a7261e3f13a4297eb64a91af10a).pack('H*')
53
+
54
+ expect(subject.decrypt(key)).to be == '4019 2445 0277 5567'
55
+ end
56
+ end
57
+
58
+ describe 'des3-cbc' do
59
+ it 'replaces returns the decrypted value' do
60
+ encrypted_data_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace <<-XML
61
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"></EncryptionMethod>
62
+ XML
63
+ subject.stub(:cipher_value) { 'kY6scZxpyRXQbaDZp+LbuvSFYgmI3pQrfsrCVt3/9sZzpeUTPXJEatQ5KPOXYpJC
64
+ Gid01h/T8PIezic0Ooz/jU+r3kYMKesMYiXin4CXTZYcGhd0TjmOd4kg1vlhE8kt
65
+ WLC7JDzFLPAqXbOug3ghmWunFiUETbGJaF5V4AHIoZrYP+RS3DTLgJcATuDeWyOd
66
+ ueqnLefXiCDNqgSTsK4OyNlX0fpUJgKbL+Mhf5vsqxyIqDsS/p6cRA==' }
67
+
68
+ key = %w(3219e991eccd9186bf75a83ef8982fd0df4558fd1a837aa2).pack('H*')
69
+
70
+ expect(subject.decrypt(key).gsub(/[\n\s]/, '')).to be == <<-XML.gsub(/[\n\s]/, '')
71
+ <CreditCard Currency="USD" Limit="5,000">
72
+ <Number>4019 2445 0277 5567</Number>
73
+ <Issuer>Bank of the Internet</Issuer>
74
+ <Expiration Time="04/02"/>
75
+ </CreditCard>
76
+ XML
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Xmlenc::EncryptedDocument do
4
+ let(:plain_xml) { File.read('spec/fixtures/phaos/payment.xml') }
5
+ let(:encrypted_xml) { File.read('spec/fixtures/encrypted_document.xml') }
6
+ let(:private_key) { OpenSSL::PKey::RSA.new(File.read('spec/fixtures/phaos/rsa-priv-key.pem')) }
7
+ subject { described_class.new(encrypted_xml) }
8
+
9
+ describe 'document' do
10
+ it 'returns the nokogiri document' do
11
+ expect(subject.document).to be_a(Nokogiri::XML::Document)
12
+ end
13
+ end
14
+
15
+ describe 'encrypted_keys' do
16
+ it 'returns the encrypted keys' do
17
+ expect(subject.encrypted_keys.count).to be == 1
18
+ end
19
+
20
+ it 'converts the elements to EncryptedKey' do
21
+ all_converted = subject.encrypted_keys.all? { |ek| ek.is_a?(Xmlenc::EncryptedKey) }
22
+ expect(all_converted).to be_true
23
+ end
24
+ end
25
+
26
+ describe 'decrypt' do
27
+ it 'replaces the encrypted data with the unencrypted elements' do
28
+ expect(subject.decrypt(private_key).chomp).to be == plain_xml
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+
3
+ describe Xmlenc::EncryptedKey do
4
+ let(:encrypted_xml) { File.read('spec/fixtures/encrypted_document.xml') }
5
+ let(:doc) { Nokogiri::XML::Document.parse(encrypted_xml) }
6
+ let(:encrypted_key_node) { doc.at_xpath('//xenc:EncryptedKey', Xmlenc::NAMESPACES) }
7
+ let(:private_key) { OpenSSL::PKey::RSA.new(File.read('spec/fixtures/phaos/rsa-priv-key.pem')) }
8
+ subject { described_class.new(encrypted_key_node) }
9
+
10
+ describe 'document' do
11
+ it 'returns the nokogiri document' do
12
+ expect(subject.document).to be_a(Nokogiri::XML::Document)
13
+ end
14
+ end
15
+
16
+ describe 'encryption_method' do
17
+ it 'returns the encryption method' do
18
+ expect(subject.encryption_method).to be == encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES)
19
+ end
20
+ end
21
+
22
+ describe 'cipher_value' do
23
+ it 'returns the cipher value' do
24
+ expect(subject.cipher_value).to be == <<-CV.gsub(/[\n\s]/, '')
25
+ cCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy
26
+ Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE
27
+ uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT
28
+ UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2
29
+ 98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN
30
+ lUvE9mMjANw4zweCHsOcfw==
31
+ CV
32
+ end
33
+ end
34
+
35
+ describe 'encrypted_data' do
36
+ it 'returns the encrypted data element' do
37
+ expect(subject.encrypted_data).to be_a(Xmlenc::EncryptedData)
38
+ end
39
+ end
40
+
41
+ describe 'decrypt' do
42
+ describe 'with rsa 15' do
43
+ it 'returns the decrypted key' do
44
+ expect(subject.decrypt(private_key)).to be == ['ba1407b67c847b0a85a33c93286c401d'].pack('H*')
45
+ end
46
+ end
47
+
48
+ describe 'with rsa oaep' do
49
+ before :each do
50
+ subject.stub(:cipher_value).and_return <<-CV.gsub(/[\n\s]/, '')
51
+ ZF0JPSfv75/8M+O2O/xi+8N1b9KT94a4l1D1Q65hnX6F00t+wAWZSkcDUoD/
52
+ y2/ERKGUyuQwsG6l58e4MwYpmDI4RhHrUYLCQBacAehqVZhwNxv99L7ANsqr
53
+ ZJoT7N0kER9MbmuIZGb4qisLDfZtzIGKKUUiA3ARfQny4MUxFovSmVUF2Ojq
54
+ SBXUVV/PjMLifVTVyqCMv08YwmM4abj33tKOEMtiZqAa09lUIpnCUzq2IASh
55
+ SRNBzWIHe+ndoB6G2p6ufk0TuRidwdQZkZwTW/2PjK1x7KejaqADWaOIImKh
56
+ SBMpGzkVfDuv8aAFXOtf+LV67Ov6hJAt7FB65tE9Hg==
57
+ CV
58
+
59
+ encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace <<-XML
60
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
61
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
62
+ </EncryptionMethod>
63
+ XML
64
+ end
65
+
66
+ describe 'with unsupported digest method' do
67
+ it 'raises an unsupported error' do
68
+ encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace <<-XML
69
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
70
+ <ds:DigestMethod Algorithm="unsupported" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
71
+ </EncryptionMethod>
72
+ XML
73
+
74
+ expect {
75
+ subject.decrypt(private_key)
76
+ }.to raise_error(Xmlenc::UnsupportedError)
77
+ end
78
+ end
79
+
80
+ it 'returns the decrypted key' do
81
+ expect(subject.decrypt(private_key)).to be == ['3219e991eccd9186bf75a83ef8982fd0df4558fd1a837aa2'].pack('H*')
82
+ end
83
+ end
84
+
85
+ describe 'with unsupported algorithm' do
86
+ it 'raises an unsupported error' do
87
+ encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace <<-XML
88
+ <EncryptionMethod Algorithm="unsupported"></EncryptionMethod>
89
+ XML
90
+
91
+ expect {
92
+ subject.decrypt(private_key)
93
+ }.to raise_error(Xmlenc::UnsupportedError)
94
+ end
95
+ end
96
+ end
97
+
98
+ end
@@ -0,0 +1,114 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Phaos compatibility tests' do
4
+ let(:plain_xml) { File.read('spec/fixtures/phaos/payment.xml') }
5
+ let(:private_key) { OpenSSL::PKey::RSA.new(File.read('spec/fixtures/phaos/rsa-priv-key.pem')) }
6
+ let(:doc) { Nokogiri::XML::Document.parse(encrypted_xml) }
7
+
8
+ describe 'element 3des rsa oaep sha1' do
9
+ let(:encrypted_xml) { File.read('spec/fixtures/phaos/enc-element-3des-kt-rsa_oaep_sha1.xml') }
10
+
11
+ it 'decrypts the correct element' do
12
+ key_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedKey//xenc:CipherValue', Xmlenc::NAMESPACES).content)
13
+ data_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue', Xmlenc::NAMESPACES).content)
14
+
15
+ key = private_key.private_decrypt(key_cipher, OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)
16
+
17
+ cipher = OpenSSL::Cipher::Cipher.new('des-ede3-cbc')
18
+ cipher.decrypt
19
+ cipher.key = key
20
+ cipher.iv = data_cipher[0...cipher.iv_len]
21
+ result = cipher.update(data_cipher[cipher.iv_len..-1])
22
+ result << cipher.final
23
+
24
+ doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
25
+ expect(doc.to_xml.chomp).to be == plain_xml
26
+ end
27
+ end
28
+
29
+ describe 'element aes 128 cbc rsa oaep sha1' do
30
+ let(:encrypted_xml) { File.read('spec/fixtures/phaos/enc-element-aes128-kt-rsa_oaep_sha1.xml') }
31
+
32
+ it 'decrypts the correct element' do
33
+ key_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedKey//xenc:CipherValue', Xmlenc::NAMESPACES).content)
34
+ data_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue', Xmlenc::NAMESPACES).content)
35
+
36
+ key = private_key.private_decrypt(key_cipher, OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)
37
+
38
+ cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc')
39
+ cipher.decrypt
40
+ cipher.key = key
41
+ cipher.iv = data_cipher[0...cipher.iv_len]
42
+ result = cipher.update(data_cipher[cipher.iv_len..-1])
43
+ result << cipher.final
44
+
45
+ doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
46
+ expect(doc.to_xml.chomp).to be == plain_xml
47
+ end
48
+ end
49
+
50
+ describe 'element aes 128 cbc rsa 1.5' do
51
+ let(:encrypted_xml) { File.read('spec/fixtures/phaos/enc-element-aes128-kt-rsa1_5.xml') }
52
+
53
+ it 'decrypts the correct element' do
54
+ key_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedKey//xenc:CipherValue', Xmlenc::NAMESPACES).content)
55
+ data_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue', Xmlenc::NAMESPACES).content)
56
+
57
+ key = private_key.private_decrypt(key_cipher)
58
+
59
+ cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc')
60
+ cipher.decrypt
61
+ cipher.key = key
62
+ cipher.iv = data_cipher[0...cipher.iv_len]
63
+ result = cipher.update(data_cipher[cipher.iv_len..-1])
64
+ result << cipher.final
65
+
66
+ doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
67
+ expect(doc.to_xml.chomp).to be == plain_xml
68
+ end
69
+ end
70
+
71
+ describe 'content aes 256 cbc rsa oaep sha1' do
72
+ let(:encrypted_xml) { File.read('spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml') }
73
+
74
+ it 'decrypts the correct element' do
75
+ key_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedKey//xenc:CipherValue', Xmlenc::NAMESPACES).content)
76
+ data_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue', Xmlenc::NAMESPACES).content)
77
+
78
+ key = private_key.private_decrypt(key_cipher)
79
+
80
+ cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
81
+ cipher.decrypt
82
+ cipher.key = key
83
+ cipher.iv = data_cipher[0...cipher.iv_len]
84
+ result = cipher.update(data_cipher[cipher.iv_len..-1])
85
+ result << cipher.final
86
+
87
+ doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
88
+ expect(doc.to_xml.chomp).to be == plain_xml
89
+ end
90
+ end
91
+
92
+ describe 'text aes 256 cbc rsa oaep sha1' do
93
+ let(:encrypted_xml) { File.read('spec/fixtures/phaos/enc-text-aes256-kt-rsa_oaep_sha1.xml') }
94
+
95
+ it 'decrypts the correct element' do
96
+ key_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedKey//xenc:CipherValue', Xmlenc::NAMESPACES).content)
97
+ data_cipher = Base64.decode64(doc.at_xpath('//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue', Xmlenc::NAMESPACES).content)
98
+
99
+ key = private_key.private_decrypt(key_cipher, OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)
100
+
101
+ cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
102
+ cipher.decrypt
103
+ cipher.key = key
104
+ cipher.iv = data_cipher[0...cipher.iv_len]
105
+ result = cipher.update(data_cipher[cipher.iv_len..-1])
106
+ result << cipher.final
107
+
108
+
109
+ doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
110
+
111
+ expect(doc.to_xml.gsub(/[\n\s]/, '')).to be == plain_xml.gsub(/[\n\s]/, '')
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,20 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'xmlenc'
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+
15
+ # Run specs in random order to surface order dependencies. If you find an
16
+ # order dependency and want to debug it, you can fix the order by providing
17
+ # the seed, which is printed after each run.
18
+ # --seed 1234
19
+ config.order = 'random'
20
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xmlenc/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "xmlenc"
8
+ spec.version = Xmlenc::VERSION
9
+ spec.authors = ["Benoist"]
10
+ spec.email = ["bclaassen@digidentity.eu"]
11
+ spec.description = %q{A (partial)implementation of the XMLENC specificiation}
12
+ spec.summary = %q{A (partial)implementation of the XMLENC specificiation}
13
+ spec.homepage = "https://github.com/digidentity/xmlenc"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "nokogiri", "~> 1.6"
22
+ spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "rspec", "~> 2.14"
24
+ spec.add_development_dependency "rake"
25
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xmlenc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Benoist
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: A (partial)implementation of the XMLENC specificiation
70
+ email:
71
+ - bclaassen@digidentity.eu
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .rspec
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - lib/xmlenc.rb
83
+ - lib/xmlenc/algorithms/aes_cbc.rb
84
+ - lib/xmlenc/algorithms/des3_cbc.rb
85
+ - lib/xmlenc/algorithms/rsa_15.rb
86
+ - lib/xmlenc/algorithms/rsa_oaep_mgf1p.rb
87
+ - lib/xmlenc/encrypted_data.rb
88
+ - lib/xmlenc/encrypted_document.rb
89
+ - lib/xmlenc/encrypted_key.rb
90
+ - lib/xmlenc/version.rb
91
+ - spec/fixtures/encrypted_document.xml
92
+ - spec/fixtures/key.pem
93
+ - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml
94
+ - spec/fixtures/phaos/enc-element-3des-kt-rsa_oaep_sha1.xml
95
+ - spec/fixtures/phaos/enc-element-aes128-kt-rsa1_5.xml
96
+ - spec/fixtures/phaos/enc-element-aes128-kt-rsa_oaep_sha1.xml
97
+ - spec/fixtures/phaos/enc-text-aes256-kt-rsa_oaep_sha1.xml
98
+ - spec/fixtures/phaos/key.txt
99
+ - spec/fixtures/phaos/payment.xml
100
+ - spec/fixtures/phaos/rsa-priv-key.pem
101
+ - spec/lib/xmlenc/.keep
102
+ - spec/lib/xmlenc/encrypted_data_spec.rb
103
+ - spec/lib/xmlenc/encrypted_document_spec.rb
104
+ - spec/lib/xmlenc/encrypted_key_spec.rb
105
+ - spec/lib/xmlenc/phaos_compat_spec.rb
106
+ - spec/spec_helper.rb
107
+ - xmlenc.gemspec
108
+ homepage: https://github.com/digidentity/xmlenc
109
+ licenses:
110
+ - MIT
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.0.6
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: A (partial)implementation of the XMLENC specificiation
132
+ test_files:
133
+ - spec/fixtures/encrypted_document.xml
134
+ - spec/fixtures/key.pem
135
+ - spec/fixtures/phaos/enc-content-aes256-kt-rsa1_5.xml
136
+ - spec/fixtures/phaos/enc-element-3des-kt-rsa_oaep_sha1.xml
137
+ - spec/fixtures/phaos/enc-element-aes128-kt-rsa1_5.xml
138
+ - spec/fixtures/phaos/enc-element-aes128-kt-rsa_oaep_sha1.xml
139
+ - spec/fixtures/phaos/enc-text-aes256-kt-rsa_oaep_sha1.xml
140
+ - spec/fixtures/phaos/key.txt
141
+ - spec/fixtures/phaos/payment.xml
142
+ - spec/fixtures/phaos/rsa-priv-key.pem
143
+ - spec/lib/xmlenc/.keep
144
+ - spec/lib/xmlenc/encrypted_data_spec.rb
145
+ - spec/lib/xmlenc/encrypted_document_spec.rb
146
+ - spec/lib/xmlenc/encrypted_key_spec.rb
147
+ - spec/lib/xmlenc/phaos_compat_spec.rb
148
+ - spec/spec_helper.rb