xmldsig 0.0.2 → 0.0.3

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.
@@ -66,7 +66,7 @@ module Xmldsig
66
66
  if private_key
67
67
  private_key.sign(signature_method.new, canonicalized_signed_info)
68
68
  else
69
- yield(canonicalized_signed_info)
69
+ yield(canonicalized_signed_info, signature_algorithm)
70
70
  end
71
71
  end
72
72
 
@@ -85,9 +85,12 @@ module Xmldsig
85
85
  Base64.encode64(digest_value).chomp
86
86
  end
87
87
 
88
+ def signature_algorithm
89
+ signed_info.at_xpath("descendant::ds:SignatureMethod", NAMESPACES).get_attribute("Algorithm")
90
+ end
91
+
88
92
  def signature_method
89
- algorithm = signed_info.at_xpath("descendant::ds:SignatureMethod", NAMESPACES).get_attribute("Algorithm")
90
- algorithm = algorithm && algorithm =~ /sha(.*?)$/i && $1.to_i
93
+ algorithm = signature_algorithm && signature_algorithm =~ /sha(.*?)$/i && $1.to_i
91
94
  case algorithm
92
95
  when 256 then
93
96
  OpenSSL::Digest::SHA256
@@ -115,7 +118,7 @@ module Xmldsig
115
118
  signature_valid = if certificate
116
119
  certificate.public_key.verify(signature_method.new, signature_value, canonicalized_signed_info)
117
120
  else
118
- yield(signature_value, canonicalized_signed_info)
121
+ yield(signature_value, canonicalized_signed_info, signature_algorithm)
119
122
  end
120
123
 
121
124
  unless signature_valid
@@ -1,3 +1,3 @@
1
1
  module Xmldsig
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -61,7 +61,8 @@ describe Xmldsig::Signature do
61
61
  end
62
62
 
63
63
  it "accepts a block" do
64
- signature.sign do |data|
64
+ signature.sign do |data, signature_algorithm|
65
+ signature_algorithm.should == "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
65
66
  private_key.sign(OpenSSL::Digest::SHA256.new, data)
66
67
  end
67
68
  signature.signature_value.should == Base64.decode64("
@@ -103,7 +104,8 @@ describe Xmldsig::Signature do
103
104
  end
104
105
 
105
106
  it "accepts a block" do
106
- signature.valid? do |signature_value, data|
107
+ signature.valid? do |signature_value, data, signature_algorithm|
108
+ signature_algorithm.should == "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
107
109
  certificate.public_key.verify(OpenSSL::Digest::SHA256.new, signature_value, data)
108
110
  end
109
111
  signature.errors.should be_empty
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmldsig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-17 00:00:00.000000000 Z
12
+ date: 2013-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri