diff options
Diffstat (limited to 'passlib/handlers/django.py')
-rw-r--r-- | passlib/handlers/django.py | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/passlib/handlers/django.py b/passlib/handlers/django.py index 6dd499a..aabd998 100644 --- a/passlib/handlers/django.py +++ b/passlib/handlers/django.py @@ -13,7 +13,6 @@ from passlib.handlers.bcrypt import _wrapped_bcrypt from passlib.hash import argon2, bcrypt, pbkdf2_sha1, pbkdf2_sha256 from passlib.utils import to_unicode, rng, getrandstr from passlib.utils.binary import BASE64_CHARS -from passlib.utils.compat import str_to_uascii, uascii_to_str, unicode, u from passlib.crypto.digest import pbkdf2_hmac import passlib.utils.handlers as uh # local @@ -115,13 +114,13 @@ class django_salted_sha1(DjangoSaltedHash): """ name = "django_salted_sha1" django_name = "sha1" - ident = u("sha1$") + ident = u"sha1$" checksum_size = 40 def _calc_checksum(self, secret): - if isinstance(secret, unicode): + if isinstance(secret, str): secret = secret.encode("utf-8") - return str_to_uascii(sha1(self.salt.encode("ascii") + secret).hexdigest()) + return sha1(self.salt.encode("ascii") + secret).hexdigest() class django_salted_md5(DjangoSaltedHash): """This class implements Django's Salted MD5 hash, and follows the :ref:`password-hash-api`. @@ -153,20 +152,20 @@ class django_salted_md5(DjangoSaltedHash): """ name = "django_salted_md5" django_name = "md5" - ident = u("md5$") + ident = u"md5$" checksum_size = 32 def _calc_checksum(self, secret): - if isinstance(secret, unicode): + if isinstance(secret, str): secret = secret.encode("utf-8") - return str_to_uascii(md5(self.salt.encode("ascii") + secret).hexdigest()) + return md5(self.salt.encode("ascii") + secret).hexdigest() #============================================================================= # BCrypt #============================================================================= django_bcrypt = uh.PrefixWrapper("django_bcrypt", bcrypt, - prefix=u('bcrypt$'), ident=u("bcrypt$"), + prefix=u'bcrypt$', ident=u"bcrypt$", # NOTE: this docstring is duplicated in the docs, since sphinx # seems to be having trouble reading it via autodata:: doc="""This class implements Django 1.4's BCrypt wrapper, and follows the :ref:`password-hash-api`. @@ -209,7 +208,7 @@ class django_bcrypt_sha256(_wrapped_bcrypt): # XXX: we can't use .ident attr due to bcrypt code using it. # working around that via django_prefix - django_prefix = u('bcrypt_sha256$') + django_prefix = u'bcrypt_sha256$' @classmethod def identify(cls, hash): @@ -226,17 +225,17 @@ class django_bcrypt_sha256(_wrapped_bcrypt): bhash = hash[len(cls.django_prefix):] if not bhash.startswith("$2"): raise uh.exc.MalformedHashError(cls) - return super(django_bcrypt_sha256, cls).from_string(bhash) + return super().from_string(bhash) def to_string(self): - bhash = super(django_bcrypt_sha256, self).to_string() - return uascii_to_str(self.django_prefix) + bhash + bhash = super().to_string() + return self.django_prefix + bhash def _calc_checksum(self, secret): - if isinstance(secret, unicode): + if isinstance(secret, str): secret = secret.encode("utf-8") secret = hexlify(self._digest(secret).digest()) - return super(django_bcrypt_sha256, self)._calc_checksum(secret) + return super()._calc_checksum(secret) #============================================================================= # PBKDF2 variants @@ -280,7 +279,7 @@ class django_pbkdf2_sha256(DjangoVariableHash): """ name = "django_pbkdf2_sha256" django_name = "pbkdf2_sha256" - ident = u('pbkdf2_sha256$') + ident = u'pbkdf2_sha256$' min_salt_size = 1 max_rounds = 0xffffffff # setting at 32-bit limit for now checksum_chars = uh.PADDED_BASE64_CHARS @@ -331,7 +330,7 @@ class django_pbkdf2_sha1(django_pbkdf2_sha256): """ name = "django_pbkdf2_sha1" django_name = "pbkdf2_sha1" - ident = u('pbkdf2_sha1$') + ident = u'pbkdf2_sha1$' checksum_size = 28 # 20 bytes -> base64 default_rounds = pbkdf2_sha1.default_rounds # NOTE: django 1.6 uses 12000 _digest = "sha1" @@ -346,8 +345,8 @@ class django_pbkdf2_sha1(django_pbkdf2_sha256): django_argon2 = uh.PrefixWrapper( name="django_argon2", wrapped=argon2.using(type="I"), - prefix=u('argon2'), - ident=u('argon2$argon2i$'), + prefix=u'argon2', + ident=u'argon2$argon2i$', # NOTE: this docstring is duplicated in the docs, since sphinx # seems to be having trouble reading it via autodata:: doc="""This class implements Django 1.10's Argon2 wrapper, and follows the :ref:`password-hash-api`. @@ -402,7 +401,7 @@ class django_des_crypt(uh.TruncateMixin, uh.HasSalt, uh.GenericHandler): name = "django_des_crypt" django_name = "crypt" setting_kwds = ("salt", "salt_size", "truncate_error") - ident = u("crypt$") + ident = u"crypt$" checksum_chars = salt_chars = uh.HASH64_CHARS checksum_size = 11 min_salt_size = default_salt_size = 2 @@ -487,7 +486,7 @@ class django_disabled(uh.ifc.DisabledHash, uh.StaticHandler): .. versionchanged:: 1.7 started appending an alphanumeric string. """ name = "django_disabled" - _hash_prefix = u("!") + _hash_prefix = u"!" suffix_length = 40 # XXX: move this to StaticHandler, or wherever _hash_prefix is being used? |