@@ -156,9 +156,30 @@ class RequestTest < Test::Unit::TestCase
156156 params = OneLogin ::RubySaml ::Authrequest . new . create_params ( settings )
157157 request_xml = Base64 . decode64 ( params [ "SAMLRequest" ] )
158158 assert_match %r[<SignatureValue>([a-zA-Z0-9/+=]+)</SignatureValue>] , request_xml
159+ request_xml =~ /<SignatureMethod Algorithm='http:\/ \/ www.w3.org\/ 2000\/ 09\/ xmldsig#rsa-sha1'\/ >/
160+ request_xml =~ /<DigestMethod Algorithm='http:\/ \/ www.w3.org\/ 2000\/ 09\/ xmldsig#rsa-sha1'\/ >/
161+ end
162+
163+ should "create a signed request with 256 digest and signature methods" do
164+ settings = OneLogin ::RubySaml ::Settings . new
165+ settings . compress_request = false
166+ settings . idp_sso_target_url = "http://example.com?field=value"
167+ settings . security [ :authn_requests_signed ] = true
168+ settings . security [ :embeed_sign ] = true
169+ settings . security [ :signature_method ] = XMLSecurity ::Document ::SHA256
170+ settings . security [ :digest_method ] = XMLSecurity ::Document ::SHA512
171+ settings . certificate = ruby_saml_cert_text
172+ settings . private_key = ruby_saml_key_text
173+
174+ params = OneLogin ::RubySaml ::Authrequest . new . create_params ( settings )
175+ request_xml = Base64 . decode64 ( params [ "SAMLRequest" ] )
176+ assert_match %r[<SignatureValue>([a-zA-Z0-9/+=]+)</SignatureValue>] , request_xml
177+ request_xml =~ /<SignatureMethod Algorithm='http:\/ \/ www.w3.org\/ 2001\/ 04\/ xmldsig-more#rsa-sha256'\/ >/
178+ request_xml =~ /<DigestMethod Algorithm='http:\/ \/ www.w3.org\/ 2001\/ 04\/ xmldsig-more#rsa-sha512'\/ >/
159179 end
160180 end
161181
182+
162183 context "when the settings indicate to sign the request" do
163184 should "create a signature parameter" do
164185 settings = OneLogin ::RubySaml ::Settings . new
@@ -167,12 +188,20 @@ class RequestTest < Test::Unit::TestCase
167188 settings . assertion_consumer_service_binding = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
168189 settings . security [ :authn_requests_signed ] = true
169190 settings . security [ :embeed_sign ] = false
191+ settings . security [ :signature_method ] = XMLSecurity ::Document ::SHA1
170192 settings . certificate = ruby_saml_cert_text
171193 settings . private_key = ruby_saml_key_text
172194
173195 params = OneLogin ::RubySaml ::Authrequest . new . create_params ( settings )
174196 assert params [ 'Signature' ]
175- assert params [ 'SigAlg' ] == 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
197+ assert params [ 'SigAlg' ] == XMLSecurity ::Document ::SHA1
198+
199+ # signature_method only affects the embedeed signature
200+ settings . security [ :signature_method ] = XMLSecurity ::Document ::SHA256
201+ params = OneLogin ::RubySaml ::Authrequest . new . create_params ( settings )
202+ assert params [ 'Signature' ]
203+ assert params [ 'SigAlg' ] == XMLSecurity ::Document ::SHA1
204+
176205 end
177206
178207 end
0 commit comments