xmldsig 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xmldsig/version.rb +1 -1
- data/spec/lib/xmldsig/reference_spec.rb +18 -15
- data/spec/lib/xmldsig/signature_spec.rb +22 -20
- data/spec/lib/xmldsig/signed_document_spec.rb +24 -24
- data/spec/lib/xmldsig/transforms/enveloped_signature_spec.rb +2 -2
- data/spec/lib/xmldsig/transforms/transform_spec.rb +1 -1
- data/spec/lib/xmldsig_spec.rb +6 -6
- data/spec/spec_helper.rb +0 -1
- data/xmldsig.gemspec +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed8fb3a4e6485ddf83e241026a3847b5b2a77eec
|
4
|
+
data.tar.gz: 600207fd49308dd772ce99a861868d240d9f6848
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 099249a39a5cd6e7cdeed766deac4c5217d32c810197b722e3bea3996fa1adc5715a78d811cb204d6afca0036e8e2a78dd252d2909b485994832e72af19816aa
|
7
|
+
data.tar.gz: f26a7d2699aa4f2cc261d06874ed4f97e38ff2cdc55a5e6d480cf71f42f8bf11004b78b19f67e78cb5228fd082a8832e1e7c052976915a0bdb73e5eec5b13fe2
|
data/lib/xmldsig/version.rb
CHANGED
@@ -6,13 +6,13 @@ describe Xmldsig::Reference do
|
|
6
6
|
|
7
7
|
describe "#digest_value" do
|
8
8
|
it "returns the digest value in the xml" do
|
9
|
-
reference.digest_value.
|
9
|
+
expect(reference.digest_value).to eq(Base64.decode64("ftoSYFdze1AWgGHF5N9i9SFKThXkqH2AdyzA3/epbJw="))
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#document" do
|
14
14
|
it "returns the document" do
|
15
|
-
reference.document.
|
15
|
+
expect(reference.document).to eq(document)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -21,20 +21,22 @@ describe Xmldsig::Reference do
|
|
21
21
|
|
22
22
|
it "sets the correct digest value" do
|
23
23
|
reference.sign
|
24
|
-
reference.digest_value.
|
24
|
+
expect(reference.digest_value).to eq(Base64.decode64("ftoSYFdze1AWgGHF5N9i9SFKThXkqH2AdyzA3/epbJw="))
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#referenced_node" do
|
29
29
|
it "returns the referenced_node by id" do
|
30
|
-
reference.referenced_node.to_s.
|
30
|
+
expect(reference.referenced_node.to_s).to eq(
|
31
31
|
document.at_xpath("//*[@ID='foo']").to_s
|
32
|
+
)
|
32
33
|
end
|
33
34
|
|
34
35
|
it "returns the referenced node by parent" do
|
35
|
-
reference.
|
36
|
-
reference.referenced_node.to_s.
|
36
|
+
allow(reference).to receive(:reference_uri).and_return("")
|
37
|
+
expect(reference.referenced_node.to_s).to eq(
|
37
38
|
document.root.to_s
|
39
|
+
)
|
38
40
|
end
|
39
41
|
|
40
42
|
it "returns the reference node when using WS-Security style id attribute" do
|
@@ -43,9 +45,9 @@ describe Xmldsig::Reference do
|
|
43
45
|
node['wsu:Id'] = node['ID']
|
44
46
|
node.remove_attribute('ID')
|
45
47
|
|
46
|
-
reference.referenced_node.
|
47
|
-
attribute_with_ns('Id', Xmldsig::NAMESPACES['wsu']).value.
|
48
|
-
|
48
|
+
expect(reference.referenced_node.
|
49
|
+
attribute_with_ns('Id', Xmldsig::NAMESPACES['wsu']).value).
|
50
|
+
to eq('foo')
|
49
51
|
end
|
50
52
|
|
51
53
|
it "returns the reference node when using a custom id attribute" do
|
@@ -54,8 +56,9 @@ describe Xmldsig::Reference do
|
|
54
56
|
node.set_attribute('MyID', 'foo')
|
55
57
|
reference = Xmldsig::Reference.new(document.at_xpath('//ds:Reference', Xmldsig::NAMESPACES), 'MyID')
|
56
58
|
|
57
|
-
reference.referenced_node.to_s.
|
59
|
+
expect(reference.referenced_node.to_s).to eq(
|
58
60
|
document.at_xpath("//*[@MyID='foo']").to_s
|
61
|
+
)
|
59
62
|
end
|
60
63
|
|
61
64
|
it "raises ReferencedNodeNotFound when the refenced node is not present" do
|
@@ -79,7 +82,7 @@ describe Xmldsig::Reference do
|
|
79
82
|
|
80
83
|
describe "#reference_uri" do
|
81
84
|
it "returns the reference uri" do
|
82
|
-
reference.reference_uri.
|
85
|
+
expect(reference.reference_uri).to eq("#foo")
|
83
86
|
end
|
84
87
|
end
|
85
88
|
|
@@ -92,11 +95,11 @@ describe Xmldsig::Reference do
|
|
92
95
|
match = algorithm.match(/\d+/)[0].to_i
|
93
96
|
case match
|
94
97
|
when 512
|
95
|
-
reference.digest_method.
|
98
|
+
expect(reference.digest_method).to eq(Digest::SHA512)
|
96
99
|
when 256
|
97
|
-
reference.digest_method.
|
100
|
+
expect(reference.digest_method).to eq(Digest::SHA256)
|
98
101
|
when 1
|
99
|
-
reference.digest_method.
|
102
|
+
expect(reference.digest_method).to eq(Digest::SHA1)
|
100
103
|
end
|
101
104
|
end
|
102
105
|
end
|
@@ -105,6 +108,6 @@ describe Xmldsig::Reference do
|
|
105
108
|
it 'defaults to SHA256 for invalid algorithms' do
|
106
109
|
document = Nokogiri::XML::Document.parse(IO.read("spec/fixtures/unsigned-invalid.xml"))
|
107
110
|
reference = Xmldsig::Reference.new(document.at_xpath('//ds:Reference', Xmldsig::NAMESPACES))
|
108
|
-
reference.digest_method.
|
111
|
+
expect(reference.digest_method).to eq(Digest::SHA256)
|
109
112
|
end
|
110
113
|
end
|
@@ -18,27 +18,27 @@ describe Xmldsig::Signature do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "sets the digest value" do
|
21
|
-
signature.references.first.digest_value.
|
21
|
+
expect(signature.references.first.digest_value).to eq(Base64.decode64("ftoSYFdze1AWgGHF5N9i9SFKThXkqH2AdyzA3/epbJw="))
|
22
22
|
end
|
23
23
|
|
24
24
|
it "sets the signature value" do
|
25
|
-
signature.signature_value.
|
25
|
+
expect(signature.signature_value).to eq(Base64.decode64("
|
26
26
|
E3yyqsSoxRkhYEuaEtR+SLg85gU5B4a7xUXA+d2Zn6j7F6z73dOd8iYHOusB
|
27
27
|
Ty3C/3ujbmPhHKg8uX9kUE8b+YoOqZt4z9pdxAq44nJEuijwi4doIPpHWirv
|
28
28
|
BnSoP5IoL0DYzGVrgj8udRzfAw5nNeV7wSrBZEn+yrxmUPJoUZc=
|
29
|
-
")
|
29
|
+
"))
|
30
30
|
end
|
31
31
|
|
32
32
|
it "accepts a block" do
|
33
33
|
signature.sign do |data, signature_algorithm|
|
34
|
-
signature_algorithm.
|
34
|
+
expect(signature_algorithm).to eq("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256")
|
35
35
|
private_key.sign(OpenSSL::Digest::SHA256.new, data)
|
36
36
|
end
|
37
|
-
signature.signature_value.
|
37
|
+
expect(signature.signature_value).to eq(Base64.decode64("
|
38
38
|
E3yyqsSoxRkhYEuaEtR+SLg85gU5B4a7xUXA+d2Zn6j7F6z73dOd8iYHOusB
|
39
39
|
Ty3C/3ujbmPhHKg8uX9kUE8b+YoOqZt4z9pdxAq44nJEuijwi4doIPpHWirv
|
40
40
|
BnSoP5IoL0DYzGVrgj8udRzfAw5nNeV7wSrBZEn+yrxmUPJoUZc=
|
41
|
-
")
|
41
|
+
"))
|
42
42
|
end
|
43
43
|
|
44
44
|
describe "multiple references" do
|
@@ -46,55 +46,57 @@ describe Xmldsig::Signature do
|
|
46
46
|
|
47
47
|
it "can sign the document" do
|
48
48
|
signature.sign(private_key)
|
49
|
-
signature.
|
49
|
+
expect(signature).to be_valid(certificate)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "gets a digest per reference" do
|
53
|
-
signature.references.count.
|
53
|
+
expect(signature.references.count).to eq(2)
|
54
54
|
signature.sign(private_key)
|
55
|
-
signature.references[0].digest_value.
|
56
|
-
signature.references[1].digest_value.
|
55
|
+
expect(signature.references[0].digest_value).to eq(Base64.decode64("P1nUq8Y/LPmd+EON/mcNMNRjT78="))
|
56
|
+
expect(signature.references[1].digest_value).to eq(Base64.decode64("RoGAaQeuNJuDMWcgsD7RuGbFACo="))
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
describe "#signed_info" do
|
62
62
|
it "returns the canonicalized signed info element" do
|
63
|
-
signature.signed_info.to_s.
|
63
|
+
expect(signature.signed_info.to_s).to eq(
|
64
64
|
document.at_xpath("//ds:SignedInfo", Xmldsig::NAMESPACES).to_s
|
65
|
+
)
|
65
66
|
end
|
66
67
|
end
|
67
68
|
|
68
69
|
describe "#signature_value" do
|
69
70
|
it "returns the signature value" do
|
70
|
-
signature.signature_value.
|
71
|
+
expect(signature.signature_value).to eq(
|
71
72
|
Base64.decode64(document.at_xpath("//ds:SignatureValue", Xmldsig::NAMESPACES).content)
|
73
|
+
)
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
75
77
|
describe "#valid?" do
|
76
78
|
it "returns true with the correct certificate" do
|
77
|
-
signature.valid?(certificate).
|
79
|
+
expect(signature.valid?(certificate)).to eq(true)
|
78
80
|
end
|
79
81
|
|
80
82
|
it "returns false if the xml changed" do
|
81
|
-
signature.references.first.
|
83
|
+
allow(signature.references.first).to receive(:document).and_return(
|
82
84
|
Nokogiri::XML::Document.parse(File.read("spec/fixtures/signed.xml").gsub("\s\s", "\s"))
|
83
85
|
)
|
84
86
|
signature.valid?(certificate)
|
85
|
-
signature.errors.
|
87
|
+
expect(signature.errors).to include(:digest_value)
|
86
88
|
end
|
87
89
|
|
88
90
|
it "returns false with a difference certificate" do
|
89
|
-
signature.valid?(other_certificate).
|
91
|
+
expect(signature.valid?(other_certificate)).to eq(false)
|
90
92
|
end
|
91
93
|
|
92
94
|
it "accepts a block" do
|
93
95
|
signature.valid? do |signature_value, data, signature_algorithm|
|
94
|
-
signature_algorithm.
|
96
|
+
expect(signature_algorithm).to eq("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256")
|
95
97
|
certificate.public_key.verify(OpenSSL::Digest::SHA256.new, signature_value, data)
|
96
98
|
end
|
97
|
-
signature.errors.
|
99
|
+
expect(signature.errors).to be_empty
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
@@ -108,9 +110,9 @@ describe Xmldsig::Signature do
|
|
108
110
|
signature.sign do |data, signature_algorithm|
|
109
111
|
case algorithm
|
110
112
|
when "sha1"
|
111
|
-
signature_algorithm.
|
113
|
+
expect(signature_algorithm).to eq("http://www.w3.org/2000/09/xmldsig#rsa-#{algorithm}")
|
112
114
|
else
|
113
|
-
signature_algorithm.
|
115
|
+
expect(signature_algorithm).to eq("http://www.w3.org/2001/04/xmldsig-more#rsa-#{algorithm}")
|
114
116
|
end
|
115
117
|
private_key.sign(OpenSSL::Digest.new(algorithm).new, data)
|
116
118
|
end
|
@@ -12,7 +12,7 @@ describe Xmldsig::SignedDocument do
|
|
12
12
|
describe "#initialize" do
|
13
13
|
it "sets the document to a nokogiri document" do
|
14
14
|
document = described_class.new(signed_xml)
|
15
|
-
document.document.
|
15
|
+
expect(document.document).to be_a(Nokogiri::XML::Document)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "raises on badly formed XML" do
|
@@ -24,13 +24,13 @@ describe Xmldsig::SignedDocument do
|
|
24
24
|
EOXML
|
25
25
|
expect {
|
26
26
|
described_class.new(badly_formed)
|
27
|
-
}.to raise_error
|
27
|
+
}.to raise_error(Nokogiri::XML::SyntaxError)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "accepts a nokogiri document" do
|
31
31
|
doc = Nokogiri::XML(unsigned_xml)
|
32
32
|
signed_document = described_class.new(doc)
|
33
|
-
signed_document.document.
|
33
|
+
expect(signed_document.document).to be_a(Nokogiri::XML::Document)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -39,59 +39,59 @@ describe Xmldsig::SignedDocument do
|
|
39
39
|
let(:unsigned_document) { Xmldsig::SignedDocument.new(unsigned_xml) }
|
40
40
|
|
41
41
|
it "returns only the signed nodes" do
|
42
|
-
signed_document.signatures.
|
42
|
+
expect(signed_document.signatures).to be_all { |signature| signature.is_a?(Xmldsig::Signature) }
|
43
43
|
end
|
44
44
|
|
45
45
|
it "returns the outer signatures first" do
|
46
|
-
unsigned_document.signatures.first.references.first.reference_uri.
|
46
|
+
expect(unsigned_document.signatures.first.references.first.reference_uri).to eq('#foo')
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe "#signed_nodes" do
|
51
51
|
it "returns only the signed nodes" do
|
52
|
-
signed_document.signed_nodes.collect(&:name).
|
52
|
+
expect(signed_document.signed_nodes.collect(&:name)).to eq(%w(Foo))
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "#validate" do
|
57
57
|
it "returns true if the signature and digest value are correct" do
|
58
|
-
signed_document.validate(certificate).
|
58
|
+
expect(signed_document.validate(certificate)).to eq(true)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "returns false if the certificate is not valid" do
|
62
|
-
signed_document.validate(other_certificate).
|
62
|
+
expect(signed_document.validate(other_certificate)).to eq(false)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "returns false if there are no signatures and validation is strict" do
|
66
66
|
xml_without_signature = Xmldsig::SignedDocument.new('<foo></foo>')
|
67
|
-
xml_without_signature.validate(certificate).
|
67
|
+
expect(xml_without_signature.validate(certificate)).to eq(false)
|
68
68
|
end
|
69
69
|
|
70
70
|
it "accepts a block" do
|
71
|
-
signed_document.validate do |signature_value, data|
|
71
|
+
expect(signed_document.validate do |signature_value, data|
|
72
72
|
certificate.public_key.verify(OpenSSL::Digest::SHA256.new, signature_value, data)
|
73
|
-
end.
|
73
|
+
end).to eq(true)
|
74
74
|
end
|
75
75
|
|
76
76
|
it "validates a document with a http://www.w3.org/2001/10/xml-exc-c14n#WithComments transform" do
|
77
77
|
unsigned_xml_with_comments = File.read("spec/fixtures/signed_xml-exc-c14n#with_comments.xml")
|
78
78
|
unsigned_documents_with_comments = Xmldsig::SignedDocument.new(unsigned_xml_with_comments)
|
79
79
|
signed_xml_with_comments = unsigned_documents_with_comments.sign(private_key)
|
80
|
-
Xmldsig::SignedDocument.new(signed_xml_with_comments).validate(certificate).
|
80
|
+
expect(Xmldsig::SignedDocument.new(signed_xml_with_comments).validate(certificate)).to eq(true)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
84
|
describe "#sign" do
|
85
85
|
it "returns a signed document" do
|
86
86
|
signed_document = unsigned_document.sign(private_key)
|
87
|
-
Xmldsig::SignedDocument.new(signed_document).validate(certificate).
|
87
|
+
expect(Xmldsig::SignedDocument.new(signed_document).validate(certificate)).to eq(true)
|
88
88
|
end
|
89
89
|
|
90
90
|
it "accepts a block" do
|
91
91
|
signed_document = unsigned_document.sign do |data|
|
92
92
|
private_key.sign(OpenSSL::Digest::SHA256.new, data)
|
93
93
|
end
|
94
|
-
Xmldsig::SignedDocument.new(signed_document).validate(certificate).
|
94
|
+
expect(Xmldsig::SignedDocument.new(signed_document).validate(certificate)).to eq(true)
|
95
95
|
end
|
96
96
|
|
97
97
|
context 'with the force false' do
|
@@ -102,9 +102,9 @@ describe Xmldsig::SignedDocument do
|
|
102
102
|
let(:signed_document) { Xmldsig::SignedDocument.new(signed_xml) }
|
103
103
|
|
104
104
|
it 'only signs the root signature and leaves the nested signature intact' do
|
105
|
-
signed_document.signatures.first.valid?(certificate).
|
106
|
-
signed_document.signatures.last.valid?(certificate).
|
107
|
-
signed_document.signatures.last.signature_value.
|
105
|
+
expect(signed_document.signatures.first.valid?(certificate)).to eq(true)
|
106
|
+
expect(signed_document.signatures.last.valid?(certificate)).to eq(false)
|
107
|
+
expect(signed_document.signatures.last.signature_value).to eq(unsigned_document.signatures.last.signature_value)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -116,9 +116,9 @@ describe Xmldsig::SignedDocument do
|
|
116
116
|
let(:signed_document) { Xmldsig::SignedDocument.new(signed_xml) }
|
117
117
|
|
118
118
|
it 'only signs the root signature and leaves the nested signature intact' do
|
119
|
-
signed_document.signatures.first.valid?(certificate).
|
120
|
-
signed_document.signatures.last.valid?(certificate).
|
121
|
-
signed_document.signatures.last.signature_value.
|
119
|
+
expect(signed_document.signatures.first.valid?(certificate)).to eq(true)
|
120
|
+
expect(signed_document.signatures.last.valid?(certificate)).to eq(true)
|
121
|
+
expect(signed_document.signatures.last.signature_value).to_not be(unsigned_document.signatures.last.signature_value)
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
@@ -129,17 +129,17 @@ describe Xmldsig::SignedDocument do
|
|
129
129
|
let(:signed_document) { unsigned_document.sign(private_key) }
|
130
130
|
|
131
131
|
it "when signed should be valid" do
|
132
|
-
Xmldsig::SignedDocument.new(signed_document).validate(certificate).
|
132
|
+
expect(Xmldsig::SignedDocument.new(signed_document).validate(certificate)).to eq(true)
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should sign 2 elements" do
|
136
|
-
unsigned_document.signed_nodes.count.
|
136
|
+
expect(unsigned_document.signed_nodes.count).to eq(2)
|
137
137
|
end
|
138
138
|
|
139
139
|
it "allows individual signs" do
|
140
140
|
unsigned_document.signatures.last.sign(private_key)
|
141
|
-
unsigned_document.validate(certificate).
|
142
|
-
unsigned_document.signatures.last.valid?(certificate).
|
141
|
+
expect(unsigned_document.validate(certificate)).to eq(false)
|
142
|
+
expect(unsigned_document.signatures.last.valid?(certificate)).to eq(true)
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
@@ -10,9 +10,9 @@ describe Xmldsig::Transforms::EnvelopedSignature do
|
|
10
10
|
described_class.new(node_with_nested_signature, nil).transform
|
11
11
|
|
12
12
|
remaining_signatures = node_with_nested_signature.xpath('descendant::ds:Signature', Xmldsig::NAMESPACES)
|
13
|
-
remaining_signatures.count.
|
13
|
+
expect(remaining_signatures.count).to eq(1)
|
14
14
|
signature = Xmldsig::Signature.new(remaining_signatures.first)
|
15
15
|
|
16
|
-
signature.references.first.reference_uri.
|
16
|
+
expect(signature.references.first.reference_uri).to eq('#baz')
|
17
17
|
end
|
18
18
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Xmldsig::Transforms::Transform do
|
4
4
|
|
5
5
|
it "raises a warning when transform is called" do
|
6
|
-
described_class.
|
6
|
+
expect_any_instance_of(described_class).to receive(:warn)
|
7
7
|
described_class.new(nil,nil).transform
|
8
8
|
end
|
9
9
|
|
data/spec/lib/xmldsig_spec.rb
CHANGED
@@ -12,11 +12,11 @@ describe Xmldsig do
|
|
12
12
|
let(:signed_document) { unsigned_document.sign(private_key) }
|
13
13
|
|
14
14
|
it "should be signable an validateable" do
|
15
|
-
Xmldsig::SignedDocument.new(signed_document).validate(certificate).
|
15
|
+
expect(Xmldsig::SignedDocument.new(signed_document).validate(certificate)).to eq(true)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should have at least 1 signature element' do
|
19
|
-
Xmldsig::SignedDocument.new(signed_document).signatures.count.
|
19
|
+
expect(Xmldsig::SignedDocument.new(signed_document).signatures.count).to be >= 1
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -30,7 +30,7 @@ describe Xmldsig do
|
|
30
30
|
let(:certificate) { OpenSSL::X509::Certificate.new(File.read(document.gsub('.txt', '.cert'))) }
|
31
31
|
|
32
32
|
it "should be validateable" do
|
33
|
-
signed_document.validate(certificate).
|
33
|
+
expect(signed_document.validate(certificate)).to eq(true)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -64,11 +64,11 @@ describe Xmldsig do
|
|
64
64
|
let(:signed_document) { unsigned_document.sign(private_key) }
|
65
65
|
|
66
66
|
it "should be signable an validateable" do
|
67
|
-
Xmldsig::SignedDocument.new(signed_document, :id_attr => 'MyID').validate(certificate).
|
67
|
+
expect(Xmldsig::SignedDocument.new(signed_document, :id_attr => 'MyID').validate(certificate)).to eq(true)
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'should have a signature element' do
|
71
|
-
Xmldsig::SignedDocument.new(signed_document, :id_attr => 'MyID').signatures.count.
|
71
|
+
expect(Xmldsig::SignedDocument.new(signed_document, :id_attr => 'MyID').signatures.count).to eq(1)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -77,7 +77,7 @@ describe Xmldsig do
|
|
77
77
|
let(:signed_document) { Xmldsig::SignedDocument.new(signed_xml, :id_attr => 'MyID') }
|
78
78
|
|
79
79
|
it "should be validateable" do
|
80
|
-
signed_document.validate(certificate).
|
80
|
+
expect(signed_document.validate(certificate)).to eq(true)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
data/spec/spec_helper.rb
CHANGED
data/xmldsig.gemspec
CHANGED
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- benoist
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.6.8
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.0.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 1.6.8
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
27
33
|
description: This gem is a (partial) implementation of the XMLDsig specification
|
28
34
|
email:
|
29
35
|
- benoist.claassen@gmail.com
|