signer 1.6.0 → 1.10.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1ee493581c699bac6cedcc5dade885fe7901bebe
4
- data.tar.gz: 3e2e76ecef50b8830f0c1b46cfe294734b747698
2
+ SHA256:
3
+ metadata.gz: 7401c27eba7c1c1e0982f73d50841f4597ecc9f03dbcc8ee459812aa20bbb7ae
4
+ data.tar.gz: 614b4e14d376489299b3476b26838e71131604df13b5200ebf9fd8e4b712bdb1
5
5
  SHA512:
6
- metadata.gz: 2bb34c6474b97a9729a9179343331b8c22ef8313b64160afa3a4079814a3e095a75c5f0456e86263550ba9c985dffefdbad18e542620479313bd81200d2a55d1
7
- data.tar.gz: 503971e5792ea1cd9ccaba1e988c35693fbd4b3141ffe83564a2c9ccdc34f5c0f48f736fa89bf89dce7417b287b14e4b077ccda0d53d5c62dd8901dc9b3f9016
6
+ metadata.gz: 77e5d5dcdde818d0713b7d9bb859c8c7ed0c0f0aa90969b4d48c385463d0bf07aead94e1cd8844c7cc943023ceb0c2682ccf5fb31bfa9be92e69349011ba582c
7
+ data.tar.gz: 308cb0b72d15012366e26bfed84aef33b39126d6b5e1af466a919ae32bc58fec24cbc8651abee5cf61e3aabc096493d71a6ad5d68523916fc63c87d87b403644
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## 1.10.0 (2021-10-22)
2
+
3
+ - Ensure compatibility with Nokogiri 1.12.4+ (#31, @flavorjones)
4
+ - fix #26: add xml-exc-c14n Transform when :enveloped option is true. (#27, @kunxi)
5
+
6
+ ## 1.9.0 (2019-04-16)
7
+
8
+ - Refactor digest!() method for better extensibility, add GOST-R 34.10/11-2012 algorithms, fix digest node ID reference, cleanup (#22, @netcitylife)
9
+
10
+ ## 1.8.0 (2018-11-14)
11
+
12
+ - Add parameter to customize canonicalize algorithm (#19, @pistachiology)
13
+ - Add references node type on digest (for xades-bes signing properties) (#19, @pistachiology)
14
+ - change issuer x509 content to be more standard way (#19, @pistachiology)
15
+
16
+ ## 1.7.0 (2018-11-06)
17
+
18
+ - Add wss option for XML only signing (#18, @pistachiology)
19
+ - Add support for SHA512 Digest
20
+ - Rename id for SHA256 Digest
21
+
1
22
  ## 1.6.0 (2017-09-14)
2
23
 
3
24
  - X509 in SecurityTokenReference node (#17, @tiagocasanovapt)
@@ -12,9 +12,15 @@ class Signer
12
12
  },
13
13
  # SHA 256
14
14
  sha256: {
15
- name: 'SHA256',
16
- id: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
17
- digester: lambda { OpenSSL::Digest::SHA256.new },
15
+ name: 'SHA256',
16
+ id: 'http://www.w3.org/2001/04/xmlenc#sha256',
17
+ digester: lambda { OpenSSL::Digest::SHA256.new },
18
+ },
19
+ # SHA512
20
+ sha512: {
21
+ name: 'SHA512',
22
+ id: 'http://www.w3.org/2001/04/xmlenc#sha512',
23
+ digester: lambda { OpenSSL::Digest::SHA512.new },
18
24
  },
19
25
  # GOST R 34-11 94
20
26
  gostr3411: {
@@ -22,7 +28,13 @@ class Signer
22
28
  id: 'http://www.w3.org/2001/04/xmldsig-more#gostr3411',
23
29
  digester: lambda { OpenSSL::Digest.new('md_gost94') },
24
30
  },
25
- }
31
+ # GOST R 34-11 2012 256 bit
32
+ gostr34112012_256: {
33
+ name: 'GOST R 34.11-2012 256',
34
+ id: 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256',
35
+ digester: lambda { begin OpenSSL::Digest.new('streebog256') rescue OpenSSL::Digest.new('md_gost12_256') end },
36
+ },
37
+ }.freeze
26
38
 
27
39
  # Class that holds +OpenSSL::Digest+ instance with some meta information for digesting in XML.
28
40
  class Digester
@@ -63,7 +75,5 @@ class Signer
63
75
  def digest_id
64
76
  @digest_info[:id]
65
77
  end
66
-
67
78
  end
68
-
69
79
  end
@@ -1,3 +1,3 @@
1
1
  class Signer
2
- VERSION = '1.6.0'
2
+ VERSION = '1.10.0'
3
3
  end
data/lib/signer.rb CHANGED
@@ -7,24 +7,89 @@ require "signer/digester"
7
7
  require "signer/version"
8
8
 
9
9
  class Signer
10
- attr_accessor :document, :private_key, :signature_algorithm_id, :ds_namespace_prefix
10
+ attr_accessor :document, :private_key, :signature_algorithm_id, :ds_namespace_prefix, :wss
11
11
  attr_reader :cert
12
12
  attr_writer :security_node, :signature_node, :security_token_id
13
13
 
14
- WSU_NAMESPACE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
15
- WSSE_NAMESPACE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
16
- DS_NAMESPACE = 'http://www.w3.org/2000/09/xmldsig#'
17
-
18
- def initialize(document, noblanks: true)
14
+ WSU_NAMESPACE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'.freeze
15
+ WSSE_NAMESPACE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'.freeze
16
+ DS_NAMESPACE = 'http://www.w3.org/2000/09/xmldsig#'.freeze
17
+
18
+ SIGNATURE_ALGORITHM = {
19
+ # SHA 1
20
+ sha1: {
21
+ id: 'http://www.w3.org/2000/09/xmldsig#rsa-sha1',
22
+ name: 'SHA1'
23
+ },
24
+ # SHA 256
25
+ sha256: {
26
+ id: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
27
+ name: 'SHA256'
28
+ },
29
+ # SHA512
30
+ sha512: {
31
+ id: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512',
32
+ name: 'SHA512'
33
+ },
34
+ # GOST R 34-11 94
35
+ gostr3411: {
36
+ id: 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411',
37
+ name: 'GOST R 34.11-94'
38
+ },
39
+ # GOST R 34-11 2012 256 bit
40
+ gostr34112012_256: {
41
+ id: 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256',
42
+ name: 'GOST R 34.11-2012 256',
43
+ },
44
+ }.freeze
45
+
46
+ CANONICALIZE_ALGORITHM = {
47
+ c14n_exec_1_0: {
48
+ name: 'c14n execlusive 1.0',
49
+ value: Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0,
50
+ id: 'http://www.w3.org/2001/10/xml-exc-c14n#'
51
+ },
52
+ c14n_1_0: {
53
+ name: 'c14n 1.0',
54
+ value: Nokogiri::XML::XML_C14N_1_0,
55
+ id: 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'
56
+ },
57
+ c14n_1_1: {
58
+ name: 'c14n 1.1',
59
+ value: Nokogiri::XML::XML_C14N_1_1,
60
+ id: 'https://www.w3.org/TR/2008/REC-xml-c14n11-20080502/'
61
+ }
62
+ }.freeze
63
+
64
+ def initialize(document, noblanks: true, wss: true, canonicalize_algorithm: :c14n_exec_1_0)
19
65
  self.document = Nokogiri::XML(document.to_s) do |config|
20
66
  config.noblanks if noblanks
21
67
  end
68
+ self.document.namespace_inheritance = true if self.document.respond_to?(:namespace_inheritance)
22
69
  self.digest_algorithm = :sha1
23
- self.set_default_signature_method!
70
+ self.wss = wss
71
+ self.canonicalize_algorithm = canonicalize_algorithm
72
+ self.signature_digest_algorithm = :sha1
24
73
  end
25
74
 
26
75
  def to_xml
27
- document.to_xml(:save_with => 0)
76
+ document.to_xml(save_with: 0)
77
+ end
78
+
79
+ def canonicalize_name
80
+ @canonicalize_algorithm[:name]
81
+ end
82
+
83
+ def canonicalize_id
84
+ @canonicalize_algorithm[:id]
85
+ end
86
+
87
+ def canonicalize_algorithm
88
+ @canonicalize_algorithm[:value]
89
+ end
90
+
91
+ def canonicalize_algorithm=(algorithm)
92
+ @canonicalize_algorithm = CANONICALIZE_ALGORITHM[algorithm]
28
93
  end
29
94
 
30
95
  # Return symbol name for supported digest algorithms and string name for custom ones.
@@ -49,6 +114,7 @@ class Signer
49
114
  # Allows to change digesting algorithm for signature creation. Same as +digest_algorithm=+
50
115
  def signature_digest_algorithm=(algorithm)
51
116
  @sign_digester = Signer::Digester.new(algorithm)
117
+ self.signature_algorithm_id = SIGNATURE_ALGORITHM[algorithm][:id]
52
118
  end
53
119
 
54
120
  # Receives certificate for signing and tries to guess a digest algorithm for signature creation.
@@ -58,25 +124,21 @@ class Signer
58
124
  @cert = certificate
59
125
  # Try to guess a digest algorithm for signature creation
60
126
  case @cert.signature_algorithm
61
- when 'GOST R 34.11-94 with GOST R 34.10-2001'
62
- self.signature_digest_algorithm = :gostr3411
63
- self.signature_algorithm_id = 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411'
64
- # Add clauses for other types of keys that require other digest algorithms and identifiers
65
- else # most common 'sha1WithRSAEncryption' type included here
66
- self.set_default_signature_method! # Reset any changes as they can become malformed
127
+ when 'GOST R 34.11-94 with GOST R 34.10-2001'
128
+ self.signature_digest_algorithm = :gostr3411
67
129
  end
68
130
  end
69
131
 
70
132
  def security_token_id
71
- @security_token_id ||= "uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1"
133
+ @security_token_id ||= wss? ? "uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1" : ""
72
134
  end
73
135
 
74
136
  def security_node
75
- @security_node ||= document.xpath('//wsse:Security', wsse: WSSE_NAMESPACE).first
137
+ @security_node ||= wss? ? document.xpath('//wsse:Security', wsse: WSSE_NAMESPACE).first : ''
76
138
  end
77
139
 
78
- def canonicalize(node = document, inclusive_namespaces=nil)
79
- node.canonicalize(Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, inclusive_namespaces, nil) # The last argument should be exactly +nil+ to remove comments from result
140
+ def canonicalize(node = document, inclusive_namespaces=nil, algorithm: canonicalize_algorithm)
141
+ node.canonicalize(algorithm, inclusive_namespaces, nil)
80
142
  end
81
143
 
82
144
  # <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
@@ -104,7 +166,7 @@ class Signer
104
166
  signature_node.add_child(node)
105
167
  set_namespace_for_node(node, DS_NAMESPACE, ds_namespace_prefix)
106
168
  canonicalization_method_node = Nokogiri::XML::Node.new('CanonicalizationMethod', document)
107
- canonicalization_method_node['Algorithm'] = 'http://www.w3.org/2001/10/xml-exc-c14n#'
169
+ canonicalization_method_node['Algorithm'] = canonicalize_id
108
170
  node.add_child(canonicalization_method_node)
109
171
  set_namespace_for_node(canonicalization_method_node, DS_NAMESPACE, ds_namespace_prefix)
110
172
  signature_method_node = Nokogiri::XML::Node.new('SignatureMethod', document)
@@ -127,6 +189,7 @@ class Signer
127
189
  # </o:SecurityTokenReference>
128
190
  # </KeyInfo>
129
191
  def binary_security_token_node
192
+ return unless wss?
130
193
  node = document.at_xpath('wsse:BinarySecurityToken', wsse: WSSE_NAMESPACE)
131
194
  unless node
132
195
  node = Nokogiri::XML::Node.new('BinarySecurityToken', document)
@@ -163,7 +226,7 @@ class Signer
163
226
  # </KeyInfo>
164
227
  def x509_data_node(issuer_in_security_token = false)
165
228
  issuer_name_node = Nokogiri::XML::Node.new('X509IssuerName', document)
166
- issuer_name_node.content = cert.issuer.to_s[1..-1].gsub(/\//, ',')
229
+ issuer_name_node.content = cert.issuer.to_s(OpenSSL::X509::Name::RFC2253)
167
230
 
168
231
  issuer_number_node = Nokogiri::XML::Node.new('X509SerialNumber', document)
169
232
  issuer_number_node.content = cert.serial
@@ -173,7 +236,7 @@ class Signer
173
236
  issuer_serial_node.add_child(issuer_number_node)
174
237
 
175
238
  cetificate_node = Nokogiri::XML::Node.new('X509Certificate', document)
176
- cetificate_node.content = Base64.encode64(cert.to_der).gsub("\n", '')
239
+ cetificate_node.content = Base64.encode64(cert.to_der).delete("\n")
177
240
 
178
241
  data_node = Nokogiri::XML::Node.new('X509Data', document)
179
242
  data_node.add_child(issuer_serial_node)
@@ -208,6 +271,8 @@ class Signer
208
271
  # * [+:id+] Id for the node, if you don't want to use automatically calculated one
209
272
  # * [+:inclusive_namespaces+] Array of namespace prefixes which definitions should be added to node during canonicalization
210
273
  # * [+:enveloped+]
274
+ # * [+:enveloped_legacy+] add solely `enveloped-signature` in `Transforms` with :enveloped:.
275
+ # * [+:ref_type+] add `Type` attribute to Reference node, if ref_type is not nil
211
276
  #
212
277
  # Example of XML that will be inserted in message for call like <tt>digest!(node, inclusive_namespaces: ['soap'])</tt>:
213
278
  #
@@ -222,42 +287,41 @@ class Signer
222
287
  # </Reference>
223
288
 
224
289
  def digest!(target_node, options = {})
225
- wsu_ns = namespace_prefix(target_node, WSU_NAMESPACE)
226
- current_id = target_node["#{wsu_ns}:Id"] if wsu_ns
227
- id = options[:id] || current_id || "_#{Digest::SHA1.hexdigest(target_node.to_s)}"
228
- if id.to_s.size > 0
229
- wsu_ns ||= namespace_prefix(target_node, WSU_NAMESPACE, 'wsu')
230
- target_node["#{wsu_ns}:Id"] = id.to_s
290
+ if wss?
291
+ wsu_ns = namespace_prefix(target_node, WSU_NAMESPACE)
292
+ current_id = target_node["#{wsu_ns}:Id"] if wsu_ns
293
+ id = options[:id] || current_id || "_#{Digest::SHA1.hexdigest(target_node.to_s)}"
294
+ unless id.to_s.empty?
295
+ wsu_ns ||= namespace_prefix(target_node, WSU_NAMESPACE, 'wsu')
296
+ target_node["#{wsu_ns}:Id"] = id.to_s
297
+ end
298
+ elsif target_node['Id'].nil?
299
+ id = options[:id] || "_#{Digest::SHA1.hexdigest(target_node.to_s)}"
300
+ target_node['Id'] = id.to_s unless id.empty?
301
+ else
302
+ id = options[:id] || target_node['Id']
231
303
  end
304
+
232
305
  target_canon = canonicalize(target_node, options[:inclusive_namespaces])
233
306
  target_digest = Base64.encode64(@digester.digest(target_canon)).strip
234
307
 
235
308
  reference_node = Nokogiri::XML::Node.new('Reference', document)
236
309
  reference_node['URI'] = id.to_s.size > 0 ? "##{id}" : ""
310
+ reference_node['Type'] = options[:ref_type] if options[:ref_type]
311
+
237
312
  signed_info_node.add_child(reference_node)
238
313
  set_namespace_for_node(reference_node, DS_NAMESPACE, ds_namespace_prefix)
239
314
 
240
315
  transforms_node = Nokogiri::XML::Node.new('Transforms', document)
241
- reference_node.add_child(transforms_node)
316
+ reference_node.add_child(transforms_node) unless options[:no_transform]
242
317
  set_namespace_for_node(transforms_node, DS_NAMESPACE, ds_namespace_prefix)
243
318
 
244
- transform_node = Nokogiri::XML::Node.new('Transform', document)
245
- set_namespace_for_node(transform_node, DS_NAMESPACE, ds_namespace_prefix)
246
- if options[:enveloped]
247
- transform_node['Algorithm'] = 'http://www.w3.org/2000/09/xmldsig#enveloped-signature'
248
- else
249
- transform_node['Algorithm'] = 'http://www.w3.org/2001/10/xml-exc-c14n#'
250
- end
251
- if options[:inclusive_namespaces]
252
- inclusive_namespaces_node = Nokogiri::XML::Node.new('ec:InclusiveNamespaces', document)
253
- inclusive_namespaces_node.add_namespace_definition('ec', transform_node['Algorithm'])
254
- inclusive_namespaces_node['PrefixList'] = options[:inclusive_namespaces].join(' ')
255
- transform_node.add_child(inclusive_namespaces_node)
256
- end
257
- transforms_node.add_child(transform_node)
319
+ # create reference + transforms node
320
+ transform!(transforms_node, options)
258
321
 
259
322
  digest_method_node = Nokogiri::XML::Node.new('DigestMethod', document)
260
323
  digest_method_node['Algorithm'] = @digester.digest_id
324
+
261
325
  reference_node.add_child(digest_method_node)
262
326
  set_namespace_for_node(digest_method_node, DS_NAMESPACE, ds_namespace_prefix)
263
327
 
@@ -299,7 +363,7 @@ class Signer
299
363
  signed_info_canon = canonicalize(signed_info_node, options[:inclusive_namespaces])
300
364
 
301
365
  signature = private_key.sign(@sign_digester.digester, signed_info_canon)
302
- signature_value_digest = Base64.encode64(signature).gsub("\n", '')
366
+ signature_value_digest = Base64.encode64(signature).delete("\n")
303
367
 
304
368
  signature_value_node = Nokogiri::XML::Node.new('SignatureValue', document)
305
369
  signature_value_node.content = signature_value_digest
@@ -310,10 +374,40 @@ class Signer
310
374
 
311
375
  protected
312
376
 
313
- # Reset digest algorithm for signature creation and signature algorithm identifier
314
- def set_default_signature_method!
315
- self.signature_digest_algorithm = :sha1
316
- self.signature_algorithm_id = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
377
+ # Create transform nodes
378
+ def transform_node(algorithm, options)
379
+ transform_node = Nokogiri::XML::Node.new('Transform', document)
380
+ set_namespace_for_node(transform_node, DS_NAMESPACE, ds_namespace_prefix)
381
+ transform_node['Algorithm'] = algorithm
382
+
383
+ if options[:inclusive_namespaces]
384
+ inclusive_namespaces_node = Nokogiri::XML::Node.new('ec:InclusiveNamespaces', document)
385
+ inclusive_namespaces_node.add_namespace_definition('ec', transform_node['Algorithm'])
386
+ inclusive_namespaces_node['PrefixList'] = options[:inclusive_namespaces].join(' ')
387
+ transform_node.add_child(inclusive_namespaces_node)
388
+ end
389
+
390
+ transform_node
391
+ end
392
+
393
+ def transform!(transforms_node, options)
394
+ # With PR-26, a new flag :enveloped_legacy is introduced for backward compatibility, the logics are:
395
+ # - :enveloped is false, include xml-exc-c14n
396
+ # - :enveloped is true, include xml-exc-c14n and enveloped-signature
397
+ # - :enveloped is true and :enveloped_legacy is true, include enveloped-signature.
398
+
399
+ if options[:enveloped] && options[:enveloped_legacy]
400
+ transforms_node.add_child(transform_node('http://www.w3.org/2000/09/xmldsig#enveloped-signature', options))
401
+ return
402
+ end
403
+
404
+ transforms_node.add_child(transform_node('http://www.w3.org/2001/10/xml-exc-c14n#', options))
405
+ transforms_node.add_child(transform_node('http://www.w3.org/2000/09/xmldsig#enveloped-signature', options)) if options[:enveloped]
406
+ end
407
+
408
+ # Check are we using ws security?
409
+ def wss?
410
+ wss
317
411
  end
318
412
 
319
413
  ##
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0"?>
2
- <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:wsurandom="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IDocumentService/SearchDocuments</a:Action><a:MessageID>urn:uuid:30db5d4f-ab84-46be-907c-be690a92979b</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><To xmlns="http://www.w3.org/2005/08/addressing" xmlns:a="http://www.w3.org/2003/05/soap-envelope" a:mustUnderstand="1">http://tempuri.org/PublicServices/Test/1.0.12/PublicServices/DocumentService.svc</To><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1"><wsurandom:Timestamp><wsurandom:Created>2012-05-02T18:17:14.467Z</wsurandom:Created><wsurandom:Expires>2012-05-02T18:22:14.467Z</wsurandom:Expires></wsurandom:Timestamp><wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" wsurandom:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</wsse:BinarySecurityToken><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><Reference URI="#uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><DigestValue>2ca0eR2o1+y/CovNwnle3yEK1wI+ztlKQfCqcGvoSAA=</DigestValue></Reference></SignedInfo><SignatureValue>ml/HJ0ouBwAag9Kr4yTyrc4RrHc3sspx2YbQHPiTxB3QOT+T2kM5wU+gnHVIk5VOYVR9FIvm/bb6RWnLyW78/7eN6eIoh+Zr1YsEavCHw3AR9Zf4d7S+9ugCrPmrrEO1lOiyEHU0HuWS5gqua+/ttuTPtV24fGeWvxl15SIxFa8=</SignatureValue><KeyInfo><wsse:SecurityTokenReference><wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1"/></wsse:SecurityTokenReference></KeyInfo></Signature></wsse:Security></s:Header><s:Body><SearchDocuments xmlns="http://tempuri.org/"><searchCriteria xmlns:b="http://schemas.datacontract.org/2004/07/BusinessLogic.Data.Documents.Integration" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><b:RegistrationNo>1</b:RegistrationNo></searchCriteria></SearchDocuments></s:Body></s:Envelope>
2
+ <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:wsurandom="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IDocumentService/SearchDocuments</a:Action><a:MessageID>urn:uuid:30db5d4f-ab84-46be-907c-be690a92979b</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><To xmlns="http://www.w3.org/2005/08/addressing" xmlns:a="http://www.w3.org/2003/05/soap-envelope" a:mustUnderstand="1">http://tempuri.org/PublicServices/Test/1.0.12/PublicServices/DocumentService.svc</To><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1"><wsurandom:Timestamp><wsurandom:Created>2012-05-02T18:17:14.467Z</wsurandom:Created><wsurandom:Expires>2012-05-02T18:22:14.467Z</wsurandom:Expires></wsurandom:Timestamp><wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" wsurandom:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</wsse:BinarySecurityToken><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><Reference URI="#uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>2ca0eR2o1+y/CovNwnle3yEK1wI+ztlKQfCqcGvoSAA=</DigestValue></Reference></SignedInfo><SignatureValue>PoUuYfxElOzG8Dw8/zdDrgPXxbFpj+Gxz4Fi7KDJ0XUgUNcQ6/Tk871cwdFA641Pkqo2DvyD2RIylXEuaY57abDQ4JTB86KCqrdt1cgAecn/lqfoojdTflrq+ugc1JGm6UZFQRcHrW4m2wjQgWFFAPFwNnRVdNGTRf5SHtmbMvc=</SignatureValue><KeyInfo><wsse:SecurityTokenReference><wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1"/></wsse:SecurityTokenReference></KeyInfo></Signature></wsse:Security></s:Header><s:Body><SearchDocuments xmlns="http://tempuri.org/"><searchCriteria xmlns:b="http://schemas.datacontract.org/2004/07/BusinessLogic.Data.Documents.Integration" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><b:RegistrationNo>1</b:RegistrationNo></searchCriteria></SearchDocuments></s:Body></s:Envelope>
@@ -11,17 +11,18 @@
11
11
  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
12
  <Reference URI="">
13
13
  <Transforms>
14
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
14
15
  <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
15
16
  </Transforms>
16
17
  <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
17
18
  <DigestValue>U9tsT4lrRMp8ZdKMnblgeMCGfvI=</DigestValue>
18
19
  </Reference>
19
20
  </SignedInfo>
20
- <SignatureValue>HpRIiW6/yGyAI0AwVaaGp3PltD3JOCFfxZLVt+kQD05u1tz9EA91/5CbvCNfn1ljoObMSGe3+W9gXFZewCXANu5VXMnt+FeZ42QYNuYj2oUCFaWlg3NcThWnehE1W/R+QPLJVgk4RxpSntNLK0WWtFy79JbAh0NO4CcD84/HEo8=</SignatureValue>
21
+ <SignatureValue>pjz9q0RI02SGuFs3ok+qQjKKyibAG+dScZBIxmWebD4JmfjIMOCTvk7RR1S5ZqJqkDp2kMV4DOBg+AqJAEu9ZO6gBBceCfYHYgmdvKWz3Ex42fyRYjfZlnR/7Vxk94VJ806J/H+7n2TBJlSndkMGJ2X8agKq1Zto0ip/k2qDfm4=</SignatureValue>
21
22
  <KeyInfo>
22
23
  <X509Data>
23
24
  <X509IssuerSerial>
24
- <X509IssuerName>C=AU,ST=Some-State,O=Internet Widgits Pty Ltd</X509IssuerName>
25
+ <X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</X509IssuerName>
25
26
  <X509SerialNumber>16503368396260674861</X509SerialNumber>
26
27
  </X509IssuerSerial>
27
28
  <X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</X509Certificate>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0"?>
2
+ <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
3
+ <CustomerId>679155330</CustomerId>
4
+ <Command>GetUserInfo</Command>
5
+ <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
+ <Environment>PRODUCTION</Environment>
7
+ <SoftwareId>Petri</SoftwareId>
8
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
9
+ <SignedInfo>
10
+ <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
+ <Reference URI="">
13
+ <Transforms>
14
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
15
+ </Transforms>
16
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
17
+ <DigestValue>U9tsT4lrRMp8ZdKMnblgeMCGfvI=</DigestValue>
18
+ </Reference>
19
+ </SignedInfo>
20
+ <SignatureValue>HpRIiW6/yGyAI0AwVaaGp3PltD3JOCFfxZLVt+kQD05u1tz9EA91/5CbvCNfn1ljoObMSGe3+W9gXFZewCXANu5VXMnt+FeZ42QYNuYj2oUCFaWlg3NcThWnehE1W/R+QPLJVgk4RxpSntNLK0WWtFy79JbAh0NO4CcD84/HEo8=</SignatureValue>
21
+ <KeyInfo>
22
+ <X509Data>
23
+ <X509IssuerSerial>
24
+ <X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</X509IssuerName>
25
+ <X509SerialNumber>16503368396260674861</X509SerialNumber>
26
+ </X509IssuerSerial>
27
+ <X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</X509Certificate>
28
+ </X509Data>
29
+ </KeyInfo>
30
+ </Signature>
31
+ </ApplicationRequest>
@@ -1,31 +1,32 @@
1
1
  <?xml version="1.0"?>
2
2
  <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
3
- <CustomerId>679155330</CustomerId>
4
- <Command>GetUserInfo</Command>
5
- <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
- <Environment>PRODUCTION</Environment>
7
- <SoftwareId>Petri</SoftwareId>
8
- <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
9
- <ds:SignedInfo>
10
- <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
- <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
- <ds:Reference URI="">
13
- <ds:Transforms>
14
- <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
15
- </ds:Transforms>
16
- <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
17
- <ds:DigestValue>U9tsT4lrRMp8ZdKMnblgeMCGfvI=</ds:DigestValue>
18
- </ds:Reference>
19
- </ds:SignedInfo>
20
- <ds:SignatureValue>rOCe8McbIFa4Ul3pnzd/dBjFWoT4JtSghJgzZGLrz17K/j0W1JyaopcZeMD+8M5/GplAlQrJg3ZSkQvY9Sf7WpqZeLYHW17J0ZJpwas+/OOXUEdyUiec7q9OgWsFLH9DBNuJdLKE3CO6w/8tTKQ/kidYnPBXT6FKioNlSJVZsuI=</ds:SignatureValue>
21
- <ds:KeyInfo>
22
- <ds:X509Data>
23
- <ds:X509IssuerSerial>
24
- <ds:X509IssuerName>C=AU,ST=Some-State,O=Internet Widgits Pty Ltd</ds:X509IssuerName>
25
- <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
26
- </ds:X509IssuerSerial>
27
- <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
28
- </ds:X509Data>
29
- </ds:KeyInfo>
30
- </ds:Signature>
3
+ <CustomerId>679155330</CustomerId>
4
+ <Command>GetUserInfo</Command>
5
+ <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
+ <Environment>PRODUCTION</Environment>
7
+ <SoftwareId>Petri</SoftwareId>
8
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
9
+ <ds:SignedInfo>
10
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
+ <ds:Reference URI="">
13
+ <ds:Transforms>
14
+ <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
15
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
16
+ </ds:Transforms>
17
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
18
+ <ds:DigestValue>U9tsT4lrRMp8ZdKMnblgeMCGfvI=</ds:DigestValue>
19
+ </ds:Reference>
20
+ </ds:SignedInfo>
21
+ <ds:SignatureValue>oh0PAqWsOY+QROz2ks9rJ6wqD8756qC+Gg2uj9lfR75khHS9LBY0jidThh18iynkflluqD1/gA98Hze8raYjmXdw09X7z+kYkxRB/QBY6YkqsWdxSDMhuW63XynrI372bv5p4fC0YjS1lix195qFbk2i0h5LcTByimquzkwEMUk=</ds:SignatureValue>
22
+ <ds:KeyInfo>
23
+ <ds:X509Data>
24
+ <ds:X509IssuerSerial>
25
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
26
+ <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
27
+ </ds:X509IssuerSerial>
28
+ <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
29
+ </ds:X509Data>
30
+ </ds:KeyInfo>
31
+ </ds:Signature>
31
32
  </ApplicationRequest>
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0"?>
2
+ <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
3
+ <CustomerId Id="_8ea8b0fa3fe774fc4942779a3e53620e6d389667">679155330</CustomerId>
4
+ <Command>GetUserInfo</Command>
5
+ <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
+ <Environment>PRODUCTION</Environment>
7
+ <SoftwareId>Petri</SoftwareId>
8
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
9
+ <ds:SignedInfo>
10
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
+ <ds:Reference URI="#_8ea8b0fa3fe774fc4942779a3e53620e6d389667">
13
+ <ds:Transforms>
14
+ <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
15
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
16
+ </ds:Transforms>
17
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
18
+ <ds:DigestValue>AttQv5nkiNZFLKlFfVfX5+JYmSA=</ds:DigestValue>
19
+ </ds:Reference>
20
+ <ds:Reference URI="">
21
+ <ds:Transforms>
22
+ <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
23
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
24
+ </ds:Transforms>
25
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
26
+ <ds:DigestValue>gZjyHqoTlsz5D1JQJEFNvSmtwjk=</ds:DigestValue>
27
+ </ds:Reference>
28
+ </ds:SignedInfo>
29
+ <ds:SignatureValue>Vhsr3WaCPA0dDB6THouzG9/EA0xfhzHzfbyCn1PY8+Y9MMsLpiW0KHOWtAiWLULDN2mFvTFDr90kCZR6YzgdaztbQewiZHeeu7M0WEC5f8VCgfO0N8J7mzOCWHBELHtDzoN+9phTbqDqbX06TH0mszIpZhnsGa4d+Ko3Y+AA3cs=</ds:SignatureValue>
30
+ <ds:KeyInfo>
31
+ <ds:X509Data>
32
+ <ds:X509IssuerSerial>
33
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
34
+ <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
35
+ </ds:X509IssuerSerial>
36
+ <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
37
+ </ds:X509Data>
38
+ </ds:KeyInfo>
39
+ </ds:Signature>
40
+ </ApplicationRequest>
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0"?>
2
+ <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
3
+ <CustomerId Id="_8ea8b0fa3fe774fc4942779a3e53620e6d389667">679155330</CustomerId>
4
+ <Command>GetUserInfo</Command>
5
+ <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
+ <Environment>PRODUCTION</Environment>
7
+ <SoftwareId>Petri</SoftwareId>
8
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
9
+ <ds:SignedInfo>
10
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
+ <ds:Reference URI="#_8ea8b0fa3fe774fc4942779a3e53620e6d389667">
13
+ <ds:Transforms>
14
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
15
+ </ds:Transforms>
16
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
17
+ <ds:DigestValue>AttQv5nkiNZFLKlFfVfX5+JYmSA=</ds:DigestValue>
18
+ </ds:Reference>
19
+ <ds:Reference URI="">
20
+ <ds:Transforms>
21
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
22
+ </ds:Transforms>
23
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
24
+ <ds:DigestValue>9Z9YtwWWlyGnFB36gxXj+mGcv14=</ds:DigestValue>
25
+ </ds:Reference>
26
+ </ds:SignedInfo>
27
+ <ds:SignatureValue>YwPuF4il34qUeAhIfzsLy/oKr4gxB9hlCYqEhVo8nYsrnDJKtBMznvkmi89TuKJ4FIibWnjsMqDDC74rpkcoUVs9O4pE/zLQxdRnQeRWPZjZnwEsmbBirFK+uk+Q7aVMUTRxxQwjZQRfBain4YdatqKDYCq/VkX4muAzxtHBYN4=</ds:SignatureValue>
28
+ <ds:KeyInfo>
29
+ <ds:X509Data>
30
+ <ds:X509IssuerSerial>
31
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
32
+ <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
33
+ </ds:X509IssuerSerial>
34
+ <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
35
+ </ds:X509Data>
36
+ </ds:KeyInfo>
37
+ </ds:Signature>
38
+ </ApplicationRequest>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0"?>
2
+ <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
3
+ <CustomerId>679155330</CustomerId>
4
+ <Command>GetUserInfo</Command>
5
+ <Timestamp>2010-05-10T13:22:19.847+03:00</Timestamp>
6
+ <Environment>PRODUCTION</Environment>
7
+ <SoftwareId>Petri</SoftwareId>
8
+ <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
9
+ <ds:SignedInfo>
10
+ <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
11
+ <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
12
+ <ds:Reference URI="">
13
+ <ds:Transforms>
14
+ <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
15
+ </ds:Transforms>
16
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
17
+ <ds:DigestValue>U9tsT4lrRMp8ZdKMnblgeMCGfvI=</ds:DigestValue>
18
+ </ds:Reference>
19
+ </ds:SignedInfo>
20
+ <ds:SignatureValue>rOCe8McbIFa4Ul3pnzd/dBjFWoT4JtSghJgzZGLrz17K/j0W1JyaopcZeMD+8M5/GplAlQrJg3ZSkQvY9Sf7WpqZeLYHW17J0ZJpwas+/OOXUEdyUiec7q9OgWsFLH9DBNuJdLKE3CO6w/8tTKQ/kidYnPBXT6FKioNlSJVZsuI=</ds:SignatureValue>
21
+ <ds:KeyInfo>
22
+ <ds:X509Data>
23
+ <ds:X509IssuerSerial>
24
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
25
+ <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
26
+ </ds:X509IssuerSerial>
27
+ <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
28
+ </ds:X509Data>
29
+ </ds:KeyInfo>
30
+ </ds:Signature>
31
+ </ApplicationRequest>
@@ -21,7 +21,7 @@
21
21
  <wsse:SecurityTokenReference>
22
22
  <ds:X509Data>
23
23
  <ds:X509IssuerSerial>
24
- <ds:X509IssuerName>C=AU,ST=Some-State,O=Internet Widgits Pty Ltd</ds:X509IssuerName>
24
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
25
25
  <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
26
26
  </ds:X509IssuerSerial>
27
27
  <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
@@ -20,7 +20,7 @@
20
20
  <ds:KeyInfo>
21
21
  <ds:X509Data>
22
22
  <ds:X509IssuerSerial>
23
- <ds:X509IssuerName>C=AU,ST=Some-State,O=Internet Widgits Pty Ltd</ds:X509IssuerName>
23
+ <ds:X509IssuerName>O=Internet Widgits Pty Ltd,ST=Some-State,C=AU</ds:X509IssuerName>
24
24
  <ds:X509SerialNumber>16503368396260674861</ds:X509SerialNumber>
25
25
  </ds:X509IssuerSerial>
26
26
  <ds:X509Certificate>MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuVwyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEbgDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0GA1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4oho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnNJJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpTBmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0jlyrGYJlLli1NxHiBz7FCEJaVI8=</ds:X509Certificate>
data/spec/signer_spec.rb CHANGED
@@ -27,7 +27,7 @@ describe Signer do
27
27
  # end
28
28
  output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_1.xml')
29
29
 
30
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
30
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
31
31
  end
32
32
 
33
33
  it "should correctly canonicalize digested nodes (shouldn't account comments)" do
@@ -44,7 +44,7 @@ describe Signer do
44
44
 
45
45
  output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_3_c14n_comments.xml')
46
46
 
47
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
47
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
48
48
  end
49
49
 
50
50
  it "should digest and sign SOAP XML with SHA256" do
@@ -57,7 +57,7 @@ describe Signer do
57
57
  signer.private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file), "test")
58
58
  signer.digest_algorithm = :sha256
59
59
  signer.signature_digest_algorithm = :sha256
60
- signer.signature_algorithm_id = 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'
60
+ signer.signature_algorithm_id = 'http://www.w3.org/2001/04/xmlenc#sha256'
61
61
 
62
62
  signer.digest!(signer.binary_security_token_node)
63
63
 
@@ -65,7 +65,7 @@ describe Signer do
65
65
 
66
66
  output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_1_sha256.xml')
67
67
 
68
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
68
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
69
69
  end
70
70
 
71
71
  it "should digest and sign SOAP XML with inclusive namespaces" do
@@ -85,30 +85,37 @@ describe Signer do
85
85
 
86
86
  output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_1_inclusive_namespaces.xml')
87
87
 
88
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
88
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
89
89
  end
90
90
 
91
- it "should sign simple XML" do
92
- input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_2.xml')
93
- cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
94
- private_key_file = File.join(File.dirname(__FILE__), 'fixtures', 'key.pem')
95
-
96
- signer = Signer.new(File.read(input_xml_file))
97
- signer.cert = OpenSSL::X509::Certificate.new(File.read(cert_file))
98
- signer.private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file), "test")
99
- signer.security_node = signer.document.root
100
- signer.security_token_id = ""
101
- signer.digest!(signer.document.root, :id => "", :enveloped => true)
102
- signer.sign!(:issuer_serial => true)
103
-
104
- # File.open(File.join(File.dirname(__FILE__), 'fixtures', 'output_2.xml'), "w") do |f|
105
- # f.write signer.document.to_s
106
- # end
107
- output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_2.xml')
108
-
109
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
91
+ [
92
+ [{ enveloped: true, enveloped_legacy: true }, 'output_2_legacy.xml'],
93
+ [{ enveloped: true, enveloped_legacy: false }, 'output_2.xml'],
94
+ [{ enveloped: true }, 'output_2.xml']
95
+ ].each do |options, output_xml|
96
+ it "should sign simple XML with options=#{options}" do
97
+ input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_2.xml')
98
+ cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
99
+ private_key_file = File.join(File.dirname(__FILE__), 'fixtures', 'key.pem')
100
+
101
+ signer = Signer.new(File.read(input_xml_file))
102
+ signer.cert = OpenSSL::X509::Certificate.new(File.read(cert_file))
103
+ signer.private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file), "test")
104
+ signer.security_node = signer.document.root
105
+ signer.security_token_id = ""
106
+ signer.digest!(signer.document.root, id: "", **options)
107
+ signer.sign!(:issuer_serial => true)
108
+
109
+ # File.open(File.join(File.dirname(__FILE__), 'fixtures', 'output_2.xml'), "w") do |f|
110
+ # f.write signer.document.to_s
111
+ # end
112
+ output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', output_xml)
113
+
114
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
115
+ end
110
116
  end
111
117
 
118
+
112
119
  it "should digest and sign SOAP XML with security node and digested binary token" do
113
120
  input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_4_with_nested_signatures.xml')
114
121
  cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
@@ -136,10 +143,39 @@ describe Signer do
136
143
  # end
137
144
  output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_4_with_nested_signatures.xml')
138
145
 
139
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
146
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
147
+ end
148
+
149
+ [
150
+ [{ enveloped: true, enveloped_legacy: true }, 'output_2_with_ds_prefix_legacy.xml'],
151
+ [{ enveloped: true, enveloped_legacy: false }, 'output_2_with_ds_prefix.xml'],
152
+ [{ enveloped: true }, 'output_2_with_ds_prefix.xml']
153
+ ].each do |options, output_xml|
154
+ it "should sign simple XML with custom DS namespace prefix with options=#{options}" do
155
+ input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_2.xml')
156
+ cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
157
+ private_key_file = File.join(File.dirname(__FILE__), 'fixtures', 'key.pem')
158
+
159
+ signer = Signer.new(File.read(input_xml_file))
160
+ signer.cert = OpenSSL::X509::Certificate.new(File.read(cert_file))
161
+ signer.private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file), "test")
162
+ signer.security_node = signer.document.root
163
+ signer.security_token_id = ""
164
+ signer.ds_namespace_prefix = 'ds'
165
+
166
+ signer.digest!(signer.document.root, id: "", **options)
167
+ signer.sign!(issuer_serial: true)
168
+
169
+ # File.open(File.join(File.dirname(__FILE__), 'fixtures', 'output_2_with_ds_prefix.xml'), "w") do |f|
170
+ # f.write signer.document.to_s
171
+ # end
172
+ output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', output_xml)
173
+
174
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
175
+ end
140
176
  end
141
177
 
142
- it "should sign simple XML with custom DS namespace prefix" do
178
+ it "should digest simple XML without transforms node" do
143
179
  input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_2.xml')
144
180
  cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
145
181
  private_key_file = File.join(File.dirname(__FILE__), 'fixtures', 'key.pem')
@@ -150,15 +186,43 @@ describe Signer do
150
186
  signer.security_node = signer.document.root
151
187
  signer.security_token_id = ""
152
188
  signer.ds_namespace_prefix = 'ds'
153
- signer.digest!(signer.document.root, :id => "", :enveloped => true)
154
- signer.sign!(:issuer_serial => true)
155
189
 
156
- # File.open(File.join(File.dirname(__FILE__), 'fixtures', 'output_2_with_ds_prefix.xml'), "w") do |f|
157
- # f.write signer.document.to_s
158
- # end
159
- output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'output_2_with_ds_prefix.xml')
190
+ signer.digest!(signer.document.root, id: "", no_transform: true)
191
+ signer.sign!(issuer_serial: true)
160
192
 
161
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
193
+ expect(signer.document.at_xpath('//ds:Transforms', ds: Signer::DS_NAMESPACE)).to be_nil
194
+ end
195
+
196
+ [
197
+ [{ enveloped: true, enveloped_legacy: true }, 'output_2_with_ds_prefix_and_wss_disabled_legacy.xml'],
198
+ [{ enveloped: true, enveloped_legacy: false }, 'output_2_with_ds_prefix_and_wss_disabled.xml'],
199
+ [{ enveloped: true }, 'output_2_with_ds_prefix_and_wss_disabled.xml']
200
+ ].each do |options, output_xml|
201
+ it "should partially sign element and simple XML with custom DS namespace prefix when wss is false with options=#{options}" do
202
+ input_xml_file = File.join(File.dirname(__FILE__), 'fixtures', 'input_2.xml')
203
+ cert_file = File.join(File.dirname(__FILE__), 'fixtures', 'cert.pem')
204
+ private_key_file = File.join(File.dirname(__FILE__), 'fixtures', 'key.pem')
205
+
206
+ signer = Signer.new(File.read(input_xml_file), wss: false)
207
+ signer.cert = OpenSSL::X509::Certificate.new(File.read(cert_file))
208
+ signer.private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file), "test")
209
+ signer.security_node = signer.document.root
210
+ signer.security_token_id = ""
211
+ signer.ds_namespace_prefix = 'ds'
212
+
213
+ # partially sign element
214
+ signer.digest!(signer.document.root.children.first, **options)
215
+
216
+ signer.digest!(signer.document.root, id: "", **options)
217
+ signer.sign!(issuer_serial: true)
218
+
219
+ # File.open(File.join(File.dirname(__FILE__), 'fixtures', 'output_2_with_ds_prefix_and_wss_disabled.xml'), "w") do |f|
220
+ # f.write signer.document.to_s
221
+ # end
222
+ output_xml_file = File.join(File.dirname(__FILE__), 'fixtures', output_xml)
223
+
224
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
225
+ end
162
226
  end
163
227
 
164
228
  it "should digest and sign SOAP XML with security node and digested binary token with noblanks disabled" do
@@ -187,7 +251,7 @@ describe Signer do
187
251
  'fixtures',
188
252
  'output_4_with_nested_signatures_with_noblanks_disabled.xml')
189
253
 
190
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file)).to_xml(:save_with => 0)
254
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file)).to_xml(save_with: 0)
191
255
  end
192
256
 
193
257
  it "should digest and sign SOAP XML with X509Data inside SecurityTokenReference node" do
@@ -209,7 +273,7 @@ describe Signer do
209
273
  'fixtures',
210
274
  'output_5_with_security_token.xml')
211
275
 
212
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
276
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
213
277
  end
214
278
 
215
279
  it "should digest and sign SOAP XML with X509Data" do
@@ -231,6 +295,6 @@ describe Signer do
231
295
  'fixtures',
232
296
  'output_5_with_x509_data.xml')
233
297
 
234
- signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(:save_with => 0)
298
+ signer.to_xml.should == Nokogiri::XML(File.read(output_xml_file), &:noblanks).to_xml(save_with: 0)
235
299
  end
236
300
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgars Beigarts
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-14 00:00:00.000000000 Z
11
+ date: 2021-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -45,6 +45,18 @@ dependencies:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.5.1
48
+ - - "!="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.12.0
51
+ - - "!="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.12.1
54
+ - - "!="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.12.2
57
+ - - "!="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.12.3
48
60
  type: :runtime
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,6 +64,18 @@ dependencies:
52
64
  - - ">="
53
65
  - !ruby/object:Gem::Version
54
66
  version: 1.5.1
67
+ - - "!="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.12.0
70
+ - - "!="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.12.1
73
+ - - "!="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.12.2
76
+ - - "!="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.12.3
55
79
  description: WS Security XML signer
56
80
  email:
57
81
  - edgars.beigarts@gmail.com
@@ -76,7 +100,11 @@ files:
76
100
  - spec/fixtures/output_1_inclusive_namespaces.xml
77
101
  - spec/fixtures/output_1_sha256.xml
78
102
  - spec/fixtures/output_2.xml
103
+ - spec/fixtures/output_2_legacy.xml
79
104
  - spec/fixtures/output_2_with_ds_prefix.xml
105
+ - spec/fixtures/output_2_with_ds_prefix_and_wss_disabled.xml
106
+ - spec/fixtures/output_2_with_ds_prefix_and_wss_disabled_legacy.xml
107
+ - spec/fixtures/output_2_with_ds_prefix_legacy.xml
80
108
  - spec/fixtures/output_3_c14n_comments.xml
81
109
  - spec/fixtures/output_4_with_nested_signatures.xml
82
110
  - spec/fixtures/output_4_with_nested_signatures_with_noblanks_disabled.xml
@@ -87,7 +115,7 @@ files:
87
115
  homepage: ''
88
116
  licenses: []
89
117
  metadata: {}
90
- post_install_message:
118
+ post_install_message:
91
119
  rdoc_options: []
92
120
  require_paths:
93
121
  - lib
@@ -102,28 +130,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
104
132
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.6.11
107
- signing_key:
133
+ rubygems_version: 3.0.1
134
+ signing_key:
108
135
  specification_version: 4
109
136
  summary: WS Security XML signer
110
137
  test_files:
138
+ - spec/spec_helper.rb
139
+ - spec/fixtures/output_5_with_x509_data.xml
140
+ - spec/fixtures/output_2_with_ds_prefix_legacy.xml
141
+ - spec/fixtures/key.pem
142
+ - spec/fixtures/input_5.xml
143
+ - spec/fixtures/input_4_with_nested_signatures.xml
111
144
  - spec/fixtures/cert.pem
112
145
  - spec/fixtures/input_1.xml
113
146
  - spec/fixtures/input_2.xml
114
- - spec/fixtures/input_3_c14n_comments.xml
115
- - spec/fixtures/input_4_with_nested_signatures.xml
116
- - spec/fixtures/input_5.xml
117
- - spec/fixtures/key.pem
147
+ - spec/fixtures/output_4_with_nested_signatures.xml
148
+ - spec/fixtures/output_2_with_ds_prefix_and_wss_disabled_legacy.xml
118
149
  - spec/fixtures/output_1.xml
119
- - spec/fixtures/output_1_inclusive_namespaces.xml
120
- - spec/fixtures/output_1_sha256.xml
121
150
  - spec/fixtures/output_2.xml
122
- - spec/fixtures/output_2_with_ds_prefix.xml
123
- - spec/fixtures/output_3_c14n_comments.xml
124
- - spec/fixtures/output_4_with_nested_signatures.xml
151
+ - spec/fixtures/output_1_sha256.xml
152
+ - spec/fixtures/input_3_c14n_comments.xml
153
+ - spec/fixtures/output_2_with_ds_prefix_and_wss_disabled.xml
154
+ - spec/fixtures/output_2_legacy.xml
125
155
  - spec/fixtures/output_4_with_nested_signatures_with_noblanks_disabled.xml
156
+ - spec/fixtures/output_3_c14n_comments.xml
157
+ - spec/fixtures/output_2_with_ds_prefix.xml
158
+ - spec/fixtures/output_1_inclusive_namespaces.xml
126
159
  - spec/fixtures/output_5_with_security_token.xml
127
- - spec/fixtures/output_5_with_x509_data.xml
128
160
  - spec/signer_spec.rb
129
- - spec/spec_helper.rb