akami 1.2.2 → 1.3.0

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: 825ae5faa9ad5fa6de8a41b5cafaf9440c1ed815
4
- data.tar.gz: eb85cd1306247a20e0197a6243f4655814c1ff66
3
+ metadata.gz: 208bce131b542d769f19dd08ee9ca4fabffd2bb3
4
+ data.tar.gz: ab59a51d740dcabd830313410803fe6853bedbfa
5
5
  SHA512:
6
- metadata.gz: 68eca4d3c681de14d7b263214f1572cea56890783daf3dfb7f9fd72e1489f61119e38cce7baae1eac854d22b5afd8bb35fc82f2563c54550006136357a32fb62
7
- data.tar.gz: 8888ee881ba31dea74e698f232dd63c72b420d4c01d1aee5ffd06b231d3361026e49ee87571dfcbcb3d1623a3c404a8e92f374c7850058cc0a9818fb2e9a6552
6
+ metadata.gz: 675a10d8d0cbf41cb96627f736c372c1c8a9fc9793c28e35ffafee7f916c57e0cd7d901be1fda698d42bec82de71fe161bda6fa7ed66a897fcbb379fb687b680
7
+ data.tar.gz: a2d88a8c8966bad864ebc14f150ee950748de0567a60d9db7568d3983de929ea223a105f308528ad13f6189d3f538479bc63c4c72a2fdffcabff48ff879d60e2
@@ -2,7 +2,11 @@
2
2
  language: "ruby"
3
3
  script: "bundle exec rake"
4
4
  rvm:
5
- - 1.9.2
6
5
  - 1.9.3
6
+ - 2.0
7
+ - 2.1
8
+ - 2.2
7
9
  - jruby-19mode
8
- - rbx
10
+ - rbx-2
11
+ notifications:
12
+ irc: "irc.freenode.org#savon"
@@ -1,4 +1,6 @@
1
- ## master
1
+ ## 1.3.0 (2015-03-31)
2
+
3
+ * Formally drop support for ruby 1.8.7
2
4
 
3
5
  ## 1.2.1 (2014-01-31)
4
6
  * Fix: [#2](https://github.com/savonrb/akami/pull/2) Fixes related to WS-Security,
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "https://github.com/savonrb/#{s.name}"
11
11
  s.summary = "Web Service Security"
12
12
  s.description = "Building Web Service Security"
13
+ s.required_ruby_version = '>= 1.9.2'
13
14
 
14
15
  s.rubyforge_project = s.name
15
16
  s.license = "MIT"
@@ -18,7 +19,7 @@ Gem::Specification.new do |s|
18
19
  s.add_dependency "nokogiri"
19
20
 
20
21
  s.add_development_dependency "rake", "~> 10.0"
21
- s.add_development_dependency "rspec", "~> 2.12"
22
+ s.add_development_dependency "rspec", "~> 2.14"
22
23
  s.add_development_dependency "mocha", "~> 0.13"
23
24
  s.add_development_dependency "timecop", "~> 0.5"
24
25
 
@@ -1,5 +1,5 @@
1
1
  module Akami
2
2
 
3
- VERSION = "1.2.2"
3
+ VERSION = "1.3.0"
4
4
 
5
5
  end
@@ -115,7 +115,7 @@ module Akami
115
115
  if digest?
116
116
  token = security_hash :wsse, "UsernameToken",
117
117
  "wsse:Username" => username,
118
- "wsse:Nonce" => Base64.encode64(nonce),
118
+ "wsse:Nonce" => Base64.encode64(nonce).chomp,
119
119
  "wsu:Created" => timestamp,
120
120
  "wsse:Password" => digest_password,
121
121
  :attributes! => { "wsse:Password" => { "Type" => PASSWORD_DIGEST_URI }, "wsse:Nonce" => { "EncodingType" => BASE64_URI } }
@@ -9,16 +9,26 @@ module Akami
9
9
  end
10
10
  end
11
11
 
12
- attr_accessor :cert_file, :private_key_file, :private_key_password
12
+ attr_accessor :cert_file, :cert_string, :private_key_file, :private_key_string, :private_key_password
13
13
 
14
- # Returns an <tt>OpenSSL::X509::Certificate</tt> for the +cert_file+.
14
+ # Returns an <tt>OpenSSL::X509::Certificate</tt> for the +cert_string+ or +cert_file+.
15
15
  def cert
16
- @cert ||= OpenSSL::X509::Certificate.new File.read(cert_file) if cert_file
16
+ @cert ||=
17
+ if cert_string.present?
18
+ OpenSSL::X509::Certificate.new(cert_string)
19
+ elsif cert_file.present?
20
+ OpenSSL::X509::Certificate.new(File.read(cert_file))
21
+ end
17
22
  end
18
23
 
19
- # Returns an <tt>OpenSSL::PKey::RSA</tt> for the +private_key_file+.
24
+ # Returns an <tt>OpenSSL::PKey::RSA</tt> for the +private_key_string+ or +private_key_file+.
20
25
  def private_key
21
- @private_key ||= OpenSSL::PKey::RSA.new(File.read(private_key_file), private_key_password) if private_key_file
26
+ @private_key ||=
27
+ if private_key_string.present?
28
+ OpenSSL::PKey::RSA.new(private_key_string, private_key_password)
29
+ elsif private_key_file.present?
30
+ OpenSSL::PKey::RSA.new(File.read(private_key_file), private_key_password)
31
+ end
22
32
  end
23
33
  end
24
34
  end
@@ -14,7 +14,8 @@ module Akami
14
14
  # Without a document, the document cannot be signed.
15
15
  # Generate the document once, and then set document and recall #to_token
16
16
  def document
17
- @document ? @document.to_s : nil
17
+ return nil if @document.nil?
18
+ @document.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML)
18
19
  end
19
20
 
20
21
  def document=(document)
@@ -1,88 +1,158 @@
1
+ require 'nokogiri'
2
+ require 'openssl'
3
+
1
4
  module Akami
2
5
  class WSSE
3
6
  class InvalidSignature < RuntimeError; end
4
7
 
8
+ # Validating WSSE signed messages.
5
9
  class VerifySignature
6
- include Akami::XPathHelper
7
10
  include Akami::C14nHelper
8
11
 
9
12
  class InvalidDigest < RuntimeError; end
10
13
  class InvalidSignedValue < RuntimeError; end
11
14
 
12
- attr_reader :response_body, :document
15
+ attr_reader :document
13
16
 
14
- def initialize(response_body)
15
- @response_body = response_body
16
- @document = create_document
17
+ def initialize(xml)
18
+ @document = Nokogiri::XML(xml.to_s, &:noblanks)
17
19
  end
18
20
 
19
- def generate_digest(element)
20
- element = element_for_xpath(element) if element.is_a? String
21
- xml = canonicalize(element)
22
- digest(xml).strip
21
+ # Returns XML namespaces that are used internally for document querying.
22
+ def namespaces
23
+ @namespaces ||= {
24
+ wse: Akami::WSSE::WSE_NAMESPACE,
25
+ ds: 'http://www.w3.org/2000/09/xmldsig#',
26
+ wsu: Akami::WSSE::WSU_NAMESPACE,
27
+ }
23
28
  end
24
29
 
25
- def supplied_digest(element)
26
- element = element_for_xpath(element) if element.is_a? String
27
- find_digest_value element.attributes["Id"]
28
- end
29
-
30
- def signature_value
31
- element = element_for_xpath("//Security/Signature/SignatureValue")
32
- element ? element.text : ""
33
- end
30
+ # Allows to replace used XML namespaces if anyone will ever need. +hash+ should be a +Hash+ with symbol keys +:wse+, +:ds+, and +:wsu+.
31
+ attr_writer :namespaces
34
32
 
33
+ # Returns signer's certificate, bundled in signed document
35
34
  def certificate
36
- certificate_value = element_for_xpath("//Security/BinarySecurityToken").text.strip
35
+ certificate_value = document.at_xpath('//wse:Security/wse:BinarySecurityToken', namespaces).text.strip
37
36
  OpenSSL::X509::Certificate.new Base64.decode64(certificate_value)
38
37
  end
39
38
 
39
+ # Validates document signature, returns +true+ on success, +false+ otherwise.
40
40
  def valid?
41
41
  verify
42
42
  rescue InvalidDigest, InvalidSignedValue
43
43
  return false
44
44
  end
45
45
 
46
+ # Validates document signature and digests and raises if anything mismatches.
46
47
  def verify!
47
48
  verify
48
49
  rescue InvalidDigest, InvalidSignedValue => e
49
50
  raise InvalidSignature, e.message
50
51
  end
51
52
 
53
+ # Returns a hash with currently initialized digesters.
54
+ #
55
+ # Will be empty after initialization, and will contain used algorithms after verification.
56
+ #
57
+ # May be used to insert additional digesters, not supported out of the box, for example:
58
+ #
59
+ # digesters['http://www.w3.org/2001/04/xmldsig-more#rsa-sha512'] = OpenSSL::Digest::SHA512.new
60
+
61
+ def digesters
62
+ @digesters
63
+ end
64
+
52
65
  private
53
66
 
54
67
  def verify
55
- xpath(document, "//Security/Signature/SignedInfo/Reference").each do |ref|
56
- element_id = ref.attributes["URI"][1..-1] # strip leading '#'
57
- element = element_for_xpath(%(//*[@wsu:Id="#{element_id}"]))
58
- raise InvalidDigest, "Invalid Digest for #{element_id}" unless supplied_digest(element) == generate_digest(element)
68
+ document.xpath('//wse:Security/ds:Signature/ds:SignedInfo/ds:Reference', namespaces).each do |ref|
69
+ digest_algorithm = ref.at_xpath('//ds:DigestMethod', namespaces)['Algorithm']
70
+ element_id = ref.attributes['URI'].value[1..-1] # strip leading '#'
71
+ element = document.at_xpath(%(//*[@wsu:Id="#{element_id}"]), namespaces)
72
+ unless supplied_digest(element) == generate_digest(element, digest_algorithm)
73
+ raise InvalidDigest, "Invalid Digest for #{element_id}"
74
+ end
59
75
  end
60
76
 
61
77
  data = canonicalize(signed_info)
62
78
  signature = Base64.decode64(signature_value)
79
+ signature_algorithm = document.at_xpath('//wse:Security/ds:Signature/ds:SignedInfo/ds:SignatureMethod', namespaces)['Algorithm']
80
+ signature_digester = digester_for_signature_method(signature_algorithm)
63
81
 
64
- certificate.public_key.verify(OpenSSL::Digest::SHA1.new, signature, data) or raise InvalidSignedValue, "Could not verify the signature value"
82
+ certificate.public_key.verify(signature_digester, signature, data) or raise InvalidSignedValue, "Could not verify the signature value"
65
83
  end
66
84
 
67
- def create_document
68
- Nokogiri::XML response_body
85
+ def signed_info
86
+ document.at_xpath('//wse:Security/ds:Signature/ds:SignedInfo', namespaces)
69
87
  end
70
88
 
71
- def element_for_xpath(xpath)
72
- document.at_xpath xpath
89
+ # Generate digest for a given +element+ (or its XPath) with a given +algorithm+
90
+ def generate_digest(element, algorithm)
91
+ element = document.at_xpath(element, namespaces) if element.is_a? String
92
+ xml = canonicalize(element)
93
+ digest(xml, algorithm).strip
73
94
  end
74
95
 
75
- def signed_info
76
- at_xpath document, "//Security/Signature/SignedInfo"
96
+ def supplied_digest(element)
97
+ element = document.at_xpath(element, namespaces) if element.is_a? String
98
+ find_digest_value element.attributes['Id'].value
99
+ end
100
+
101
+ def signature_value
102
+ element = document.at_xpath('//wse:Security/ds:Signature/ds:SignatureValue', namespaces)
103
+ element ? element.text : ""
77
104
  end
78
105
 
79
106
  def find_digest_value(id)
80
- at_xpath(document, %(//Security/Signature/SignedInfo/Reference[@URI="##{id}"]/DigestValue)).text
107
+ document.at_xpath(%(//wse:Security/ds:Signature/ds:SignedInfo/ds:Reference[@URI="##{id}"]/ds:DigestValue), namespaces).text
81
108
  end
82
109
 
83
- def digest(string)
84
- Base64.encode64 OpenSSL::Digest::SHA1.digest(string)
110
+ # Calculate digest for string with given algorithm URL and Base64 encodes it.
111
+ def digest(string, algorithm)
112
+ Base64.encode64 digester(algorithm).digest(string)
85
113
  end
114
+
115
+ # Returns digester for calculating digest for signature verification
116
+ def digester_for_signature_method(algorithm_url)
117
+ signature_digest_mapping = {
118
+ 'http://www.w3.org/2000/09/xmldsig#rsa-sha1' => 'http://www.w3.org/2000/09/xmldsig#sha1',
119
+ 'http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411' => 'http://www.w3.org/2001/04/xmldsig-more#gostr3411',
120
+ }
121
+ digest_url = signature_digest_mapping[algorithm_url] || algorithm_url
122
+ digester(digest_url)
123
+ end
124
+
125
+ # Constructors for known digest calculating objects
126
+ DIGESTERS = {
127
+ # SHA1
128
+ 'http://www.w3.org/2000/09/xmldsig#sha1' => lambda { OpenSSL::Digest::SHA1.new },
129
+ # SHA 256
130
+ 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256' => lambda { OpenSSL::Digest::SHA256.new },
131
+ # GOST R 34.11-94
132
+ # You need correctly configured gost engine in your system OpenSSL, requires OpenSSL >= 1.0.0
133
+ # see https://github.com/openssl/openssl/blob/master/engines/ccgost/README.gost
134
+ 'http://www.w3.org/2001/04/xmldsig-more#gostr3411' => lambda {
135
+ if defined? JRUBY_VERSION
136
+ OpenSSL::Digest.new('GOST3411')
137
+ else
138
+ OpenSSL::Engine.load
139
+ gost_engine = OpenSSL::Engine.by_id('gost')
140
+ gost_engine.set_default(0xFFFF)
141
+ gost_engine.digest('md_gost94')
142
+ end
143
+ },
144
+ }
145
+
146
+ # Returns instance of +OpenSSL::Digest+ class, initialized, reset, and ready to calculate new hashes.
147
+ def digester(url)
148
+ @digesters ||= {}
149
+ unless @digesters[url]
150
+ DIGESTERS[url] or raise InvalidDigest, "Digest algorithm not supported: #{url}"
151
+ @digesters[url] = DIGESTERS[url].call
152
+ end
153
+ @digesters[url].reset
154
+ end
155
+
86
156
  end
87
157
  end
88
158
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Akami::WSSE::Signature do
4
+
5
+ let(:validator) { Akami::WSSE::VerifySignature.new(xml) }
6
+ let(:xml) { '' }
7
+
8
+ let(:fixtures_path) {
9
+ File.join(Bundler.root, 'spec', 'fixtures', 'akami', 'wsse', 'signature' )
10
+ }
11
+ let(:cert_path) { File.join(fixtures_path, 'cert.pem') }
12
+ let(:password) { 'password' }
13
+
14
+ let(:signature) {
15
+ Akami::WSSE::Signature.new(
16
+ Akami::WSSE::Certs.new(
17
+ cert_file: cert_path,
18
+ private_key_file: cert_path,
19
+ private_key_password: password
20
+ )
21
+ )
22
+ }
23
+
24
+ context 'to_token' do
25
+ let(:xml) { fixture('akami/wsse/signature/unsigned.xml') }
26
+
27
+ it 'should ignore excessive whitespace' do
28
+ signature.document = xml
29
+ expect(signature.document).not_to include(" ")
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Akami::WSSE::VerifySignature do
4
+
5
+ it 'should validate correctly signed XML messages' do
6
+ xml = fixture('akami/wsse/verify_signature/valid.xml')
7
+ validator = described_class.new(xml)
8
+ validator.verify!.should eq(true)
9
+ end
10
+
11
+ it 'should validate correctly signed XML messages with differently named namespaces' do
12
+ xml = fixture('akami/wsse/verify_signature/valid_namespaces.xml')
13
+ validator = described_class.new(xml)
14
+ validator.verify!.should eq(true)
15
+ end
16
+
17
+ it 'should validate correctly signed XML messages with whitespaces' do
18
+ xml = fixture('akami/wsse/verify_signature/valid_whitespaces.xml')
19
+ validator = described_class.new(xml)
20
+ expect(validator.verify!).to equal(true)
21
+ end
22
+
23
+ it 'should not validate signed XML messages with digested content changed' do
24
+ xml = fixture('akami/wsse/verify_signature/invalid_digested_changed.xml')
25
+ validator = described_class.new(xml)
26
+ expect{ validator.verify! }.to raise_error(Akami::WSSE::InvalidSignature)
27
+ end
28
+
29
+ it 'should not validate signed XML messages with digest changed' do
30
+ xml = fixture('akami/wsse/verify_signature/invalid_digest_changed.xml')
31
+ validator = described_class.new(xml)
32
+ expect{ validator.verify! }.to raise_error(Akami::WSSE::InvalidSignature)
33
+ end
34
+
35
+ it 'should not validate signed XML messages with signature changed' do
36
+ xml = fixture('akami/wsse/verify_signature/invalid_signature_changed.xml')
37
+ validator = described_class.new(xml)
38
+ expect{ validator.verify! }.to raise_error(Akami::WSSE::InvalidSignature)
39
+ end
40
+
41
+ # There is no testing for messages signed with GOST as it requires patched Ruby
42
+ # But we can test GOST digest calculation
43
+ it 'should validate correctly signed XML messages with RSA-SHA1 signature and GOST R 34.11-94 digests' do
44
+ xml = fixture('akami/wsse/verify_signature/valid_sha1_gost.xml')
45
+ validator = described_class.new(xml)
46
+ expect(validator.verify!).to equal(true)
47
+ end
48
+
49
+ it 'should validate correctly signed XML messages with SHA256 signature and SHA256 digests' do
50
+ xml = fixture('akami/wsse/verify_signature/valid_sha256.xml')
51
+ validator = described_class.new(xml)
52
+ expect(validator.verify!).to equal(true)
53
+ end
54
+
55
+ end
@@ -6,81 +6,86 @@ describe Akami do
6
6
  let(:wsse) { Akami.wsse }
7
7
 
8
8
  it "contains the namespace for WS Security Secext" do
9
- Akami::WSSE::WSE_NAMESPACE.should ==
9
+ expect(Akami::WSSE::WSE_NAMESPACE).to eq(
10
10
  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
11
+ )
11
12
  end
12
13
 
13
14
  it "contains the namespace for WS Security Utility" do
14
- Akami::WSSE::WSU_NAMESPACE.should ==
15
+ expect(Akami::WSSE::WSU_NAMESPACE).to eq(
15
16
  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
17
+ )
16
18
  end
17
19
 
18
20
  it "contains the namespace for the PasswordText type" do
19
- Akami::WSSE::PASSWORD_TEXT_URI.should ==
21
+ expect(Akami::WSSE::PASSWORD_TEXT_URI).to eq(
20
22
  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
23
+ )
21
24
  end
22
25
 
23
26
  it "contains the namespace for the PasswordDigest type" do
24
- Akami::WSSE::PASSWORD_DIGEST_URI.should ==
27
+ expect(Akami::WSSE::PASSWORD_DIGEST_URI).to eq(
25
28
  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
29
+ )
26
30
  end
27
31
 
28
32
  it "contains the namespace for Base64 Encoding type" do
29
- Akami::WSSE::BASE64_URI.should ==
33
+ expect(Akami::WSSE::BASE64_URI).to eq(
30
34
  "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
35
+ )
31
36
  end
32
37
 
33
38
  describe "#credentials" do
34
39
  it "sets the username" do
35
40
  wsse.credentials "username", "password"
36
- wsse.username.should == "username"
41
+ expect(wsse.username).to eq("username")
37
42
  end
38
43
 
39
44
  it "sets the password" do
40
45
  wsse.credentials "username", "password"
41
- wsse.password.should == "password"
46
+ expect(wsse.password).to eq("password")
42
47
  end
43
48
 
44
49
  it "defaults to set digest to false" do
45
50
  wsse.credentials "username", "password"
46
- wsse.should_not be_digest
51
+ expect(wsse).not_to be_digest
47
52
  end
48
53
 
49
54
  it "sets digest to true if specified" do
50
55
  wsse.credentials "username", "password", :digest
51
- wsse.should be_digest
56
+ expect(wsse).to be_digest
52
57
  end
53
58
  end
54
59
 
55
60
  describe "#username" do
56
61
  it "sets the username" do
57
62
  wsse.username = "username"
58
- wsse.username.should == "username"
63
+ expect(wsse.username).to eq("username")
59
64
  end
60
65
  end
61
66
 
62
67
  describe "#password" do
63
68
  it "sets the password" do
64
69
  wsse.password = "password"
65
- wsse.password.should == "password"
70
+ expect(wsse.password).to eq("password")
66
71
  end
67
72
  end
68
73
 
69
74
  describe "#digest" do
70
75
  it "defaults to false" do
71
- wsse.should_not be_digest
76
+ expect(wsse).not_to be_digest
72
77
  end
73
78
 
74
79
  it "specifies whether to use digest auth" do
75
80
  wsse.digest = true
76
- wsse.should be_digest
81
+ expect(wsse).to be_digest
77
82
  end
78
83
  end
79
84
 
80
85
  describe "#to_xml" do
81
86
  context "with no credentials" do
82
87
  it "returns an empty String" do
83
- wsse.to_xml.should == ""
88
+ expect(wsse.to_xml).to eq("")
84
89
  end
85
90
  end
86
91
 
@@ -88,7 +93,7 @@ describe Akami do
88
93
  before { wsse.username = "username" }
89
94
 
90
95
  it "returns an empty String" do
91
- wsse.to_xml.should == ""
96
+ expect(wsse.to_xml).to eq("")
92
97
  end
93
98
  end
94
99
 
@@ -96,7 +101,7 @@ describe Akami do
96
101
  before { wsse.password = "password" }
97
102
 
98
103
  it "returns an empty String" do
99
- wsse.to_xml.should == ""
104
+ expect(wsse.to_xml).to eq("")
100
105
  end
101
106
  end
102
107
 
@@ -105,36 +110,36 @@ describe Akami do
105
110
 
106
111
  it "contains a wsse:Security tag" do
107
112
  namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
108
- wsse.to_xml.should include("<wsse:Security xmlns:wsse=\"#{namespace}\">")
113
+ expect(wsse.to_xml).to include("<wsse:Security xmlns:wsse=\"#{namespace}\">")
109
114
  end
110
115
 
111
116
  it "contains a wsu:Id attribute" do
112
- wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-1"')
117
+ expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-1"')
113
118
  end
114
119
 
115
120
  it "increments the wsu:Id attribute count" do
116
- wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-1"')
117
- wsse.to_xml.should include('<wsse:UsernameToken wsu:Id="UsernameToken-2"')
121
+ expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-1"')
122
+ expect(wsse.to_xml).to include('<wsse:UsernameToken wsu:Id="UsernameToken-2"')
118
123
  end
119
124
 
120
125
  it "contains the WSE and WSU namespaces" do
121
- wsse.to_xml.should include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE)
126
+ expect(wsse.to_xml).to include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE)
122
127
  end
123
128
 
124
129
  it "contains the username and password" do
125
- wsse.to_xml.should include("username", "password")
130
+ expect(wsse.to_xml).to include("username", "password")
126
131
  end
127
132
 
128
133
  it "does not contain a wsse:Nonce tag" do
129
- wsse.to_xml.should_not match(/<wsse:Nonce.*>.*<\/wsse:Nonce>/)
134
+ expect(wsse.to_xml).not_to match(/<wsse:Nonce.*>.*<\/wsse:Nonce>/)
130
135
  end
131
136
 
132
137
  it "does not contain a wsu:Created tag" do
133
- wsse.to_xml.should_not match(/<wsu:Created>.*<\/wsu:Created>/)
138
+ expect(wsse.to_xml).not_to match(/<wsu:Created>.*<\/wsu:Created>/)
134
139
  end
135
140
 
136
141
  it "contains the PasswordText type attribute" do
137
- wsse.to_xml.should include(Akami::WSSE::PASSWORD_TEXT_URI)
142
+ expect(wsse.to_xml).to include(Akami::WSSE::PASSWORD_TEXT_URI)
138
143
  end
139
144
  end
140
145
 
@@ -142,30 +147,30 @@ describe Akami do
142
147
  before { wsse.credentials "username", "password", :digest }
143
148
 
144
149
  it "contains the WSE and WSU namespaces" do
145
- wsse.to_xml.should include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE)
150
+ expect(wsse.to_xml).to include(Akami::WSSE::WSE_NAMESPACE, Akami::WSSE::WSU_NAMESPACE)
146
151
  end
147
152
 
148
153
  it "contains the username" do
149
- wsse.to_xml.should include("username")
154
+ expect(wsse.to_xml).to include("username")
150
155
  end
151
156
 
152
157
  it "does not contain the (original) password" do
153
- wsse.to_xml.should_not include("password")
158
+ expect(wsse.to_xml).not_to include("password")
154
159
  end
155
160
 
156
161
  it "contains the Nonce base64 type attribute" do
157
- wsse.to_xml.should include(Akami::WSSE::BASE64_URI)
162
+ expect(wsse.to_xml).to include(Akami::WSSE::BASE64_URI)
158
163
  end
159
164
 
160
165
  it "contains a wsu:Created tag" do
161
166
  created_at = Time.now
162
167
  Timecop.freeze created_at do
163
- wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
168
+ expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
164
169
  end
165
170
  end
166
171
 
167
172
  it "contains the PasswordDigest type attribute" do
168
- wsse.to_xml.should include(Akami::WSSE::PASSWORD_DIGEST_URI)
173
+ expect(wsse.to_xml).to include(Akami::WSSE::PASSWORD_DIGEST_URI)
169
174
  end
170
175
 
171
176
  it "should reset the nonce every time" do
@@ -174,7 +179,7 @@ describe Akami do
174
179
  nonce_regexp = /<wsse:Nonce.*>([^<]+)<\/wsse:Nonce>/
175
180
  nonce_first = Base64.decode64(nonce_regexp.match(wsse.to_xml)[1])
176
181
  nonce_second = Base64.decode64(nonce_regexp.match(wsse.to_xml)[1])
177
- nonce_first.should_not == nonce_second
182
+ expect(nonce_first).not_to eq(nonce_second)
178
183
  end
179
184
  end
180
185
 
@@ -184,7 +189,7 @@ describe Akami do
184
189
  nonce = Base64.decode64(xml_header.xpath('//Nonce').first.content)
185
190
  created_at = xml_header.xpath('//Created').first.content
186
191
  password_hash = Base64.decode64(xml_header.xpath('//Password').first.content)
187
- password_hash.should == Digest::SHA1.digest((nonce + created_at + "password"))
192
+ expect(password_hash).to eq(Digest::SHA1.digest((nonce + created_at + "password")))
188
193
  end
189
194
  end
190
195
 
@@ -192,21 +197,21 @@ describe Akami do
192
197
  before { wsse.timestamp = true }
193
198
 
194
199
  it "contains a wsse:Timestamp node" do
195
- wsse.to_xml.should include('<wsu:Timestamp wsu:Id="Timestamp-1" ' +
200
+ expect(wsse.to_xml).to include('<wsu:Timestamp wsu:Id="Timestamp-1" ' +
196
201
  'xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">')
197
202
  end
198
203
 
199
204
  it "contains a wsu:Created node defaulting to Time.now" do
200
205
  created_at = Time.now
201
206
  Timecop.freeze created_at do
202
- wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
207
+ expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
203
208
  end
204
209
  end
205
210
 
206
211
  it "contains a wsu:Expires node defaulting to Time.now + 60 seconds" do
207
212
  created_at = Time.now
208
213
  Timecop.freeze created_at do
209
- wsse.to_xml.should include("<wsu:Expires>#{(created_at + 60).utc.xmlschema}</wsu:Expires>")
214
+ expect(wsse.to_xml).to include("<wsu:Expires>#{(created_at + 60).utc.xmlschema}</wsu:Expires>")
210
215
  end
211
216
  end
212
217
  end
@@ -215,11 +220,11 @@ describe Akami do
215
220
  before { wsse.created_at = Time.now + 86400 }
216
221
 
217
222
  it "contains a wsu:Created node with the given time" do
218
- wsse.to_xml.should include("<wsu:Created>#{wsse.created_at.utc.xmlschema}</wsu:Created>")
223
+ expect(wsse.to_xml).to include("<wsu:Created>#{wsse.created_at.utc.xmlschema}</wsu:Created>")
219
224
  end
220
225
 
221
226
  it "contains a wsu:Expires node set to #created_at + 60 seconds" do
222
- wsse.to_xml.should include("<wsu:Expires>#{(wsse.created_at + 60).utc.xmlschema}</wsu:Expires>")
227
+ expect(wsse.to_xml).to include("<wsu:Expires>#{(wsse.created_at + 60).utc.xmlschema}</wsu:Expires>")
223
228
  end
224
229
  end
225
230
 
@@ -229,12 +234,12 @@ describe Akami do
229
234
  it "contains a wsu:Created node defaulting to Time.now" do
230
235
  created_at = Time.now
231
236
  Timecop.freeze created_at do
232
- wsse.to_xml.should include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
237
+ expect(wsse.to_xml).to include("<wsu:Created>#{created_at.utc.xmlschema}</wsu:Created>")
233
238
  end
234
239
  end
235
240
 
236
241
  it "contains a wsu:Expires node set to the given time" do
237
- wsse.to_xml.should include("<wsu:Expires>#{wsse.expires_at.utc.xmlschema}</wsu:Expires>")
242
+ expect(wsse.to_xml).to include("<wsu:Expires>#{wsse.expires_at.utc.xmlschema}</wsu:Expires>")
238
243
  end
239
244
  end
240
245
 
@@ -245,15 +250,15 @@ describe Akami do
245
250
  end
246
251
 
247
252
  it "contains a wsu:Created node" do
248
- wsse.to_xml.should include("<wsu:Created>")
253
+ expect(wsse.to_xml).to include("<wsu:Created>")
249
254
  end
250
255
 
251
256
  it "contains a wsu:Expires node" do
252
- wsse.to_xml.should include("<wsu:Expires>")
257
+ expect(wsse.to_xml).to include("<wsu:Expires>")
253
258
  end
254
259
 
255
260
  it "contains the username and password" do
256
- wsse.to_xml.should include("username", "password")
261
+ expect(wsse.to_xml).to include("username", "password")
257
262
  end
258
263
  end
259
264
  end
@@ -0,0 +1,37 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDIjCCAougAwIBAgIJAI53JnRgJIJwMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
3
+ BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
4
+ c2NvMQ4wDAYDVQQKEwVTYXZvbjEOMAwGA1UECxMFU2F2b24xDjAMBgNVBAMTBVNh
5
+ dm9uMB4XDTE0MTIwMjAwMTMwMloXDTI0MTEyOTAwMTMwMlowajELMAkGA1UEBhMC
6
+ VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28x
7
+ DjAMBgNVBAoTBVNhdm9uMQ4wDAYDVQQLEwVTYXZvbjEOMAwGA1UEAxMFU2F2b24w
8
+ gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM56hKF3+4SSUu8msb5HWMvp322y
9
+ QL+luJ+Lt/r/ib7EPeb4UU68b+Wf3xIa3N1+w8tDQghCR4YuEIILKH/UGC785Old
10
+ VJfikD4kxiwF4jB0RgdRK/JEG/UthHKqJID+oyijW4ws4MgZ/bWMhSbSVRioqcwe
11
+ 2JElg/m2TemKJkXDAgMBAAGjgc8wgcwwHQYDVR0OBBYEFKSd+UicrRDQS2NeLSEA
12
+ Zpipjk8EMIGcBgNVHSMEgZQwgZGAFKSd+UicrRDQS2NeLSEAZpipjk8EoW6kbDBq
13
+ MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu
14
+ IEZyYW5jaXNjbzEOMAwGA1UEChMFU2F2b24xDjAMBgNVBAsTBVNhdm9uMQ4wDAYD
15
+ VQQDEwVTYXZvboIJAI53JnRgJIJwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF
16
+ BQADgYEAWI27+cDx3U53zaJROXKfQutqUZzZz9B0NzQ0vlN2h5UbACGbXH9C1wLz
17
+ MBvNjgEiK+/jHSadSDgfvADv+2hCsFw8eNgbisWiV5yvDyTqttg3cSJHz8jRDeA+
18
+ jnvaC9Y//AoRr/WGKKU3FY40J7pQKcQNczGUzCS+ag0IO64agTs=
19
+ -----END CERTIFICATE-----
20
+ -----BEGIN RSA PRIVATE KEY-----
21
+ Proc-Type: 4,ENCRYPTED
22
+ DEK-Info: DES-EDE3-CBC,A0BF079E41C9A4C1
23
+
24
+ rEO5mWOWbnr8uyjtfIRwW9wRo2/y1wMON2c605BkgaNeAKH/++1UC9qEhNtHfE2Q
25
+ omQkXiHfV6yt3l3dWPcnA9ToT9PRNLyoRMMC+Ds5EuEk4ypihQ8SS2xt3wqCRkwm
26
+ 3/AyrRZXUnBTVzZ9D35lz1HCFfJ61UpOMN9XOZy4yUqDZVG/ybMhXilfNKgTr8xJ
27
+ StTb7ruwV/8xTiEgmcxGKJbOcDKqwsd/mW3VbDN6zOqYC0TlFc/eiCbJxMd35l6a
28
+ oRfHWHbabumcfZplqoDcOwYpRb8ZiDbu74RrDogKnpH7nnJrp8jSYueCiXGDWGFG
29
+ ZXB6f2FhsbrLEM87L8cxJO6Hk6+c39qgiP2aRICeKjUNKPOfSiPr4yP4/g3tFY2z
30
+ sI9xur3nAXoqxXBrEkEdvXiH35UfJpqOTxbAN+Ozxnj1QeLWDDE8nkMW/XRRxdCk
31
+ jeUwR5PS3sM2S/fIn7rThQSKRMxznK//cEUsMwz514HekxnKyj8rZUETcFFySxmz
32
+ lmOzDOaPNejDOgNSrlT+IDqE9YlMxLObv5l960QOjk0qBaO8e33HkgfBqENzq7Uv
33
+ Wrj3FyBlNz4vfhCZHBY0+rSgdZHM64DV0HybE7yc+mMUwrV7ish1bGb/Bek/4JF+
34
+ lrpRuxTEQFGNTGFYa0C5zDpz9UtiSUs2X4EX74GfxCUmn7kNND+4OVrndZiEONPz
35
+ /6QffS7YG1UtahDpDzI1wOCYD9Iwg/HnmTWMcXj2Yw7jRvlG0sArw/5dNJkrmuJY
36
+ 6PvFoEeZSF4qrUCDlw/BUJMaGDlhSCyTWulZZU+wWuJRTWCiDxYO1g==
37
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="https://api.example.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://api.example.com/echo</wsa:Action><wsa:To>https://api.example.com</wsa:To><wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:52d12080-5bec-0132-62fb-38f6b11526bf</wsa:MessageID></env:Header><env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Body-69182b6fd3cdbaa69e00e0bca6c58f6aee1e0c27"><tns:echo>Example</tns:echo></env:Body></env:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>8yHW2c0jdon+CADkxk47/gLo0ps=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>eRsb4CWXD17hl5exQvaZYDnOQOM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>1aznRVYGR81veFFG2lNU9WjUhDs=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>KXKU6ZFziN415Hd2K6WevzUihYs=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>YrKqrE99N7hNGYEvrhifL/LaxKQ=</DigestValue></Reference><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/2000/09/xmldsig#sha1"/><DigestValue>VevrJZBe3aVif18GuHIrSZz5my8=</DigestValue></Reference></SignedInfo><SignatureValue>NEJTWOxr2IdWOyV+b1XjRU1Koaa0OYDbz0MqErcqjEgLt3rgK2YyZpg2yMBB++YmlwhS2Gm/Iqnyv6U909hvF4Hg+9/kw/FiwqhavcW+/N9HZKo0vGww/rU4qcKrNdU/lETQhxfk5DpKAoAUWV6yGxnbP8GzTXWGtP4sfLlcFjfOkTnePEM7QLjJLk9l2YkvbmyaRClj3psYrh0Fo1G+LWZ7W8UpaPzoo8e+s2EkKDAbchWoQJp2vEIhLnRRWDMuweRpsURigjbIkJCKnawmZ8SG1nA68nYa9jTh6824XVepxbkvtvNzEFC6dmZAjwAWhADf1+7lpqUyml/wZyHWRw==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>8yHW2c0jdon+cADkxk47/gLo0ps=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>eRsb4CWXD17hl5exQvaZYDnOQOM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>1aznRVYGR81veFFG2lNU9WjUhDs=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>KXKU6ZFziN415Hd2K6WevzUihYs=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>YrKqrE99N7hNGYEvrhifL/LaxKQ=</DigestValue></Reference><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/2000/09/xmldsig#sha1"/><DigestValue>VevrJZBe3aVif18GuHIrSZz5my8=</DigestValue></Reference></SignedInfo><SignatureValue>NEJTWOxr2IdWOyV+b1XjRU1Koaa0OYDbz0MqErcqjEgLt3rgK2YyZpg2yMBB++YmlwhS2Gm/Iqnyv6U909hvF4Hg+9/kw/FiwqhavcW+/N9HZKo0vGww/rU4qcKrNdU/lETQhxfk5DpKAoAUWV6yGxnbP8GzTXWGtP4sfLlcFjfOkTnePEM7QLjJLk9l2YkvbmyaRClj3psYrh0Fo1G+LWZ7W8UpaPzoo8e+s2EkKDAbchWoQJp2vEIhLnRRWDMuweRpsURigjbIkJCKnawmZ8SG1nA68nYa9jTh6824XVepxbkvtvNzEFC6dmZAjwAWhADf1+7lpqUyml/wZyHWRw==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>fake_message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header unexpected="unexpected"><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>8yHW2c0jdon+cADkxk47/gLo0ps=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>eRsb4CWXD17hl5exQvaZYDnOQOM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>1aznRVYGR81veFFG2lNU9WjUhDs=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>KXKU6ZFziN415Hd2K6WevzUihYs=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>YrKqrE99N7hNGYEvrhifL/LaxKQ=</DigestValue></Reference><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/2000/09/xmldsig#sha1"/><DigestValue>VevrJZBe3aVif18GuHIrSZz5my8=</DigestValue></Reference></SignedInfo><SignatureValue>NYETWOxr2IdWOyV+b1XjRU1Koaa0OYDbz0MqErcqjEgLt3rgK2YyZpg2yMBB++YmlwhS2Gm/Iqnyv6U909hvF4Hg+9/kw/FiwqhavcW+/N9HZKo0vGww/rU4qcKrNdU/lETQhxfk5DpKAoAUWV6yGxnbP8GzTXWGtP4sfLlcFjfOkTnePEM7QLjJLk9l2YkvbmyaRClj3psYrh0Fo1G+LWZ7W8UpaPzoo8e+s2EkKDAbchWoQJp2vEIhLnRRWDMuweRpsURigjbIkJCKnawmZ8SG1nA68nYa9jTh6824XVepxbkvtvNzEFC6dmZAjwAWhADf1+7lpqUyml/wZyHWRw==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>8yHW2c0jdon+cADkxk47/gLo0ps=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>eRsb4CWXD17hl5exQvaZYDnOQOM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>1aznRVYGR81veFFG2lNU9WjUhDs=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>KXKU6ZFziN415Hd2K6WevzUihYs=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>YrKqrE99N7hNGYEvrhifL/LaxKQ=</DigestValue></Reference><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/2000/09/xmldsig#sha1"/><DigestValue>VevrJZBe3aVif18GuHIrSZz5my8=</DigestValue></Reference></SignedInfo><SignatureValue>NEJTWOxr2IdWOyV+b1XjRU1Koaa0OYDbz0MqErcqjEgLt3rgK2YyZpg2yMBB++YmlwhS2Gm/Iqnyv6U909hvF4Hg+9/kw/FiwqhavcW+/N9HZKo0vGww/rU4qcKrNdU/lETQhxfk5DpKAoAUWV6yGxnbP8GzTXWGtP4sfLlcFjfOkTnePEM7QLjJLk9l2YkvbmyaRClj3psYrh0Fo1G+LWZ7W8UpaPzoo8e+s2EkKDAbchWoQJp2vEIhLnRRWDMuweRpsURigjbIkJCKnawmZ8SG1nA68nYa9jTh6824XVepxbkvtvNzEFC6dmZAjwAWhADf1+7lpqUyml/wZyHWRw==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bzzz:Envelope xmlns:bzzz="http://www.w3.org/2003/05/soap-envelope" xmlns:argh="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:blam="http://www.w3.org/2005/08/addressing"><bzzz:Header><pfff:Security xmlns:pfff="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <pfff: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" argh:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</pfff: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_32e8273d0122bb59bb8369e2cd2c3bc4d9f0fd94"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>/qQ8ucFN9UNj/PeYzpqdBaqfbDE=</DigestValue></Reference><Reference URI="#_ae66d576c72c371b63c5cb64f506a7cfbb6523b1"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>zwhy5nIdDYQw+PAtp5xJF37AwKY=</DigestValue></Reference><Reference URI="#_1f38c96249928ef39807ddc3ae7810691e080b3d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>0ka0+fILJ/K0l+QquJ7oGI5BZ/g=</DigestValue></Reference><Reference URI="#_10cdeece6969bac5d9e6ac8d7d40df9c604781a4"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>JukA7+7mBcqtplGntFoHJ+Fk+jQ=</DigestValue></Reference><Reference URI="#_35c546657feb5dc1cf4474488f7b5d5a991f0604"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>fCQv9hvbeyNBGBrqbJ/A166hSB8=</DigestValue></Reference><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/2000/09/xmldsig#sha1"/><DigestValue>5uVUuwPoZPnXoWjo5czBnYIywcA=</DigestValue></Reference></SignedInfo><SignatureValue>BXSWTruDmrWJYwmqqkMDUquD+Q39mOLJ2d2XZ31o/jU0jdaWg4fGwTnAYsIELbDdLBbFj5R9gsMSzw+nprglOtuMyheYuO4EZbwJijeR2n5hoaYAqQdjA4n8tFXiKo+puiKvAsWUDmVqVqSLOUtKCTCxL+NjJavgUjVKwmK3dRgMKcH4RZHTM/qgMT42N7DvSOLbuBbW/hblz74pcc86vDMrMOLrC3z7F18vOFTUpoScZuFf14wes6G+FoS7un7EvLV4Yvjq15VUh7Tczv2qzzkWfUY0So+SujGo+JivULYjJ9UJB+sL6SOrazgYNLXyz1eHHcfraUKHKJVOp4naqg==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></pfff:Security><blam:Action argh:Id="_32e8273d0122bb59bb8369e2cd2c3bc4d9f0fd94">SomeAction</blam:Action><blam:To argh:Id="_ae66d576c72c371b63c5cb64f506a7cfbb6523b1">https://strict.endpoint/path</blam:To><blam:ReplyTo argh:Id="_1f38c96249928ef39807ddc3ae7810691e080b3d"><blam:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</blam:Address></blam:ReplyTo><blam:MessageID argh:Id="_10cdeece6969bac5d9e6ac8d7d40df9c604781a4">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</blam:MessageID></bzzz:Header><bzzz:Body argh:Id="_35c546657feb5dc1cf4474488f7b5d5a991f0604"><ws:messageCode>code</ws:messageCode><!-- Comments should be ignored during canonicalization --><ws:message>message</ws:message></bzzz:Body></bzzz:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>Ua/7KXhpaT9/zNLttYl7kWc6zxrssuvI9FopvNyl/hs=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>0tk2wqp+ybAP16lhi/7Rrvl3B7+/sOLDmX1jev5ZMdM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>WI8rWnflY+PhigG807yZijyET1K8iBLMdX4KOgWoEjU=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>rvdJaIekkEvD7QImJX7nMevmVQN5B3xW5ZExpyoMdN0=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>3OkHjVwY6I/pj8hKhOzKfPOdBjAFcjCzM6IsRJpbQEU=</DigestValue></Reference><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#gostr3411"/><DigestValue>zTmupwEL0lMuPyQlc9qx9+R+SOuIA8zwAqOA0qnXI1g=</DigestValue></Reference></SignedInfo><SignatureValue>TFqPZHrnQuN8QdquaMSG4uKkijaXmsNa1bikQ5z5JTrfGsOHaAZc/+a/jIo5Gd+m7eF1O22rtk8lm1MPmDaRXBc71uQ5yJ+qefCShfYua/gb9y24Cowoh6ONf+WymVJ1fi/H2DjmZ1T1lRq3KoqTlv7tk34t1Ta2hjFv0buBO039woXfNflbFNsfvzlTRgMeZiDC5tMGe7tmlAdll3eD/R1lGCMgRHY6KraSeksWwNVPewDyqc26nv7/R6a4VJ5E7UvDAgSi/pvy37QROiFSt59ONSM1PPaGE18U0A6Q6kH4o6JM6+bqa5jKCThLqf3yyDRKha5Co+A7s/OerJuA0A==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing"><soap:Header><oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
3
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis: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="#_779bc0e70903ff79e62739956a11c7e3584a9012"><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>5kMYzrEfrLHK1wquUdWVF9ZxWLWh1p3AUi55JEcEpwA=</DigestValue></Reference><Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367"><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>kXFE39LW1LZapv8qvvwDI1aAYGvpIyJJt5tfwFHpWLM=</DigestValue></Reference><Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><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>bd5OjPsMDJpwQV1Y3F4fFd3aAdV73cBYkpqu/R/ywPs=</DigestValue></Reference><Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d"><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>EsMzDJn7KGXHPwFqTGiaa8E17Wp67tFomVdODtNmKQ4=</DigestValue></Reference><Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7"><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>5gEEiIwYC1zy99DExX+YRXD1Sv8+xVgGPeyDQjMPddU=</DigestValue></Reference><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>U+JTJP1qMZnzGV7bhlQ7y4D/aeYO2ajghskz4mjFNwI=</DigestValue></Reference></SignedInfo><SignatureValue>Fh+YPbR+D1DQcEvdlYn2krKGI445VKRW75mNtIm/n10k0QoAwL+BQ49cnc81UTzZBB1bs22Y6wDGFYwLXMhGa3YioGoyo0IqnCacIDuaNn1OjUVWGDheEl8wTvKIHPDMEhkb6XFLXokLjv/IXdoNq7g7sbhoPd8Qcx8CKYU3aDq1oyiCrtPbowDf4YEBsKxMkZbR4jXzjUmhNI3A82bzTweQLrkxgB/DmtyPHLXF/jitdzKqpKM/K7+4BVWuuKcOFIKYcN3gn4lTXPCVXfCiwhVhIogW+mmC5mjmglKP80hSUBn5csKLbFB8pHtBDcfO9PPV1NoaUtgOwdWGEKqI3w==</SignatureValue><KeyInfo><o:SecurityTokenReference><o: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"/></o:SecurityTokenReference></KeyInfo></Signature></oasis:Security><wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action><wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To><wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID></soap:Header><soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7"><messageCode>code</messageCode><!-- Comments should be ignored during canonicalization --><message>message</message></soap:Body></soap:Envelope>
@@ -0,0 +1,75 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing">
3
+ <soap:Header>
4
+ <oasis:Security xmlns:oasis="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
5
+ <oasis: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" wsu:Id="uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">MIIEZTCCA02gAwIBAgIJALaQmjuYuxpuMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAldXMRIwEAYDVQQIEwlXb3JsZHdpZGUxETAPBgNVBAcTCFhNTCBjaXR5MREwDwYDVQQKEwhTYXZvbi5yYjEhMB8GA1UECxMYQWthbWkgdGVzdGluZyBkZXBhcnRtZW50MRIwEAYDVQQDEwlBa2FtaSBHZW0wHhcNMTQwNjEwMDg1NjEzWhcNMjQwNjA3MDg1NjEzWjB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjKxq8WnYOT7ymrSNmN95NFMXhLxdumQz0QniRURVQ1P2sOwxOw9mlFnMsdGwsTYUJ9TwwBvA82UAaHEp/mMlHVc0oIKBzMWXj3qK3paRpcooh9hVSGlnqGep+/mzpP9SgPeJRXUgewnnXYsdPkV3k+EFLP/ZwGKOu3lTf4eTNm+TfnW4jHQYg2DpXHXtfV/H2mlDl/p/oUSoUnD3rWrF8IDPTSpy/30KtiY9ijy4RhllbSxM5Y230rpvlty1qqlNI/g34thL15nFaU/aIWQ/KwiCqthldd3m92S9gQ+iY4YtJkxAFsVAWT8gF32pmCKeH5IMmihZqlno6pUG0pIHwIDAQABo4HlMIHiMB0GA1UdDgQWBBQxpPv3f9MSv1y+BoR07lNRWi78ODCBsgYDVR0jBIGqMIGngBQxpPv3f9MSv1y+BoR07lNRWi78OKGBg6SBgDB+MQswCQYDVQQGEwJXVzESMBAGA1UECBMJV29ybGR3aWRlMREwDwYDVQQHEwhYTUwgY2l0eTERMA8GA1UEChMIU2F2b24ucmIxITAfBgNVBAsTGEFrYW1pIHRlc3RpbmcgZGVwYXJ0bWVudDESMBAGA1UEAxMJQWthbWkgR2VtggkAtpCaO5i7Gm4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZphue2C31+5SpoZiIQav3xtwfIt+PRtK0ZN0w2ZxR1LmbWS9jX4elvwE5B5Yyu4UmjyvXGA6j9s5PGedXMabpi9GWsaEfHRKsF/TrH0KauhPrAWTuc1UxMFM5zPc6LeWJ8ofaVIgg4S4UFnf/fnkc/BtMMDCIyb62HkRmV+FqOOD+LlkcT701VKty68ubCg9xKaLg7L4zZBPYJrt0iLY2LWKh4ABinxfA1DFEVw9PVIEQKopwkO1A10rrKbfZqALQg5egVQypfVJ7E0Nkq5VeT3d3u3ybnZw/ZprQR0uPm+Ap492itLMMUX3iyJkxteAfT+03ztKWEsmGMbZpzG7VA==</oasis:BinarySecurityToken>
6
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
7
+ <SignedInfo>
8
+ <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
9
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
10
+ <Reference URI="#_779bc0e70903ff79e62739956a11c7e3584a9012">
11
+ <Transforms>
12
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
13
+ </Transforms>
14
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
15
+ <DigestValue>8yHW2c0jdon+cADkxk47/gLo0ps=</DigestValue>
16
+ </Reference>
17
+ <Reference URI="#_747c942c134dd275275707f2cf63e8de7881d367">
18
+ <Transforms>
19
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
20
+ </Transforms>
21
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
22
+ <DigestValue>eRsb4CWXD17hl5exQvaZYDnOQOM=</DigestValue>
23
+ </Reference>
24
+ <Reference URI="#_2dc10b4daca971ef4ddb482338ebd7ba30112e2a">
25
+ <Transforms>
26
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
27
+ </Transforms>
28
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
29
+ <DigestValue>1aznRVYGR81veFFG2lNU9WjUhDs=</DigestValue>
30
+ </Reference>
31
+ <Reference URI="#_1f546393fdadf04fd9afcf172658c78cfd1b735d">
32
+ <Transforms>
33
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
34
+ </Transforms>
35
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
36
+ <DigestValue>KXKU6ZFziN415Hd2K6WevzUihYs=</DigestValue>
37
+ </Reference>
38
+ <Reference URI="#_724554b8920321ee32020dac076be1f58d92d3c7">
39
+ <Transforms>
40
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
41
+ </Transforms>
42
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
43
+ <DigestValue>YrKqrE99N7hNGYEvrhifL/LaxKQ=</DigestValue>
44
+ </Reference>
45
+ <Reference URI="#uuid-639b8970-7644-4f9e-9bc4-9c2e367808fc-1">
46
+ <Transforms>
47
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
48
+ </Transforms>
49
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
50
+ <DigestValue>VevrJZBe3aVif18GuHIrSZz5my8=</DigestValue>
51
+ </Reference>
52
+ </SignedInfo>
53
+ <SignatureValue>
54
+ NEJTWOxr2IdWOyV+b1XjRU1Koaa0OYDbz0MqErcqjEgLt3rgK2YyZpg2yMBB++YmlwhS2Gm/Iqnyv6U909hvF4Hg+9/kw/FiwqhavcW+/N9HZKo0vGww/rU4qcKrNdU/lETQhxfk5DpKAoAUWV6yGxnbP8GzTXWGtP4sfLlcFjfOkTnePEM7QLjJLk9l2YkvbmyaRClj3psYrh0Fo1G+LWZ7W8UpaPzoo8e+s2EkKDAbchWoQJp2vEIhLnRRWDMuweRpsURigjbIkJCKnawmZ8SG1nA68nYa9jTh6824XVepxbkvtvNzEFC6dmZAjwAWhADf1+7lpqUyml/wZyHWRw==
55
+ </SignatureValue>
56
+ <KeyInfo>
57
+ <o:SecurityTokenReference>
58
+ <o: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"/>
59
+ </o:SecurityTokenReference>
60
+ </KeyInfo>
61
+ </Signature>
62
+ </oasis:Security>
63
+ <wsa:Action wsu:Id="_779bc0e70903ff79e62739956a11c7e3584a9012">SomeAction</wsa:Action>
64
+ <wsa:To wsu:Id="_747c942c134dd275275707f2cf63e8de7881d367">https://strict.endpoint/path</wsa:To>
65
+ <wsa:ReplyTo wsu:Id="_2dc10b4daca971ef4ddb482338ebd7ba30112e2a">
66
+ <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
67
+ </wsa:ReplyTo>
68
+ <wsa:MessageID wsu:Id="_1f546393fdadf04fd9afcf172658c78cfd1b735d">SRV-0f687bbd-62503e99-926a4d3c-5dde443c-dbf6d68f</wsa:MessageID>
69
+ </soap:Header>
70
+ <soap:Body wsu:Id="_724554b8920321ee32020dac076be1f58d92d3c7">
71
+ <messageCode>code</messageCode>
72
+ <!-- Comments should be ignored during canonicalization -->
73
+ <message>message</message>
74
+ </soap:Body>
75
+ </soap:Envelope>
@@ -1,2 +1,6 @@
1
1
  require "bundler"
2
2
  Bundler.require :default, :development
3
+
4
+ def fixture(local_path)
5
+ File.read(File.join(File.dirname(__FILE__), 'fixtures', local_path))
6
+ end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Harrington
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-18 00:00:00.000000000 Z
11
+ date: 2015-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gyoku
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.12'
61
+ version: '2.14'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.12'
68
+ version: '2.14'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.13'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.13'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: timecop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0.5'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.5'
97
97
  description: Building Web Service Security
@@ -101,9 +101,9 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
105
- - .rspec
106
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
107
  - CHANGELOG.md
108
108
  - Gemfile
109
109
  - LICENSE
@@ -119,7 +119,19 @@ files:
119
119
  - lib/akami/wsse/signature.rb
120
120
  - lib/akami/wsse/verify_signature.rb
121
121
  - lib/akami/xpath_helper.rb
122
+ - spec/akami/wsse/signature_spec.rb
123
+ - spec/akami/wsse/verify_signature_spec.rb
122
124
  - spec/akami/wsse_spec.rb
125
+ - spec/fixtures/akami/wsse/signature/cert.pem
126
+ - spec/fixtures/akami/wsse/signature/unsigned.xml
127
+ - spec/fixtures/akami/wsse/verify_signature/invalid_digest_changed.xml
128
+ - spec/fixtures/akami/wsse/verify_signature/invalid_digested_changed.xml
129
+ - spec/fixtures/akami/wsse/verify_signature/invalid_signature_changed.xml
130
+ - spec/fixtures/akami/wsse/verify_signature/valid.xml
131
+ - spec/fixtures/akami/wsse/verify_signature/valid_namespaces.xml
132
+ - spec/fixtures/akami/wsse/verify_signature/valid_sha1_gost.xml
133
+ - spec/fixtures/akami/wsse/verify_signature/valid_sha256.xml
134
+ - spec/fixtures/akami/wsse/verify_signature/valid_whitespaces.xml
123
135
  - spec/spec_helper.rb
124
136
  homepage: https://github.com/savonrb/akami
125
137
  licenses:
@@ -131,20 +143,32 @@ require_paths:
131
143
  - lib
132
144
  required_ruby_version: !ruby/object:Gem::Requirement
133
145
  requirements:
134
- - - '>='
146
+ - - ">="
135
147
  - !ruby/object:Gem::Version
136
- version: '0'
148
+ version: 1.9.2
137
149
  required_rubygems_version: !ruby/object:Gem::Requirement
138
150
  requirements:
139
- - - '>='
151
+ - - ">="
140
152
  - !ruby/object:Gem::Version
141
153
  version: '0'
142
154
  requirements: []
143
155
  rubyforge_project: akami
144
- rubygems_version: 2.1.11
156
+ rubygems_version: 2.2.2
145
157
  signing_key:
146
158
  specification_version: 4
147
159
  summary: Web Service Security
148
160
  test_files:
161
+ - spec/akami/wsse/signature_spec.rb
162
+ - spec/akami/wsse/verify_signature_spec.rb
149
163
  - spec/akami/wsse_spec.rb
164
+ - spec/fixtures/akami/wsse/signature/cert.pem
165
+ - spec/fixtures/akami/wsse/signature/unsigned.xml
166
+ - spec/fixtures/akami/wsse/verify_signature/invalid_digest_changed.xml
167
+ - spec/fixtures/akami/wsse/verify_signature/invalid_digested_changed.xml
168
+ - spec/fixtures/akami/wsse/verify_signature/invalid_signature_changed.xml
169
+ - spec/fixtures/akami/wsse/verify_signature/valid.xml
170
+ - spec/fixtures/akami/wsse/verify_signature/valid_namespaces.xml
171
+ - spec/fixtures/akami/wsse/verify_signature/valid_sha1_gost.xml
172
+ - spec/fixtures/akami/wsse/verify_signature/valid_sha256.xml
173
+ - spec/fixtures/akami/wsse/verify_signature/valid_whitespaces.xml
150
174
  - spec/spec_helper.rb