xmlenc 0.2.1 → 0.3.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 +4 -4
- data/lib/xmlenc/builder/base.rb +2 -0
- data/lib/xmlenc/builder/complex_types/encrypted_type.rb +7 -0
- data/lib/xmlenc/version.rb +1 -1
- data/spec/lib/xmlenc/builder/base_spec.rb +1 -1
- data/spec/lib/xmlenc/builder/complex_types/encrypted_type_spec.rb +20 -1
- data/spec/lib/xmlenc/builder/digest_method_spec.rb +2 -1
- data/spec/lib/xmlenc/builder/encrypted_data_spec.rb +2 -1
- data/spec/lib/xmlenc/builder/encrypted_key_spec.rb +2 -1
- data/spec/lib/xmlenc/builder/encryption_method_spec.rb +2 -1
- data/spec/lib/xmlenc/encrypted_data_spec.rb +7 -4
- data/spec/lib/xmlenc/encrypted_document_spec.rb +1 -1
- data/spec/lib/xmlenc/encrypted_key_spec.rb +11 -6
- data/spec/lib/xmlenc/phaos_compat_spec.rb +1 -1
- 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: 869074b32ca2144be9a0c5b4344e2a962b067096
|
4
|
+
data.tar.gz: e33dd060461d348bec6c2160ae83c7997341e572
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3216e9fef6a70ed78735a8cc6587dd22e1a1c8ced0d6ef21ec125203e0778f2379374a3bbfa9a2f9b4ed962cb49146fd71d319f42ceda0f2e4319e2284b83cc6
|
7
|
+
data.tar.gz: 7e80bcaaa65527a1bea1b932ee159bcd225c5335bb58601239e8de4aa64ed6993c90987a9c884d60fc90292253f98da1cebf979fc45c36a9a7d1cd130e2d26b6
|
data/lib/xmlenc/builder/base.rb
CHANGED
@@ -23,6 +23,13 @@ module Xmlenc
|
|
23
23
|
def set_encryption_method(attributes = {})
|
24
24
|
self.encryption_method = EncryptionMethod.new(attributes)
|
25
25
|
end
|
26
|
+
|
27
|
+
def set_key_name(key_name)
|
28
|
+
if key_name
|
29
|
+
self.key_info ||= KeyInfo.new
|
30
|
+
self.key_info.key_name = key_name
|
31
|
+
end
|
32
|
+
end
|
26
33
|
end
|
27
34
|
end
|
28
35
|
end
|
data/lib/xmlenc/version.rb
CHANGED
@@ -9,7 +9,7 @@ end
|
|
9
9
|
describe BaseDummy do
|
10
10
|
describe "parse override" do
|
11
11
|
it "sets the from_xml flag" do
|
12
|
-
BaseDummy.parse("<tag></tag>", :single => true).from_xml?.should
|
12
|
+
BaseDummy.parse("<tag></tag>", :single => true).from_xml?.should be_truthy
|
13
13
|
end
|
14
14
|
|
15
15
|
it "raises an error if the message cannot be parsed" do
|
@@ -18,7 +18,8 @@ describe Xmlenc::Builder::ComplexTypes::EncryptedType do
|
|
18
18
|
|
19
19
|
it "should check the presence of cipher data" do
|
20
20
|
subject.cipher_data = nil
|
21
|
-
expect(subject).
|
21
|
+
expect(subject).to_not be_valid
|
22
|
+
expect(subject.errors[:cipher_data].size).to eq(1)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
@@ -35,6 +36,24 @@ describe Xmlenc::Builder::ComplexTypes::EncryptedType do
|
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
39
|
+
describe "#set_key_name" do
|
40
|
+
it "sets the key info with the key name" do
|
41
|
+
subject.set_key_name("key name")
|
42
|
+
expect(subject.key_info.key_name).to eq "key name"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "does not override old key info data" do
|
46
|
+
subject.set_key_name("key name")
|
47
|
+
expect(subject.key_info.encrypted_key).not_to be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "does not set the key info element if the keyname is nil" do
|
51
|
+
subject.key_info = nil
|
52
|
+
subject.set_key_name(nil)
|
53
|
+
expect(subject.key_info).to be_nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
38
57
|
describe "#parse" do
|
39
58
|
describe "encryption method" do
|
40
59
|
it "should create an EncryptionMethod element" do
|
@@ -12,7 +12,8 @@ describe Xmlenc::Builder::DigestMethod do
|
|
12
12
|
|
13
13
|
it "raises error when no algorithm" do
|
14
14
|
subject.algorithm = nil
|
15
|
-
expect(subject).
|
15
|
+
expect(subject).to_not be_valid
|
16
|
+
expect(subject.errors[:algorithm].size).to eq(1)
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -12,7 +12,8 @@ describe Xmlenc::Builder::EncryptedData do
|
|
12
12
|
|
13
13
|
it "should check the presence of cipher data" do
|
14
14
|
subject.cipher_data = nil
|
15
|
-
expect(subject).
|
15
|
+
expect(subject).to_not be_valid
|
16
|
+
expect(subject.errors[:cipher_data].size).to eq(1)
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
@@ -12,7 +12,8 @@ describe Xmlenc::Builder::EncryptedKey do
|
|
12
12
|
|
13
13
|
it "should check the presence of cipher data" do
|
14
14
|
subject.cipher_data = nil
|
15
|
-
expect(subject).
|
15
|
+
expect(subject).to_not be_valid
|
16
|
+
expect(subject.errors[:cipher_data].size).to eq(1)
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
@@ -12,7 +12,8 @@ describe Xmlenc::Builder::EncryptionMethod do
|
|
12
12
|
|
13
13
|
it "should check the presence of algorithm" do
|
14
14
|
subject.algorithm = nil
|
15
|
-
expect(subject).
|
15
|
+
expect(subject).to_not be_valid
|
16
|
+
expect(subject.errors[:algorithm].size).to eq(1)
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
@@ -46,9 +46,10 @@ describe Xmlenc::EncryptedData do
|
|
46
46
|
|
47
47
|
describe 'aes256-cbc' do
|
48
48
|
it 'replaces returns the decrypted value' do
|
49
|
-
|
50
|
-
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"></EncryptionMethod>
|
49
|
+
fragment = <<-XML
|
50
|
+
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" xmlns="http://www.w3.org/2001/04/xmlenc#"></EncryptionMethod>
|
51
51
|
XML
|
52
|
+
encrypted_data_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(fragment))
|
52
53
|
subject.stub(:cipher_value) { 'DpNYC0Np5hHaQAUyHWpM3MQ99wkDFtGRc7TywqxmhI4sJKDXM5SRjVlKf6st5wOz' }
|
53
54
|
key = %w(b0621c35317af207b92e3a6b317a122a93772a7261e3f13a4297eb64a91af10a).pack('H*')
|
54
55
|
|
@@ -58,9 +59,11 @@ describe Xmlenc::EncryptedData do
|
|
58
59
|
|
59
60
|
describe 'des3-cbc' do
|
60
61
|
it 'replaces returns the decrypted value' do
|
61
|
-
|
62
|
-
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"></EncryptionMethod>
|
62
|
+
fragment = <<-XML
|
63
|
+
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" xmlns="http://www.w3.org/2001/04/xmlenc#"></EncryptionMethod>
|
63
64
|
XML
|
65
|
+
|
66
|
+
encrypted_data_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(fragment))
|
64
67
|
subject.stub(:cipher_value) { 'kY6scZxpyRXQbaDZp+LbuvSFYgmI3pQrfsrCVt3/9sZzpeUTPXJEatQ5KPOXYpJC
|
65
68
|
Gid01h/T8PIezic0Ooz/jU+r3kYMKesMYiXin4CXTZYcGhd0TjmOd4kg1vlhE8kt
|
66
69
|
WLC7JDzFLPAqXbOug3ghmWunFiUETbGJaF5V4AHIoZrYP+RS3DTLgJcATuDeWyOd
|
@@ -31,7 +31,7 @@ describe Xmlenc::EncryptedDocument do
|
|
31
31
|
|
32
32
|
it 'converts the elements to EncryptedKey' do
|
33
33
|
all_converted = subject.encrypted_keys.all? { |ek| ek.is_a?(Xmlenc::EncryptedKey) }
|
34
|
-
expect(all_converted).to
|
34
|
+
expect(all_converted).to be_truthy
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -68,21 +68,24 @@ describe Xmlenc::EncryptedKey do
|
|
68
68
|
SBMpGzkVfDuv8aAFXOtf+LV67Ov6hJAt7FB65tE9Hg==
|
69
69
|
CV
|
70
70
|
|
71
|
-
|
72
|
-
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
|
71
|
+
fragment = <<-XML
|
72
|
+
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" xmlns="http://www.w3.org/2001/04/xmlenc#">
|
73
73
|
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
|
74
74
|
</EncryptionMethod>
|
75
75
|
XML
|
76
|
+
encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(fragment))
|
76
77
|
end
|
77
78
|
|
78
79
|
describe 'with unsupported digest method' do
|
79
80
|
it 'raises an unsupported error' do
|
80
|
-
|
81
|
-
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
|
81
|
+
fragment = <<-XML
|
82
|
+
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" xmlns="http://www.w3.org/2001/04/xmlenc#">
|
82
83
|
<ds:DigestMethod Algorithm="unsupported" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
|
83
84
|
</EncryptionMethod>
|
84
85
|
XML
|
85
86
|
|
87
|
+
encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(fragment))
|
88
|
+
|
86
89
|
expect {
|
87
90
|
subject.decrypt(private_key)
|
88
91
|
}.to raise_error(Xmlenc::UnsupportedError)
|
@@ -96,10 +99,12 @@ describe Xmlenc::EncryptedKey do
|
|
96
99
|
|
97
100
|
describe 'with unsupported algorithm' do
|
98
101
|
it 'raises an unsupported error' do
|
99
|
-
|
100
|
-
<EncryptionMethod Algorithm="unsupported"></EncryptionMethod>
|
102
|
+
fragment = <<-XML
|
103
|
+
<EncryptionMethod Algorithm="unsupported" xmlns="http://www.w3.org/2001/04/xmlenc#"></EncryptionMethod>
|
101
104
|
XML
|
102
105
|
|
106
|
+
encrypted_key_node.at_xpath('./xenc:EncryptionMethod', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(fragment))
|
107
|
+
|
103
108
|
expect {
|
104
109
|
subject.decrypt(private_key)
|
105
110
|
}.to raise_error(Xmlenc::UnsupportedError)
|
@@ -84,7 +84,7 @@ describe 'Phaos compatibility tests' do
|
|
84
84
|
result = cipher.update(data_cipher[cipher.iv_len..-1])
|
85
85
|
result << cipher.final
|
86
86
|
|
87
|
-
doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(result)
|
87
|
+
doc.at_xpath('//xenc:EncryptedData', Xmlenc::NAMESPACES).replace(Nokogiri::XML::DocumentFragment.parse(result))
|
88
88
|
expect(doc.to_xml.chomp).to be == plain_xml
|
89
89
|
end
|
90
90
|
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.
|
4
|
+
version: 0.3.0
|
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
|
+
date: 2015-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|