summaryrefslogtreecommitdiff
path: root/passlib/context.py
diff options
context:
space:
mode:
Diffstat (limited to 'passlib/context.py')
-rw-r--r--passlib/context.py62
1 files changed, 2 insertions, 60 deletions
diff --git a/passlib/context.py b/passlib/context.py
index 3d14238..57b1646 100644
--- a/passlib/context.py
+++ b/passlib/context.py
@@ -18,7 +18,7 @@ from warnings import warn
#libs
from passlib.exc import PasslibConfigWarning, ExpectedStringError, ExpectedTypeError
from passlib.registry import get_crypt_handler, _validate_handler_name
-from passlib.utils import is_crypt_handler, rng, saslprep, tick, to_bytes, \
+from passlib.utils import is_crypt_handler, rng, tick, to_bytes, \
to_unicode
from passlib.utils.compat import bytes, iteritems, num_types, \
PY3, PY_MIN_32, unicode, SafeConfigParser, \
@@ -62,12 +62,6 @@ _coerce_scheme_options = dict(
salt_size=int,
)
-# dict mapping passprep policy name -> implementation
-_passprep_funcs = dict(
- saslprep=saslprep,
- raw=lambda s: s,
-)
-
def _splitcomma(source):
"split comma-separated string into list of strings"
source = source.strip()
@@ -643,7 +637,7 @@ class _CryptRecord(object):
#================================================================
def __init__(self, handler, category=None, deprecated=False,
min_rounds=None, max_rounds=None, default_rounds=None,
- vary_rounds=None, min_verify_time=None, passprep=None,
+ vary_rounds=None, min_verify_time=None,
**settings):
# store basic bits
self.handler = handler
@@ -664,9 +658,6 @@ class _CryptRecord(object):
self.identify = handler.identify
self.genhash = handler.genhash
- # let stringprep code wrap genhash/encrypt/verify if needed
- self._init_passprep(passprep)
-
#================================================================
# virtual attrs
#================================================================
@@ -991,55 +982,6 @@ class _CryptRecord(object):
return False
#================================================================
- # password stringprep
- #================================================================
- def _init_passprep(self, value):
- # NOTE: all of this code assumes secret uses utf-8 encoding if bytes.
- if not value:
- return
- self._stringprep = value
- names = _splitcomma(value)
- if names == ["raw"]:
- return
- funcs = [_passprep_funcs[name] for name in names]
-
- first = funcs[0]
- def wrap(orig):
- def wrapper(secret, *args, **kwds):
- if isinstance(secret, bytes):
- secret = secret.decode("utf-8")
- return orig(first(secret), *args, **kwds)
- update_wrapper(wrapper, orig)
- wrapper._wrapped = orig
- return wrapper
-
- # wrap genhash & encrypt so secret is prep'd
- self.genhash = wrap(self.genhash)
- self.encrypt = wrap(self.encrypt)
-
- # wrap verify so secret is prep'd
- if len(funcs) == 1:
- self.verify = wrap(self.verify)
- else:
- # if multiple fallback prep functions,
- # try to verify with each of them.
- verify = self.verify
- def wrapper(secret, *args, **kwds):
- if isinstance(secret, bytes):
- secret = secret.decode("utf-8")
- seen = set()
- for prep in funcs:
- tmp = prep(secret)
- if tmp not in seen:
- if verify(tmp, *args, **kwds):
- return True
- seen.add(tmp)
- return False
- update_wrapper(wrapper, verify)
- wrapper._wrapped = verify
- self.verify = wrapper
-
- #================================================================
# eoc
#================================================================