ruby-saml 0.8.13 → 0.8.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ruby-saml might be problematic. Click here for more details.

@@ -157,7 +157,7 @@ module OneLogin
157
157
  validate_response_state(soft) &&
158
158
  validate_conditions(soft) &&
159
159
  validate_audience(soft) &&
160
- document.validate_document(get_fingerprint, soft) &&
160
+ validate_signature(soft) &&
161
161
  success?
162
162
  end
163
163
 
@@ -225,7 +225,6 @@ module OneLogin
225
225
 
226
226
  if verified_seis.include?(sei)
227
227
  return soft ? false : validation_error("Duplicated Reference URI. SAML Response rejected")
228
- return append_error("Duplicated Reference URI. SAML Response rejected")
229
228
  end
230
229
 
231
230
  verified_seis.push(sei)
@@ -400,17 +399,57 @@ module OneLogin
400
399
  true
401
400
  end
402
401
 
402
+ def validate_signature(soft = true)
403
+ error_msg = "Invalid Signature on SAML Response"
404
+
405
+ sig_elements = REXML::XPath.match(
406
+ document,
407
+ "/p:Response[@ID=$id]/ds:Signature]",
408
+ { "p" => PROTOCOL, "ds" => DSIG },
409
+ { 'id' => document.signed_element_id }
410
+ )
411
+
412
+ # Check signature nodes
413
+ if sig_elements.nil? || sig_elements.size == 0
414
+ sig_elements = REXML::XPath.match(
415
+ document,
416
+ "/p:Response/a:Assertion[@ID=$id]/ds:Signature",
417
+ {"p" => PROTOCOL, "a" => ASSERTION, "ds"=>DSIG},
418
+ { 'id' => document.signed_element_id }
419
+ )
420
+ end
421
+
422
+ if sig_elements.size != 1
423
+ if sig_elements.size == 0
424
+ error_msg += ". Signed element id ##{doc.signed_element_id} is not found"
425
+ else
426
+ error_msg += ". Signed element id ##{doc.signed_element_id} is found more than once"
427
+ end
428
+ return soft ? false : validation_error(error_msg)
429
+ end
430
+
431
+ opts = {}
432
+ opts[:fingerprint_alg] = OpenSSL::Digest::SHA1.new
433
+ opts[:cert] = settings.idp_cert
434
+ fingerprint = get_fingerprint
435
+
436
+ unless fingerprint
437
+ return soft ? false : validation_error("No fingerprint or certificate on settings")
438
+ end
439
+
440
+ unless document.validate_document(fingerprint, soft, opts)
441
+ return soft ? false : validation_error(error_msg)
442
+ end
443
+
444
+ true
445
+ end
446
+
403
447
  def parse_time(node, attribute)
404
448
  if node && node.attributes[attribute]
405
449
  Time.parse(node.attributes[attribute])
406
450
  end
407
451
  end
408
452
 
409
- # Validates the Audience, (If the Audience match the Service Provider EntityID)
410
- # If fails, the error is added to the errors array
411
- # @return [Boolean] True if there is an Audience Element that match the Service Provider EntityID, otherwise False if soft=True
412
- # @raise [ValidationError] if soft == false and validation fails
413
- #
414
453
  def validate_audience(soft = true)
415
454
  return true if audiences.empty? || settings.sp_entity_id.nil? || settings.sp_entity_id.empty?
416
455
 
@@ -1,5 +1,5 @@
1
1
  module OneLogin
2
2
  module RubySaml
3
- VERSION = '0.8.13'
3
+ VERSION = '0.8.14'
4
4
  end
5
5
  end
@@ -251,6 +251,8 @@ module XMLSecurity
251
251
  if idp_cert.to_pem != cert.to_pem
252
252
  return false
253
253
  end
254
+ elsif not idp_cert
255
+ return soft ? false : (raise OneLogin::RubySaml::ValidationError.new("Certificate element missing in response (ds:X509Certificate) and not cert provided at settings"))
254
256
  else
255
257
  base64_cert = Base64.encode64(idp_cert.to_pem)
256
258
  end
@@ -4,7 +4,10 @@ class ResponseTest < Minitest::Test
4
4
 
5
5
  describe "Response" do
6
6
  it "raise an exception when response is initialized with nil" do
7
- assert_raises(ArgumentError) { OneLogin::RubySaml::Response.new(nil) }
7
+ err = assert_raises(ArgumentError) do
8
+ OneLogin::RubySaml::Response.new(nil)
9
+ end
10
+ assert_equal "Response cannot be nil", err.message
8
11
  end
9
12
 
10
13
  it "be able to parse a document which contains ampersands" do
@@ -45,12 +48,71 @@ class ResponseTest < Minitest::Test
45
48
  end
46
49
 
47
50
  describe "#validate!" do
51
+ it "raise when settings not initialized" do
52
+ response = OneLogin::RubySaml::Response.new(response_document)
53
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
54
+ response.validate!
55
+ end
56
+ assert_equal "No settings on response", err.message
57
+ end
58
+
48
59
  it "raise when encountering a condition that prevents the document from being valid" do
49
60
  response = OneLogin::RubySaml::Response.new(response_document)
50
- assert_raises(OneLogin::RubySaml::ValidationError) do
61
+ response.settings = settings
62
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
51
63
  response.validate!
52
64
  end
65
+ assert_equal "Current time is on or after NotOnOrAfter condition", err.message
53
66
  end
67
+
68
+ it "raises an exception when no cert or fingerprint provided" do
69
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
70
+ response.stubs(:conditions).returns(nil)
71
+ settings = OneLogin::RubySaml::Settings.new
72
+ response.settings = settings
73
+ settings.idp_cert = nil
74
+ settings.idp_cert_fingerprint = nil
75
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
76
+ response.validate!
77
+ end
78
+ assert_equal "No fingerprint or certificate on settings", err.message
79
+ end
80
+
81
+ it "raise when no signature" do
82
+ response_no_signed_elements = OneLogin::RubySaml::Response.new(read_invalid_response("no_signature.xml.base64"))
83
+ settings.idp_cert_fingerprint = signature_fingerprint_1
84
+ response_no_signed_elements.settings = settings
85
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
86
+ response_no_signed_elements.validate!
87
+ end
88
+ assert_equal "Found an unexpected number of Signature Element. SAML Response rejected", err.message
89
+ end
90
+
91
+ it "raise when multiple signatures" do
92
+ response_multiple_signed = OneLogin::RubySaml::Response.new(read_invalid_response("multiple_signed.xml.base64"))
93
+ settings.idp_cert_fingerprint = signature_fingerprint_1
94
+ response_multiple_signed.settings = settings
95
+ response_multiple_signed.stubs(:validate_structure).returns(true)
96
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
97
+ response_multiple_signed.validate!
98
+ end
99
+ assert_equal "Duplicated ID. SAML Response rejected", err.message
100
+ end
101
+
102
+ it "raise when fingerprint missmatch" do
103
+ resp_xml = Base64.decode64(response_document_valid_signed)
104
+ response = OneLogin::RubySaml::Response.new(Base64.encode64(resp_xml))
105
+ response.stubs(:conditions).returns(nil)
106
+ settings = OneLogin::RubySaml::Settings.new
107
+ settings.idp_cert_fingerprint = signature_fingerprint_1
108
+ response.settings = settings
109
+
110
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
111
+ response.validate!
112
+ end
113
+ assert_equal 'Fingerprint mismatch', err.message
114
+ end
115
+
54
116
  end
55
117
 
56
118
  describe "#is_valid?" do
@@ -64,6 +126,16 @@ class ResponseTest < Minitest::Test
64
126
  assert !response.is_valid?
65
127
  end
66
128
 
129
+ it "return false when no cert or fingerprint provided" do
130
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
131
+ response.stubs(:conditions).returns(nil)
132
+ settings = OneLogin::RubySaml::Settings.new
133
+ response.settings = settings
134
+ settings.idp_cert = nil
135
+ settings.idp_cert_fingerprint = nil
136
+ assert !response.is_valid?
137
+ end
138
+
67
139
  it "return true when the response is initialized with valid data" do
68
140
  response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
69
141
  response.stubs(:conditions).returns(nil)
@@ -80,7 +152,7 @@ class ResponseTest < Minitest::Test
80
152
  response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
81
153
  response.stubs(:conditions).returns(nil)
82
154
  settings = OneLogin::RubySaml::Settings.new
83
- response.settings = settings
155
+ response.settings = settings
84
156
  assert !response.is_valid?
85
157
  assert !response.is_valid?
86
158
  end
@@ -95,7 +167,17 @@ class ResponseTest < Minitest::Test
95
167
  assert response.is_valid?
96
168
  end
97
169
 
98
- it "return true when using certificate instead of fingerprint" do
170
+ it "return true when valid response and using fingerprint" do
171
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
172
+ response.stubs(:conditions).returns(nil)
173
+ settings = OneLogin::RubySaml::Settings.new
174
+ response.settings = settings
175
+ settings.idp_cert = nil
176
+ settings.idp_cert_fingerprint = "4B:68:C4:53:C7:D9:94:AA:D9:02:5C:99:D5:EF:CF:56:62:87:FE:8D"
177
+ assert response.is_valid?
178
+ end
179
+
180
+ it "return true when valid response using certificate" do
99
181
  response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
100
182
  response.stubs(:conditions).returns(nil)
101
183
  settings = OneLogin::RubySaml::Settings.new
@@ -126,26 +208,6 @@ class ResponseTest < Minitest::Test
126
208
  assert_nil response_wrapped.name_id
127
209
  end
128
210
 
129
- it "raise when no signature" do
130
- response_no_signed_elements = OneLogin::RubySaml::Response.new(read_invalid_response("no_signature.xml.base64"))
131
- settings.idp_cert_fingerprint = signature_fingerprint_1
132
- response_no_signed_elements.settings = settings
133
- error_msg = "Found an unexpected number of Signature Element. SAML Response rejected"
134
- assert_raises(OneLogin::RubySaml::ValidationError, error_msg) do
135
- response_no_signed_elements.validate!
136
- end
137
- end
138
-
139
- it "raise when multiple signatures" do
140
- response_multiple_signed = OneLogin::RubySaml::Response.new(read_invalid_response("multiple_signed.xml.base64"))
141
- settings.idp_cert_fingerprint = signature_fingerprint_1
142
- response_multiple_signed.settings = settings
143
- error_msg = "Duplicated ID. SAML Response rejected"
144
- assert_raises(OneLogin::RubySaml::ValidationError, error_msg) do
145
- response_multiple_signed.validate!
146
- end
147
- end
148
-
149
211
  it "support dynamic namespace resolution on signature elements" do
150
212
  response = OneLogin::RubySaml::Response.new(fixture("no_signature_ns.xml"))
151
213
  response.stubs(:conditions).returns(nil)
@@ -156,6 +218,40 @@ class ResponseTest < Minitest::Test
156
218
  assert response.validate!
157
219
  end
158
220
 
221
+ it "support signature elements with no KeyInfo if cert provided" do
222
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate)
223
+ response.stubs(:conditions).returns(nil)
224
+ settings = OneLogin::RubySaml::Settings.new
225
+ response.settings = settings
226
+ settings.idp_cert = ruby_saml_cert
227
+ settings.idp_cert_fingerprint = nil
228
+ XMLSecurity::SignedDocument.any_instance.expects(:validate_signature).returns(true)
229
+ assert response.validate!
230
+ end
231
+
232
+ it "returns an error if the signature contains no KeyInfo, cert is not provided and soft" do
233
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate)
234
+ response.stubs(:conditions).returns(nil)
235
+ settings = OneLogin::RubySaml::Settings.new
236
+ response.settings = settings
237
+ settings.idp_cert = nil
238
+ settings.idp_cert_fingerprint = "28:74:9B:E8:1F:E8:10:9C:A8:7C:A9:C3:E3:C5:01:6C:92:1C:B4:BA"
239
+ assert !response.is_valid?
240
+ end
241
+
242
+ it "raises an exception if the signature contains no KeyInfo, cert is not provided and no soft" do
243
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate)
244
+ response.stubs(:conditions).returns(nil)
245
+ settings = OneLogin::RubySaml::Settings.new
246
+ response.settings = settings
247
+ settings.idp_cert = nil
248
+ settings.idp_cert_fingerprint = "28:74:9B:E8:1F:E8:10:9C:A8:7C:A9:C3:E3:C5:01:6C:92:1C:B4:BA"
249
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
250
+ response.validate!
251
+ end
252
+ assert_equal "Certificate element missing in response (ds:X509Certificate) and not cert provided at settings", err.message
253
+ end
254
+
159
255
  it "validate ADFS assertions" do
160
256
  response = OneLogin::RubySaml::Response.new(fixture(:adfs_response_sha256))
161
257
  response.stubs(:conditions).returns(nil)
@@ -174,16 +270,6 @@ class ResponseTest < Minitest::Test
174
270
  assert response.validate!
175
271
  end
176
272
 
177
- it "validate SAML 2.0 XML structure" do
178
- resp_xml = Base64.decode64(response_document_valid_signed).gsub(/emailAddress/,'test')
179
- response = OneLogin::RubySaml::Response.new(Base64.encode64(resp_xml))
180
- response.stubs(:conditions).returns(nil)
181
- settings = OneLogin::RubySaml::Settings.new
182
- settings.idp_cert_fingerprint = signature_fingerprint_1
183
- response.settings = settings
184
- assert_raises(OneLogin::RubySaml::ValidationError, 'Digest mismatch'){ response.validate! }
185
- end
186
-
187
273
  it "Prevent node text with comment (VU#475445) attack" do
188
274
  response_doc = File.read(File.join(File.dirname(__FILE__), "responses", 'response_node_text_attack.xml.base64'))
189
275
  response = OneLogin::RubySaml::Response.new(response_doc)
@@ -272,6 +358,54 @@ class ResponseTest < Minitest::Test
272
358
  end
273
359
  end
274
360
 
361
+ describe "validate_signature" do
362
+ it "raises an exception when no cert or fingerprint provided" do
363
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
364
+ settings = OneLogin::RubySaml::Settings.new
365
+ response.settings = settings
366
+ settings.idp_cert = nil
367
+ settings.idp_cert_fingerprint = nil
368
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
369
+ response.send(:validate_signature, false)
370
+ end
371
+ assert_equal "No fingerprint or certificate on settings", err.message
372
+ end
373
+
374
+ it "raises an exception when wrong cert provided" do
375
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
376
+ settings = OneLogin::RubySaml::Settings.new
377
+ response.settings = settings
378
+ settings.idp_cert = ruby_saml_cert2
379
+ settings.idp_cert_fingerprint = nil
380
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
381
+ response.send(:validate_signature, false)
382
+ end
383
+ assert_equal "Fingerprint mismatch", err.message
384
+ end
385
+
386
+ it "raises an exception when wrong fingerprint provided" do
387
+ response = OneLogin::RubySaml::Response.new(response_document_valid_signed)
388
+ settings = OneLogin::RubySaml::Settings.new
389
+ response.settings = settings
390
+ settings.idp_cert = nil
391
+ settings.idp_cert_fingerprint = "28:74:9B:E8:1F:E8:10:9C:A8:7C:A9:C3:E3:C5:01:6C:92:1C:B4:BA"
392
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
393
+ response.send(:validate_signature, false)
394
+ end
395
+ assert_equal "Fingerprint mismatch", err.message
396
+ end
397
+
398
+ it "raises an exception when no signature" do
399
+ response_no_signed_elements = OneLogin::RubySaml::Response.new(read_invalid_response("no_signature.xml.base64"))
400
+ settings.idp_cert_fingerprint = signature_fingerprint_1
401
+ response_no_signed_elements.settings = settings
402
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
403
+ response_no_signed_elements.validate!
404
+ end
405
+ assert_equal "Found an unexpected number of Signature Element. SAML Response rejected", err.message
406
+ end
407
+ end
408
+
275
409
  describe "#attributes" do
276
410
  before do
277
411
  @response = OneLogin::RubySaml::Response.new(response_document)
@@ -464,6 +598,10 @@ class ResponseTest < Minitest::Test
464
598
  response_wrapped.stubs(:validate_subject_confirmation).returns(true)
465
599
  settings.idp_cert_fingerprint = "385b1eec71143f00db6af936e2ea12a28771d72c"
466
600
  assert !response_wrapped.is_valid?
601
+ err = assert_raises(OneLogin::RubySaml::ValidationError) do
602
+ response_wrapped.validate!
603
+ end
604
+ assert_equal "Found an invalid Signed Element. SAML Response rejected", err.message
467
605
  end
468
606
  end
469
607
 
@@ -475,8 +613,9 @@ class ResponseTest < Minitest::Test
475
613
  settings.idp_cert_fingerprint = '4b68c453c7d994aad9025c99d5efcf566287fe8d'
476
614
  response_wrapped.stubs(:conditions).returns(nil)
477
615
  response_wrapped.stubs(:validate_subject_confirmation).returns(true)
616
+ response_wrapped.stubs(:validate_structure).returns(true)
478
617
  assert !response_wrapped.is_valid?
479
- assert_raises(OneLogin::RubySaml::ValidationError, "SAML Response must contain 1 assertion"){ response_wrapped.validate! }
618
+ assert !response_wrapped.validate!
480
619
  end
481
620
  end
482
621
 
@@ -295,7 +295,7 @@ class XmlSecurityTest < Minitest::Test
295
295
  end
296
296
 
297
297
  describe "StarfieldTMS" do
298
- before do
298
+ before do
299
299
  @response = OneLogin::RubySaml::Response.new(fixture(:starfield_response))
300
300
  @response.settings = OneLogin::RubySaml::Settings.new( :idp_cert_fingerprint => "8D:BA:53:8E:A3:B6:F9:F1:69:6C:BB:D9:D8:BD:41:B3:AC:4F:9D:4D")
301
301
  end
@@ -373,6 +373,35 @@ class XmlSecurityTest < Minitest::Test
373
373
  assert document.name_id.nil?, 'Document should expose only signed, valid details'
374
374
  end
375
375
  end
376
+
377
+ describe 'when response has no cert and you provide cert' do
378
+ let(:document) { OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate).document }
379
+ let(:idp_cert) { OpenSSL::X509::Certificate.new(ruby_saml_cert_text) }
380
+ let(:options) { {} }
381
+
382
+ it 'is valid' do
383
+ options[:cert] = idp_cert
384
+ assert document.document.validate_document(idp_cert, true, options), 'Document should be valid'
385
+ end
386
+ end
387
+
388
+ describe 'when response has no cert and you dont provide cert' do
389
+ let(:document) { OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate).document }
390
+ let(:options) { {} }
391
+ let(:idp_cert) { nil }
392
+
393
+ it 'is invalid' do
394
+ options[:cert] = idp_cert
395
+ assert !document.document.validate_document(idp_cert, true, options), 'Document should not be valid'
396
+ end
397
+
398
+ it 'is invalid and error raised' do
399
+ options[:cert] = idp_cert
400
+ assert_raises(OneLogin::RubySaml::ValidationError) do
401
+ document.document.validate_document(idp_cert, false, options)
402
+ end
403
+ end
404
+ end
376
405
  end
377
406
 
378
407
  describe '#validate_document_with_cert' do
@@ -387,8 +416,8 @@ class XmlSecurityTest < Minitest::Test
387
416
  assert document.validate_document_with_cert(idp_cert), 'Document should be valid'
388
417
  end
389
418
  end
390
-
391
- describe 'when response has no cert but you have local cert' do
419
+
420
+ describe 'when response has no cert and you provide cert' do
392
421
  let(:document) { OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate).document }
393
422
  let(:idp_cert) { OpenSSL::X509::Certificate.new(ruby_saml_cert_text) }
394
423
 
@@ -396,6 +425,21 @@ class XmlSecurityTest < Minitest::Test
396
425
  assert document.validate_document_with_cert(idp_cert), 'Document should be valid'
397
426
  end
398
427
  end
428
+
429
+ describe 'when response has no cert and you dont provide cert' do
430
+ let(:document) { OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate).document }
431
+ let(:idp_cert) { nil }
432
+
433
+ it 'is invalid' do
434
+ assert !document.validate_document_with_cert(idp_cert), 'Document should not be valid'
435
+ end
436
+
437
+ it 'is invalid and error raised' do
438
+ assert_raises(OneLogin::RubySaml::ValidationError) do
439
+ document.validate_document_with_cert(idp_cert, false)
440
+ end
441
+ end
442
+ end
399
443
  end
400
444
  end
401
445
  end
metadata CHANGED
@@ -1,41 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-saml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.13
4
+ version: 0.8.14
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - OneLogin LLC
8
- autorequire:
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2020-07-23 00:00:00.000000000 Z
12
+ date: 2020-10-19 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: uuid
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '2.3'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '2.3'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: nokogiri
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: 1.5.0
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: 1.5.0
41
46
  description: SAML toolkit for Ruby on Rails
@@ -46,9 +51,9 @@ extra_rdoc_files:
46
51
  - LICENSE
47
52
  - README.md
48
53
  files:
49
- - ".document"
50
- - ".gitignore"
51
- - ".travis.yml"
54
+ - .document
55
+ - .gitignore
56
+ - .travis.yml
52
57
  - Gemfile
53
58
  - LICENSE
54
59
  - README.md
@@ -127,27 +132,28 @@ files:
127
132
  - test/xml_security_test.rb
128
133
  homepage: http://github.com/onelogin/ruby-saml
129
134
  licenses: []
130
- metadata: {}
131
- post_install_message:
135
+ post_install_message:
132
136
  rdoc_options:
133
- - "--charset=UTF-8"
137
+ - --charset=UTF-8
134
138
  require_paths:
135
139
  - lib
136
140
  required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
137
142
  requirements:
138
- - - ">="
143
+ - - ! '>='
139
144
  - !ruby/object:Gem::Version
140
145
  version: '0'
141
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
142
148
  requirements:
143
- - - ">="
149
+ - - ! '>='
144
150
  - !ruby/object:Gem::Version
145
151
  version: '0'
146
152
  requirements: []
147
153
  rubyforge_project: http://www.rubygems.org/gems/ruby-saml
148
- rubygems_version: 2.4.8
149
- signing_key:
150
- specification_version: 4
154
+ rubygems_version: 1.8.23.2
155
+ signing_key:
156
+ specification_version: 3
151
157
  summary: SAML Ruby Tookit
152
158
  test_files:
153
159
  - test/certificates/certificate1
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c3f3a436bf74c3342e13ed40b9d6d7c71e8b25f1
4
- data.tar.gz: c39cb2b2fa7844d97cd83e2d6a34f7a5ab68151e
5
- SHA512:
6
- metadata.gz: 38e6e375700d52f5bd4300dc5a1e7b9b20e5283b00371418730b1857ffc9b98857e72066a9ea67b504953eddaefc8683a0d40a29156f614dc18f9aaea7e7e0e5
7
- data.tar.gz: a93d2f2c35bed0a8c44db64e3672aa8e811883d37b0386618dd51d0d7a9f19ddd37c59381dfa2c94cc04a361f3ecce8cd9677dc9ab6f44dee4eb653fefedba91