Fix more pack/sigver python3 incompatibility

More strings/bytes issues and another usage of the moved urlencode
function.
This commit is contained in:
Clint Byrum
2015-05-27 10:45:59 -07:00
parent 695e7b0c96
commit f896df852f
2 changed files with 5 additions and 4 deletions

View File

@@ -126,7 +126,7 @@ def http_redirect_message(message, location, relay_state="", typ="SAMLRequest",
raise Unsupported("Signing algorithm")
else:
string = "&".join([urlencode({k: args[k]})
for k in _order if k in args])
for k in _order if k in args]).encode('ascii')
args["Signature"] = base64.b64encode(signer.sign(string, key))
string = urlencode(args)
else:

View File

@@ -11,7 +11,7 @@ import hashlib
import logging
import os
import ssl
import urllib
from six.moves.urllib.parse import urlencode
from time import mktime
from binascii import hexlify
@@ -528,7 +528,7 @@ def rsa_eq(key1, key2):
def extract_rsa_key_from_x509_cert(pem):
# Convert from PEM to DER
der = ssl.PEM_cert_to_DER_cert(pem)
der = ssl.PEM_cert_to_DER_cert(pem.decode('ascii'))
# Extract subjectPublicKeyInfo field from X.509 certificate (see RFC3280)
cert = DerSequence()
@@ -635,7 +635,8 @@ def verify_redirect_signature(saml_msg, cert=None, sigkey=None):
_args = saml_msg.copy()
del _args["Signature"] # everything but the signature
string = "&".join(
[urllib.urlencode({k: _args[k]}) for k in _order if k in _args])
[urlencode({k: _args[k]}) for k in _order if k in
_args]).encode('ascii')
if cert:
_key = extract_rsa_key_from_x509_cert(pem_format(cert))
else: