signed_xml 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9237cab4ca63f8b3edf77ef72441071583d7369c
4
+ data.tar.gz: af907d76ea132e2a73044a1cf253f3e6139fcc60
5
+ SHA512:
6
+ metadata.gz: c31450cf47d60eafeed2f578e1fd7720c996e107120f1f8076a948f543f55d4dd278f6016d71b8b206ba2b0a657751a05a7aab728a12e8ad5a7403249b2e35c9
7
+ data.tar.gz: 2e01b8a826942db5e17055eedfdc733ad7dfcf4d60d27f59cdb69be00c1ef5e0cff78281b91cb59dc397e54c7b8590b149f518b9b61e87c3d6884aa8b5ace03e
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .idea/
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.2"
4
- - "1.9.3"
5
- - "2.0.0"
6
- - rbx-19mode
3
+ - 1.9.3
4
+ - 2.1
5
+ - rbx
6
+ matrix:
7
+ allow_failures:
8
+ - rvm: rbx
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Todd Thomas
1
+ Copyright (c) 2013 OpenLogic, Inc.
2
2
 
3
3
  MIT License
4
4
 
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
- SignedXml [![Build Status](https://travis-ci.org/toddthomas/signed_xml.png)](https://travis-ci.org/toddthomas/signed_xml)
1
+ SignedXml
2
2
  =========
3
+ [![Build Status](https://travis-ci.org/openlogic/signed_xml.png)](https://travis-ci.org/openlogic/signed_xml)
4
+ [![Coverage Status](https://coveralls.io/repos/openlogic/signed_xml/badge.png)](https://coveralls.io/r/openlogic/signed_xml)
3
5
 
4
6
  SignedXml is a Ruby implementation of [XML Signatures](http://www.w3.org/TR/xmldsig-core).
5
7
 
@@ -11,11 +13,14 @@ SignedXml requires and is in love with [Nokogiri](http://nokogiri.org).
11
13
  Limitations
12
14
  -----------
13
15
 
14
- They are legion. Currently only verification of signed documents is supported.
15
- Allowed transformations are enveloped-signature and c14n. Only same-document
16
- Reference URIs are supported, and of those only the null URI (URI="", or
17
- the whole document) and fragment URIs which specify a literal ID are supported.
18
- XPointer expressions are not supported.
16
+ They are legion. Allowed transformations are enveloped-signature and c14n. Only
17
+ same-document Reference URIs are supported, and of those only the null URI
18
+ (URI="", i.e. the whole document) and fragment URIs which specify a literal ID
19
+ are supported. XPointer expressions are not supported.
20
+
21
+ SignedXml can also sign documents which contain certain required
22
+ placeholder elements. For an example, see the file
23
+ saml_response_template.xml in spec/resources.
19
24
 
20
25
  Installation
21
26
  ------------
@@ -44,9 +49,27 @@ Usage
44
49
  ```ruby
45
50
  require 'signed_xml'
46
51
 
47
- doc = Nokogiri::XML(File.read 'some_signed_doc.xml')
48
- signed_doc = SignedXml::Document.new(doc)
52
+ # Verification
53
+ # using certificate in document
54
+ signed_doc = SignedXml::Document(File.read 'some_signed_doc.xml')
49
55
  signed_doc.is_verified?
56
+
57
+ # using certificate provided by caller
58
+ certificate = OpenSSL::X509::Certificate.new(File.read 'certificate.pem')
59
+ signed_doc.is_verified? certificate
60
+
61
+ # using certificate which matches the one in the document
62
+ # (and failing if it doesn't)
63
+ cert_fingerprint = Digest::SHA1.hexdigest(certificate.to_der)
64
+ certificate_store = {cert_fingerprint => certificate}
65
+ signed_doc.is_verified? certificate_store
66
+
67
+ # Signing
68
+ doc = SignedXml::Document(File.read 'doc_with_placeholder_elems.xml')
69
+ private_key = OpenSSL::PKey::RSA.new(File.new 'private_key.pem')
70
+ certificate = OpenSSL::X509::Certificate.new(File.read 'certificate.pem')
71
+ doc.sign(private_key, certificate)
72
+ File.open('signed_doc.xml', 'w') { |file| file.puts doc.to_xml }
50
73
  ```
51
74
 
52
75
  Contributing
@@ -57,3 +80,9 @@ Contributing
57
80
  3. Commit your changes (`git commit -am 'Add some feature'`)
58
81
  4. Push to the branch (`git push origin my-new-feature`)
59
82
  5. Create new Pull Request
83
+
84
+
85
+ Copyright
86
+ -----
87
+
88
+ Copyright (c) OpenLogic, Inc. See LICENSE for details.
@@ -3,6 +3,7 @@ require 'nokogiri'
3
3
 
4
4
  module SignedXml
5
5
  XMLDSIG_NS = "http://www.w3.org/2000/09/xmldsig#"
6
+ XML_EXC_C14N_NS = "http://www.w3.org/2001/10/xml-exc-c14n#"
6
7
 
7
8
  def self.Document(thing)
8
9
  Document.new(thing)
@@ -4,8 +4,9 @@ module SignedXml
4
4
 
5
5
  attr_reader :method
6
6
  attr_reader :with_comments
7
+ attr_reader :inclusive_namespaces
7
8
 
8
- def initialize(method = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315")
9
+ def initialize(method = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315", inclusive_namespaces = [])
9
10
  method, with_comments = method.split('#')
10
11
  @method = case method
11
12
  when "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" then XML_C14N_1_0
@@ -15,12 +16,14 @@ module SignedXml
15
16
  end
16
17
 
17
18
  @with_comments = !!with_comments
19
+
20
+ @inclusive_namespaces = inclusive_namespaces
18
21
  end
19
22
 
20
23
  def apply(input)
21
24
  raise ArgumentError, "input #{input.inspect}:#{input.class} is not canonicalizable" unless input.respond_to?(:canonicalize)
22
25
 
23
- input.canonicalize(method, nil, with_comments)
26
+ input.canonicalize(method, inclusive_namespaces, with_comments)
24
27
  end
25
28
  end
26
29
  end
@@ -47,7 +47,9 @@ module SignedXml
47
47
  when "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
48
48
  transforms << EnvelopedSignatureTransform.new
49
49
  when %r{^http://.*c14n}
50
- transforms << C14NTransform.new(method)
50
+ inclusive_namespaces_node = transform_node.at_xpath('.//ec:InclusiveNamespaces/@PrefixList', ec: XML_EXC_C14N_NS)
51
+ inclusive_namespaces = inclusive_namespaces_node ? inclusive_namespaces_node.content.split : []
52
+ transforms << C14NTransform.new(method, inclusive_namespaces)
51
53
  else
52
54
  raise ArgumentError, "unknown transform method #{method}"
53
55
  end
@@ -1,3 +1,3 @@
1
1
  module SignedXml
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["todd.thomas@openlogic.com"]
11
11
  gem.description = %q{XML Signature verification}
12
12
  gem.summary = %q{Provides [incomplete] support for verification of XML Signatures <http://www.w3.org/TR/xmldsig-core>.}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/openlogic/signed_xml"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency "nokogiri", "~> 1.5"
21
21
  gem.add_dependency "options"
22
22
 
23
+ gem.add_development_dependency "coveralls"
23
24
  gem.add_development_dependency "rake"
24
25
  gem.add_development_dependency "rspec"
25
26
  end
@@ -0,0 +1,63 @@
1
+ <Response
2
+ IssueInstant="2003-04-17T00:46:02Z" Version="2.0"
3
+ ID="_c7055387-af61-4fce-8b98-e2927324b306"
4
+ xmlns="urn:oasis:names:tc:SAML:2.0:protocol"
5
+ xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
6
+ <saml:Issuer>https://www.opensaml.org/IDP"</saml:Issuer>
7
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
8
+ <ds:SignedInfo>
9
+ <ds:CanonicalizationMethod
10
+ Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <ds:SignatureMethod
12
+ Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
13
+ <ds:Reference URI="">
14
+ <ds:Transforms>
15
+ <ds:Transform
16
+ Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
17
+ <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
18
+ <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs"/>
19
+ </ds:Transform>
20
+ </ds:Transforms>
21
+ <ds:DigestMethod
22
+ Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
23
+ <ds:DigestValue/>
24
+ </ds:Reference>
25
+ </ds:SignedInfo>
26
+ <ds:SignatureValue/>
27
+ <ds:KeyInfo>
28
+ <ds:X509Data>
29
+ <ds:X509Certificate>
30
+ </ds:X509Certificate>
31
+ </ds:X509Data>
32
+ </ds:KeyInfo>
33
+ </ds:Signature>
34
+ <Status>
35
+ <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
36
+ </Status>
37
+ <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc"
38
+ IssueInstant="2003-04-17T00:46:02Z" Version="2.0"
39
+ xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
40
+ <Issuer>https://www.opensaml.org/IDP</Issuer>
41
+ <Subject>
42
+ <NameID
43
+ Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
44
+ scott@example.org
45
+ </NameID>
46
+ <SubjectConfirmation
47
+ Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/>
48
+ </Subject>
49
+ <Conditions NotBefore="2003-04-17T00:46:02Z"
50
+ NotOnOrAfter="2003-04-17T00:51:02Z">
51
+ <AudienceRestriction>
52
+ <Audience>http://www.opensaml.org/SP</Audience>
53
+ </AudienceRestriction>
54
+ </Conditions>
55
+ <AuthnStatement AuthnInstant="2003-04-17T00:46:00Z">
56
+ <AuthnContext>
57
+ <AuthnContextClassRef>
58
+ urn:oasis:names:tc:SAML:2.0:ac:classes:Password
59
+ </AuthnContextClassRef>
60
+ </AuthnContext>
61
+ </AuthnStatement>
62
+ </Assertion>
63
+ </Response>
@@ -0,0 +1,80 @@
1
+ <?xml version="1.0"?>
2
+ <Response xmlns="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" IssueInstant="2003-04-17T00:46:02Z" Version="2.0" ID="_c7055387-af61-4fce-8b98-e2927324b306">
3
+ <saml:Issuer>https://www.opensaml.org/IDP"</saml:Issuer>
4
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
5
+ <ds:SignedInfo>
6
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
7
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
8
+ <ds:Reference URI="">
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 xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs"/>
13
+ </ds:Transform>
14
+ </ds:Transforms>
15
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
16
+ <ds:DigestValue>zHUQ8ywhrKz5TW+8CCeu8kGOYEY=</ds:DigestValue>
17
+ </ds:Reference>
18
+ </ds:SignedInfo>
19
+ <ds:SignatureValue>h9aT8YCYGk+Aj5SunHuNbLjL7v122IM1M+8DjY2P5NqIQtrfL3TUjAs47Gn/
20
+ GqxDaUfA7QjV/Iri1GBfDU7lU4XbnutFsRibvuGc/x4h0SXZmH/u+q4QkUBV
21
+ 7PVIRT2Qm7K1D1jNebLbHNfFKmgPQYCqLLuggqtfMz2gk8Ebun9vwMsGfmot
22
+ 3tAb14nCm7RDkhUiXcH4Dh/+ols8geOIMryNcKjeAosVE7YV9bdtuLiPi/dy
23
+ Lv3taNlFWxveWQHZE2GrPhd/HjFt2Rju5CTKMLVMzxdah78FknhVd+9CDzYH
24
+ CYnd7b4r36Y6TKQ4JbwJa82u4K8Sj18udSzaqK1G8g==</ds:SignatureValue>
25
+ <ds:KeyInfo>
26
+ <ds:X509Data>
27
+ <ds:X509Certificate>MIIExDCCA6ygAwIBAgIJAJsG6scSiBu+MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
28
+ VQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEUMBIGA1UEBxMLU3ByaW5nZmll
29
+ bGQxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDETMBEGA1UECxQK
30
+ QXJyciAmIERlZTELMAkGA1UEAxMCTWUxHTAbBgkqhkiG9w0BCQEWDm1lQGV4YW1w
31
+ bGUub3JnMB4XDTEzMDQxMTAwNTc1MloXDTQwMDgyNzAwNTc1MlowgZwxCzAJBgNV
32
+ BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRQwEgYDVQQHEwtTcHJpbmdmaWVs
33
+ ZDEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRMwEQYDVQQLFApB
34
+ cnJyICYgRGVlMQswCQYDVQQDEwJNZTEdMBsGCSqGSIb3DQEJARYObWVAZXhhbXBs
35
+ ZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZbhwD884KG1Aj
36
+ ZENyOQw1TpqvMkkxMSIFQwSMPg81JIDgPifCXXHimiNheo99K4TnLAV4V+6sLsP8
37
+ c2pQFr57mDSBo1x1JjSLR/LGD/scqQqzSXNXLNffF7FbH28/wL9+lBrMNxEh5LvT
38
+ Cm+rmnAHdJjGK//BbLE7Vuek3irquUo3OF6HidORr2b86ec4I2gjien3kwgmYc0n
39
+ 7pxjReEeKqpoZ1ytB3PjDlAwJchCTs6i+bmQJ5xqyDn+OHTZutCVCE9DwBLThfGr
40
+ 2j+c7po42EucuS1GMEbHWbEcSCruhQY51iR+hc54TRc/GQbwfVyfOBMJ98s5TASA
41
+ h0Sfw2DlAgMBAAGjggEFMIIBATAdBgNVHQ4EFgQUbuT5ExXORlqEIJRWCNvHgBig
42
+ I9swgdEGA1UdIwSByTCBxoAUbuT5ExXORlqEIJRWCNvHgBigI9uhgaKkgZ8wgZwx
43
+ CzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRQwEgYDVQQHEwtTcHJp
44
+ bmdmaWVsZDEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRMwEQYD
45
+ VQQLFApBcnJyICYgRGVlMQswCQYDVQQDEwJNZTEdMBsGCSqGSIb3DQEJARYObWVA
46
+ ZXhhbXBsZS5vcmeCCQCbBurHEogbvjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
47
+ BQUAA4IBAQABGQp+S8TgiPkMqOoHiosApgs/SttQfRZVlmhoqsJQ554xkui75PIo
48
+ RMHd42Ft8PO5aQiqXe6sbGJh9e78pSqdhytrlwIf4OSomJ2ghRGKoPESBnMQGxYT
49
+ vMx/0BvjVj8rNSFmVgTV+foSkJj2tJnr/9ZfYbRPybDRYvDhfnlE7SpfBanKK2r+
50
+ VpLSlm1c6d5cYA5xKUtQgV9wKbMZLl5B75S3CXz1K6TujHN3K/B3a4Hc7AknWqFd
51
+ qsWDWKJjyH3XzQkpPT00TqQOaM9gbYqsLXmiuLzYXV1JQhU1vs29mIIFbtQK0jYd
52
+ YEcPFLoaQoTClLMt9R+6wrJvJ9loh6P8</ds:X509Certificate>
53
+ </ds:X509Data>
54
+ </ds:KeyInfo>
55
+ </ds:Signature>
56
+ <Status>
57
+ <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
58
+ </Status>
59
+ <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" IssueInstant="2003-04-17T00:46:02Z" Version="2.0">
60
+ <Issuer>https://www.opensaml.org/IDP</Issuer>
61
+ <Subject>
62
+ <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
63
+ scott@example.org
64
+ </NameID>
65
+ <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/>
66
+ </Subject>
67
+ <Conditions NotBefore="2003-04-17T00:46:02Z" NotOnOrAfter="2003-04-17T00:51:02Z">
68
+ <AudienceRestriction>
69
+ <Audience>http://www.opensaml.org/SP</Audience>
70
+ </AudienceRestriction>
71
+ </Conditions>
72
+ <AuthnStatement AuthnInstant="2003-04-17T00:46:00Z">
73
+ <AuthnContext>
74
+ <AuthnContextClassRef>
75
+ urn:oasis:names:tc:SAML:2.0:ac:classes:Password
76
+ </AuthnContextClassRef>
77
+ </AuthnContext>
78
+ </AuthnStatement>
79
+ </Assertion>
80
+ </Response>
@@ -124,6 +124,14 @@ describe SignedXml::Document do
124
124
  incorrect_digest_doc.is_verified?.should be false
125
125
  end
126
126
 
127
+ let(:doc_w_inclusive_c14n) do
128
+ SignedXml::Document(File.read(File.join(resources_path, 'signed_saml_response_w_inclusive_c14n.xml')))
129
+ end
130
+
131
+ it 'verifies docs using inclusive c14n' do
132
+ expect(doc_w_inclusive_c14n.is_verified?).to be true
133
+ end
134
+
127
135
  let(:signed_doc_template) do
128
136
  SignedXml::Document(File.read(File.join(resources_path, 'saml_response_template.xml')))
129
137
  end
@@ -133,4 +141,4 @@ describe SignedXml::Document do
133
141
  it "signs template documents" do
134
142
  signed_doc_template.sign(test_private_key, test_certificate).is_verified?.should be true
135
143
  end
136
- end
144
+ end
@@ -1 +1,4 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
1
4
  require 'signed_xml'
metadata CHANGED
@@ -1,78 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signed_xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Todd Thomas
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-25 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.5'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.5'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: options
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: rake
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: rspec
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  description: XML Signature verification
@@ -82,8 +87,8 @@ executables: []
82
87
  extensions: []
83
88
  extra_rdoc_files: []
84
89
  files:
85
- - .gitignore
86
- - .travis.yml
90
+ - ".gitignore"
91
+ - ".travis.yml"
87
92
  - Gemfile
88
93
  - LICENSE.txt
89
94
  - README.md
@@ -112,7 +117,9 @@ files:
112
117
  - spec/resources/same_doc_reference.xml
113
118
  - spec/resources/same_doc_reference_template.xml
114
119
  - spec/resources/saml_response_template.xml
120
+ - spec/resources/saml_response_template_w_inclusive_c14n.xml
115
121
  - spec/resources/signed_saml_response.xml
122
+ - spec/resources/signed_saml_response_w_inclusive_c14n.xml
116
123
  - spec/resources/test_cert.pem
117
124
  - spec/resources/test_key.pem
118
125
  - spec/resources/two_sig_doc.xml
@@ -120,35 +127,28 @@ files:
120
127
  - spec/resources/wrong_key_doc.xml
121
128
  - spec/signed_xml_document_spec.rb
122
129
  - spec/spec_helper.rb
123
- homepage: ''
130
+ homepage: https://github.com/openlogic/signed_xml
124
131
  licenses: []
132
+ metadata: {}
125
133
  post_install_message:
126
134
  rdoc_options: []
127
135
  require_paths:
128
136
  - lib
129
137
  required_ruby_version: !ruby/object:Gem::Requirement
130
- none: false
131
138
  requirements:
132
- - - ! '>='
139
+ - - ">="
133
140
  - !ruby/object:Gem::Version
134
141
  version: '0'
135
- segments:
136
- - 0
137
- hash: 4066671061943710970
138
142
  required_rubygems_version: !ruby/object:Gem::Requirement
139
- none: false
140
143
  requirements:
141
- - - ! '>='
144
+ - - ">="
142
145
  - !ruby/object:Gem::Version
143
146
  version: '0'
144
- segments:
145
- - 0
146
- hash: 4066671061943710970
147
147
  requirements: []
148
148
  rubyforge_project:
149
- rubygems_version: 1.8.25
149
+ rubygems_version: 2.4.3
150
150
  signing_key:
151
- specification_version: 3
151
+ specification_version: 4
152
152
  summary: Provides [incomplete] support for verification of XML Signatures <http://www.w3.org/TR/xmldsig-core>.
153
153
  test_files:
154
154
  - spec/resources/another_test_cert.pem
@@ -160,7 +160,9 @@ test_files:
160
160
  - spec/resources/same_doc_reference.xml
161
161
  - spec/resources/same_doc_reference_template.xml
162
162
  - spec/resources/saml_response_template.xml
163
+ - spec/resources/saml_response_template_w_inclusive_c14n.xml
163
164
  - spec/resources/signed_saml_response.xml
165
+ - spec/resources/signed_saml_response_w_inclusive_c14n.xml
164
166
  - spec/resources/test_cert.pem
165
167
  - spec/resources/test_key.pem
166
168
  - spec/resources/two_sig_doc.xml