kl-ruby-saml 0.0.4 → 0.0.5

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: 4884c1dba78f622165653342c8a88d480cdcaf31
4
- data.tar.gz: 9d464006e257f4fc8d2a33b7cac07e07cef67782
3
+ metadata.gz: f44b4e601309171d6735398f138704b4ff54cea2
4
+ data.tar.gz: 525052e90ee9d5aa368972a8e1921a609f5aca2d
5
5
  SHA512:
6
- metadata.gz: ac0bf85d00dcd02969bb8e1fe31a6888eb6c662b23999482bccb930f6323f1a7c21fa9243347cd71259bad702468e77359cd95cd1cdb27574baa677d20f5d4d8
7
- data.tar.gz: 181f794dc678fad271057c6bc7738f7d58a747876a037b8548c1034d984080b33b02843c74004c8400bc5b1e0f4538953cf42cbbda13fc855285a42c5b3f089a
6
+ metadata.gz: 5094f8cd2198ebc0d0914c84325b2f13aa54ea51e766fc59ce66d5c03438b677998014d5559b5598a58467876ac7fbf95549932c802484eb7fc7729c24009230
7
+ data.tar.gz: f3c2aa6a89a0af160d3087f86106a16d651103cae3cc2503cdfab66cec4bc1db238948abebd156b28c52827ad13a06d044fda3e2be51e63d32c0a61a81205c52
data/Gemfile CHANGED
@@ -5,6 +5,6 @@ source 'https://rubygems.org'
5
5
 
6
6
  gemspec
7
7
 
8
- gem 'timecop'
9
8
  gem 'json'
9
+ gem 'timecop'
10
10
 
data/README.md CHANGED
@@ -376,8 +376,8 @@ The settings related to sign are stored in the `security` attribute of the setti
376
376
  settings.security[:logout_responses_signed] = true # Enable or not signature on Logout Response
377
377
  settings.security[:metadata_signed] = true # Enable or not signature on Metadata
378
378
 
379
- settings.security[:digest_method] = XMLSecurity::Document::SHA1
380
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
379
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA1
380
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
381
381
 
382
382
  # Embeded signature or HTTP GET parameter signature
383
383
  # Note that metadata signature is always embedded regardless of this value.
@@ -31,7 +31,7 @@ require "digest/sha1"
31
31
  require "digest/sha2"
32
32
  require "onelogin/kl-ruby-saml/validation_error"
33
33
 
34
- module XMLSecurity
34
+ module KlXMLSecurity
35
35
 
36
36
  class BaseDocument < REXML::Document
37
37
  REXML::Document::entity_expansion_limit = 0
@@ -110,7 +110,7 @@ module XMLSecurity
110
110
  #</Signature>
111
111
  def sign_document(private_key, certificate, signature_method = RSA_SHA1, digest_method = SHA1)
112
112
  noko = Nokogiri.parse(self.to_s) do |options|
113
- options = XMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
113
+ options = KlXMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
114
114
  end
115
115
 
116
116
  signature_element = REXML::Element.new("ds:Signature").add_namespace('ds', DSIG)
@@ -134,7 +134,7 @@ module XMLSecurity
134
134
 
135
135
  # add SignatureValue
136
136
  noko_sig_element = Nokogiri.parse(signature_element.to_s) do |options|
137
- options = XMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
137
+ options = KlXMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
138
138
  end
139
139
 
140
140
  noko_signed_info_element = noko_sig_element.at_xpath('//ds:Signature/ds:SignedInfo', 'ds' => DSIG)
@@ -211,7 +211,7 @@ module XMLSecurity
211
211
  cert = OpenSSL::X509::Certificate.new(cert_text)
212
212
 
213
213
  if options[:fingerprint_alg]
214
- fingerprint_alg = XMLSecurity::BaseDocument.new.algorithm(options[:fingerprint_alg]).new
214
+ fingerprint_alg = KlXMLSecurity::BaseDocument.new.algorithm(options[:fingerprint_alg]).new
215
215
  else
216
216
  fingerprint_alg = OpenSSL::Digest::SHA1.new
217
217
  end
@@ -233,7 +233,7 @@ module XMLSecurity
233
233
  inclusive_namespaces = extract_inclusive_namespaces
234
234
 
235
235
  document = Nokogiri.parse(self.to_s) do |options|
236
- options = XMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
236
+ options = KlXMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
237
237
  end
238
238
 
239
239
  # create a working copy so we don't modify the original
@@ -70,7 +70,7 @@ module OneLogin
70
70
  :relay_state => relay_state,
71
71
  :sig_alg => params['SigAlg']
72
72
  )
73
- sign_algorithm = XMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
73
+ sign_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
74
74
  signature = settings.get_sp_key.sign(sign_algorithm.new, url_string)
75
75
  params['Signature'] = encode(signature)
76
76
  end
@@ -89,7 +89,7 @@ module OneLogin
89
89
  def create_authentication_xml_doc(settings)
90
90
  time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
91
91
 
92
- request_doc = XMLSecurity::Document.new
92
+ request_doc = KlXMLSecurity::Document.new
93
93
  request_doc.uuid = uuid
94
94
 
95
95
  root = request_doc.add_element "samlp:AuthnRequest", { "xmlns:samlp" => "urn:oasis:names:tc:SAML:2.0:protocol", "xmlns:saml" => "urn:oasis:names:tc:SAML:2.0:assertion" }
@@ -68,7 +68,7 @@ module OneLogin
68
68
  :relay_state => relay_state,
69
69
  :sig_alg => params['SigAlg']
70
70
  )
71
- sign_algorithm = XMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
71
+ sign_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
72
72
  signature = settings.get_sp_key.sign(sign_algorithm.new, url_string)
73
73
  params['Signature'] = encode(signature)
74
74
  end
@@ -87,7 +87,7 @@ module OneLogin
87
87
  def create_logout_request_xml_doc(settings)
88
88
  time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
89
89
 
90
- request_doc = XMLSecurity::Document.new
90
+ request_doc = KlXMLSecurity::Document.new
91
91
  request_doc.uuid = uuid
92
92
 
93
93
  root = request_doc.add_element "samlp:LogoutRequest", { "xmlns:samlp" => "urn:oasis:names:tc:SAML:2.0:protocol", "xmlns:saml" => "urn:oasis:names:tc:SAML:2.0:assertion" }
@@ -1,4 +1,4 @@
1
- require "xml_security"
1
+ require "kl_xml_security"
2
2
  require "onelogin/kl-ruby-saml/saml_message"
3
3
 
4
4
  require "time"
@@ -44,7 +44,7 @@ module OneLogin
44
44
 
45
45
  @options = options
46
46
  @response = decode_raw_saml(response)
47
- @document = XMLSecurity::SignedDocument.new(@response)
47
+ @document = KlXMLSecurity::SignedDocument.new(@response)
48
48
  end
49
49
 
50
50
  # Append the cause to the errors array, and based on the value of soft, return false or raise
@@ -18,7 +18,7 @@ module OneLogin
18
18
  # @return [String] XML Metadata of the Service Provider
19
19
  #
20
20
  def generate(settings, pretty_print=false)
21
- meta_doc = XMLSecurity::Document.new
21
+ meta_doc = KlXMLSecurity::Document.new
22
22
  namespaces = {
23
23
  "xmlns:md" => "urn:oasis:names:tc:SAML:2.0:metadata"
24
24
  }
@@ -1,4 +1,4 @@
1
- require "xml_security"
1
+ require "kl_xml_security"
2
2
  require "onelogin/kl-ruby-saml/attributes"
3
3
 
4
4
  require "time"
@@ -52,7 +52,7 @@ module OneLogin
52
52
  end
53
53
 
54
54
  @response = decode_raw_saml(response)
55
- @document = XMLSecurity::SignedDocument.new(@response, @errors)
55
+ @document = KlXMLSecurity::SignedDocument.new(@response, @errors)
56
56
 
57
57
  if assertion_encrypted?
58
58
  @decrypted_document = generate_decrypted_document
@@ -623,7 +623,7 @@ module OneLogin
623
623
  end
624
624
 
625
625
  # Generates the decrypted_document
626
- # @return [XMLSecurity::SignedDocument] The SAML Response with the assertion decrypted
626
+ # @return [KlXMLSecurity::SignedDocument] The SAML Response with the assertion decrypted
627
627
  #
628
628
  def generate_decrypted_document
629
629
  if settings.nil? || !settings.get_sp_key
@@ -632,7 +632,7 @@ module OneLogin
632
632
 
633
633
  # Marshal at Ruby 1.8.7 throw an Exception
634
634
  if RUBY_VERSION < "1.9"
635
- document_copy = XMLSecurity::SignedDocument.new(response, errors)
635
+ document_copy = KlXMLSecurity::SignedDocument.new(response, errors)
636
636
  else
637
637
  document_copy = Marshal.load(Marshal.dump(document))
638
638
  end
@@ -641,8 +641,8 @@ module OneLogin
641
641
  end
642
642
 
643
643
  # Obtains a SAML Response with the EncryptedAssertion element decrypted
644
- # @param document_copy [XMLSecurity::SignedDocument] A copy of the original SAML Response with the encrypted assertion
645
- # @return [XMLSecurity::SignedDocument] The SAML Response with the assertion decrypted
644
+ # @param document_copy [KlXMLSecurity::SignedDocument] A copy of the original SAML Response with the encrypted assertion
645
+ # @return [KlXMLSecurity::SignedDocument] The SAML Response with the assertion decrypted
646
646
  #
647
647
  def decrypt_assertion_from_document(document_copy)
648
648
  response_node = REXML::XPath.first(
@@ -657,7 +657,7 @@ module OneLogin
657
657
  )
658
658
  response_node.add(decrypt_assertion(encrypted_assertion_node))
659
659
  encrypted_assertion_node.remove
660
- XMLSecurity::SignedDocument.new(response_node.to_s)
660
+ KlXMLSecurity::SignedDocument.new(response_node.to_s)
661
661
  end
662
662
 
663
663
  # Checks if the SAML Response contains or not an EncryptedAssertion element
@@ -65,7 +65,7 @@ module OneLogin
65
65
  def valid_saml?(document, soft = true)
66
66
  begin
67
67
  xml = Nokogiri::XML(document.to_s) do |config|
68
- config.options = XMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
68
+ config.options = KlXMLSecurity::BaseDocument::NOKOGIRI_OPTIONS
69
69
  end
70
70
  rescue Exception => error
71
71
  return false if soft
@@ -1,4 +1,4 @@
1
- require "xml_security"
1
+ require "kl_xml_security"
2
2
  require "onelogin/kl-ruby-saml/attribute_service"
3
3
  require "onelogin/kl-ruby-saml/utils"
4
4
 
@@ -107,7 +107,7 @@ module OneLogin
107
107
  idp_cert_fingerprint || begin
108
108
  idp_cert = get_idp_cert
109
109
  if idp_cert
110
- fingerprint_alg = XMLSecurity::BaseDocument.new.algorithm(idp_cert_fingerprint_algorithm).new
110
+ fingerprint_alg = KlXMLSecurity::BaseDocument.new.algorithm(idp_cert_fingerprint_algorithm).new
111
111
  fingerprint_alg.hexdigest(idp_cert.to_der).upcase.scan(/../).join(":")
112
112
  end
113
113
  end
@@ -145,7 +145,7 @@ module OneLogin
145
145
  DEFAULTS = {
146
146
  :assertion_consumer_service_binding => "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST".freeze,
147
147
  :single_logout_service_binding => "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect".freeze,
148
- :idp_cert_fingerprint_algorithm => XMLSecurity::Document::SHA1,
148
+ :idp_cert_fingerprint_algorithm => KlXMLSecurity::Document::SHA1,
149
149
  :compress_request => true,
150
150
  :compress_response => true,
151
151
  :soft => true,
@@ -155,8 +155,8 @@ module OneLogin
155
155
  :logout_responses_signed => false,
156
156
  :metadata_signed => false,
157
157
  :embed_sign => false,
158
- :digest_method => XMLSecurity::Document::SHA1,
159
- :signature_method => XMLSecurity::Document::RSA_SHA1
158
+ :digest_method => KlXMLSecurity::Document::SHA1,
159
+ :signature_method => KlXMLSecurity::Document::RSA_SHA1
160
160
  }.freeze,
161
161
  :double_quote_xml_attribute_values => false,
162
162
  }.freeze
@@ -73,7 +73,7 @@ module OneLogin
73
73
  :relay_state => relay_state,
74
74
  :sig_alg => params['SigAlg']
75
75
  )
76
- sign_algorithm = XMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
76
+ sign_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(settings.security[:signature_method])
77
77
  signature = settings.get_sp_key.sign(sign_algorithm.new, url_string)
78
78
  params['Signature'] = encode(signature)
79
79
  end
@@ -94,7 +94,7 @@ module OneLogin
94
94
  def create_logout_response_xml_doc(settings, request_id = nil, logout_message = nil)
95
95
  time = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
96
96
 
97
- response_doc = XMLSecurity::Document.new
97
+ response_doc = KlXMLSecurity::Document.new
98
98
  response_doc.uuid = uuid
99
99
 
100
100
  root = response_doc.add_element 'samlp:LogoutResponse', { 'xmlns:samlp' => 'urn:oasis:names:tc:SAML:2.0:protocol', "xmlns:saml" => "urn:oasis:names:tc:SAML:2.0:assertion" }
@@ -70,7 +70,7 @@ module OneLogin
70
70
  #
71
71
  def self.verify_signature(params)
72
72
  cert, sig_alg, signature, query_string = [:cert, :sig_alg, :signature, :query_string].map { |k| params[k]}
73
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(sig_alg)
73
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(sig_alg)
74
74
  return cert.public_key.verify(signature_algorithm.new, Base64.decode64(signature), query_string)
75
75
  end
76
76
 
@@ -1,5 +1,5 @@
1
1
  module OneLogin
2
2
  module KlRubySaml
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
  end
5
5
  end
@@ -103,8 +103,8 @@ class RequestTest < Minitest::Test
103
103
 
104
104
  it "create a signed logout request with 256 digest and signature method" do
105
105
  settings.compress_request = false
106
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
107
- settings.security[:digest_method] = XMLSecurity::Document::SHA256
106
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
107
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA256
108
108
 
109
109
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings)
110
110
  request_xml = Base64.decode64(params["SAMLRequest"])
@@ -116,8 +116,8 @@ class RequestTest < Minitest::Test
116
116
 
117
117
  it "create a signed logout request with 512 digest and signature method RSA_SHA384" do
118
118
  settings.compress_request = false
119
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA384
120
- settings.security[:digest_method] = XMLSecurity::Document::SHA512
119
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA384
120
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA512
121
121
 
122
122
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings)
123
123
  request_xml = Base64.decode64(params["SAMLRequest"])
@@ -141,67 +141,67 @@ class RequestTest < Minitest::Test
141
141
  end
142
142
 
143
143
  it "create a signature parameter with RSA_SHA1 / SHA1 and validate it" do
144
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
144
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
145
145
 
146
146
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
147
147
  assert params['SAMLRequest']
148
148
  assert params[:RelayState]
149
149
  assert params['Signature']
150
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA1
150
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA1
151
151
 
152
152
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
153
153
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
154
154
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
155
155
 
156
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
156
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
157
157
  assert_equal signature_algorithm, OpenSSL::Digest::SHA1
158
158
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
159
159
  end
160
160
 
161
161
  it "create a signature parameter with RSA_SHA256 / SHA256 and validate it" do
162
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
162
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
163
163
 
164
164
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
165
165
  assert params['Signature']
166
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA256
166
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA256
167
167
 
168
168
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
169
169
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
170
170
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
171
171
 
172
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
172
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
173
173
  assert_equal signature_algorithm, OpenSSL::Digest::SHA256
174
174
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
175
175
  end
176
176
 
177
177
  it "create a signature parameter with RSA_SHA384 / SHA384 and validate it" do
178
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA384
178
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA384
179
179
 
180
180
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
181
181
  assert params['Signature']
182
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA384
182
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA384
183
183
 
184
184
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
185
185
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
186
186
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
187
187
 
188
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
188
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
189
189
  assert_equal signature_algorithm, OpenSSL::Digest::SHA384
190
190
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
191
191
  end
192
192
 
193
193
  it "create a signature parameter with RSA_SHA512 / SHA512 and validate it" do
194
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA512
194
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA512
195
195
 
196
196
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
197
197
  assert params['Signature']
198
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA512
198
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA512
199
199
 
200
200
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
201
201
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
202
202
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
203
203
 
204
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
204
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
205
205
  assert_equal signature_algorithm, OpenSSL::Digest::SHA512
206
206
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
207
207
  end
@@ -215,7 +215,7 @@ class KlRubySamlTest < Minitest::Test
215
215
  end
216
216
 
217
217
  it "return true when valid RSA_SHA1 Signature" do
218
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
218
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
219
219
  params['RelayState'] = params[:RelayState]
220
220
  options = {}
221
221
  options[:get_params] = params
@@ -224,7 +224,7 @@ class KlRubySamlTest < Minitest::Test
224
224
  end
225
225
 
226
226
  it "return true when valid RSA_SHA256 Signature" do
227
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
227
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
228
228
  params['RelayState'] = params[:RelayState]
229
229
  options = {}
230
230
  options[:get_params] = params
@@ -233,7 +233,7 @@ class KlRubySamlTest < Minitest::Test
233
233
  end
234
234
 
235
235
  it "return false when invalid RSA_SHA1 Signature" do
236
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
236
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
237
237
  params['RelayState'] = 'http://invalid.example.com'
238
238
  options = {}
239
239
  options[:get_params] = params
@@ -242,7 +242,7 @@ class KlRubySamlTest < Minitest::Test
242
242
  end
243
243
 
244
244
  it "raise when invalid RSA_SHA1 Signature" do
245
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
245
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
246
246
  settings.soft = false
247
247
  params['RelayState'] = 'http://invalid.example.com'
248
248
  options = {}
@@ -174,7 +174,7 @@ class MetadataTest < Minitest::Test
174
174
  assert_match %r[<ds:SignatureValue>([a-zA-Z0-9/+=]+)</ds:SignatureValue>]m, xml_text
175
175
  assert_match %r[<ds:SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1'/>], xml_text
176
176
  assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1'/>], xml_text
177
- signed_metadata = XMLSecurity::SignedDocument.new(xml_text)
177
+ signed_metadata = KlXMLSecurity::SignedDocument.new(xml_text)
178
178
  assert signed_metadata.validate_document(ruby_saml_cert_fingerprint, false)
179
179
 
180
180
  assert validate_xml!(xml_text, "saml-schema-metadata-2.0.xsd")
@@ -182,8 +182,8 @@ class MetadataTest < Minitest::Test
182
182
 
183
183
  describe "when digest and signature methods are specified" do
184
184
  before do
185
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
186
- settings.security[:digest_method] = XMLSecurity::Document::SHA512
185
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
186
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA512
187
187
  end
188
188
 
189
189
  it "creates a signed metadata with specified digest and signature methods" do
@@ -191,7 +191,7 @@ class MetadataTest < Minitest::Test
191
191
  assert_match %r[<ds:SignatureMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'/>], xml_text
192
192
  assert_match %r[<ds:DigestMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#sha512'/>], xml_text
193
193
 
194
- signed_metadata_2 = XMLSecurity::SignedDocument.new(xml_text)
194
+ signed_metadata_2 = KlXMLSecurity::SignedDocument.new(xml_text)
195
195
 
196
196
  assert signed_metadata_2.validate_document(ruby_saml_cert_fingerprint, false)
197
197
 
@@ -191,8 +191,8 @@ class RequestTest < Minitest::Test
191
191
  end
192
192
 
193
193
  it "create a signed request with 256 digest and signature methods" do
194
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
195
- settings.security[:digest_method] = XMLSecurity::Document::SHA512
194
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
195
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA512
196
196
 
197
197
  params = OneLogin::KlRubySaml::Authrequest.new.create_params(settings)
198
198
 
@@ -217,36 +217,36 @@ class RequestTest < Minitest::Test
217
217
  end
218
218
 
219
219
  it "create a signature parameter with RSA_SHA1 and validate it" do
220
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
220
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
221
221
 
222
222
  params = OneLogin::KlRubySaml::Authrequest.new.create_params(settings, :RelayState => 'http://example.com')
223
223
  assert params['SAMLRequest']
224
224
  assert params[:RelayState]
225
225
  assert params['Signature']
226
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA1
226
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA1
227
227
 
228
228
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
229
229
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
230
230
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
231
231
 
232
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
232
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
233
233
  assert_equal signature_algorithm, OpenSSL::Digest::SHA1
234
234
 
235
235
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
236
236
  end
237
237
 
238
238
  it "create a signature parameter with RSA_SHA256 and validate it" do
239
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
239
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
240
240
 
241
241
  params = OneLogin::KlRubySaml::Authrequest.new.create_params(settings, :RelayState => 'http://example.com')
242
242
  assert params['Signature']
243
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA256
243
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA256
244
244
 
245
245
  query_string = "SAMLRequest=#{CGI.escape(params['SAMLRequest'])}"
246
246
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
247
247
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
248
248
 
249
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
249
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
250
250
  assert_equal signature_algorithm, OpenSSL::Digest::SHA256
251
251
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
252
252
  end
@@ -43,7 +43,7 @@ class KlRubySamlTest < Minitest::Test
43
43
  end
44
44
 
45
45
  it "be able to parse a document which contains ampersands" do
46
- XMLSecurity::SignedDocument.any_instance.stubs(:digests_match?).returns(true)
46
+ KlXMLSecurity::SignedDocument.any_instance.stubs(:digests_match?).returns(true)
47
47
  OneLogin::KlRubySaml::Response.any_instance.stubs(:validate_conditions).returns(true)
48
48
 
49
49
  ampersands_response = OneLogin::KlRubySaml::Response.new(ampersands_document)
@@ -301,7 +301,7 @@ class KlRubySamlTest < Minitest::Test
301
301
  no_signature_response.stubs(:validate_subject_confirmation).returns(true)
302
302
  no_signature_response.settings = settings
303
303
  no_signature_response.settings.idp_cert_fingerprint = "28:74:9B:E8:1F:E8:10:9C:A8:7C:A9:C3:E3:C5:01:6C:92:1C:B4:BA"
304
- XMLSecurity::SignedDocument.any_instance.expects(:validate_signature).returns(true)
304
+ KlXMLSecurity::SignedDocument.any_instance.expects(:validate_signature).returns(true)
305
305
  assert no_signature_response.is_valid?
306
306
  end
307
307
 
@@ -870,7 +870,7 @@ class KlRubySamlTest < Minitest::Test
870
870
  it 'Sign an unsigned SAML Response XML and initiate the SAML object with it' do
871
871
  xml = Base64.decode64(fixture("test_sign.xml"))
872
872
 
873
- document = XMLSecurity::Document.new(xml)
873
+ document = KlXMLSecurity::Document.new(xml)
874
874
 
875
875
  formated_cert = OneLogin::KlRubySaml::Utils.format_cert(ruby_saml_cert_text)
876
876
  cert = OpenSSL::X509::Certificate.new(formated_cert)
@@ -67,14 +67,14 @@ class SettingsTest < Minitest::Test
67
67
  settings = OneLogin::KlRubySaml::Settings.new
68
68
  settings.security[:authn_requests_signed] = true
69
69
  settings.security[:embed_sign] = true
70
- settings.security[:digest_method] = XMLSecurity::Document::SHA256
71
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
70
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA256
71
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
72
72
 
73
73
  new_settings = OneLogin::KlRubySaml::Settings.new
74
74
  assert_equal new_settings.security[:authn_requests_signed], false
75
75
  assert_equal new_settings.security[:embed_sign], false
76
- assert_equal new_settings.security[:digest_method], XMLSecurity::Document::SHA1
77
- assert_equal new_settings.security[:signature_method], XMLSecurity::Document::RSA_SHA1
76
+ assert_equal new_settings.security[:digest_method], KlXMLSecurity::Document::SHA1
77
+ assert_equal new_settings.security[:signature_method], KlXMLSecurity::Document::RSA_SHA1
78
78
  end
79
79
 
80
80
  describe "#single_logout_service_url" do
@@ -221,7 +221,7 @@ class KlRubySamlTest < Minitest::Test
221
221
  end
222
222
 
223
223
  it "return true when valid RSA_SHA1 Signature" do
224
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
224
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
225
225
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
226
226
  params['RelayState'] = params[:RelayState]
227
227
  options = {}
@@ -232,7 +232,7 @@ class KlRubySamlTest < Minitest::Test
232
232
  end
233
233
 
234
234
  it "return true when valid RSA_SHA256 Signature" do
235
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
235
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
236
236
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
237
237
  options = {}
238
238
  options[:get_params] = params
@@ -243,7 +243,7 @@ class KlRubySamlTest < Minitest::Test
243
243
  end
244
244
 
245
245
  it "return false when invalid RSA_SHA1 Signature" do
246
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
246
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
247
247
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
248
248
  params['RelayState'] = 'http://invalid.exampcle.com'
249
249
  params[:RelayState] = params['RelayState']
@@ -256,7 +256,7 @@ class KlRubySamlTest < Minitest::Test
256
256
  end
257
257
 
258
258
  it "raise when invalid RSA_SHA1 Signature" do
259
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
259
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
260
260
  settings.soft = false
261
261
  params = OneLogin::KlRubySaml::Logoutrequest.new.create_params(settings, :RelayState => 'http://example.com')
262
262
  params['RelayState'] = 'http://invalid.exampcle.com'
@@ -70,8 +70,8 @@ class SloLogoutresponseTest < Minitest::Test
70
70
  end
71
71
 
72
72
  it "create a signed logout response with 256 digest and signature methods" do
73
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
74
- settings.security[:digest_method] = XMLSecurity::Document::SHA256
73
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
74
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA256
75
75
 
76
76
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message")
77
77
 
@@ -82,8 +82,8 @@ class SloLogoutresponseTest < Minitest::Test
82
82
  end
83
83
 
84
84
  it "create a signed logout response with 512 digest and signature method RSA_SHA384" do
85
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA384
86
- settings.security[:digest_method] = XMLSecurity::Document::SHA512
85
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA384
86
+ settings.security[:digest_method] = KlXMLSecurity::Document::SHA512
87
87
  logout_request.settings = settings
88
88
 
89
89
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message")
@@ -106,76 +106,76 @@ class SloLogoutresponseTest < Minitest::Test
106
106
  end
107
107
 
108
108
  it "create a signature parameter with RSA_SHA1 and validate it" do
109
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
109
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA1
110
110
 
111
111
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message", :RelayState => 'http://example.com')
112
112
  assert params['SAMLResponse']
113
113
  assert params[:RelayState]
114
114
  assert params['Signature']
115
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA1
115
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA1
116
116
 
117
117
  query_string = "SAMLResponse=#{CGI.escape(params['SAMLResponse'])}"
118
118
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
119
119
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
120
120
 
121
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
121
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
122
122
  assert_equal signature_algorithm, OpenSSL::Digest::SHA1
123
123
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
124
124
  end
125
125
 
126
126
  it "create a signature parameter with RSA_SHA256 /SHA256 and validate it" do
127
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA256
127
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA256
128
128
 
129
129
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message", :RelayState => 'http://example.com')
130
130
  assert params['SAMLResponse']
131
131
  assert params[:RelayState]
132
132
  assert params['Signature']
133
133
 
134
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA256
134
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA256
135
135
 
136
136
  query_string = "SAMLResponse=#{CGI.escape(params['SAMLResponse'])}"
137
137
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
138
138
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
139
139
 
140
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
140
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
141
141
  assert_equal signature_algorithm, OpenSSL::Digest::SHA256
142
142
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
143
143
  end
144
144
 
145
145
  it "create a signature parameter with RSA_SHA384 / SHA384 and validate it" do
146
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA384
146
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA384
147
147
 
148
148
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message", :RelayState => 'http://example.com')
149
149
  assert params['SAMLResponse']
150
150
  assert params[:RelayState]
151
151
  assert params['Signature']
152
152
 
153
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA384
153
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA384
154
154
 
155
155
  query_string = "SAMLResponse=#{CGI.escape(params['SAMLResponse'])}"
156
156
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
157
157
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
158
158
 
159
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
159
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
160
160
  assert_equal signature_algorithm, OpenSSL::Digest::SHA384
161
161
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
162
162
  end
163
163
 
164
164
  it "create a signature parameter with RSA_SHA512 / SHA512 and validate it" do
165
- settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA512
165
+ settings.security[:signature_method] = KlXMLSecurity::Document::RSA_SHA512
166
166
 
167
167
  params = OneLogin::KlRubySaml::SloLogoutresponse.new.create_params(settings, logout_request.id, "Custom Logout Message", :RelayState => 'http://example.com')
168
168
  assert params['SAMLResponse']
169
169
  assert params[:RelayState]
170
170
  assert params['Signature']
171
171
 
172
- assert_equal params['SigAlg'], XMLSecurity::Document::RSA_SHA512
172
+ assert_equal params['SigAlg'], KlXMLSecurity::Document::RSA_SHA512
173
173
 
174
174
  query_string = "SAMLResponse=#{CGI.escape(params['SAMLResponse'])}"
175
175
  query_string << "&RelayState=#{CGI.escape(params[:RelayState])}"
176
176
  query_string << "&SigAlg=#{CGI.escape(params['SigAlg'])}"
177
177
 
178
- signature_algorithm = XMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
178
+ signature_algorithm = KlXMLSecurity::BaseDocument.new.algorithm(params['SigAlg'])
179
179
  assert_equal signature_algorithm, OpenSSL::Digest::SHA512
180
180
  assert cert.public_key.verify(signature_algorithm.new, Base64.decode64(params['Signature']), query_string)
181
181
  end
@@ -1,14 +1,14 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), "test_helper"))
2
- require 'xml_security'
2
+ require 'kl_xml_security'
3
3
  require 'timecop'
4
4
 
5
5
  class XmlSecurityTest < Minitest::Test
6
- include XMLSecurity
6
+ include KlXMLSecurity
7
7
 
8
8
  describe "XmlSecurity" do
9
9
 
10
10
  let(:decoded_response) { Base64.decode64(response_document_without_recipient) }
11
- let(:document) { XMLSecurity::SignedDocument.new(decoded_response) }
11
+ let(:document) { KlXMLSecurity::SignedDocument.new(decoded_response) }
12
12
  let(:settings) { OneLogin::KlRubySaml::Settings.new() }
13
13
 
14
14
  before do
@@ -31,7 +31,7 @@ class XmlSecurityTest < Minitest::Test
31
31
 
32
32
  it "not raise an error when softly validating the document and the X509Certificate is missing" do
33
33
  decoded_response.sub!(/<ds:X509Certificate>.*<\/ds:X509Certificate>/, "")
34
- mod_document = XMLSecurity::SignedDocument.new(decoded_response)
34
+ mod_document = KlXMLSecurity::SignedDocument.new(decoded_response)
35
35
  assert !mod_document.validate_document("a fingerprint", true) # The fingerprint isn't relevant to this test
36
36
  end
37
37
 
@@ -54,7 +54,7 @@ class XmlSecurityTest < Minitest::Test
54
54
  it "should raise Key validation error" do
55
55
  decoded_response.sub!("<ds:DigestValue>pJQ7MS/ek4KRRWGmv/H43ReHYMs=</ds:DigestValue>",
56
56
  "<ds:DigestValue>b9xsAXLsynugg3Wc1CI3kpWku+0=</ds:DigestValue>")
57
- mod_document = XMLSecurity::SignedDocument.new(decoded_response)
57
+ mod_document = KlXMLSecurity::SignedDocument.new(decoded_response)
58
58
  base64cert = mod_document.elements["//ds:X509Certificate"].text
59
59
  exception = assert_raises(OneLogin::KlRubySaml::ValidationError) do
60
60
  mod_document.validate_signature(base64cert, false)
@@ -64,14 +64,14 @@ class XmlSecurityTest < Minitest::Test
64
64
  end
65
65
 
66
66
  it "correctly obtain the digest method with alternate namespace declaration" do
67
- adfs_document = XMLSecurity::SignedDocument.new(fixture(:adfs_response_xmlns, false))
67
+ adfs_document = KlXMLSecurity::SignedDocument.new(fixture(:adfs_response_xmlns, false))
68
68
  base64cert = adfs_document.elements["//X509Certificate"].text
69
69
  assert adfs_document.validate_signature(base64cert, false)
70
70
  end
71
71
 
72
72
  it "raise validation error when the X509Certificate is missing" do
73
73
  decoded_response.sub!(/<ds:X509Certificate>.*<\/ds:X509Certificate>/, "")
74
- mod_document = XMLSecurity::SignedDocument.new(decoded_response)
74
+ mod_document = KlXMLSecurity::SignedDocument.new(decoded_response)
75
75
  exception = assert_raises(OneLogin::KlRubySaml::ValidationError) do
76
76
  mod_document.validate_document("a fingerprint", false) # The fingerprint isn't relevant to this test
77
77
  end
@@ -82,46 +82,46 @@ class XmlSecurityTest < Minitest::Test
82
82
  describe "#canon_algorithm" do
83
83
  it "C14N_EXCLUSIVE_1_0" do
84
84
  canon_algorithm = Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0
85
- assert_equal canon_algorithm, XMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2001/10/xml-exc-c14n#")
86
- assert_equal canon_algorithm, XMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2001/10/xml-exc-c14n#WithComments")
87
- assert_equal canon_algorithm, XMLSecurity::BaseDocument.new.canon_algorithm("other")
85
+ assert_equal canon_algorithm, KlXMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2001/10/xml-exc-c14n#")
86
+ assert_equal canon_algorithm, KlXMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2001/10/xml-exc-c14n#WithComments")
87
+ assert_equal canon_algorithm, KlXMLSecurity::BaseDocument.new.canon_algorithm("other")
88
88
  end
89
89
 
90
90
  it "C14N_1_0" do
91
91
  canon_algorithm = Nokogiri::XML::XML_C14N_1_0
92
- assert_equal canon_algorithm, XMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/TR/2001/REC-xml-c14n-20010315")
92
+ assert_equal canon_algorithm, KlXMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/TR/2001/REC-xml-c14n-20010315")
93
93
  end
94
94
 
95
95
  it "XML_C14N_1_1" do
96
96
  canon_algorithm = Nokogiri::XML::XML_C14N_1_1
97
- assert_equal canon_algorithm, XMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2006/12/xml-c14n11")
97
+ assert_equal canon_algorithm, KlXMLSecurity::BaseDocument.new.canon_algorithm("http://www.w3.org/2006/12/xml-c14n11")
98
98
  end
99
99
  end
100
100
 
101
101
  describe "#algorithm" do
102
102
  it "SHA1" do
103
103
  alg = OpenSSL::Digest::SHA1
104
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2000/09/xmldsig#rsa-sha1")
105
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2000/09/xmldsig#sha1")
106
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("other")
104
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2000/09/xmldsig#rsa-sha1")
105
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2000/09/xmldsig#sha1")
106
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("other")
107
107
  end
108
108
 
109
109
  it "SHA256" do
110
110
  alg = OpenSSL::Digest::SHA256
111
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256")
112
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha256")
111
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256")
112
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha256")
113
113
  end
114
114
 
115
115
  it "SHA384" do
116
116
  alg = OpenSSL::Digest::SHA384
117
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha384")
118
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha384")
117
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha384")
118
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha384")
119
119
  end
120
120
 
121
121
  it "SHA512" do
122
122
  alg = OpenSSL::Digest::SHA512
123
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512")
124
- assert_equal alg, XMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha512")
123
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512")
124
+ assert_equal alg, KlXMLSecurity::BaseDocument.new.algorithm("http://www.w3.org/2001/04/xmldsig-more#sha512")
125
125
  end
126
126
  end
127
127
 
@@ -133,53 +133,53 @@ class XmlSecurityTest < Minitest::Test
133
133
  sha1_fingerprint_downcase = "f13c6b80905a030e6c913e5d15faddb016454872"
134
134
 
135
135
  assert response_fingerprint_test.document.validate_document(sha1_fingerprint)
136
- assert response_fingerprint_test.document.validate_document(sha1_fingerprint, true, :fingerprint_alg => XMLSecurity::Document::SHA1)
136
+ assert response_fingerprint_test.document.validate_document(sha1_fingerprint, true, :fingerprint_alg => KlXMLSecurity::Document::SHA1)
137
137
 
138
138
  assert response_fingerprint_test.document.validate_document(sha1_fingerprint_downcase)
139
- assert response_fingerprint_test.document.validate_document(sha1_fingerprint_downcase, true, :fingerprint_alg => XMLSecurity::Document::SHA1)
139
+ assert response_fingerprint_test.document.validate_document(sha1_fingerprint_downcase, true, :fingerprint_alg => KlXMLSecurity::Document::SHA1)
140
140
  end
141
141
 
142
142
  it "validate using SHA256" do
143
143
  sha256_fingerprint = "C4:C6:BD:41:EC:AD:57:97:CE:7B:7D:80:06:C3:E4:30:53:29:02:0B:DD:2D:47:02:9E:BD:85:AD:93:02:45:21"
144
144
 
145
145
  assert !response_fingerprint_test.document.validate_document(sha256_fingerprint)
146
- assert response_fingerprint_test.document.validate_document(sha256_fingerprint, true, :fingerprint_alg => XMLSecurity::Document::SHA256)
146
+ assert response_fingerprint_test.document.validate_document(sha256_fingerprint, true, :fingerprint_alg => KlXMLSecurity::Document::SHA256)
147
147
  end
148
148
 
149
149
  it "validate using SHA384" do
150
150
  sha384_fingerprint = "98:FE:17:90:31:E7:68:18:8A:65:4D:DA:F5:76:E2:09:97:BE:8B:E3:7E:AA:8D:63:64:7C:0C:38:23:9A:AC:A2:EC:CE:48:A6:74:4D:E0:4C:50:80:40:B4:8D:55:14:14"
151
151
 
152
152
  assert !response_fingerprint_test.document.validate_document(sha384_fingerprint)
153
- assert response_fingerprint_test.document.validate_document(sha384_fingerprint, true, :fingerprint_alg => XMLSecurity::Document::SHA384)
153
+ assert response_fingerprint_test.document.validate_document(sha384_fingerprint, true, :fingerprint_alg => KlXMLSecurity::Document::SHA384)
154
154
  end
155
155
 
156
156
  it "validate using SHA512" do
157
157
  sha512_fingerprint = "5A:AE:BA:D0:BA:9D:1E:25:05:01:1E:1A:C9:E9:FF:DB:ED:FA:6E:F7:52:EB:45:49:BD:DB:06:D8:A3:7E:CC:63:3A:04:A2:DD:DF:EE:61:05:D9:58:95:2A:77:17:30:4B:EB:4A:9F:48:4A:44:1C:D0:9E:0B:1E:04:77:FD:A3:D2"
158
158
 
159
159
  assert !response_fingerprint_test.document.validate_document(sha512_fingerprint)
160
- assert response_fingerprint_test.document.validate_document(sha512_fingerprint, true, :fingerprint_alg => XMLSecurity::Document::SHA512)
160
+ assert response_fingerprint_test.document.validate_document(sha512_fingerprint, true, :fingerprint_alg => KlXMLSecurity::Document::SHA512)
161
161
  end
162
162
 
163
163
  end
164
164
 
165
165
  describe "Signature Algorithms" do
166
166
  it "validate using SHA1" do
167
- document = XMLSecurity::SignedDocument.new(fixture(:adfs_response_sha1, false))
167
+ document = KlXMLSecurity::SignedDocument.new(fixture(:adfs_response_sha1, false))
168
168
  assert document.validate_document("F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72")
169
169
  end
170
170
 
171
171
  it "validate using SHA256" do
172
- document = XMLSecurity::SignedDocument.new(fixture(:adfs_response_sha256, false))
172
+ document = KlXMLSecurity::SignedDocument.new(fixture(:adfs_response_sha256, false))
173
173
  assert document.validate_document("28:74:9B:E8:1F:E8:10:9C:A8:7C:A9:C3:E3:C5:01:6C:92:1C:B4:BA")
174
174
  end
175
175
 
176
176
  it "validate using SHA384" do
177
- document = XMLSecurity::SignedDocument.new(fixture(:adfs_response_sha384, false))
177
+ document = KlXMLSecurity::SignedDocument.new(fixture(:adfs_response_sha384, false))
178
178
  assert document.validate_document("F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72")
179
179
  end
180
180
 
181
181
  it "validate using SHA512" do
182
- document = XMLSecurity::SignedDocument.new(fixture(:adfs_response_sha512, false))
182
+ document = KlXMLSecurity::SignedDocument.new(fixture(:adfs_response_sha512, false))
183
183
  assert document.validate_document("F1:3C:6B:80:90:5A:03:0E:6C:91:3E:5D:15:FA:DD:B0:16:45:48:72")
184
184
  end
185
185
  end
@@ -189,7 +189,7 @@ class XmlSecurityTest < Minitest::Test
189
189
  describe "#extract_inclusive_namespaces" do
190
190
  it "support explicit namespace resolution for exclusive canonicalization" do
191
191
  response = fixture(:open_saml_response, false)
192
- document = XMLSecurity::SignedDocument.new(response)
192
+ document = KlXMLSecurity::SignedDocument.new(response)
193
193
  inclusive_namespaces = document.send(:extract_inclusive_namespaces)
194
194
 
195
195
  assert_equal %w[ xs ], inclusive_namespaces
@@ -197,7 +197,7 @@ class XmlSecurityTest < Minitest::Test
197
197
 
198
198
  it "support implicit namespace resolution for exclusive canonicalization" do
199
199
  response = fixture(:no_signature_ns, false)
200
- document = XMLSecurity::SignedDocument.new(response)
200
+ document = KlXMLSecurity::SignedDocument.new(response)
201
201
  inclusive_namespaces = document.send(:extract_inclusive_namespaces)
202
202
 
203
203
  assert_equal %w[ #default saml ds xs xsi ], inclusive_namespaces
@@ -219,14 +219,14 @@ class XmlSecurityTest < Minitest::Test
219
219
  response = fixture(:no_signature_ns, false)
220
220
  response.slice! %r{<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default saml ds xs xsi"/>}
221
221
 
222
- document = XMLSecurity::SignedDocument.new(response)
222
+ document = KlXMLSecurity::SignedDocument.new(response)
223
223
  inclusive_namespaces = document.send(:extract_inclusive_namespaces)
224
224
 
225
225
  assert inclusive_namespaces.empty?
226
226
  end
227
227
  end
228
228
 
229
- describe "XMLSecurity::DSIG" do
229
+ describe "KlXMLSecurity::DSIG" do
230
230
  before do
231
231
  settings.idp_sso_target_url = "https://idp.example.com/sso"
232
232
  settings.protocol_binding = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
@@ -241,13 +241,13 @@ class XmlSecurityTest < Minitest::Test
241
241
  request = OneLogin::KlRubySaml::Authrequest.new.create_authentication_xml_doc(settings)
242
242
  request.sign_document(ruby_saml_key, ruby_saml_cert)
243
243
  # verify our signature
244
- signed_doc = XMLSecurity::SignedDocument.new(request.to_s)
244
+ signed_doc = KlXMLSecurity::SignedDocument.new(request.to_s)
245
245
  assert signed_doc.validate_document(ruby_saml_cert_fingerprint, false)
246
246
 
247
247
  request2 = OneLogin::KlRubySaml::Authrequest.new.create_authentication_xml_doc(settings)
248
248
  request2.sign_document(ruby_saml_key, ruby_saml_cert_text)
249
249
  # verify our signature
250
- signed_doc2 = XMLSecurity::SignedDocument.new(request2.to_s)
250
+ signed_doc2 = KlXMLSecurity::SignedDocument.new(request2.to_s)
251
251
  assert signed_doc2.validate_document(ruby_saml_cert_fingerprint, false)
252
252
  end
253
253
 
@@ -256,7 +256,7 @@ class XmlSecurityTest < Minitest::Test
256
256
  request.sign_document(ruby_saml_key, ruby_saml_cert_text)
257
257
 
258
258
  # verify our signature
259
- signed_doc = XMLSecurity::SignedDocument.new(request.to_s)
259
+ signed_doc = KlXMLSecurity::SignedDocument.new(request.to_s)
260
260
  assert signed_doc.validate_document(ruby_saml_cert_fingerprint, false)
261
261
  end
262
262
 
@@ -264,13 +264,13 @@ class XmlSecurityTest < Minitest::Test
264
264
  logout_request = OneLogin::KlRubySaml::Logoutrequest.new.create_logout_request_xml_doc(settings)
265
265
  logout_request.sign_document(ruby_saml_key, ruby_saml_cert)
266
266
  # verify our signature
267
- signed_doc = XMLSecurity::SignedDocument.new(logout_request.to_s)
267
+ signed_doc = KlXMLSecurity::SignedDocument.new(logout_request.to_s)
268
268
  assert signed_doc.validate_document(ruby_saml_cert_fingerprint, false)
269
269
 
270
270
  logout_request2 = OneLogin::KlRubySaml::Logoutrequest.new.create_logout_request_xml_doc(settings)
271
271
  logout_request2.sign_document(ruby_saml_key, ruby_saml_cert_text)
272
272
  # verify our signature
273
- signed_doc2 = XMLSecurity::SignedDocument.new(logout_request2.to_s)
273
+ signed_doc2 = KlXMLSecurity::SignedDocument.new(logout_request2.to_s)
274
274
  signed_doc2.validate_document(ruby_saml_cert_fingerprint, false)
275
275
  assert signed_doc2.validate_document(ruby_saml_cert_fingerprint, false)
276
276
  end
@@ -279,13 +279,13 @@ class XmlSecurityTest < Minitest::Test
279
279
  logout_response = OneLogin::KlRubySaml::SloLogoutresponse.new.create_logout_response_xml_doc(settings, 'request_id_example', "Custom Logout Message")
280
280
  logout_response.sign_document(ruby_saml_key, ruby_saml_cert)
281
281
  # verify our signature
282
- signed_doc = XMLSecurity::SignedDocument.new(logout_response.to_s)
282
+ signed_doc = KlXMLSecurity::SignedDocument.new(logout_response.to_s)
283
283
  assert signed_doc.validate_document(ruby_saml_cert_fingerprint, false)
284
284
 
285
285
  logout_response2 = OneLogin::KlRubySaml::SloLogoutresponse.new.create_logout_response_xml_doc(settings, 'request_id_example', "Custom Logout Message")
286
286
  logout_response2.sign_document(ruby_saml_key, ruby_saml_cert_text)
287
287
  # verify our signature
288
- signed_doc2 = XMLSecurity::SignedDocument.new(logout_response2.to_s)
288
+ signed_doc2 = KlXMLSecurity::SignedDocument.new(logout_response2.to_s)
289
289
  signed_doc2.validate_document(ruby_saml_cert_fingerprint, false)
290
290
  assert signed_doc2.validate_document(ruby_saml_cert_fingerprint, false)
291
291
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kl-ruby-saml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - OneLogin LLC
@@ -170,6 +170,7 @@ files:
170
170
  - gemfiles/nokogiri-1.5.gemfile
171
171
  - kl-ruby-saml.gemspec
172
172
  - lib/kl-ruby-saml.rb
173
+ - lib/kl_xml_security.rb
173
174
  - lib/onelogin/kl-ruby-saml.rb
174
175
  - lib/onelogin/kl-ruby-saml/attribute_service.rb
175
176
  - lib/onelogin/kl-ruby-saml/attributes.rb
@@ -200,7 +201,6 @@ files:
200
201
  - lib/schemas/xenc-schema.xsd
201
202
  - lib/schemas/xml.xsd
202
203
  - lib/schemas/xmldsig-core-schema.xsd
203
- - lib/xml_security.rb
204
204
  - test/certificates/certificate1
205
205
  - test/certificates/certificate_without_head_foot
206
206
  - test/certificates/formatted_certificate