xmlcanonicalizer 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -5
- data/Gemfile +13 -0
- data/LICENSE +20 -20
- data/README.rdoc +19 -19
- data/Rakefile +51 -53
- data/VERSION +1 -1
- data/lib/xml/util/xmlcanonicalizer.rb +426 -429
- data/test/complex.xml +22 -22
- data/test/expected.xml +22 -22
- data/test/helper.rb +10 -10
- data/test/saml_assertion.xml +10 -0
- data/test/saml_expected_canonical_form.xml +10 -0
- data/test/test_xmlcanonicalizer.rb +58 -35
- data/tests.watchr +62 -0
- data/xmlcanonicalizer.gemspec +66 -57
- metadata +80 -53
- data/.gitignore +0 -21
data/test/complex.xml
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
<samlp:ArtifactResponse IssueInstant='2010-09-10T00:00:50-05:00' Version='2.0' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' ID='122401A9D1742640618954CDD50CEC459150836A' xmlns='urn:oasis:names:tc:SAML:2.0:assertion'><samlp:Status><samlp:StatusCode ID='A6B45394506685EAD93131AD335775015C49B52C' Value='urn:oasis:names:tc:SAML:2.0:status:Failure'/></samlp:Status><samlp:Assertion IssueInstant='2010-09-10T00:00:50-05:00' ID='11B542652811C7A1AC8B8265D92AB293CCA66B26'><Issuer>example.net</Issuer><Subject><NameID Format='urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'/><SubjectConfirmation Method='urn:oasis:names:tc:SAML:2.0:cm:bearer'/></Subject><Conditions NotBefore='2010-09-10T00:00:50-05:00' NotOnOrAfter='2010-09-10T12:00:50-05:00'/><AuthnStatement AuthnInstant='2010-09-10T00:00:50-05:00'><AuthnContext><AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession</AuthnContextClassRef></AuthnContext></AuthnStatement><AttributeStatement><Attribute Name='urn:example:profiles'><AttributeValue FriendlyName='type' type='example:profile:attribute'>Person</AttributeValue><AttributeValue FriendlyName='SessionID' type='example:profile:attribute'>02b5e2df689b97067dc51a0cd2029510</AttributeValue><AttributeValue FriendlyName='Role' type='example:profile:role'>Public</AttributeValue></Attribute></AttributeStatement></samlp:Assertion><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='122401A9D1742640618954CDD50CEC459150836A'><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#'><InclusiveNamespaces PrefixList='#default saml ds xs xsi'/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1'/><ds:DigestValue>dQskOs0c6N7GbFJ13SbozqhEQTM=
|
2
|
-
</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>d2rgUtclTSl7q68kZTkaFo8/rBZk/NEmkeKT7qM5doiVhHF4FrMuv7NdQVbQ
|
3
|
-
Vi//wyYk6i9u8s13tsYnliSo+4xGbWl112LrAp8U2E8pLjMxqLYQHXw6qV3h
|
4
|
-
TLhKw/k8sYS54nOye9t7M0VxHl+sKfX+YZFr8EI3ST2/BKFqm5c=
|
5
|
-
</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDFTCCAn4CAQAwDQYJKoZIhvcNAQEEBQAwgdIxCzAJBgNVBAYTAlVTMRIw
|
6
|
-
EAYDVQQIEwlNaW5uZXNvdGExEjAQBgNVBAcTCVJvY2hlc3RlcjElMCMGA1UE
|
7
|
-
ChMcQ29ycG9yYXRlIFdlYiBTZXJ2aWNlcywgSW5jLjFAMD4GA1UECxM3TWF5
|
8
|
-
byBNZWRpY2FsIExhYm9yYXRvcmllcyBQcm9maWxlIE1hbmFnZXIgSG9zdGVk
|
9
|
-
IGJ5IENXUzEVMBMGA1UEAxMMbWF5by5jd3MubmV0MRswGQYJKoZIhvcNAQkB
|
10
|
-
FgxseWxlQGN3cy5uZXQwHhcNMDcwODAxMTg1ODUzWhcNMzIwNzI1MTg1ODUz
|
11
|
-
WjCB0jELMAkGA1UEBhMCVVMxEjAQBgNVBAgTCU1pbm5lc290YTESMBAGA1UE
|
12
|
-
BxMJUm9jaGVzdGVyMSUwIwYDVQQKExxDb3Jwb3JhdGUgV2ViIFNlcnZpY2Vz
|
13
|
-
LCBJbmMuMUAwPgYDVQQLEzdNYXlvIE1lZGljYWwgTGFib3JhdG9yaWVzIFBy
|
14
|
-
b2ZpbGUgTWFuYWdlciBIb3N0ZWQgYnkgQ1dTMRUwEwYDVQQDEwxtYXlvLmN3
|
15
|
-
cy5uZXQxGzAZBgkqhkiG9w0BCQEWDGx5bGVAY3dzLm5ldDCBnzANBgkqhkiG
|
16
|
-
9w0BAQEFAAOBjQAwgYkCgYEA2+1yxxQTeBR+/ducTSVj7eR8krq/OI2LnYxh
|
17
|
-
un18kVplOiDwUauqxZZL+ItZhC19/48k3f9YyGsRS1r2YNgOvWKXT8/GEMyI
|
18
|
-
/Wk44l/7aUbNeVvdtXBdGdexy972RYH9jOkp4LRWQoJ4l6y1Bt7XesU8p/8Q
|
19
|
-
Yd1V/LqUNHQmcq0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAdSKl3LDTh6Z/p
|
20
|
-
P31zMKHOx5VEHnyUmzfd5vl0tfB8a6uMv3NKe2knwHjx7vwwGboVsCS7X6Uu
|
21
|
-
x+scXbkA8Rod34PyMQAKqzN8ePTlWywPrtbFJzRROj/7Du2uz83osacuW0bv
|
22
|
-
0AoM/vII4Xbyc/f1OTZvI1ygIVlnbmGI+xJATQ==
|
1
|
+
<samlp:ArtifactResponse IssueInstant='2010-09-10T00:00:50-05:00' Version='2.0' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' ID='122401A9D1742640618954CDD50CEC459150836A' xmlns='urn:oasis:names:tc:SAML:2.0:assertion'><samlp:Status><samlp:StatusCode ID='A6B45394506685EAD93131AD335775015C49B52C' Value='urn:oasis:names:tc:SAML:2.0:status:Failure'/></samlp:Status><samlp:Assertion IssueInstant='2010-09-10T00:00:50-05:00' ID='11B542652811C7A1AC8B8265D92AB293CCA66B26'><Issuer>example.net</Issuer><Subject><NameID Format='urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'/><SubjectConfirmation Method='urn:oasis:names:tc:SAML:2.0:cm:bearer'/></Subject><Conditions NotBefore='2010-09-10T00:00:50-05:00' NotOnOrAfter='2010-09-10T12:00:50-05:00'/><AuthnStatement AuthnInstant='2010-09-10T00:00:50-05:00'><AuthnContext><AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession</AuthnContextClassRef></AuthnContext></AuthnStatement><AttributeStatement><Attribute Name='urn:example:profiles'><AttributeValue FriendlyName='type' type='example:profile:attribute'>Person</AttributeValue><AttributeValue FriendlyName='SessionID' type='example:profile:attribute'>02b5e2df689b97067dc51a0cd2029510</AttributeValue><AttributeValue FriendlyName='Role' type='example:profile:role'>Public</AttributeValue></Attribute></AttributeStatement></samlp:Assertion><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='122401A9D1742640618954CDD50CEC459150836A'><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#'><InclusiveNamespaces PrefixList='#default saml ds xs xsi'/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1'/><ds:DigestValue>dQskOs0c6N7GbFJ13SbozqhEQTM=
|
2
|
+
</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>d2rgUtclTSl7q68kZTkaFo8/rBZk/NEmkeKT7qM5doiVhHF4FrMuv7NdQVbQ
|
3
|
+
Vi//wyYk6i9u8s13tsYnliSo+4xGbWl112LrAp8U2E8pLjMxqLYQHXw6qV3h
|
4
|
+
TLhKw/k8sYS54nOye9t7M0VxHl+sKfX+YZFr8EI3ST2/BKFqm5c=
|
5
|
+
</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDFTCCAn4CAQAwDQYJKoZIhvcNAQEEBQAwgdIxCzAJBgNVBAYTAlVTMRIw
|
6
|
+
EAYDVQQIEwlNaW5uZXNvdGExEjAQBgNVBAcTCVJvY2hlc3RlcjElMCMGA1UE
|
7
|
+
ChMcQ29ycG9yYXRlIFdlYiBTZXJ2aWNlcywgSW5jLjFAMD4GA1UECxM3TWF5
|
8
|
+
byBNZWRpY2FsIExhYm9yYXRvcmllcyBQcm9maWxlIE1hbmFnZXIgSG9zdGVk
|
9
|
+
IGJ5IENXUzEVMBMGA1UEAxMMbWF5by5jd3MubmV0MRswGQYJKoZIhvcNAQkB
|
10
|
+
FgxseWxlQGN3cy5uZXQwHhcNMDcwODAxMTg1ODUzWhcNMzIwNzI1MTg1ODUz
|
11
|
+
WjCB0jELMAkGA1UEBhMCVVMxEjAQBgNVBAgTCU1pbm5lc290YTESMBAGA1UE
|
12
|
+
BxMJUm9jaGVzdGVyMSUwIwYDVQQKExxDb3Jwb3JhdGUgV2ViIFNlcnZpY2Vz
|
13
|
+
LCBJbmMuMUAwPgYDVQQLEzdNYXlvIE1lZGljYWwgTGFib3JhdG9yaWVzIFBy
|
14
|
+
b2ZpbGUgTWFuYWdlciBIb3N0ZWQgYnkgQ1dTMRUwEwYDVQQDEwxtYXlvLmN3
|
15
|
+
cy5uZXQxGzAZBgkqhkiG9w0BCQEWDGx5bGVAY3dzLm5ldDCBnzANBgkqhkiG
|
16
|
+
9w0BAQEFAAOBjQAwgYkCgYEA2+1yxxQTeBR+/ducTSVj7eR8krq/OI2LnYxh
|
17
|
+
un18kVplOiDwUauqxZZL+ItZhC19/48k3f9YyGsRS1r2YNgOvWKXT8/GEMyI
|
18
|
+
/Wk44l/7aUbNeVvdtXBdGdexy972RYH9jOkp4LRWQoJ4l6y1Bt7XesU8p/8Q
|
19
|
+
Yd1V/LqUNHQmcq0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAdSKl3LDTh6Z/p
|
20
|
+
P31zMKHOx5VEHnyUmzfd5vl0tfB8a6uMv3NKe2knwHjx7vwwGboVsCS7X6Uu
|
21
|
+
x+scXbkA8Rod34PyMQAKqzN8ePTlWywPrtbFJzRROj/7Du2uz83osacuW0bv
|
22
|
+
0AoM/vII4Xbyc/f1OTZvI1ygIVlnbmGI+xJATQ==
|
23
23
|
</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></samlp:ArtifactResponse>
|
data/test/expected.xml
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
<samlp:ArtifactResponse xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="122401A9D1742640618954CDD50CEC459150836A" IssueInstant="2010-09-10T00:00:50-05:00" Version="2.0"><samlp:Status><samlp:StatusCode ID="A6B45394506685EAD93131AD335775015C49B52C" Value="urn:oasis:names:tc:SAML:2.0:status:Failure"></samlp:StatusCode></samlp:Status><samlp:Assertion ID="11B542652811C7A1AC8B8265D92AB293CCA66B26" IssueInstant="2010-09-10T00:00:50-05:00"><Issuer>example.net</Issuer><Subject><NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"></NameID><SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></SubjectConfirmation></Subject><Conditions NotBefore="2010-09-10T00:00:50-05:00" NotOnOrAfter="2010-09-10T12:00:50-05:00"></Conditions><AuthnStatement AuthnInstant="2010-09-10T00:00:50-05:00"><AuthnContext><AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession</AuthnContextClassRef></AuthnContext></AuthnStatement><AttributeStatement><Attribute Name="urn:example:profiles"><AttributeValue FriendlyName="type" type="example:profile:attribute">Person</AttributeValue><AttributeValue FriendlyName="SessionID" type="example:profile:attribute">02b5e2df689b97067dc51a0cd2029510</AttributeValue><AttributeValue FriendlyName="Role" type="example:profile:role">Public</AttributeValue></Attribute></AttributeStatement></samlp:Assertion><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:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod><ds:Reference URI="122401A9D1742640618954CDD50CEC459150836A"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces PrefixList="#default saml ds xs xsi"></InclusiveNamespaces></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>dQskOs0c6N7GbFJ13SbozqhEQTM=
|
2
|
-
</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>d2rgUtclTSl7q68kZTkaFo8/rBZk/NEmkeKT7qM5doiVhHF4FrMuv7NdQVbQ
|
3
|
-
Vi//wyYk6i9u8s13tsYnliSo+4xGbWl112LrAp8U2E8pLjMxqLYQHXw6qV3h
|
4
|
-
TLhKw/k8sYS54nOye9t7M0VxHl+sKfX+YZFr8EI3ST2/BKFqm5c=
|
5
|
-
</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDFTCCAn4CAQAwDQYJKoZIhvcNAQEEBQAwgdIxCzAJBgNVBAYTAlVTMRIw
|
6
|
-
EAYDVQQIEwlNaW5uZXNvdGExEjAQBgNVBAcTCVJvY2hlc3RlcjElMCMGA1UE
|
7
|
-
ChMcQ29ycG9yYXRlIFdlYiBTZXJ2aWNlcywgSW5jLjFAMD4GA1UECxM3TWF5
|
8
|
-
byBNZWRpY2FsIExhYm9yYXRvcmllcyBQcm9maWxlIE1hbmFnZXIgSG9zdGVk
|
9
|
-
IGJ5IENXUzEVMBMGA1UEAxMMbWF5by5jd3MubmV0MRswGQYJKoZIhvcNAQkB
|
10
|
-
FgxseWxlQGN3cy5uZXQwHhcNMDcwODAxMTg1ODUzWhcNMzIwNzI1MTg1ODUz
|
11
|
-
WjCB0jELMAkGA1UEBhMCVVMxEjAQBgNVBAgTCU1pbm5lc290YTESMBAGA1UE
|
12
|
-
BxMJUm9jaGVzdGVyMSUwIwYDVQQKExxDb3Jwb3JhdGUgV2ViIFNlcnZpY2Vz
|
13
|
-
LCBJbmMuMUAwPgYDVQQLEzdNYXlvIE1lZGljYWwgTGFib3JhdG9yaWVzIFBy
|
14
|
-
b2ZpbGUgTWFuYWdlciBIb3N0ZWQgYnkgQ1dTMRUwEwYDVQQDEwxtYXlvLmN3
|
15
|
-
cy5uZXQxGzAZBgkqhkiG9w0BCQEWDGx5bGVAY3dzLm5ldDCBnzANBgkqhkiG
|
16
|
-
9w0BAQEFAAOBjQAwgYkCgYEA2+1yxxQTeBR+/ducTSVj7eR8krq/OI2LnYxh
|
17
|
-
un18kVplOiDwUauqxZZL+ItZhC19/48k3f9YyGsRS1r2YNgOvWKXT8/GEMyI
|
18
|
-
/Wk44l/7aUbNeVvdtXBdGdexy972RYH9jOkp4LRWQoJ4l6y1Bt7XesU8p/8Q
|
19
|
-
Yd1V/LqUNHQmcq0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAdSKl3LDTh6Z/p
|
20
|
-
P31zMKHOx5VEHnyUmzfd5vl0tfB8a6uMv3NKe2knwHjx7vwwGboVsCS7X6Uu
|
21
|
-
x+scXbkA8Rod34PyMQAKqzN8ePTlWywPrtbFJzRROj/7Du2uz83osacuW0bv
|
22
|
-
0AoM/vII4Xbyc/f1OTZvI1ygIVlnbmGI+xJATQ==
|
1
|
+
<samlp:ArtifactResponse xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="122401A9D1742640618954CDD50CEC459150836A" IssueInstant="2010-09-10T00:00:50-05:00" Version="2.0"><samlp:Status><samlp:StatusCode ID="A6B45394506685EAD93131AD335775015C49B52C" Value="urn:oasis:names:tc:SAML:2.0:status:Failure"></samlp:StatusCode></samlp:Status><samlp:Assertion ID="11B542652811C7A1AC8B8265D92AB293CCA66B26" IssueInstant="2010-09-10T00:00:50-05:00"><Issuer>example.net</Issuer><Subject><NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"></NameID><SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></SubjectConfirmation></Subject><Conditions NotBefore="2010-09-10T00:00:50-05:00" NotOnOrAfter="2010-09-10T12:00:50-05:00"></Conditions><AuthnStatement AuthnInstant="2010-09-10T00:00:50-05:00"><AuthnContext><AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession</AuthnContextClassRef></AuthnContext></AuthnStatement><AttributeStatement><Attribute Name="urn:example:profiles"><AttributeValue FriendlyName="type" type="example:profile:attribute">Person</AttributeValue><AttributeValue FriendlyName="SessionID" type="example:profile:attribute">02b5e2df689b97067dc51a0cd2029510</AttributeValue><AttributeValue FriendlyName="Role" type="example:profile:role">Public</AttributeValue></Attribute></AttributeStatement></samlp:Assertion><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:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod><ds:Reference URI="122401A9D1742640618954CDD50CEC459150836A"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces PrefixList="#default saml ds xs xsi"></InclusiveNamespaces></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>dQskOs0c6N7GbFJ13SbozqhEQTM=
|
2
|
+
</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>d2rgUtclTSl7q68kZTkaFo8/rBZk/NEmkeKT7qM5doiVhHF4FrMuv7NdQVbQ
|
3
|
+
Vi//wyYk6i9u8s13tsYnliSo+4xGbWl112LrAp8U2E8pLjMxqLYQHXw6qV3h
|
4
|
+
TLhKw/k8sYS54nOye9t7M0VxHl+sKfX+YZFr8EI3ST2/BKFqm5c=
|
5
|
+
</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDFTCCAn4CAQAwDQYJKoZIhvcNAQEEBQAwgdIxCzAJBgNVBAYTAlVTMRIw
|
6
|
+
EAYDVQQIEwlNaW5uZXNvdGExEjAQBgNVBAcTCVJvY2hlc3RlcjElMCMGA1UE
|
7
|
+
ChMcQ29ycG9yYXRlIFdlYiBTZXJ2aWNlcywgSW5jLjFAMD4GA1UECxM3TWF5
|
8
|
+
byBNZWRpY2FsIExhYm9yYXRvcmllcyBQcm9maWxlIE1hbmFnZXIgSG9zdGVk
|
9
|
+
IGJ5IENXUzEVMBMGA1UEAxMMbWF5by5jd3MubmV0MRswGQYJKoZIhvcNAQkB
|
10
|
+
FgxseWxlQGN3cy5uZXQwHhcNMDcwODAxMTg1ODUzWhcNMzIwNzI1MTg1ODUz
|
11
|
+
WjCB0jELMAkGA1UEBhMCVVMxEjAQBgNVBAgTCU1pbm5lc290YTESMBAGA1UE
|
12
|
+
BxMJUm9jaGVzdGVyMSUwIwYDVQQKExxDb3Jwb3JhdGUgV2ViIFNlcnZpY2Vz
|
13
|
+
LCBJbmMuMUAwPgYDVQQLEzdNYXlvIE1lZGljYWwgTGFib3JhdG9yaWVzIFBy
|
14
|
+
b2ZpbGUgTWFuYWdlciBIb3N0ZWQgYnkgQ1dTMRUwEwYDVQQDEwxtYXlvLmN3
|
15
|
+
cy5uZXQxGzAZBgkqhkiG9w0BCQEWDGx5bGVAY3dzLm5ldDCBnzANBgkqhkiG
|
16
|
+
9w0BAQEFAAOBjQAwgYkCgYEA2+1yxxQTeBR+/ducTSVj7eR8krq/OI2LnYxh
|
17
|
+
un18kVplOiDwUauqxZZL+ItZhC19/48k3f9YyGsRS1r2YNgOvWKXT8/GEMyI
|
18
|
+
/Wk44l/7aUbNeVvdtXBdGdexy972RYH9jOkp4LRWQoJ4l6y1Bt7XesU8p/8Q
|
19
|
+
Yd1V/LqUNHQmcq0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAdSKl3LDTh6Z/p
|
20
|
+
P31zMKHOx5VEHnyUmzfd5vl0tfB8a6uMv3NKe2knwHjx7vwwGboVsCS7X6Uu
|
21
|
+
x+scXbkA8Rod34PyMQAKqzN8ePTlWywPrtbFJzRROj/7Du2uz83osacuW0bv
|
22
|
+
0AoM/vII4Xbyc/f1OTZvI1ygIVlnbmGI+xJATQ==
|
23
23
|
</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></samlp:ArtifactResponse>
|
data/test/helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
-
require 'xmlcanonicalizer'
|
8
|
-
|
9
|
-
class Test::Unit::TestCase
|
10
|
-
end
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
require 'xmlcanonicalizer'
|
8
|
+
|
9
|
+
class Test::Unit::TestCase
|
10
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<saml:Assertion ID='s272db1ff577ed4463edc408a3d7f3571aebf1696a' IssueInstant='2010-10-28T13:35:36Z' Version='2.0' xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>
|
2
|
+
<saml:Issuer>http://dev.example.com:8080/opensso</saml:Issuer><saml:Subject>
|
3
|
+
<saml:NameID Format='urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress' NameQualifier='http://dev.example.com:8080/opensso'>person@example.com</saml:NameID><saml:SubjectConfirmation Method='urn:oasis:names:tc:SAML:2.0:cm:bearer'>
|
4
|
+
<saml:SubjectConfirmationData InResponseTo='294e5540-c4c6-012d-1a98-0017f2dcb387' NotOnOrAfter='2010-10-28T13:45:36Z' Recipient='http://localhost:3000/auth/authenticate'/></saml:SubjectConfirmation>
|
5
|
+
</saml:Subject><saml:Conditions NotBefore='2010-10-28T13:25:36Z' NotOnOrAfter='2010-10-28T13:45:36Z'>
|
6
|
+
<saml:AudienceRestriction>
|
7
|
+
<saml:Audience>saml-example</saml:Audience>
|
8
|
+
</saml:AudienceRestriction>
|
9
|
+
</saml:Conditions>
|
10
|
+
<saml:AuthnStatement AuthnInstant='2010-10-28T13:35:36Z' SessionIndex='s2eddbcf944c22056cec33d0ea24a54217a164f601'><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name='name'><saml:AttributeValue xsi:type='xs:string' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>happy</saml:AttributeValue></saml:Attribute><saml:Attribute Name='uuid'><saml:AttributeValue xsi:type='xs:string' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>3c678d50-c357-012d-1a87-0017f2dcb387</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="s272db1ff577ed4463edc408a3d7f3571aebf1696a" IssueInstant="2010-10-28T13:35:36Z" Version="2.0">
|
2
|
+
<saml:Issuer>http://dev.example.com:8080/opensso</saml:Issuer><saml:Subject>
|
3
|
+
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" NameQualifier="http://dev.example.com:8080/opensso">person@example.com</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
|
4
|
+
<saml:SubjectConfirmationData InResponseTo="294e5540-c4c6-012d-1a98-0017f2dcb387" NotOnOrAfter="2010-10-28T13:45:36Z" Recipient="http://localhost:3000/auth/authenticate"></saml:SubjectConfirmationData></saml:SubjectConfirmation>
|
5
|
+
</saml:Subject><saml:Conditions NotBefore="2010-10-28T13:25:36Z" NotOnOrAfter="2010-10-28T13:45:36Z">
|
6
|
+
<saml:AudienceRestriction>
|
7
|
+
<saml:Audience>saml-example</saml:Audience>
|
8
|
+
</saml:AudienceRestriction>
|
9
|
+
</saml:Conditions>
|
10
|
+
<saml:AuthnStatement AuthnInstant="2010-10-28T13:35:36Z" SessionIndex="s2eddbcf944c22056cec33d0ea24a54217a164f601"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name="name"><saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">happy</saml:AttributeValue></saml:Attribute><saml:Attribute Name="uuid"><saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">3c678d50-c357-012d-1a87-0017f2dcb387</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion>
|
@@ -1,35 +1,58 @@
|
|
1
|
-
require File.dirname(File.expand_path(__FILE__))+'/helper'
|
2
|
-
|
3
|
-
class TestXmlcanonicalizer < Test::Unit::TestCase
|
4
|
-
|
5
|
-
should "canonicalize a simple xml file" do
|
6
|
-
xml_canonicalizer = XML::Util::XmlCanonicalizer.new(true,true)
|
7
|
-
xml = "<foo bar='test'/>";
|
8
|
-
rexml = REXML::Document.new(xml);
|
9
|
-
xml_canonicalized = xml_canonicalizer.canonicalize(rexml);
|
10
|
-
xml_expect = "<foo bar=\"test\"></foo>";
|
11
|
-
assert_equal xml_expect, xml_canonicalized
|
12
|
-
end
|
13
|
-
|
14
|
-
should "canonicalize a complex xml file" do
|
15
|
-
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/complex.xml','r')
|
16
|
-
xml = ''
|
17
|
-
while (l = fp.gets)
|
18
|
-
xml += l
|
19
|
-
end
|
20
|
-
fp.close
|
21
|
-
|
22
|
-
xml_canonicalizer = XML::Util::XmlCanonicalizer.new(true,true)
|
23
|
-
rexml = REXML::Document.new(xml);
|
24
|
-
xml_canonicalized = xml_canonicalizer.canonicalize(rexml);
|
25
|
-
|
26
|
-
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/expected.xml','r')
|
27
|
-
xml_expect = ''
|
28
|
-
while (l = fp.gets)
|
29
|
-
xml_expect += l
|
30
|
-
end
|
31
|
-
fp.close
|
32
|
-
|
33
|
-
assert_equal xml_expect, xml_canonicalized
|
34
|
-
end
|
35
|
-
|
1
|
+
require File.dirname(File.expand_path(__FILE__))+'/helper'
|
2
|
+
|
3
|
+
class TestXmlcanonicalizer < Test::Unit::TestCase
|
4
|
+
|
5
|
+
should "canonicalize a simple xml file" do
|
6
|
+
xml_canonicalizer = XML::Util::XmlCanonicalizer.new(true,true)
|
7
|
+
xml = "<foo bar='test'/>";
|
8
|
+
rexml = REXML::Document.new(xml);
|
9
|
+
xml_canonicalized = xml_canonicalizer.canonicalize(rexml);
|
10
|
+
xml_expect = "<foo bar=\"test\"></foo>";
|
11
|
+
assert_equal xml_expect, xml_canonicalized
|
12
|
+
end
|
13
|
+
|
14
|
+
should "canonicalize a complex xml file" do
|
15
|
+
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/complex.xml','r')
|
16
|
+
xml = ''
|
17
|
+
while (l = fp.gets)
|
18
|
+
xml += l
|
19
|
+
end
|
20
|
+
fp.close
|
21
|
+
|
22
|
+
xml_canonicalizer = XML::Util::XmlCanonicalizer.new(true,true)
|
23
|
+
rexml = REXML::Document.new(xml);
|
24
|
+
xml_canonicalized = xml_canonicalizer.canonicalize(rexml);
|
25
|
+
|
26
|
+
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/expected.xml','r')
|
27
|
+
xml_expect = ''
|
28
|
+
while (l = fp.gets)
|
29
|
+
xml_expect += l
|
30
|
+
end
|
31
|
+
fp.close
|
32
|
+
|
33
|
+
assert_equal xml_expect, xml_canonicalized
|
34
|
+
end
|
35
|
+
|
36
|
+
should "canonicalize a saml xml file correctly" do
|
37
|
+
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/saml_assertion.xml','r')
|
38
|
+
xml = ''
|
39
|
+
while (l = fp.gets)
|
40
|
+
xml += l
|
41
|
+
end
|
42
|
+
fp.close
|
43
|
+
|
44
|
+
xml_canonicalizer = XML::Util::XmlCanonicalizer.new(false,true)
|
45
|
+
rexml = REXML::Document.new(xml);
|
46
|
+
xml_canonicalized = xml_canonicalizer.canonicalize(rexml);
|
47
|
+
|
48
|
+
fp = File.new(File.dirname(File.expand_path(__FILE__))+'/saml_expected_canonical_form.xml','r')
|
49
|
+
xml_expect = ''
|
50
|
+
while (l = fp.gets)
|
51
|
+
xml_expect += l
|
52
|
+
end
|
53
|
+
fp.close
|
54
|
+
|
55
|
+
assert_equal xml_expect, xml_canonicalized
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
data/tests.watchr
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# Run me with:
|
2
|
+
#
|
3
|
+
# $ watchr specs.watchr
|
4
|
+
|
5
|
+
# --------------------------------------------------
|
6
|
+
# Convenience Methods
|
7
|
+
# --------------------------------------------------
|
8
|
+
def all_test_files
|
9
|
+
Dir['test/**/test_*.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_test_matching(thing_to_match)
|
13
|
+
matches = all_test_files.grep(/#{thing_to_match}/i)
|
14
|
+
if matches.empty?
|
15
|
+
puts "Sorry, thanks for playing, but there were no matches for #{thing_to_match}"
|
16
|
+
else
|
17
|
+
run matches.join(' ')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def run(files_to_run)
|
22
|
+
puts("Running: #{files_to_run}")
|
23
|
+
system("ruby -Ilib -Itest #{files_to_run}")
|
24
|
+
no_int_for_you
|
25
|
+
end
|
26
|
+
|
27
|
+
def run_all_tests
|
28
|
+
run(all_test_files.join(' '))
|
29
|
+
end
|
30
|
+
|
31
|
+
# --------------------------------------------------
|
32
|
+
# Watchr Rules
|
33
|
+
# --------------------------------------------------
|
34
|
+
watch('^test/test_(.*)\.rb' ) { |m| run_test_matching(m[1]) }
|
35
|
+
#watch('^app/(.*)\.rb' ) { |m| run_test_matching(m[1]) }
|
36
|
+
#watch('^app/views/(.*)/(.*)') { |m| run_test_matching(m[1]) }
|
37
|
+
watch('^lib/(.*)\.rb' ) { |m| run_test_matching(m[1]) }
|
38
|
+
watch('^lib/xml/util/xmlcanonicalizer.rb') { run('test/test_xmlcanonicalizer.rb')}
|
39
|
+
|
40
|
+
# --------------------------------------------------
|
41
|
+
# Signal Handling
|
42
|
+
# --------------------------------------------------
|
43
|
+
|
44
|
+
def no_int_for_you
|
45
|
+
@sent_an_int = nil
|
46
|
+
end
|
47
|
+
|
48
|
+
Signal.trap 'INT' do
|
49
|
+
if @sent_an_int then
|
50
|
+
puts " A second INT? Ok, I get the message. Shutting down now."
|
51
|
+
exit
|
52
|
+
else
|
53
|
+
puts " Did you just send me an INT? Ugh. I'll quit for real if you do it again."
|
54
|
+
@sent_an_int = true
|
55
|
+
Kernel.sleep 1.5
|
56
|
+
run_all_tests
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
puts "Save a file to get watchr's attention."
|
61
|
+
|
62
|
+
# vim:ft=ruby
|
data/xmlcanonicalizer.gemspec
CHANGED
@@ -1,57 +1,66 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{xmlcanonicalizer}
|
8
|
-
s.version = "0.1.
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{
|
13
|
-
s.description = %q{This is taken from XMLCanonicalizer/WSS4R and http://github.com/borisnadion/xml-canonicalizer}
|
14
|
-
s.email = %q{andrewferk@gmail.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
s.
|
38
|
-
s.
|
39
|
-
s.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
s.add_development_dependency(%q<
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{xmlcanonicalizer}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = [%q{Andrew Ferk}]
|
12
|
+
s.date = %q{2011-07-31}
|
13
|
+
s.description = %q{This is taken from XMLCanonicalizer/WSS4R and http://github.com/borisnadion/xml-canonicalizer}
|
14
|
+
s.email = %q{andrewferk@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/xml/util/xmlcanonicalizer.rb",
|
27
|
+
"lib/xmlcanonicalizer.rb",
|
28
|
+
"test/complex.xml",
|
29
|
+
"test/expected.xml",
|
30
|
+
"test/helper.rb",
|
31
|
+
"test/saml_assertion.xml",
|
32
|
+
"test/saml_expected_canonical_form.xml",
|
33
|
+
"test/test_xmlcanonicalizer.rb",
|
34
|
+
"tests.watchr",
|
35
|
+
"xmlcanonicalizer.gemspec"
|
36
|
+
]
|
37
|
+
s.homepage = %q{http://github.com/andrewferk/xmlcanonicalizer}
|
38
|
+
s.require_paths = [%q{lib}]
|
39
|
+
s.rubygems_version = %q{1.8.6}
|
40
|
+
s.summary = %q{XML Canonicalizer for Ruby >= 1.9.2}
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
49
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
53
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
55
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
56
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
57
|
+
end
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
60
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
62
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
63
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
metadata
CHANGED
@@ -1,47 +1,81 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmlcanonicalizer
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
version: 0.1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Andrew Ferk
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-07-31 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: shoulda
|
16
|
+
requirement: &15170980 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
22
23
|
prerelease: false
|
23
|
-
|
24
|
+
version_requirements: *15170980
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bundler
|
27
|
+
requirement: &15170180 !ruby/object:Gem::Requirement
|
24
28
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.0
|
31
33
|
type: :development
|
32
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *15170180
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: jeweler
|
38
|
+
requirement: &15169480 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.6.4
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *15169480
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rcov
|
49
|
+
requirement: &15168680 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *15168680
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: thoughtbot-shoulda
|
60
|
+
requirement: &15167480 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *15167480
|
33
69
|
description: This is taken from XMLCanonicalizer/WSS4R and http://github.com/borisnadion/xml-canonicalizer
|
34
70
|
email: andrewferk@gmail.com
|
35
71
|
executables: []
|
36
|
-
|
37
72
|
extensions: []
|
38
|
-
|
39
|
-
extra_rdoc_files:
|
73
|
+
extra_rdoc_files:
|
40
74
|
- LICENSE
|
41
75
|
- README.rdoc
|
42
|
-
files:
|
76
|
+
files:
|
43
77
|
- .document
|
44
|
-
-
|
78
|
+
- Gemfile
|
45
79
|
- LICENSE
|
46
80
|
- README.rdoc
|
47
81
|
- Rakefile
|
@@ -51,40 +85,33 @@ files:
|
|
51
85
|
- test/complex.xml
|
52
86
|
- test/expected.xml
|
53
87
|
- test/helper.rb
|
88
|
+
- test/saml_assertion.xml
|
89
|
+
- test/saml_expected_canonical_form.xml
|
54
90
|
- test/test_xmlcanonicalizer.rb
|
91
|
+
- tests.watchr
|
55
92
|
- xmlcanonicalizer.gemspec
|
56
|
-
has_rdoc: true
|
57
93
|
homepage: http://github.com/andrewferk/xmlcanonicalizer
|
58
94
|
licenses: []
|
59
|
-
|
60
95
|
post_install_message:
|
61
|
-
rdoc_options:
|
62
|
-
|
63
|
-
require_paths:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
64
98
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
100
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
|
72
|
-
version: "0"
|
73
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
106
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
- 0
|
80
|
-
version: "0"
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
requirements: []
|
82
|
-
|
83
112
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.
|
113
|
+
rubygems_version: 1.8.6
|
85
114
|
signing_key:
|
86
115
|
specification_version: 3
|
87
|
-
summary: XML Canonicalizer for Ruby >= 1.
|
88
|
-
test_files:
|
89
|
-
- test/helper.rb
|
90
|
-
- test/test_xmlcanonicalizer.rb
|
116
|
+
summary: XML Canonicalizer for Ruby >= 1.9.2
|
117
|
+
test_files: []
|