samlsso 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/samlsso/version.rb +1 -1
- data/lib/xml_security.rb +16 -7
- data/samlsso-0.1.4.gem +0 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c479c3d00dab26b27abac39e977a53d0f00d94f
|
4
|
+
data.tar.gz: c7a702cbac650ccda58721c97d5ab74731b8bf49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0be017698f649229731f2787dfedfcfb0e8f0935096ffddf998d7920e51871158882acde73dcac1b4a575a3b3b61e06da6bd70fa42221fe4e0290048244bd328
|
7
|
+
data.tar.gz: 1b3308dac45366ede2aacafaea28ebc19ec17bd9c7ca0e1cecc9a2d3e958b73e5902669db5351383be6abae3bcbe6e8fe05e83affe48d30be0f2fc37169c11a7
|
data/lib/samlsso/version.rb
CHANGED
data/lib/xml_security.rb
CHANGED
@@ -208,7 +208,8 @@ module XMLSecurity
|
|
208
208
|
end
|
209
209
|
|
210
210
|
# verify signature
|
211
|
-
signed_info_element
|
211
|
+
signed_info_element = REXML::XPath.first(@sig_element, "//ds:SignedInfo", {"ds"=>DSIG})
|
212
|
+
signed_info_element = REXML::XPath.first(@sig_element, "//ds:SignedInfo") unless signed_info_element
|
212
213
|
noko_sig_element = document.at_xpath('//ds:Signature', 'ds' => DSIG)
|
213
214
|
noko_signed_info_element = noko_sig_element.at_xpath('./ds:SignedInfo', 'ds' => DSIG)
|
214
215
|
canon_algorithm = canon_algorithm REXML::XPath.first(@sig_element, '//ds:CanonicalizationMethod', 'ds' => DSIG)
|
@@ -216,7 +217,9 @@ module XMLSecurity
|
|
216
217
|
noko_sig_element.remove
|
217
218
|
|
218
219
|
# check digests
|
219
|
-
REXML::XPath.each(@sig_element, "//ds:Reference", {"ds"=>DSIG})
|
220
|
+
tmp = REXML::XPath.each(@sig_element, "//ds:Reference", {"ds"=>DSIG})
|
221
|
+
tmp = REXML::XPath.each(@sig_element, "//ds:Reference") unless tmp.count > 0
|
222
|
+
tmp do |ref|
|
220
223
|
uri = ref.attributes.get_attribute("URI").value
|
221
224
|
|
222
225
|
hashed_element = document.at_xpath("//*[@ID='#{uri[1..-1]}']")
|
@@ -226,7 +229,10 @@ module XMLSecurity
|
|
226
229
|
digest_algorithm = algorithm(REXML::XPath.first(ref, "//ds:DigestMethod", 'ds' => DSIG))
|
227
230
|
|
228
231
|
hash = digest_algorithm.digest(canon_hashed_element)
|
229
|
-
|
232
|
+
|
233
|
+
base64_digest = REXML::XPath.first(ref, "//ds:DigestValue", {"ds"=>DSIG})
|
234
|
+
base64_digest = REXML::XPath.first(ref, "//ds:DigestValue") unless base64_digest
|
235
|
+
digest_value = Base64.decode64(base64_digest.text)
|
230
236
|
|
231
237
|
unless digests_match?(hash, digest_value)
|
232
238
|
@errors << "Digest mismatch"
|
@@ -234,15 +240,18 @@ module XMLSecurity
|
|
234
240
|
end
|
235
241
|
end
|
236
242
|
|
237
|
-
base64_signature = REXML::XPath.first(@sig_element, "//ds:SignatureValue", {"ds"=>DSIG})
|
238
|
-
|
243
|
+
base64_signature = REXML::XPath.first(@sig_element, "//ds:SignatureValue", {"ds"=>DSIG})
|
244
|
+
base64_signature = REXML::XPath.first(@sig_element, "//ds:SignatureValue") unless base64_signature
|
245
|
+
signature = Base64.decode64(base64_signature.text)
|
239
246
|
|
240
247
|
# get certificate object
|
241
248
|
cert_text = Base64.decode64(base64_cert)
|
242
249
|
cert = OpenSSL::X509::Certificate.new(cert_text)
|
243
250
|
|
244
251
|
# signature method
|
245
|
-
|
252
|
+
signature_method = REXML::XPath.first(signed_info_element, "//ds:SignatureMethod", {"ds"=>DSIG})
|
253
|
+
signature_method = REXML::XPath.first(signed_info_element, "//ds:SignatureMethod") unless signature_method
|
254
|
+
signature_algorithm = algorithm(signature_method)
|
246
255
|
|
247
256
|
unless cert.public_key.verify(signature_algorithm.new, signature, canon_string)
|
248
257
|
@errors << "Key validation error"
|
@@ -273,4 +282,4 @@ module XMLSecurity
|
|
273
282
|
end
|
274
283
|
|
275
284
|
end
|
276
|
-
end
|
285
|
+
end
|
data/samlsso-0.1.4.gem
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: samlsso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siddhartha Mukherjee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: uuid
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/schemas/xml.xsd
|
140
140
|
- lib/schemas/xmldsig-core-schema.xsd
|
141
141
|
- lib/xml_security.rb
|
142
|
+
- samlsso-0.1.4.gem
|
142
143
|
- samlsso.gemspec
|
143
144
|
homepage: https://github.com/siddhartham/samlsso
|
144
145
|
licenses:
|
@@ -161,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
162
|
version: '0'
|
162
163
|
requirements: []
|
163
164
|
rubyforge_project:
|
164
|
-
rubygems_version: 2.
|
165
|
+
rubygems_version: 2.2.2
|
165
166
|
signing_key:
|
166
167
|
specification_version: 4
|
167
168
|
summary: SAML SSO for Ruby
|