summaryrefslogtreecommitdiff
path: root/passlib/handlers/django.py
diff options
context:
space:
mode:
Diffstat (limited to 'passlib/handlers/django.py')
-rw-r--r--passlib/handlers/django.py39
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?