xmldsig 0.2.9 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3268f56bd10ebb287e946bd2cec9bcc33b60f28
4
- data.tar.gz: d239b42bdcaad48d8750f7706ec76f58251abf49
3
+ metadata.gz: 227a4b8476b3589a1daedcb5fcf290f0aecf8188
4
+ data.tar.gz: 3617f08f692df2042ae4b29e630d481162add76b
5
5
  SHA512:
6
- metadata.gz: d0f22faa02b78c1e7b138620df2625619b582bf473672327dda2c21e9807253651133bec6a6b30a71e9a94c6814aadfa7b1f5dd59ff8b956ce6d3a10f5822f11
7
- data.tar.gz: e45c639298276447fadb7decf6381b0840cca5cab409381ecaa6f38ef6b66c6f2e1eca85e244abe5b09d9ecfd6bee964185a3d881e75bac2bd2904137526a0b5
6
+ metadata.gz: 948280bdfbd54908b3c5955b2c164512983b24b4c7852436e36ec76b861bd603ad3f72b591e9a5c8471a6ca1231de57aa83631cf5ce6acc1f433101a7a6d0a49
7
+ data.tar.gz: 28edb78b29c0792616bd82e351edf30156726469db9413a93b701f1007da1b0b26b0a3c32e203e2ad42f4e229ada259a901731fb1a2ba817cf868330ae6830a5
data/CHANGELOG.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # Changelog
2
2
 
3
+ v0.2.9 10-07-2015
4
+ - Use variable binding to create a custom XPath (Sean Bryant)
5
+
3
6
  v0.2.2 3-8-2013
4
7
  - added default canonicalization
@@ -1,22 +1,24 @@
1
1
  module Xmldsig
2
2
  class Canonicalizer
3
- attr_accessor :node, :method, :inclusive_namespaces
3
+ attr_accessor :node, :method, :inclusive_namespaces, :with_comments
4
4
 
5
- def initialize(node, method = nil, inclusive_namespaces = [])
5
+ def initialize(node, method = nil, inclusive_namespaces = [], with_comments = false)
6
6
  @node = node
7
7
  @method = method
8
8
  @inclusive_namespaces = inclusive_namespaces
9
+ @with_comments = with_comments
9
10
  end
10
11
 
11
12
  def canonicalize
12
- node.canonicalize(mode(method), inclusive_namespaces)
13
+ node.canonicalize(mode(method), inclusive_namespaces, with_comments)
13
14
  end
14
15
 
15
16
  private
16
17
 
17
18
  def mode(method)
18
19
  case method
19
- when "http://www.w3.org/2001/10/xml-exc-c14n#"
20
+ when "http://www.w3.org/2001/10/xml-exc-c14n#",
21
+ "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
20
22
  Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0
21
23
  when "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
22
24
  Nokogiri::XML::XML_C14N_1_0
@@ -2,7 +2,7 @@ module Xmldsig
2
2
  class Transforms < Array
3
3
  class Canonicalize < Transform
4
4
  def transform
5
- self.node = Canonicalizer.new(node, algorithm, inclusive_namespaces).canonicalize
5
+ self.node = Canonicalizer.new(node, algorithm, inclusive_namespaces, with_comments).canonicalize
6
6
  node
7
7
  end
8
8
 
@@ -2,11 +2,12 @@ module Xmldsig
2
2
  class Transforms < Array
3
3
  class Transform
4
4
 
5
- attr_accessor :node, :transform_node
5
+ attr_accessor :node, :transform_node, :with_comments
6
6
 
7
- def initialize(node, transform_node)
7
+ def initialize(node, transform_node, with_comments = false)
8
8
  @node = node
9
9
  @transform_node = transform_node
10
+ @with_comments = with_comments
10
11
  end
11
12
 
12
13
  def transform
@@ -19,6 +19,8 @@ module Xmldsig
19
19
  "http://www.w3.org/TR/2001/REC-xml-c14n-20010315",
20
20
  "http://www.w3.org/2006/12/xml-c14n11"
21
21
  Transforms::Canonicalize.new(node, transform_node)
22
+ when "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
23
+ Transforms::Canonicalize.new(node, transform_node, true)
22
24
  end
23
25
  end
24
26
 
@@ -1,3 +1,3 @@
1
1
  module Xmldsig
2
- VERSION = '0.2.9'
2
+ VERSION = '0.2.10'
3
3
  end
@@ -0,0 +1,21 @@
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#WithComments"/>
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#WithComments">
12
+ <ec:InclusiveNamespaces PrefixList="foo"/>
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
+ </foo:Foo>
@@ -72,6 +72,13 @@ describe Xmldsig::SignedDocument do
72
72
  certificate.public_key.verify(OpenSSL::Digest::SHA256.new, signature_value, data)
73
73
  end.should be == true
74
74
  end
75
+
76
+ it "validates a document with a http://www.w3.org/2001/10/xml-exc-c14n#WithComments transform" do
77
+ unsigned_xml_with_comments = File.read("spec/fixtures/signed_xml-exc-c14n#with_comments.xml")
78
+ unsigned_documents_with_comments = Xmldsig::SignedDocument.new(unsigned_xml_with_comments)
79
+ signed_xml_with_comments = unsigned_documents_with_comments.sign(private_key)
80
+ Xmldsig::SignedDocument.new(signed_xml_with_comments).validate(certificate).should be == true
81
+ end
75
82
  end
76
83
 
77
84
  describe "#sign" 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.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - benoist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -60,6 +60,7 @@ files:
60
60
  - spec/fixtures/signed/shib.cert
61
61
  - spec/fixtures/signed/shib.xml
62
62
  - spec/fixtures/signed_custom_attribute_id.xml
63
+ - spec/fixtures/signed_xml-exc-c14n#with_comments.xml
63
64
  - spec/fixtures/unsigned-malicious.xml
64
65
  - spec/fixtures/unsigned.xml
65
66
  - spec/fixtures/unsigned/canonicalizer_1_0.xml
@@ -117,6 +118,7 @@ test_files:
117
118
  - spec/fixtures/signed/shib.cert
118
119
  - spec/fixtures/signed/shib.xml
119
120
  - spec/fixtures/signed_custom_attribute_id.xml
121
+ - spec/fixtures/signed_xml-exc-c14n#with_comments.xml
120
122
  - spec/fixtures/unsigned-malicious.xml
121
123
  - spec/fixtures/unsigned.xml
122
124
  - spec/fixtures/unsigned/canonicalizer_1_0.xml