| 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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(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.
|
| | |
|
| |
| |
| |
| | |
this inherits from ValueError, and has same text, so backwards compatible.
|
| | |
|
| |
| |
| |
| | |
of Python 3.5.
|
|\ \
| |/ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
before boolean; bool(NotImplemented) is deprecated as of python 3.9
(fixes issue 125)
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
when encoding issue is found, to separate this from an unexpected error
when calling crypt.crypt() (these will still raise MissingBackendError).
also tweaked internal safe_verify() helper to catch errors thrown by
os_crypt backend (MissingBackendError would previously slip through,
causing spurious UT failures)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
due to a few interlocking issues.
passlib.utils: test_crypt() shouldn't accept hash=<bytes>,
because equality comparison with str will always fail under py3.
* test_crypt() now enforces hash=<unicode_or_str> as input.
it previously allowed hash=bytes, but equality comparison
with unicode (output by safe_crypt) would always return False
under python 3.
* bcrypt's TEST_HASH_2A constant was stored bytes, which was causing os_crypt
detection to fail due to test_crypt() bug above. changed to use native str.
sidewnote: this would have been caught by UTs, except for bug in
test_82_crypt_support() that was fixed in rev 43bae3f786b7.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| | |
(which is also moving)
|
| |
| |
| |
| |
| |
| | |
* updated all relevant urls
* added announcement to changelog & index page
* added "thanks" section for Octobus, CleverCloud, and ReadTheDocs :)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| | |
(fixes issue 115)
|
| |
| |
| |
| | |
(fixes issue 114)
|
| |
| |
| |
| | |
(fixes issue 113)
|
|\ \
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
|\ \
| |/ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
(fixes issue 95).
also added UT which checks behavior against locally-installed 'htpasswd' tool
(if available).
|
|\ \
| |/ |
|
| |
| |
| |
| | |
too old.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* updated requirements to latest version of argon2_cffi & argon2pure;
though internal code should work with older versions.
* reworked argon2 module internals to handle wider range of hash types;
and make default customizable via "type" kwd.
* added reference vectors for "D" and "ID" hashes
|
| |
| |
| |
| |
| |
| | |
* UTs now has basic tests for parsehash() method
* argon2: excluded some settings kwd aliases from parsehash() call
|
| |
| |
| |
| |
| |
| | |
For all prior releases of passlib, `TOTP().to_uri()` would only output an
"issuer" parameter. Per the KeyURI spec, issuer should also be prepended
to the label for backward compatibility.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
per followup to original issue (https://bitbucket.org/ecollins/passlib/issues/88#comment-35296567)
it was pointed out that citation for 32 byte hash output was out of date,
and that argon2_cffi is correctly following the more up-to-date argon2 spec.
this restores the stable branch to the 1.7.1 policy of following argon2_cffi's defaults.
|
| |
| |
| |
| |
| | |
also setting salt length to fixed value,
no longer relying on argon2_cffi's upstream settings for this.
|
| | |
|
|\ \
| |/ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
implementation,
fixed a number of edge cases where we were generating the wrong thing.
tests
-----
* expanded test vectors, and ran them against an ASA 9.6 system.
marked out all vectors that were verified on 9.6 system.
found that user appending, and various size thresholds, weren't being
performed correctly by cisco_pix & cisco_asa -- certain hashes generated prior
to this will be "unverifiable" by a Cisco system.
* consolidated shared pix & asa tests into common base class.
* added test for "spoil_digest" codepath that's been added to cisco_pix _calc_digest()
(see below).
hashers
-------
* cisco_pix & cisco_asa now reject too-large passwords, and silently
return False when verifying them; to match Cisco behavior.
updated truncate policy flags to match new behavior.
* overhaul of _calc_checksum(), to fix identified issues,
lay out guesses & reasoning, and added some citations.
docs
----
* updated docs to list new algorithm, and conditions where the old code
would generate a bad hash.
* general cleanup of doc layout for these hashes
* updated "Cisco Hashes" section to give better listing of known hash formats.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
PasswordHash
-------------
* .truncate_size now used to indicate general "max password size";
* .truncate_error now defined for all hashers, indicates .hash() policy
* added .truncate_verify_reject as companion, indicates corresponding .verify() policy.
HandlerTestCase
---------------
* expanded test functions to check all combinations of truncation policy flags
* fixed fuzzer so it doesn't generate passwords which would throw PasswordSizeError.
|