xmldsig 0.2.7 → 0.2.8
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/README.md +4 -0
- data/lib/xmldsig/signed_document.rb +4 -2
- data/lib/xmldsig/transforms/enveloped_signature.rb +4 -1
- data/lib/xmldsig/version.rb +1 -1
- data/spec/fixtures/signed/shib.cert +20 -0
- data/spec/fixtures/signed/shib.xml +22 -0
- data/spec/fixtures/unsigned/unsigned_nested_signature_at_bottom.xml +40 -0
- data/spec/fixtures/unsigned/unsigned_nested_signature_at_top.xml +40 -0
- data/spec/lib/xmldsig/signed_document_spec.rb +2 -2
- data/spec/lib/xmldsig/transforms/enveloped_signature_spec.rb +2 -2
- data/spec/lib/xmldsig_spec.rb +16 -4
- metadata +11 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cc1b756bb07e55a09690b94d94fc3994032311b
|
4
|
+
data.tar.gz: 3ad4f0aa9cc2ce9abc66857bdf31c530656f207c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3639d76dddac3500ada6699b86e4eb23a4a9bc7f701b1ed94eb80e841b624d71a8c4a924783c9711f85af47e8bc81878524a047f6942850c6fbd463bfc5e405a
|
7
|
+
data.tar.gz: 497cb5e9810215ad95f49c0e0ac0d24c91144993c99b050d933faec696a5af0a221149fd8262234a4ed31eb1cda3004ee7f6b5112fb5544f4dd9339abf4e37fb
|
data/README.md
CHANGED
@@ -65,6 +65,10 @@ signed_document = Xmldsig::SignedDocument.new(signed_xml)
|
|
65
65
|
signed_document.validate do |signature_value, data|
|
66
66
|
certificate.public_key.verify(OpenSSL::Digest::SHA256.new, signature_value, data)
|
67
67
|
end
|
68
|
+
|
69
|
+
# Custom ID attribute
|
70
|
+
signed_document = Xmldsig::SignedDocument.new(signed_xml, id_attr: "MyID")
|
71
|
+
signed_document.validate(certificate)
|
68
72
|
```
|
69
73
|
|
70
74
|
## Known issues
|
@@ -16,7 +16,7 @@ module Xmldsig
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def sign(private_key = nil, instruct = true, &block)
|
19
|
-
signatures.each { |signature| signature.sign(private_key, &block) }
|
19
|
+
signatures.reverse.each { |signature| signature.sign(private_key, &block) }
|
20
20
|
instruct ? @document.to_s : @document.root.to_s
|
21
21
|
end
|
22
22
|
|
@@ -25,7 +25,9 @@ module Xmldsig
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def signatures
|
28
|
-
document.xpath("//ds:Signature", NAMESPACES).
|
28
|
+
document.xpath("//ds:Signature", NAMESPACES).
|
29
|
+
sort { |left, right| left.ancestors.size <=> right.ancestors.size }.
|
30
|
+
collect { |node| Signature.new(node, @id_attr) } || []
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -2,7 +2,10 @@ module Xmldsig
|
|
2
2
|
class Transforms < Array
|
3
3
|
class EnvelopedSignature < Transform
|
4
4
|
def transform
|
5
|
-
node.xpath("descendant::ds:Signature", Xmldsig::NAMESPACES).
|
5
|
+
signatures = node.xpath("descendant::ds:Signature", Xmldsig::NAMESPACES).
|
6
|
+
sort { |left, right| left.ancestors.size <=> right.ancestors.size }
|
7
|
+
|
8
|
+
signatures.first.remove
|
6
9
|
node
|
7
10
|
end
|
8
11
|
end
|
data/lib/xmldsig/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDRDCCAiygAwIBAgIVAOBBjAUVutk42CWL0RcirPc0cv9/MA0GCSqGSIb3DQEB
|
3
|
+
BQUAMCExHzAdBgNVBAMTFnNoaWJib2xldGgudmFncmFudC5kZXYwHhcNMTUwNDIw
|
4
|
+
MDcyOTQ1WhcNMzUwNDIwMDcyOTQ1WjAhMR8wHQYDVQQDExZzaGliYm9sZXRoLnZh
|
5
|
+
Z3JhbnQuZGV2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmyH0D44r
|
6
|
+
QzlgYzHr7RvfhYwcPhYS+GaFGpBj2AZ5152NyTLn7L4UH/ljWvirJ16K5Qhl4S0v
|
7
|
+
EdCnrtPB6HUfzw9h8iZABfvQ4O1VEkKIeJGskqKleItXdlWYR45d9ATGqFbgwIpU
|
8
|
+
cUYkpnepi8pJd1etPxEVoDT6kFuabrQBXorJ/Q59+eHfFH8oYG8mEVS0bWwyxFu7
|
9
|
+
Rz8GBRcmKmzVeObnGQY5izY69/drLK/NbEX1MZRVOpT2L6LbmLXEZZQ7jd/L2mfE
|
10
|
+
jzDBxfQaTs8Fgnl6vqhbMe1l3ci5SyJObZ3UwXkFy4LDnezs7ghENoSzP6Ah/Sq5
|
11
|
+
8kwvWwJ5JTE/QwIDAQABo3MwcTBQBgNVHREESTBHghZzaGliYm9sZXRoLnZhZ3Jh
|
12
|
+
bnQuZGV2hi1odHRwczovL3NoaWJib2xldGgudmFncmFudC5kZXYvaWRwL3NoaWJi
|
13
|
+
b2xldGgwHQYDVR0OBBYEFHSLABA1TYmg3IH2qUa/2E3yFh4XMA0GCSqGSIb3DQEB
|
14
|
+
BQUAA4IBAQCMrVvvrEcLtlKZXAV03waZjopDeiq5ByVqLjbyHnmuPixFzvxGDfvR
|
15
|
+
H3rRITBTENNHoB6xDnYrw48F+RKtz58b01/SyMvVSQ6UAEtwq1aCxJdWdbfVeBEg
|
16
|
+
bKcPAERQuOZdm13RKod2iAu+jlfLIqwVlSgo9YPqw7cfZzXB6ZrKFtjA8SHEmv26
|
17
|
+
Y67EXAUkXd8nXOwXV2MJehfhBwUAwLxnC7RuVcdR2LRgf7oXbgwiyCJXdNP8S93s
|
18
|
+
2tdLb7+K+Em8iaw4c3wfrBMUWs00P1iUs0KJaCTdG++LODBKt9wGUIB/AJiV+o4W
|
19
|
+
qRh/jxiybmCVSlNUqoAP8t05jrtm6clF
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://lvh.me:3000/saml/consume" ID="_70566d518f1655ba37985b23f7169298" InResponseTo="_9a0411fe3d0cf28644525a3e39469a23368c082e" IssueInstant="2015-04-20T07:37:25.323Z" Version="2.0">
|
2
|
+
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://shibboleth.vagrant.dev/idp/shibboleth
|
3
|
+
</saml2:Issuer>
|
4
|
+
<saml2p:Status>
|
5
|
+
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
|
6
|
+
</saml2p:Status>
|
7
|
+
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" ID="_f3be21a4420268b5a4d0f362b59079a4" IssueInstant="2015-04-20T07:37:25.323Z" Version="2.0"><saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://shibboleth.vagrant.dev/idp/shibboleth</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#_f3be21a4420268b5a4d0f362b59079a4"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>HZfcJ8WkEGokMWQj00MKOUFSTu0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>eEL7t2VTTgSoUTzIpf+OYm3CrTJq6A+EEIRAyNLxVEJkjNRY6abKRBhPNharJGBbsbEh9yVW0sRuIU9HFaidzNaFok2oFoX7gm5nMhBL3n3bEmijWFastoc3PQOKYnATXziCfnyRq44rVaqrjKfYOdvifhZ8gjiBExEBHCoJkRp7jiMvbPqy31qAsNzL/IHZLDv5QILCi8iqjVdhNvdOh/2ajKYLrEiSUEb6Wv/8SxOWjMeSrkTLGJ7l0oWaJWeSCCwE3+2+ssBxWsHLOUTf7x9dRsR9RkliTA1zp22EpUpzTgBRnFrnxpLwCG5Iod0/pP+/klpoZ5pnS0U8c0fObg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDRDCCAiygAwIBAgIVAOBBjAUVutk42CWL0RcirPc0cv9/MA0GCSqGSIb3DQEBBQUAMCExHzAd
|
8
|
+
BgNVBAMTFnNoaWJib2xldGgudmFncmFudC5kZXYwHhcNMTUwNDIwMDcyOTQ1WhcNMzUwNDIwMDcy
|
9
|
+
OTQ1WjAhMR8wHQYDVQQDExZzaGliYm9sZXRoLnZhZ3JhbnQuZGV2MIIBIjANBgkqhkiG9w0BAQEF
|
10
|
+
AAOCAQ8AMIIBCgKCAQEAmyH0D44rQzlgYzHr7RvfhYwcPhYS+GaFGpBj2AZ5152NyTLn7L4UH/lj
|
11
|
+
WvirJ16K5Qhl4S0vEdCnrtPB6HUfzw9h8iZABfvQ4O1VEkKIeJGskqKleItXdlWYR45d9ATGqFbg
|
12
|
+
wIpUcUYkpnepi8pJd1etPxEVoDT6kFuabrQBXorJ/Q59+eHfFH8oYG8mEVS0bWwyxFu7Rz8GBRcm
|
13
|
+
KmzVeObnGQY5izY69/drLK/NbEX1MZRVOpT2L6LbmLXEZZQ7jd/L2mfEjzDBxfQaTs8Fgnl6vqhb
|
14
|
+
Me1l3ci5SyJObZ3UwXkFy4LDnezs7ghENoSzP6Ah/Sq58kwvWwJ5JTE/QwIDAQABo3MwcTBQBgNV
|
15
|
+
HREESTBHghZzaGliYm9sZXRoLnZhZ3JhbnQuZGV2hi1odHRwczovL3NoaWJib2xldGgudmFncmFu
|
16
|
+
dC5kZXYvaWRwL3NoaWJib2xldGgwHQYDVR0OBBYEFHSLABA1TYmg3IH2qUa/2E3yFh4XMA0GCSqG
|
17
|
+
SIb3DQEBBQUAA4IBAQCMrVvvrEcLtlKZXAV03waZjopDeiq5ByVqLjbyHnmuPixFzvxGDfvRH3rR
|
18
|
+
ITBTENNHoB6xDnYrw48F+RKtz58b01/SyMvVSQ6UAEtwq1aCxJdWdbfVeBEgbKcPAERQuOZdm13R
|
19
|
+
Kod2iAu+jlfLIqwVlSgo9YPqw7cfZzXB6ZrKFtjA8SHEmv26Y67EXAUkXd8nXOwXV2MJehfhBwUA
|
20
|
+
wLxnC7RuVcdR2LRgf7oXbgwiyCJXdNP8S93s2tdLb7+K+Em8iaw4c3wfrBMUWs00P1iUs0KJaCTd
|
21
|
+
G++LODBKt9wGUIB/AJiV+o4WqRh/jxiybmCVSlNUqoAP8t05jrtm6clF</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject><saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" NameQualifier="https://shibboleth.vagrant.dev/idp/shibboleth">shibadmin</saml2:NameID><saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml2:SubjectConfirmationData Address="192.168.66.1" InResponseTo="_9a0411fe3d0cf28644525a3e39469a23368c082e" NotOnOrAfter="2015-04-20T07:42:25.323Z" Recipient="http://lvh.me:3000/saml/consume"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore="2015-04-20T07:37:25.323Z" NotOnOrAfter="2015-04-20T07:42:25.323Z"><saml2:AudienceRestriction><saml2:Audience>urn:testing:app</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant="2015-04-20T07:31:04.345Z" SessionIndex="_a2388aad0bff623245c6ae72576004e6"><saml2:SubjectLocality Address="192.168.66.1"/><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement></saml2:Assertion>
|
22
|
+
</saml2p:Response>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<foo:Foo ID="foo" xmlns:foo="http://example.com/foo#" xmlns:baz="http://example.com/baz#" 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
|
+
<baz:Baz ID="baz">
|
5
|
+
<ds:Signature>
|
6
|
+
<ds:SignedInfo>
|
7
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
8
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
9
|
+
<ds:Reference URI="#baz">
|
10
|
+
<ds:Transforms>
|
11
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
12
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
13
|
+
<ec:InclusiveNamespaces PrefixList="foo baz"/>
|
14
|
+
</ds:Transform>
|
15
|
+
</ds:Transforms>
|
16
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
17
|
+
<ds:DigestValue></ds:DigestValue>
|
18
|
+
</ds:Reference>
|
19
|
+
</ds:SignedInfo>
|
20
|
+
<ds:SignatureValue></ds:SignatureValue>
|
21
|
+
</ds:Signature>
|
22
|
+
</baz:Baz>
|
23
|
+
<ds:Signature>
|
24
|
+
<ds:SignedInfo>
|
25
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
26
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
27
|
+
<ds:Reference URI="#foo">
|
28
|
+
<ds:Transforms>
|
29
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
30
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
31
|
+
<ec:InclusiveNamespaces PrefixList="foo baz"/>
|
32
|
+
</ds:Transform>
|
33
|
+
</ds:Transforms>
|
34
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
35
|
+
<ds:DigestValue></ds:DigestValue>
|
36
|
+
</ds:Reference>
|
37
|
+
</ds:SignedInfo>
|
38
|
+
<ds:SignatureValue></ds:SignatureValue>
|
39
|
+
</ds:Signature>
|
40
|
+
</foo:Foo>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<foo:Foo ID="foo" xmlns:foo="http://example.com/foo#" xmlns:baz="http://example.com/baz#" 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
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
8
|
+
<ds:Reference URI="#foo">
|
9
|
+
<ds:Transforms>
|
10
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
11
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
12
|
+
<ec:InclusiveNamespaces PrefixList="foo baz"/>
|
13
|
+
</ds:Transform>
|
14
|
+
</ds:Transforms>
|
15
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
16
|
+
<ds:DigestValue></ds:DigestValue>
|
17
|
+
</ds:Reference>
|
18
|
+
</ds:SignedInfo>
|
19
|
+
<ds:SignatureValue></ds:SignatureValue>
|
20
|
+
</ds:Signature>
|
21
|
+
<baz:Baz ID="baz">
|
22
|
+
<ds:Signature>
|
23
|
+
<ds:SignedInfo>
|
24
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
25
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
26
|
+
<ds:Reference URI="#baz">
|
27
|
+
<ds:Transforms>
|
28
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
29
|
+
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
30
|
+
<ec:InclusiveNamespaces PrefixList="foo baz"/>
|
31
|
+
</ds:Transform>
|
32
|
+
</ds:Transforms>
|
33
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
34
|
+
<ds:DigestValue></ds:DigestValue>
|
35
|
+
</ds:Reference>
|
36
|
+
</ds:SignedInfo>
|
37
|
+
<ds:SignatureValue></ds:SignatureValue>
|
38
|
+
</ds:Signature>
|
39
|
+
</baz:Baz>
|
40
|
+
</foo:Foo>
|
@@ -42,8 +42,8 @@ describe Xmldsig::SignedDocument do
|
|
42
42
|
signed_document.signatures.should be_all { |signature| signature.is_a?(Xmldsig::Signature) }
|
43
43
|
end
|
44
44
|
|
45
|
-
it "returns the
|
46
|
-
unsigned_document.signatures.first.references.first.reference_uri.should == '#
|
45
|
+
it "returns the outer signatures first" do
|
46
|
+
unsigned_document.signatures.first.references.first.reference_uri.should == '#foo'
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -4,8 +4,8 @@ describe Xmldsig::Transforms::EnvelopedSignature do
|
|
4
4
|
let(:unsigned_xml) { File.read('spec/fixtures/unsigned_nested_signature.xml') }
|
5
5
|
let(:unsigned_document) { Xmldsig::SignedDocument.new(unsigned_xml) }
|
6
6
|
|
7
|
-
it 'only removes the
|
8
|
-
node_with_nested_signature = unsigned_document.signatures.
|
7
|
+
it 'only removes the outer most signature element' do
|
8
|
+
node_with_nested_signature = unsigned_document.signatures.first.references.first.referenced_node
|
9
9
|
|
10
10
|
described_class.new(node_with_nested_signature, nil).transform
|
11
11
|
|
data/spec/lib/xmldsig_spec.rb
CHANGED
@@ -15,17 +15,18 @@ describe Xmldsig do
|
|
15
15
|
Xmldsig::SignedDocument.new(signed_document).validate(certificate).should be == true
|
16
16
|
end
|
17
17
|
|
18
|
-
it 'should have
|
19
|
-
Xmldsig::SignedDocument.new(signed_document).signatures.count.should
|
18
|
+
it 'should have at least 1 signature element' do
|
19
|
+
Xmldsig::SignedDocument.new(signed_document).signatures.count.should >= 1
|
20
20
|
end
|
21
21
|
|
22
22
|
# TODO: remove this verification step when library matures
|
23
|
-
#it 'matches the result from xmlsec1' do
|
23
|
+
# it 'matches the result from xmlsec1' do
|
24
24
|
# result = `xmlsec1 --sign --id-attr:ID http://example.com/foo#:Foo --privkey-pem spec/fixtures/key.pem #{document}`
|
25
25
|
# result.gsub!("\n", '')
|
26
26
|
# signed_document.gsub!("\n", '')
|
27
|
+
# puts result
|
27
28
|
# result.should == signed_document
|
28
|
-
#end
|
29
|
+
# end
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -42,6 +43,17 @@ describe Xmldsig do
|
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
46
|
+
Dir["spec/fixtures/signed/*.xml"].each do |document|
|
47
|
+
describe "#{document}" do
|
48
|
+
let(:signed_xml) { File.read(document) }
|
49
|
+
let(:signed_document) { Xmldsig::SignedDocument.new(signed_xml) }
|
50
|
+
let(:certificate) { OpenSSL::X509::Certificate.new(File.read(document.gsub('.xml', '.cert'))) }
|
51
|
+
|
52
|
+
it "should be validateable" do
|
53
|
+
expect(signed_document.validate(certificate)).to be == true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
45
57
|
end
|
46
58
|
|
47
59
|
describe "Allows specifying a custom id attribute" 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.2.
|
4
|
+
version: 0.2.8
|
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-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -57,12 +57,16 @@ files:
|
|
57
57
|
- spec/fixtures/signed.xml
|
58
58
|
- spec/fixtures/signed/ideal.cert
|
59
59
|
- spec/fixtures/signed/ideal.txt
|
60
|
+
- spec/fixtures/signed/shib.cert
|
61
|
+
- spec/fixtures/signed/shib.xml
|
60
62
|
- spec/fixtures/signed_custom_attribute_id.xml
|
61
63
|
- spec/fixtures/unsigned.xml
|
62
64
|
- spec/fixtures/unsigned/canonicalizer_1_0.xml
|
63
65
|
- spec/fixtures/unsigned/canonicalizer_1_1.xml
|
64
66
|
- spec/fixtures/unsigned/canonicalizer_exc.xml
|
65
67
|
- spec/fixtures/unsigned/digest_sha1.xml
|
68
|
+
- spec/fixtures/unsigned/unsigned_nested_signature_at_bottom.xml
|
69
|
+
- spec/fixtures/unsigned/unsigned_nested_signature_at_top.xml
|
66
70
|
- spec/fixtures/unsigned/with_soap_envelope.xml
|
67
71
|
- spec/fixtures/unsigned/without_canonicalization.xml
|
68
72
|
- spec/fixtures/unsigned/without_namespace_prefix.xml
|
@@ -98,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
102
|
version: '0'
|
99
103
|
requirements: []
|
100
104
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.4.
|
105
|
+
rubygems_version: 2.4.6
|
102
106
|
signing_key:
|
103
107
|
specification_version: 4
|
104
108
|
summary: This gem is a (partial) implementation of the XMLDsig specification (http://www.w3.org/TR/xmldsig-core)
|
@@ -109,12 +113,16 @@ test_files:
|
|
109
113
|
- spec/fixtures/signed.xml
|
110
114
|
- spec/fixtures/signed/ideal.cert
|
111
115
|
- spec/fixtures/signed/ideal.txt
|
116
|
+
- spec/fixtures/signed/shib.cert
|
117
|
+
- spec/fixtures/signed/shib.xml
|
112
118
|
- spec/fixtures/signed_custom_attribute_id.xml
|
113
119
|
- spec/fixtures/unsigned.xml
|
114
120
|
- spec/fixtures/unsigned/canonicalizer_1_0.xml
|
115
121
|
- spec/fixtures/unsigned/canonicalizer_1_1.xml
|
116
122
|
- spec/fixtures/unsigned/canonicalizer_exc.xml
|
117
123
|
- spec/fixtures/unsigned/digest_sha1.xml
|
124
|
+
- spec/fixtures/unsigned/unsigned_nested_signature_at_bottom.xml
|
125
|
+
- spec/fixtures/unsigned/unsigned_nested_signature_at_top.xml
|
118
126
|
- spec/fixtures/unsigned/with_soap_envelope.xml
|
119
127
|
- spec/fixtures/unsigned/without_canonicalization.xml
|
120
128
|
- spec/fixtures/unsigned/without_namespace_prefix.xml
|