| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| | |
As part of merge:
* various: reverted the py26 compat fixes from rev 5e2f92012412
* test utils: stripped out "has_real_subtest" compat from rev c732a9e2a582,
since now on py35+, which always has .subTest() method
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* refactored DjangoBehaviorTest so instead of a monolothic "test_config()" method;
there are now a bunch of different test methods. additionally, the ones with
loops now use TestCase.subTest() to parameter things appropriately.
*no changes to logic of the tests*
* added TestCase.subTest() stub & wrapper to make debugging subtests easier.
* added some documentation to test classes.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(should fix long-standing issue 98)
* test_ext_django:
- Simplified "stock config" setup code. It now gets it's "sha_rounds" value
from the django source, so we don't have to manually update it every time
django changes their default. This should require less maintenance across
minor django releases. (Should fix issue 98, and prevent recurrence)
- Updated tests to account for quirks in how encoded hashes are handled.
Specifically: None, "", and invalid hashes all cause subtly different
behaviors across django versions. tests pass against django 1.8 - 3.1.
- split "empty hash" test out from the loop it shared with "null hash" test,
since the two behave differently.
* tox: expanded envlist to explicitly test a bunch more django versions
(1.8 - 3.1); and remove some needless "django 2.x + py2" tests
* passlib.apps: reformatted django CryptContext declarations;
added one for django 2.1 (which dropped "django_bcrypt" it's default list)
* passlib.ext.django:
- added internal "quirks" helper as central place to track
minor edge-case changes between django versions.
- passlib_to_django() helper now falls back to searching hasher classes
directly, even if patch isn't installed. this allows it to work
for django hashers that have been removed from django's default list.
|
| |
| |
| |
| |
| |
| | |
some tests depend on seeing it.
(reverts change from rev be9a9121d5a7)
|
| |
| |
| |
| | |
this inherits from ValueError, and has same text, so backwards compatible.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
removing unittest2 also allowed removing "passlib.tests.backports"
|
| | |
|
| | |
|
|\ \
| |/ |
|
| |
| |
| |
| | |
removed "gae" from tox suite (no meaningful difference from posix tests)
|
| |
| |
| |
| |
| |
| | |
backends;
and some related helper methods.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
now return a single unified InternalBackendError() class,
instead of AssertionError.
This change has a couple of parts:
* assert statements replaced with permanent checks,
since crypt() is unpredictable enough that we need to have this always on,
even if production runs code in "-O2" mode.
* added debug_only_repr() helper which allows including sensitive stuff
like salts & hash digests within error tracebacks -- will only do so
when global flag is enabled; and that's currently only set by unittest suite.
* added new InternalBackendError() exception class (a RuntimeError subclass);
which is raised instead of an AssertionError.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* tests now filter out some passlib deprecation warnings
* bugfix: @doesnt_require_backend() decorator (rev XXX) now silences
MissingBackendError exceptions thrown during HandlerCase.setUp()
* simplified some monkeypatching within test_registry
|
| |
| |
| |
| | |
des_crypt hashes, for case where OS doesn't have des_crypt support.
|
| |
| |
| |
| | |
also cleaned up comments
|
| |
| |
| |
| |
| | |
mainly a few minor test changes that were missed in prior commits
(rev 7273b2ca68f3, 2bf6312ecd77)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
issues
which were causing it to fail to generate a hash.
bcrypt
------
* _norm_digest(): fixed some PasslibValueError()s being thrown by os_crypt
backend during UT fuzz verifier. These were due to non-UTF8 input
being provided to crypt.crypt()... even though secret itself was UTF8 safe!
This was because secret was being truncated/repeated as part of
various backend bug workarounds; and the truncate/repeat operations
weren't being done in manner that respected UTF8 character boundaries.
This has now been fixed via _require_valid_utf8_bytes flag
(which has been set for os_crypt backend), that enables
utf8-safe mode of operation.
utils
-----
* added utf8_truncate() and utf8_repeat_string() helpers, for bcrypt fixes above.
* simplified repeat_string() internals
|
| |
| |
| |
| |
| |
| | |
under py3,
since these can't be passed through crypt.crypt()
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
which makes os_crypt backend always fail, since crypt.crypt() can only be
made to handle UTF8 byte strings.
* replaced "\xA3" test vector with "\xD1\x91" (from same openwall source);
since the latter is valid UTF8.
* added new test vector to UT suite
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
removed two config flags (alt_safe_crypt_handler, has_os_crypt_fallback)
in favor of making the exceptions just subclass & override the base methods.
did this for bcrypt (retaining old functionality),
and for bcrypt_sha256 (which fixes spurious errors when running tests
on systems w/ os_crypt support, like OpenBSD).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
being run on systems where "os_crypt" backend detected as missing.
This was because of conflict with create_backend_case(), which marks
ALL methods as skipped if backend isn't present. Reworked so certain methods
can be marked as "run anyways". In particular, we want platform_crypt_support
checks to always run, since they're there as sanity check that our "os_crypt"
detection routines are actually working in the first place :)
Also rewrote test_82_crypt_support() contents to add some code comments.
|
| |
| |
| |
| | |
so stats can be gathered retreived even if hash isn't available (e.g. FIPS mode)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
on FIPS systems (issue 116).
* lookup_hash():
- moved all hash consturctor error checks / handling into HashInfo object,
which simplifies lookup_hash() internals
- [minor] added "required" kwd, inverse of the now-deprecated "return_unknown" kwd
- [minor] now caches unknown/unsupported HashInfo records.
* HashInfo:
- now catches ValueErrors thrown by hash constructor,
and special-cased detection of "disabled for fips" errors.
- stub instances now have constructor that throws UnknownHashError,
instead of being None. calling code should detect stub instances via
the new "not info.supported" instead of testing for "info.const is None".
* create_hex_digest() now defaults to creating handlers w/ mock hash func
when it's not present (e.g. due to FIPS). this should let them be imported;
and defer the errors until they're actually used.
* added _set_mock_fips_mode() and some helps to make lookup_hash()
fake a FIPS mode system (per traceback provided in issue comments).
used this to make some preliminary UTs for the digest & hasher changes above.
|
| |
| |
| |
| |
| | |
removing some aliases that weren't needed anymore,
and adding some new ones.
|
| |
| |
| |
| | |
(fixes issue 114)
|
| | |
|
|\ \
| |/ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* test_ext_django: account for django 1.11 pbkdf2 defaults
* test_handlers_django: looks like django 2 and forward don't expect w
passwords-as-bytes at all, so test suites's "bytes -> str" special case
is now the default / only policy.
* test_handlers_django: django_bcrypt no longer enabled by default as of django 2.2
|
| |
| |
| |
| |
| |
| | |
mask_value() function;
adjusted UTs
|
| | |
|
| | |
|
|\ \
| |/ |
|