diff --git a/src/saml2/__init__.py b/src/saml2/__init__.py index 6608607..4cea570 100644 --- a/src/saml2/__init__.py +++ b/src/saml2/__init__.py @@ -17,7 +17,7 @@ provides methods and functions to convert SAML classes to and from strings. """ -__version__ = "4.0.3" +__version__ = "4.0.4rc1" import logging import six diff --git a/src/saml2/aes.py b/src/saml2/aes.py index f04f751..027c7a3 100644 --- a/src/saml2/aes.py +++ b/src/saml2/aes.py @@ -1,8 +1,10 @@ #!/usr/bin/env python import os +from base64 import b64encode +from base64 import b64decode + from Cryptodome import Random from Cryptodome.Cipher import AES -from base64 import b64encode, b64decode __author__ = 'rolandh' diff --git a/src/saml2/entity.py b/src/saml2/entity.py index 4ab74c9..f696dab 100644 --- a/src/saml2/entity.py +++ b/src/saml2/entity.py @@ -1,12 +1,15 @@ import base64 -# from binascii import hexlify -from binascii import hexlify import copy import logging -from hashlib import sha1 -from Cryptodome.PublicKey import RSA import requests import six + +from binascii import hexlify +from hashlib import sha1 + +# from Crypto.PublicKey import RSA +from Cryptodome.PublicKey import RSA + from saml2.metadata import ENDPOINTS from saml2.profile import paos, ecp from saml2.soap import parse_soap_enveloped_saml_artifact_resolve diff --git a/src/saml2/httputil.py b/src/saml2/httputil.py index 607baed..148f180 100644 --- a/src/saml2/httputil.py +++ b/src/saml2/httputil.py @@ -5,14 +5,16 @@ import time import cgi import six -from six.moves.urllib.parse import quote, parse_qs -from six.moves.http_cookies import SimpleCookie +from future.backports.http.cookies import SimpleCookie +from future.backports.urllib.parse import quote +from future.backports.urllib.parse import parse_qs -from saml2 import BINDING_HTTP_ARTIFACT, SAMLError +from saml2 import BINDING_HTTP_ARTIFACT from saml2 import BINDING_HTTP_REDIRECT from saml2 import BINDING_HTTP_POST from saml2 import BINDING_URI from saml2 import BINDING_SOAP +from saml2 import SAMLError from saml2 import time_util __author__ = 'rohe0002' @@ -240,10 +242,7 @@ def unpack_redirect(environ): def unpack_post(environ): - try: - return dict([(k, v[0]) for k, v in parse_qs(get_post(environ))]) - except Exception: - return None + return dict([(k, v[0]) for k, v in parse_qs(get_post(environ))]) def unpack_soap(environ): diff --git a/src/saml2/s2repoze/plugins/sp.py b/src/saml2/s2repoze/plugins/sp.py index 7c263d5..7ae7b20 100644 --- a/src/saml2/s2repoze/plugins/sp.py +++ b/src/saml2/s2repoze/plugins/sp.py @@ -5,7 +5,6 @@ and SAML2 attribute aggregations as metadata collector in your WSGI application. """ -import cgi import logging import sys import platform @@ -13,10 +12,12 @@ import shelve import traceback import saml2 import six -from six.moves.urllib.parse import parse_qs, urlparse from saml2.samlp import Extensions from saml2 import xmldsig as ds +from future.backports.urllib.parse import parse_qs +from future.backports.urllib.parse import urlparse + from six import StringIO from paste.httpexceptions import HTTPSeeOther, HTTPRedirection diff --git a/src/saml2/s_utils.py b/src/saml2/s_utils.py index 2b31ead..0751360 100644 --- a/src/saml2/s_utils.py +++ b/src/saml2/s_utils.py @@ -169,6 +169,7 @@ def rndstr(size=16, alphabet=""): alphabet = string.ascii_letters[0:52] + string.digits return type(alphabet)().join(rng.choice(alphabet) for _ in range(size)) + def rndbytes(size=16, alphabet=""): """ Returns rndstr always as a binary type diff --git a/src/saml2/saml.py b/src/saml2/saml.py index c7c05f8..483611f 100644 --- a/src/saml2/saml.py +++ b/src/saml2/saml.py @@ -101,12 +101,15 @@ def _decode_attribute_value(typ, text): def _verify_value_type(typ, val): - #print("verify value type: %s, %s" % (typ, val)) + # print("verify value type: %s, %s" % (typ, val)) if typ == XSD + "string": try: return str(val) except UnicodeEncodeError: - return unicode(val) + if six.PY2: + return unicode(val) + else: + return val.decode('utf8') if typ == XSD + "integer" or typ == XSD + "int": return int(val) if typ == XSD + "float" or typ == XSD + "double": diff --git a/src/saml2/sigver.py b/src/saml2/sigver.py index 252fbbd..5ffd21d 100644 --- a/src/saml2/sigver.py +++ b/src/saml2/sigver.py @@ -12,12 +12,22 @@ import hashlib import logging import os import ssl -from six.moves.urllib.parse import urlencode from time import mktime from binascii import hexlify +from future.backports.urllib.parse import urlencode import six +# from Crypto.PublicKey.RSA import importKey +# from Crypto.Signature import PKCS1_v1_5 +# from Crypto.Util.asn1 import DerSequence +# from Crypto.PublicKey import RSA +# from Crypto.Hash import SHA +# from Crypto.Hash import SHA224 +# from Crypto.Hash import SHA256 +# from Crypto.Hash import SHA384 +# from Crypto.Hash import SHA512 + from Cryptodome.PublicKey.RSA import importKey from Cryptodome.Signature import PKCS1_v1_5 from Cryptodome.Util.asn1 import DerSequence