xmldsig 0.6.4 → 0.6.5
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/CHANGELOG.md +3 -0
- data/lib/xmldsig/signature.rb +14 -1
- data/lib/xmldsig/version.rb +1 -1
- data/spec/fixtures/signed_signature_namespace.xml +23 -0
- data/spec/fixtures/unsigned_signature_namespace.xml +23 -0
- data/spec/lib/xmldsig/signature_spec.rb +1 -0
- data/spec/lib/xmldsig/signed_document_spec.rb +9 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9796692edf2edbf8dc5b0b3e034e72c110b9632
|
4
|
+
data.tar.gz: 987fa5579e92b79490237b25eb01bdea3fb9e7db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36cc6186cf9d51dbd483c2d64d31bd81f3c7411e53fa43be74463ca7613dd107efc679893fa9510f985230ad40289bc0fb50b73ae83d389d13e5e40482452f1e
|
7
|
+
data.tar.gz: aafbdeb71da7b102eb054f6ae9db0e590ddda376cca8a85056279511d03b85a4b426a83fd1511c2cc6451a68b5d817c2665a9c89cd7c972edf1800009327dc6f
|
data/CHANGELOG.md
CHANGED
data/lib/xmldsig/signature.rb
CHANGED
@@ -54,7 +54,20 @@ module Xmldsig
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def canonicalized_signed_info
|
57
|
-
Canonicalizer.new(
|
57
|
+
Canonicalizer.new(
|
58
|
+
signed_info,
|
59
|
+
canonicalization_method,
|
60
|
+
inclusive_namespaces_for_canonicalization
|
61
|
+
).canonicalize
|
62
|
+
end
|
63
|
+
|
64
|
+
def inclusive_namespaces_for_canonicalization
|
65
|
+
namespaces_node = signed_info.at_xpath(
|
66
|
+
'descendant::ds:CanonicalizationMethod/ec:InclusiveNamespaces',
|
67
|
+
NAMESPACES
|
68
|
+
)
|
69
|
+
return unless namespaces_node && namespaces_node.get_attribute('PrefixList')
|
70
|
+
namespaces_node.get_attribute('PrefixList').split(/\W+/)
|
58
71
|
end
|
59
72
|
|
60
73
|
def calculate_signature_value(private_key, &block)
|
data/lib/xmldsig/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<foo:Foo xmlns:foo="http://example.com/foo#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" ID="foo">
|
3
|
+
<foo:Bar>bar</foo:Bar>
|
4
|
+
<ds:Signature>
|
5
|
+
<ds:SignedInfo>
|
6
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
7
|
+
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="foo"/>
|
8
|
+
</ds:CanonicalizationMethod>
|
9
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
10
|
+
<ds:Reference URI="#foo">
|
11
|
+
<ds:Transforms>
|
12
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
13
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
14
|
+
<ec:InclusiveNamespaces PrefixList="foo"/>
|
15
|
+
</ds:Transform>
|
16
|
+
</ds:Transforms>
|
17
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
18
|
+
<ds:DigestValue>ftoSYFdze1AWgGHF5N9i9SFKThXkqH2AdyzA3/epbJw=</ds:DigestValue>
|
19
|
+
</ds:Reference>
|
20
|
+
</ds:SignedInfo>
|
21
|
+
<ds:SignatureValue>s3yYvk1UCZkIpljdy6GZTdbOi/FvhuvCnBSYmdPb3yQmtEpww5Q2tCKgqu/9ixxf1tmyUulRrIZk0mVarQUsykrJhOKBHo8ht487c/XT+fmv+zF4JeO4fV6VsAx1cFd/qMXdDyE6nOxgW+qppeRwkdfX2N5I8COzn0fHOLp9QTo=</ds:SignatureValue>
|
22
|
+
</ds:Signature>
|
23
|
+
</foo:Foo>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<foo:Foo ID="foo" xmlns:foo="http://example.com/foo#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#">
|
3
|
+
<foo:Bar>bar</foo:Bar>
|
4
|
+
<ds:Signature>
|
5
|
+
<ds:SignedInfo>
|
6
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
7
|
+
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="foo"/>
|
8
|
+
</ds:CanonicalizationMethod>
|
9
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
10
|
+
<ds:Reference URI="#foo">
|
11
|
+
<ds:Transforms>
|
12
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
13
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
14
|
+
<ec:InclusiveNamespaces PrefixList="foo"/>
|
15
|
+
</ds:Transform>
|
16
|
+
</ds:Transforms>
|
17
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
18
|
+
<ds:DigestValue></ds:DigestValue>
|
19
|
+
</ds:Reference>
|
20
|
+
</ds:SignedInfo>
|
21
|
+
<ds:SignatureValue></ds:SignatureValue>
|
22
|
+
</ds:Signature>
|
23
|
+
</foo:Foo>
|
@@ -106,6 +106,7 @@ describe Xmldsig::Signature do
|
|
106
106
|
|
107
107
|
it "returns false with the default validation scheme and true with the X509 serial fix scheme" do
|
108
108
|
aggregate_failures do
|
109
|
+
break expect(signature.valid?(certificate)).to eq(true) if RUBY_ENGINE == 'jruby'
|
109
110
|
expect { signature.valid?(certificate) }.to raise_error Xmldsig::SchemaError, /is not a valid value of the atomic type 'xs:integer'/
|
110
111
|
expect(signature.valid?(certificate, Xmldsig::XSD_X509_SERIAL_FIX_FILE)).to eq(true)
|
111
112
|
expect(signature.errors).to eql []
|
@@ -125,6 +125,15 @@ describe Xmldsig::SignedDocument do
|
|
125
125
|
expect(signed_document.signatures.last.signature_value).to_not be(unsigned_document.signatures.last.signature_value)
|
126
126
|
end
|
127
127
|
end
|
128
|
+
|
129
|
+
context 'with inclusive namespaces for the signature' do
|
130
|
+
let(:unsigned_xml) { File.read("spec/fixtures/unsigned_signature_namespace.xml") }
|
131
|
+
let(:signed_xml) { File.read("spec/fixtures/signed_signature_namespace.xml") }
|
132
|
+
|
133
|
+
it 'canonicalizes and signs correctly' do
|
134
|
+
expect(unsigned_document.sign(private_key)).to eq(signed_xml)
|
135
|
+
end
|
136
|
+
end
|
128
137
|
end
|
129
138
|
|
130
139
|
describe "Nested Signatures" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmldsig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- benoist
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- spec/fixtures/signed/shib.cert
|
70
70
|
- spec/fixtures/signed/shib.xml
|
71
71
|
- spec/fixtures/signed_custom_attribute_id.xml
|
72
|
+
- spec/fixtures/signed_signature_namespace.xml
|
72
73
|
- spec/fixtures/signed_xml-exc-c14n#with_comments.xml
|
73
74
|
- spec/fixtures/unsigned-invalid.xml
|
74
75
|
- spec/fixtures/unsigned-malicious.xml
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- spec/fixtures/unsigned_multiple_references.xml
|
94
95
|
- spec/fixtures/unsigned_nested_signature.xml
|
95
96
|
- spec/fixtures/unsigned_nested_signed_signature.xml
|
97
|
+
- spec/fixtures/unsigned_signature_namespace.xml
|
96
98
|
- spec/lib/xmldsig/reference_spec.rb
|
97
99
|
- spec/lib/xmldsig/signature_spec.rb
|
98
100
|
- spec/lib/xmldsig/signed_document_spec.rb
|
@@ -136,6 +138,7 @@ test_files:
|
|
136
138
|
- spec/fixtures/signed/shib.cert
|
137
139
|
- spec/fixtures/signed/shib.xml
|
138
140
|
- spec/fixtures/signed_custom_attribute_id.xml
|
141
|
+
- spec/fixtures/signed_signature_namespace.xml
|
139
142
|
- spec/fixtures/signed_xml-exc-c14n#with_comments.xml
|
140
143
|
- spec/fixtures/unsigned-invalid.xml
|
141
144
|
- spec/fixtures/unsigned-malicious.xml
|
@@ -160,6 +163,7 @@ test_files:
|
|
160
163
|
- spec/fixtures/unsigned_multiple_references.xml
|
161
164
|
- spec/fixtures/unsigned_nested_signature.xml
|
162
165
|
- spec/fixtures/unsigned_nested_signed_signature.xml
|
166
|
+
- spec/fixtures/unsigned_signature_namespace.xml
|
163
167
|
- spec/lib/xmldsig/reference_spec.rb
|
164
168
|
- spec/lib/xmldsig/signature_spec.rb
|
165
169
|
- spec/lib/xmldsig/signed_document_spec.rb
|