py$(PYV): remove tox env folder $(@D)/.tox/py$(PYV) py$(PYV): commands[0] $(@D)/.tox/py$(PYV)> python -m nose passlib.tests HtdigestFile: test constructor autoload ... ok HtdigestFile: test delete() ... ok HtdigestFile: test_01_delete_autosave (passlib.tests.test_apache.HtdigestFileTest) ... ok HtdigestFile: test update() ... ok HtdigestFile: test users() ... ok HtdigestFile: test check_password() ... ok HtdigestFile: test load() ... ok HtdigestFile: test save() ... ok HtdigestFile: test realms() & delete_realm() ... ok HtdigestFile: test get_hash() ... ok HtdigestFile: test encoding parameter ... ok HtdigestFile: test to_string() ... ok HtdigestFile: test_11_malformed (passlib.tests.test_apache.HtdigestFileTest) ... ok HtpasswdFile: test constructor autoload ... ok HtpasswdFile: test_00_from_path (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: test delete() ... ok HtpasswdFile: test_01_delete_autosave (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: test set_password() ... ok HtpasswdFile: test_02_set_password_autosave (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: test set_password() -- default_scheme ... ok HtpasswdFile: test users() ... ok HtpasswdFile: test check_password() ... ok HtpasswdFile: test load() ... ok HtpasswdFile: test save() ... ok HtpasswdFile: test 'encoding' kwd ... ok HtpasswdFile: test get_hash() ... ok HtpasswdFile: test to_string ... ok HtpasswdFile: test_10_repr (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: test_11_malformed (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: test_12_from_string (passlib.tests.test_apache.HtpasswdFileTest) ... ok HtpasswdFile: whitespace & comment handling ... ok HtpasswdFile: verify "htpasswd" command can read output ... ok HtpasswdFile: verify "htpasswd" command can read bcrypt format ... ok test_custom_app_context (passlib.tests.test_apps.AppsTest) ... ok test_django16_context (passlib.tests.test_apps.AppsTest) ... ok test_django_context (passlib.tests.test_apps.AppsTest) ... ok test_ldap_context (passlib.tests.test_apps.AppsTest) ... ok test_ldap_mysql_context (passlib.tests.test_apps.AppsTest) ... ok test_ldap_nocrypt_context (passlib.tests.test_apps.AppsTest) ... ok test_master_context (passlib.tests.test_apps.AppsTest) ... ok test_phpbb3_context (passlib.tests.test_apps.AppsTest) ... ok test_phppass_context (passlib.tests.test_apps.AppsTest) ... ok test_postgres_context (passlib.tests.test_apps.AppsTest) ... ok test_roundup_context (passlib.tests.test_apps.AppsTest) ... ok CryptContext: test class constructor ... ok CryptContext: test from_string() constructor ... ok CryptContext: test from_path() constructor ... ok CryptContext: test copy() method ... ok CryptContext: test repr() ... ok CryptContext: test load() / load_path() method ... ok CryptContext: test load() errors restore old state ... ok CryptContext: test update() method ... ok CryptContext: test basic option parsing ... ok CryptContext: test 'schemes' context option parsing ... ok CryptContext: test 'deprecated' context option parsing ... ok CryptContext: test 'default' context option parsing ... ok CryptContext: test 'vary_rounds' hash option parsing ... ok CryptContext: test schemes() method ... ok CryptContext: test default_scheme() method ... ok CryptContext: test handler() method ... ok CryptContext: test internal _get_record_options() method ... ok CryptContext: test to_dict() method ... ok CryptContext: test to_string() method ... ok CryptContext: test basic hash/identify/verify functionality ... ok CryptContext: test genconfig() method ... ok CryptContext: test genhash() method ... ok CryptContext: test hash() method ... ok CryptContext: test hash() method -- legacy 'scheme' and settings keywords ... ok CryptContext: test identify() border cases ... ok CryptContext: test verify() scheme kwd ... ok CryptContext: test needs_update() method ... ok CryptContext: test verify_and_update() ... ok CryptContext: hash(), verify(), and verify_and_update() -- discard unused context keywords ... ok CryptContext: test rounds limits ... ok CryptContext: test linear vary rounds ... ok CryptContext: test log2 vary rounds ... ok CryptContext: test deprecated='auto' is handled correctly ... ok CryptContext: disabled hash support ... ok CryptContext: dummy_verify() method ... ok CryptContext: harden_verify -- parsing ... ok LazyCryptContext: test_callable_constructor (passlib.tests.test_context.LazyCryptContextTest) ... ok LazyCryptContext: test plain kwds ... ok CryptContext: test constructor ... ok CryptContext: test replace() ... ok CryptContext: test no handlers ... ok CryptContext: test hash_needs_update() method ... ok CryptContext: test non-string hash values cause error ... ok CryptPolicy: test CryptPolicy() constructor ... ok CryptPolicy: test CryptPolicy.from_path() constructor with encodings ... ok CryptPolicy: test CryptPolicy.from_path() constructor ... ok CryptPolicy: test CryptPolicy.from_string() constructor ... ok CryptPolicy: test CryptPolicy.from_source() constructor ... ok CryptPolicy: test CryptPolicy.from_sources() constructor ... ok CryptPolicy: test CryptPolicy.replace() constructor ... ok CryptPolicy: test CryptPolicy() forbidden kwds ... ok CryptPolicy: test has_schemes() method ... ok CryptPolicy: test iter_handlers() method ... ok CryptPolicy: test get_handler() method ... ok CryptPolicy: test get_options() method ... ok CryptPolicy: test handler_is_deprecated() method ... ok CryptPolicy: test get_min_verify_time() method ... ok CryptPolicy: test iter_config() method ... ok CryptPolicy: test to_dict() method ... ok CryptPolicy: test to_string() method ... ok LazyCryptContext: test create_policy() hook, returning CryptPolicy ... ok LazyCryptContext: test plain kwds ... ok passlib.crypto._md4.md4(): informational attributes ... ok passlib.crypto._md4.md4(): copy() method ... ok passlib.crypto._md4.md4(): digest() method ... ok passlib.crypto._md4.md4(): hexdigest() method ... ok passlib.crypto._md4.md4(): update() method ... ok hashlib.new('md4'): informational attributes ... ok hashlib.new('md4'): copy() method ... ok hashlib.new('md4'): digest() method ... ok hashlib.new('md4'): hexdigest() method ... ok hashlib.new('md4'): update() method ... ok passlib.crypto.des: expand_des_key() ... ok passlib.crypto.des: shrink_des_key() ... ok passlib.crypto.des: des_encrypt_block() ... ok passlib.crypto.des: des_encrypt_int_block() ... ok passlib.crypto.digest: lookup_hash() -- alternate types ... ok passlib.crypto.digest: lookup_hash() -- constructor ... ok passlib.crypto.digest: lookup_hash() -- metadata ... ok passlib.crypto.digest: lookup_hash() -- unknown hash name ... ok passlib.crypto.digest: lookup_hash() -- test set_mock_fips_mode() ... ok passlib.crypto.digest: norm_hash_name() ... ok passlib.crypto.digest.pbkdf1: test border cases ... ok passlib.crypto.digest.pbkdf1: test reference vectors ... ok passlib.crypto.digest.pbkdf2_hmac() : verify expected backends are present ... ok passlib.crypto.digest.pbkdf2_hmac() : test border cases ... ok passlib.crypto.digest.pbkdf2_hmac() : test keylen==None ... ok passlib.crypto.digest.pbkdf2_hmac() : test reference vectors ... ok passlib.utils.scrypt.scrypt() : backend management ... ok passlib.utils.scrypt.scrypt() : 'keylen' parameter ... ok passlib.utils.scrypt.scrypt() : backend management -- missing backend ... SKIP: non-builtin backend is present passlib.utils.scrypt.scrypt() : 'n' (rounds) parameter ... ok passlib.utils.scrypt.scrypt() : compare output to other backends ... ok passlib.utils.scrypt.scrypt() : 'p' (parallelism) parameter ... ok passlib.utils.scrypt.scrypt() : 'r' (block size) parameter ... ok passlib.utils.scrypt.scrypt() : reference vectors ... ok passlib.utils.scrypt.scrypt() : 'salt' parameter ... ok passlib.utils.scrypt.scrypt() : 'secret' parameter ... ok passlib.crypto.scrypt._builtin: bmix() ... ok passlib.crypto.scrypt._builtin: salsa20() ... ok passlib.crypto.scrypt._builtin: smix() ... ok passlib.utils.scrypt.scrypt() : backend management ... ok passlib.utils.scrypt.scrypt() : backend management -- default backend ... ok passlib.utils.scrypt.scrypt() : 'keylen' parameter ... ok passlib.utils.scrypt.scrypt() : 'n' (rounds) parameter ... ok passlib.utils.scrypt.scrypt() : compare output to other backends ... $(PROTO_DIR)$(PYTHON_DIR)/vendor-packages/passlib/crypto/scrypt/__init__.py:163: PasslibSecurityWarning: Using builtin scrypt backend, which is 100x slower than is required for adequate security. Installing scrypt support (via 'pip install scrypt') is strongly recommended warn("Using builtin scrypt backend, which is %dx slower than is required " ok passlib.utils.scrypt.scrypt() : 'p' (parallelism) parameter ... ok passlib.utils.scrypt.scrypt() : 'r' (block size) parameter ... ok passlib.utils.scrypt.scrypt() : reference vectors ... ok passlib.utils.scrypt.scrypt() : 'salt' parameter ... ok passlib.utils.scrypt.scrypt() : 'secret' parameter ... ok verify django behavior: run a bunch of subtests for each hasher available in the default django setup ... SKIP: Django not installed verify django behavior: test django's default algorithm ... SKIP: Django not installed verify django behavior: test how methods handle empty string as hash value ... SKIP: Django not installed verify django behavior: test how methods handle empty string as password ... SKIP: Django not installed verify django behavior: test extension config is loaded correctly ... SKIP: Django not installed verify django behavior: test how methods handle invalid hash values. ... SKIP: Django not installed verify django behavior: test how methods handle None as hash value ... SKIP: Django not installed verify django behavior: test how methods handle 'unusable flag' in hash ... SKIP: Django not installed passlib.ext.django plugin: test set_django_password_context patch/unpatch ... SKIP: Django not installed passlib.ext.django plugin: test detection of foreign monkeypatching ... SKIP: Django not installed passlib.ext.django plugin: test Hasher-compatible handler wrappers ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG='disabled' ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG='' ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG default behavior ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG type checks ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_GET_CATEGORY parameter ... SKIP: Django not installed verify extension behavior: run a bunch of subtests for each hasher available in the default django setup ... SKIP: Django not installed verify extension behavior: test django's default algorithm ... SKIP: Django not installed verify extension behavior: test how methods handle empty string as hash value ... SKIP: Django not installed verify extension behavior: test how methods handle empty string as password ... SKIP: Django not installed verify extension behavior: test extension config is loaded correctly ... SKIP: Django not installed verify extension behavior: test how methods handle invalid hash values. ... SKIP: Django not installed verify extension behavior: test how methods handle None as hash value ... SKIP: Django not installed verify extension behavior: test how methods handle 'unusable flag' in hash ... SKIP: Django not installed external django hasher tests ... SKIP: django not installed test_pairs (passlib.tests.test_handlers.RoundupTest) ... ok apr_md5_crypt: validate required attributes ... ok apr_md5_crypt: test basic config-string workflow ... ok apr_md5_crypt: test basic using() workflow ... ok apr_md5_crypt: test basic hash-string workflow. ... ok apr_md5_crypt: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok apr_md5_crypt: test hashes can be unicode or bytes ... ok apr_md5_crypt: test multi-backend support ... SKIP: handler only has one backend apr_md5_crypt: validate optional salt attributes ... ok apr_md5_crypt: test hash() / genconfig() creates new salt each time ... ok apr_md5_crypt: test hash() / genconfig() honors min_salt_size ... ok apr_md5_crypt: test hash() / genconfig() honors max_salt_size ... ok apr_md5_crypt: test hash() honors salt_chars ... ok apr_md5_crypt: test non-string salt values ... ok apr_md5_crypt: validate optional rounds attributes ... SKIP: handler lacks rounds attributes apr_md5_crypt: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents apr_md5_crypt: test password case sensitivity ... ok apr_md5_crypt: test non-string passwords are rejected ... ok apr_md5_crypt: test MAX_PASSWORD_SIZE is enforced ... ok apr_md5_crypt: test forbidden characters not allowed in password ... SKIP: none listed apr_md5_crypt: test known hashes ... ok apr_md5_crypt: parsehash() ... ok apr_md5_crypt: test known alternate hashes ... SKIP: no alternate hashes provided apr_md5_crypt: parsehash() -- known outputs ... SKIP: no samples present apr_md5_crypt: test known config strings ... SKIP: no config strings provided apr_md5_crypt: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided apr_md5_crypt: test known identifiable-but-malformed strings ... ok apr_md5_crypt: test known foreign hashes ... ok apr_md5_crypt: test non-string hashes are rejected ... ok apr_md5_crypt: fuzz testing -- random passwords and options ... ok apr_md5_crypt: multithreaded fuzz testing -- random password & options using multiple threads ... ok apr_md5_crypt: .disable() / .enable() methods ... SKIP: not applicable apr_md5_crypt: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents apr_md5_crypt: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes apr_md5_crypt: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes apr_md5_crypt: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set apr_md5_crypt: test no password size limits enforced (if truncate_size=None) ... ok apr_md5_crypt: validate 'truncate_error' setting & related attributes ... ok apr_md5_crypt: Handler.using() -- default_salt_size ... ok bigcrypt: validate required attributes ... ok bigcrypt: test basic config-string workflow ... ok bigcrypt: test basic using() workflow ... ok bigcrypt: test basic hash-string workflow. ... ok bigcrypt: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bigcrypt: test hashes can be unicode or bytes ... ok bigcrypt: test multi-backend support ... SKIP: handler only has one backend bigcrypt: validate optional salt attributes ... ok bigcrypt: test hash() / genconfig() creates new salt each time ... ok bigcrypt: test hash() / genconfig() honors min_salt_size ... ok bigcrypt: test hash() / genconfig() honors max_salt_size ... ok bigcrypt: test hash() honors salt_chars ... ok bigcrypt: test non-string salt values ... ok bigcrypt: validate optional rounds attributes ... SKIP: handler lacks rounds attributes bigcrypt: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes bigcrypt: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes bigcrypt: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents bigcrypt: test password case sensitivity ... ok bigcrypt: test non-string passwords are rejected ... ok bigcrypt: test MAX_PASSWORD_SIZE is enforced ... ok bigcrypt: test forbidden characters not allowed in password ... SKIP: none listed bigcrypt: test known hashes ... ok bigcrypt: parsehash() ... ok bigcrypt: test known alternate hashes ... SKIP: no alternate hashes provided bigcrypt: parsehash() -- known outputs ... SKIP: no samples present bigcrypt: test known config strings ... SKIP: no config strings provided bigcrypt: test known unidentifiably-mangled strings ... ok bigcrypt: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided bigcrypt: test known foreign hashes ... ok bigcrypt: test non-string hashes are rejected ... ok bigcrypt: fuzz testing -- random passwords and options ... ok bigcrypt: multithreaded fuzz testing -- random password & options using multiple threads ... ok bigcrypt: test_90_internal (passlib.tests.test_handlers.bigcrypt_test) ... ok bigcrypt: .disable() / .enable() methods ... SKIP: not applicable bigcrypt: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents bigcrypt: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes bigcrypt: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes bigcrypt: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bigcrypt: test no password size limits enforced (if truncate_size=None) ... ok bigcrypt: validate 'truncate_error' setting & related attributes ... ok bigcrypt: Handler.using() -- default_salt_size ... ok bsd_nthash: validate required attributes ... ok bsd_nthash: test basic config-string workflow ... ok bsd_nthash: test basic using() workflow ... ok bsd_nthash: test basic hash-string workflow. ... ok bsd_nthash: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bsd_nthash: test hashes can be unicode or bytes ... ok bsd_nthash: test multi-backend support ... SKIP: handler only has one backend bsd_nthash: validate optional salt attributes ... SKIP: handler doesn't have salt bsd_nthash: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt bsd_nthash: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt bsd_nthash: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt bsd_nthash: test hash() honors salt_chars ... SKIP: handler doesn't have salt bsd_nthash: test non-string salt values ... SKIP: handler doesn't have salt bsd_nthash: validate optional rounds attributes ... SKIP: handler lacks rounds attributes bsd_nthash: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes bsd_nthash: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes bsd_nthash: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents bsd_nthash: test password case sensitivity ... ok bsd_nthash: test non-string passwords are rejected ... ok bsd_nthash: test MAX_PASSWORD_SIZE is enforced ... ok bsd_nthash: test forbidden characters not allowed in password ... SKIP: none listed bsd_nthash: test known hashes ... ok bsd_nthash: parsehash() ... SKIP: parsehash() not implemented bsd_nthash: test known alternate hashes ... SKIP: no alternate hashes provided bsd_nthash: parsehash() -- known outputs ... SKIP: parsehash() not implemented bsd_nthash: test known config strings ... SKIP: hash has no settings bsd_nthash: test known unidentifiably-mangled strings ... ok bsd_nthash: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided bsd_nthash: test known foreign hashes ... ok bsd_nthash: test non-string hashes are rejected ... ok bsd_nthash: fuzz testing -- random passwords and options ... ok bsd_nthash: multithreaded fuzz testing -- random password & options using multiple threads ... ok bsd_nthash: .disable() / .enable() methods ... SKIP: not applicable bsd_nthash: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents bsd_nthash: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes bsd_nthash: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes bsd_nthash: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bsd_nthash: test no password size limits enforced (if truncate_size=None) ... ok bsd_nthash: validate 'truncate_error' setting & related attributes ... ok bsd_nthash: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt bsdi_crypt (builtin backend): validate required attributes ... ok bsdi_crypt (builtin backend): test basic config-string workflow ... ok bsdi_crypt (builtin backend): test basic using() workflow ... ok bsdi_crypt (builtin backend): test basic hash-string workflow. ... ok bsdi_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bsdi_crypt (builtin backend): test hashes can be unicode or bytes ... ok bsdi_crypt (builtin backend): test multi-backend support ... ok bsdi_crypt (builtin backend): validate optional salt attributes ... ok bsdi_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok bsdi_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok bsdi_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok bsdi_crypt (builtin backend): test hash() honors salt_chars ... ok bsdi_crypt (builtin backend): test non-string salt values ... ok bsdi_crypt (builtin backend): validate optional rounds attributes ... ok bsdi_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... ok bsdi_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... ok bsdi_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents bsdi_crypt (builtin backend): test password case sensitivity ... ok bsdi_crypt (builtin backend): test non-string passwords are rejected ... ok bsdi_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok bsdi_crypt (builtin backend): test forbidden characters not allowed in password ... ok bsdi_crypt (builtin backend): test known hashes ... ok bsdi_crypt (builtin backend): parsehash() ... ok bsdi_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided bsdi_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present bsdi_crypt (builtin backend): test known config strings ... SKIP: no config strings provided bsdi_crypt (builtin backend): test known unidentifiably-mangled strings ... ok bsdi_crypt (builtin backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided bsdi_crypt (builtin backend): test known foreign hashes ... ok bsdi_crypt (builtin backend): test non-string hashes are rejected ... ok bsdi_crypt (builtin backend): test_77_fuzz_input (passlib.tests.test_handlers.bsdi_crypt_builtin_test) ... ok bsdi_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok bsdi_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable bsdi_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents bsdi_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bsdi_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bsdi_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... ok bsdi_crypt (builtin backend): HasRounds.using() -- default_rounds ... ok bsdi_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bsdi_crypt (builtin backend): HasRounds.using() -- rounds ... ok bsdi_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... ok bsdi_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... ok bsdi_crypt (builtin backend): needs_update() should flag even rounds ... ok bsdi_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bsdi_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok bsdi_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok bsdi_crypt (builtin backend): Handler.using() -- default_salt_size ... ok bsdi_crypt (os_crypt backend): validate required attributes ... SKIP: backend not available bsdi_crypt (os_crypt backend): test basic config-string workflow ... SKIP: backend not available bsdi_crypt (os_crypt backend): test basic using() workflow ... SKIP: backend not available bsdi_crypt (os_crypt backend): test basic hash-string workflow. ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hashes can be unicode or bytes ... SKIP: backend not available bsdi_crypt (os_crypt backend): test multi-backend support ... SKIP: backend not available bsdi_crypt (os_crypt backend): validate optional salt attributes ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() honors salt_chars ... SKIP: backend not available bsdi_crypt (os_crypt backend): test non-string salt values ... SKIP: backend not available bsdi_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: backend not available bsdi_crypt (os_crypt backend): test password case sensitivity ... SKIP: backend not available bsdi_crypt (os_crypt backend): test non-string passwords are rejected ... SKIP: backend not available bsdi_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bsdi_crypt (os_crypt backend): test forbidden characters not allowed in password ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known hashes ... SKIP: backend not available bsdi_crypt (os_crypt backend): parsehash() ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known alternate hashes ... SKIP: backend not available bsdi_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known config strings ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available bsdi_crypt (os_crypt backend): test known foreign hashes ... SKIP: backend not available bsdi_crypt (os_crypt backend): test non-string hashes are rejected ... SKIP: backend not available bsdi_crypt (os_crypt backend): test_77_fuzz_input (passlib.tests.test_handlers.bsdi_crypt_os_crypt_test) ... SKIP: backend not available bsdi_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bsdi_crypt (os_crypt backend): test with faulty crypt() ... SKIP: backend not available bsdi_crypt (os_crypt backend): test per-call crypt() fallback ... SKIP: backend not available bsdi_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = False) bsdi_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bsdi_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bsdi_crypt (os_crypt backend): needs_update() should flag even rounds ... SKIP: backend not available bsdi_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bsdi_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bsdi_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bsdi_crypt (os_crypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available crypt16: validate required attributes ... ok crypt16: test basic config-string workflow ... ok crypt16: test basic using() workflow ... ok crypt16: test basic hash-string workflow. ... ok crypt16: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok crypt16: test hashes can be unicode or bytes ... ok crypt16: test multi-backend support ... SKIP: handler only has one backend crypt16: validate optional salt attributes ... ok crypt16: test hash() / genconfig() creates new salt each time ... ok crypt16: test hash() / genconfig() honors min_salt_size ... ok crypt16: test hash() / genconfig() honors max_salt_size ... ok crypt16: test hash() honors salt_chars ... ok crypt16: test non-string salt values ... ok crypt16: validate optional rounds attributes ... SKIP: handler lacks rounds attributes crypt16: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes crypt16: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes crypt16: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents crypt16: test password case sensitivity ... ok crypt16: test non-string passwords are rejected ... ok crypt16: test MAX_PASSWORD_SIZE is enforced ... ok crypt16: test forbidden characters not allowed in password ... SKIP: none listed crypt16: test known hashes ... ok crypt16: parsehash() ... ok crypt16: test known alternate hashes ... SKIP: no alternate hashes provided crypt16: parsehash() -- known outputs ... SKIP: no samples present crypt16: test known config strings ... SKIP: no config strings provided crypt16: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided crypt16: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided crypt16: test known foreign hashes ... ok crypt16: test non-string hashes are rejected ... ok crypt16: fuzz testing -- random passwords and options ... ok crypt16: multithreaded fuzz testing -- random password & options using multiple threads ... ok crypt16: .disable() / .enable() methods ... SKIP: not applicable crypt16: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents crypt16: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes crypt16: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes crypt16: test password size limits raise truncate_error (if appropriate) ... ok crypt16: test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set crypt16: validate 'truncate_error' setting & related attributes ... ok crypt16: Handler.using() -- default_salt_size ... ok des_crypt (builtin backend): validate required attributes ... ok des_crypt (builtin backend): test basic config-string workflow ... ok des_crypt (builtin backend): test basic using() workflow ... ok des_crypt (builtin backend): test basic hash-string workflow. ... ok des_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok des_crypt (builtin backend): test hashes can be unicode or bytes ... ok des_crypt (builtin backend): test multi-backend support ... ok des_crypt (builtin backend): validate optional salt attributes ... ok des_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok des_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok des_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok des_crypt (builtin backend): test hash() honors salt_chars ... ok des_crypt (builtin backend): test non-string salt values ... ok des_crypt (builtin backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents des_crypt (builtin backend): test password case sensitivity ... ok des_crypt (builtin backend): test non-string passwords are rejected ... ok des_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok des_crypt (builtin backend): test forbidden characters not allowed in password ... ok des_crypt (builtin backend): test known hashes ... ok des_crypt (builtin backend): parsehash() ... ok des_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided des_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present des_crypt (builtin backend): test known config strings ... SKIP: no config strings provided des_crypt (builtin backend): test known unidentifiably-mangled strings ... ok des_crypt (builtin backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided des_crypt (builtin backend): test known foreign hashes ... ok des_crypt (builtin backend): test non-string hashes are rejected ... ok des_crypt (builtin backend): fuzz testing -- random passwords and options ... ok des_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok des_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable des_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents des_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes des_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... ok des_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set des_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok des_crypt (builtin backend): Handler.using() -- default_salt_size ... ok des_crypt (os_crypt backend): validate required attributes ... ok des_crypt (os_crypt backend): test basic config-string workflow ... ok des_crypt (os_crypt backend): test basic using() workflow ... ok des_crypt (os_crypt backend): test basic hash-string workflow. ... ok des_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok des_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok des_crypt (os_crypt backend): test multi-backend support ... ok des_crypt (os_crypt backend): validate optional salt attributes ... ok des_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok des_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok des_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok des_crypt (os_crypt backend): test hash() honors salt_chars ... ok des_crypt (os_crypt backend): test non-string salt values ... ok des_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents des_crypt (os_crypt backend): test password case sensitivity ... ok des_crypt (os_crypt backend): test non-string passwords are rejected ... ok des_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok des_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok des_crypt (os_crypt backend): test known hashes ... ok des_crypt (os_crypt backend): parsehash() ... ok des_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided des_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present des_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided des_crypt (os_crypt backend): test known unidentifiably-mangled strings ... ok des_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided des_crypt (os_crypt backend): test known foreign hashes ... ok des_crypt (os_crypt backend): test non-string hashes are rejected ... ok des_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok des_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok des_crypt (os_crypt backend): test with faulty crypt() ... ok des_crypt (os_crypt backend): test per-call crypt() fallback ... ok des_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) des_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable des_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents des_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes des_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... ok des_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set des_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok des_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok fshp: validate required attributes ... ok fshp: test basic config-string workflow ... ok fshp: test basic using() workflow ... ok fshp: test basic hash-string workflow. ... ok fshp: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok fshp: test hashes can be unicode or bytes ... ok fshp: test multi-backend support ... SKIP: handler only has one backend fshp: validate optional salt attributes ... ok fshp: test hash() / genconfig() creates new salt each time ... ok fshp: test hash() / genconfig() honors min_salt_size ... ok fshp: test hash() / genconfig() honors max_salt_size ... ok fshp: test hash() honors salt_chars ... ok fshp: test non-string salt values ... ok fshp: validate optional rounds attributes ... ok fshp: test hash() / genconfig() honors min_rounds ... ok fshp: test hash() / genconfig() honors max_rounds ... ok fshp: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents fshp: test password case sensitivity ... ok fshp: test non-string passwords are rejected ... ok fshp: test MAX_PASSWORD_SIZE is enforced ... ok fshp: test forbidden characters not allowed in password ... SKIP: none listed fshp: test known hashes ... ok fshp: parsehash() ... ok fshp: test known alternate hashes ... SKIP: no alternate hashes provided fshp: parsehash() -- known outputs ... SKIP: no samples present fshp: test known config strings ... SKIP: no config strings provided fshp: test known unidentifiably-mangled strings ... ok fshp: test known identifiable-but-malformed strings ... ok fshp: test known foreign hashes ... ok fshp: test non-string hashes are rejected ... ok fshp: fuzz testing -- random passwords and options ... ok fshp: multithreaded fuzz testing -- random password & options using multiple threads ... ok fshp: test variant keyword ... ok fshp: .disable() / .enable() methods ... SKIP: not applicable fshp: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents fshp: HasRounds.using() -- max_rounds / max_desired_rounds ... ok fshp: HasRounds.using() -- desired_rounds + needs_update() ... ok fshp: HasRounds.using() -- sanity check test harness ... ok fshp: HasRounds.using() -- default_rounds ... ok fshp: HasRounds.using() -- min_rounds / min_desired_rounds ... ok fshp: HasRounds.using() -- rounds ... ok fshp: HasRounds.using() -- vary_rounds generation ... ok fshp: HasRounds.using() -- vary_rounds parsing ... ok fshp: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set fshp: test no password size limits enforced (if truncate_size=None) ... ok fshp: validate 'truncate_error' setting & related attributes ... ok fshp: Handler.using() -- default_salt_size ... ok hex_md4: validate required attributes ... ok hex_md4: test basic config-string workflow ... ok hex_md4: test basic using() workflow ... ok hex_md4: test basic hash-string workflow. ... ok hex_md4: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok hex_md4: test hashes can be unicode or bytes ... ok hex_md4: test multi-backend support ... SKIP: handler only has one backend hex_md4: validate optional salt attributes ... SKIP: handler doesn't have salt hex_md4: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt hex_md4: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt hex_md4: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt hex_md4: test hash() honors salt_chars ... SKIP: handler doesn't have salt hex_md4: test non-string salt values ... SKIP: handler doesn't have salt hex_md4: validate optional rounds attributes ... SKIP: handler lacks rounds attributes hex_md4: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes hex_md4: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes hex_md4: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents hex_md4: test password case sensitivity ... ok hex_md4: test non-string passwords are rejected ... ok hex_md4: test MAX_PASSWORD_SIZE is enforced ... ok hex_md4: test forbidden characters not allowed in password ... SKIP: none listed hex_md4: test known hashes ... ok hex_md4: parsehash() ... ok hex_md4: test known alternate hashes ... SKIP: no alternate hashes provided hex_md4: parsehash() -- known outputs ... SKIP: no samples present hex_md4: test known config strings ... SKIP: hash has no settings hex_md4: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided hex_md4: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided hex_md4: test known foreign hashes ... ok hex_md4: test non-string hashes are rejected ... ok hex_md4: fuzz testing -- random passwords and options ... ok hex_md4: multithreaded fuzz testing -- random password & options using multiple threads ... ok hex_md4: .disable() / .enable() methods ... SKIP: not applicable hex_md4: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents hex_md4: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes hex_md4: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes hex_md4: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set hex_md4: test no password size limits enforced (if truncate_size=None) ... ok hex_md4: validate 'truncate_error' setting & related attributes ... ok hex_md4: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt hex_md5: validate required attributes ... ok hex_md5: test basic config-string workflow ... ok hex_md5: test basic using() workflow ... ok hex_md5: test basic hash-string workflow. ... ok hex_md5: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok hex_md5: test hashes can be unicode or bytes ... ok hex_md5: test multi-backend support ... SKIP: handler only has one backend hex_md5: validate optional salt attributes ... SKIP: handler doesn't have salt hex_md5: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt hex_md5: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt hex_md5: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt hex_md5: test hash() honors salt_chars ... SKIP: handler doesn't have salt hex_md5: test non-string salt values ... SKIP: handler doesn't have salt hex_md5: validate optional rounds attributes ... SKIP: handler lacks rounds attributes hex_md5: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes hex_md5: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes hex_md5: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents hex_md5: test password case sensitivity ... ok hex_md5: test non-string passwords are rejected ... ok hex_md5: test MAX_PASSWORD_SIZE is enforced ... ok hex_md5: test forbidden characters not allowed in password ... SKIP: none listed hex_md5: test known hashes ... ok hex_md5: parsehash() ... ok hex_md5: test known alternate hashes ... SKIP: no alternate hashes provided hex_md5: parsehash() -- known outputs ... SKIP: no samples present hex_md5: test known config strings ... SKIP: hash has no settings hex_md5: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided hex_md5: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided hex_md5: test known foreign hashes ... ok hex_md5: test non-string hashes are rejected ... ok hex_md5: fuzz testing -- random passwords and options ... ok hex_md5: multithreaded fuzz testing -- random password & options using multiple threads ... ok hex_md5: .disable() / .enable() methods ... SKIP: not applicable hex_md5: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents hex_md5: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes hex_md5: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes hex_md5: if md5 isn't available, a dummy instance should be created. ... ok hex_md5: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set hex_md5: test no password size limits enforced (if truncate_size=None) ... ok hex_md5: validate 'truncate_error' setting & related attributes ... ok hex_md5: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt hex_sha1: validate required attributes ... ok hex_sha1: test basic config-string workflow ... ok hex_sha1: test basic using() workflow ... ok hex_sha1: test basic hash-string workflow. ... ok hex_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok hex_sha1: test hashes can be unicode or bytes ... ok hex_sha1: test multi-backend support ... SKIP: handler only has one backend hex_sha1: validate optional salt attributes ... SKIP: handler doesn't have salt hex_sha1: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt hex_sha1: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt hex_sha1: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt hex_sha1: test hash() honors salt_chars ... SKIP: handler doesn't have salt hex_sha1: test non-string salt values ... SKIP: handler doesn't have salt hex_sha1: validate optional rounds attributes ... SKIP: handler lacks rounds attributes hex_sha1: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes hex_sha1: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes hex_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents hex_sha1: test password case sensitivity ... ok hex_sha1: test non-string passwords are rejected ... ok hex_sha1: test MAX_PASSWORD_SIZE is enforced ... ok hex_sha1: test forbidden characters not allowed in password ... SKIP: none listed hex_sha1: test known hashes ... ok hex_sha1: parsehash() ... ok hex_sha1: test known alternate hashes ... SKIP: no alternate hashes provided hex_sha1: parsehash() -- known outputs ... SKIP: no samples present hex_sha1: test known config strings ... SKIP: hash has no settings hex_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided hex_sha1: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided hex_sha1: test known foreign hashes ... ok hex_sha1: test non-string hashes are rejected ... ok hex_sha1: fuzz testing -- random passwords and options ... ok hex_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok hex_sha1: .disable() / .enable() methods ... SKIP: not applicable hex_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents hex_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes hex_sha1: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes hex_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set hex_sha1: test no password size limits enforced (if truncate_size=None) ... ok hex_sha1: validate 'truncate_error' setting & related attributes ... ok hex_sha1: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt hex_sha256: validate required attributes ... ok hex_sha256: test basic config-string workflow ... ok hex_sha256: test basic using() workflow ... ok hex_sha256: test basic hash-string workflow. ... ok hex_sha256: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok hex_sha256: test hashes can be unicode or bytes ... ok hex_sha256: test multi-backend support ... SKIP: handler only has one backend hex_sha256: validate optional salt attributes ... SKIP: handler doesn't have salt hex_sha256: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt hex_sha256: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt hex_sha256: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt hex_sha256: test hash() honors salt_chars ... SKIP: handler doesn't have salt hex_sha256: test non-string salt values ... SKIP: handler doesn't have salt hex_sha256: validate optional rounds attributes ... SKIP: handler lacks rounds attributes hex_sha256: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes hex_sha256: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes hex_sha256: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents hex_sha256: test password case sensitivity ... ok hex_sha256: test non-string passwords are rejected ... ok hex_sha256: test MAX_PASSWORD_SIZE is enforced ... ok hex_sha256: test forbidden characters not allowed in password ... SKIP: none listed hex_sha256: test known hashes ... ok hex_sha256: parsehash() ... ok hex_sha256: test known alternate hashes ... SKIP: no alternate hashes provided hex_sha256: parsehash() -- known outputs ... SKIP: no samples present hex_sha256: test known config strings ... SKIP: hash has no settings hex_sha256: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided hex_sha256: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided hex_sha256: test known foreign hashes ... ok hex_sha256: test non-string hashes are rejected ... ok hex_sha256: fuzz testing -- random passwords and options ... ok hex_sha256: multithreaded fuzz testing -- random password & options using multiple threads ... ok hex_sha256: .disable() / .enable() methods ... SKIP: not applicable hex_sha256: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents hex_sha256: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes hex_sha256: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes hex_sha256: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set hex_sha256: test no password size limits enforced (if truncate_size=None) ... ok hex_sha256: validate 'truncate_error' setting & related attributes ... ok hex_sha256: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt hex_sha512: validate required attributes ... ok hex_sha512: test basic config-string workflow ... ok hex_sha512: test basic using() workflow ... ok hex_sha512: test basic hash-string workflow. ... ok hex_sha512: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok hex_sha512: test hashes can be unicode or bytes ... ok hex_sha512: test multi-backend support ... SKIP: handler only has one backend hex_sha512: validate optional salt attributes ... SKIP: handler doesn't have salt hex_sha512: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt hex_sha512: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt hex_sha512: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt hex_sha512: test hash() honors salt_chars ... SKIP: handler doesn't have salt hex_sha512: test non-string salt values ... SKIP: handler doesn't have salt hex_sha512: validate optional rounds attributes ... SKIP: handler lacks rounds attributes hex_sha512: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes hex_sha512: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes hex_sha512: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents hex_sha512: test password case sensitivity ... ok hex_sha512: test non-string passwords are rejected ... ok hex_sha512: test MAX_PASSWORD_SIZE is enforced ... ok hex_sha512: test forbidden characters not allowed in password ... SKIP: none listed hex_sha512: test known hashes ... ok hex_sha512: parsehash() ... ok hex_sha512: test known alternate hashes ... SKIP: no alternate hashes provided hex_sha512: parsehash() -- known outputs ... SKIP: no samples present hex_sha512: test known config strings ... SKIP: hash has no settings hex_sha512: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided hex_sha512: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided hex_sha512: test known foreign hashes ... ok hex_sha512: test non-string hashes are rejected ... ok hex_sha512: fuzz testing -- random passwords and options ... ok hex_sha512: multithreaded fuzz testing -- random password & options using multiple threads ... ok hex_sha512: .disable() / .enable() methods ... SKIP: not applicable hex_sha512: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents hex_sha512: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes hex_sha512: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes hex_sha512: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set hex_sha512: test no password size limits enforced (if truncate_size=None) ... ok hex_sha512: validate 'truncate_error' setting & related attributes ... ok hex_sha512: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt htdigest: validate required attributes ... ok htdigest: test basic config-string workflow ... ok htdigest: test basic using() workflow ... ok htdigest: test basic hash-string workflow. ... ok htdigest: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok htdigest: test hashes can be unicode or bytes ... ok htdigest: test multi-backend support ... SKIP: handler only has one backend htdigest: validate optional salt attributes ... SKIP: handler doesn't have salt htdigest: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt htdigest: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt htdigest: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt htdigest: test hash() honors salt_chars ... SKIP: handler doesn't have salt htdigest: test non-string salt values ... SKIP: handler doesn't have salt htdigest: validate optional rounds attributes ... SKIP: handler lacks rounds attributes htdigest: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes htdigest: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes htdigest: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents htdigest: test password case sensitivity ... ok htdigest: test non-string passwords are rejected ... ok htdigest: test MAX_PASSWORD_SIZE is enforced ... ok htdigest: test forbidden characters not allowed in password ... SKIP: none listed htdigest: test known hashes ... ok htdigest: parsehash() ... SKIP: parsehash() not implemented htdigest: test known alternate hashes ... SKIP: no alternate hashes provided htdigest: parsehash() -- known outputs ... SKIP: parsehash() not implemented htdigest: test known config strings ... SKIP: hash has no settings htdigest: test known unidentifiably-mangled strings ... ok htdigest: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided htdigest: test known foreign hashes ... ok htdigest: test non-string hashes are rejected ... ok htdigest: fuzz testing -- random passwords and options ... ok htdigest: multithreaded fuzz testing -- random password & options using multiple threads ... ok htdigest: test_80_user (passlib.tests.test_handlers.htdigest_test) ... SKIP: test case doesn't support 'realm' keyword htdigest: test user case sensitivity ... ok htdigest: test user used as salt ... ok htdigest: .disable() / .enable() methods ... SKIP: not applicable htdigest: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents htdigest: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes htdigest: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes htdigest: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set htdigest: test no password size limits enforced (if truncate_size=None) ... ok htdigest: validate 'truncate_error' setting & related attributes ... ok htdigest: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt ldap_md5_crypt (builtin backend): validate required attributes ... ok ldap_md5_crypt (builtin backend): test basic config-string workflow ... ok ldap_md5_crypt (builtin backend): test basic using() workflow ... ok ldap_md5_crypt (builtin backend): test basic hash-string workflow. ... ok ldap_md5_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_md5_crypt (builtin backend): test hashes can be unicode or bytes ... ok ldap_md5_crypt (builtin backend): test multi-backend support ... ok ldap_md5_crypt (builtin backend): validate optional salt attributes ... ok ldap_md5_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok ldap_md5_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok ldap_md5_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok ldap_md5_crypt (builtin backend): test hash() honors salt_chars ... ok ldap_md5_crypt (builtin backend): test non-string salt values ... ok ldap_md5_crypt (builtin backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_md5_crypt (builtin backend): test password case sensitivity ... ok ldap_md5_crypt (builtin backend): test non-string passwords are rejected ... ok ldap_md5_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok ldap_md5_crypt (builtin backend): test forbidden characters not allowed in password ... ok ldap_md5_crypt (builtin backend): test known hashes ... ok ldap_md5_crypt (builtin backend): parsehash() ... SKIP: parsehash() not implemented ldap_md5_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided ldap_md5_crypt (builtin backend): parsehash() -- known outputs ... SKIP: parsehash() not implemented ldap_md5_crypt (builtin backend): test known config strings ... SKIP: no config strings provided ldap_md5_crypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_md5_crypt (builtin backend): test known identifiable-but-malformed strings ... ok ldap_md5_crypt (builtin backend): test known foreign hashes ... ok ldap_md5_crypt (builtin backend): test non-string hashes are rejected ... ok ldap_md5_crypt (builtin backend): fuzz testing -- random passwords and options ... ok ldap_md5_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_md5_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable ldap_md5_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_md5_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_md5_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_md5_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok ldap_md5_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok ldap_md5_crypt (builtin backend): Handler.using() -- default_salt_size ... ok ldap_md5_crypt (os_crypt backend): validate required attributes ... ok ldap_md5_crypt (os_crypt backend): test basic config-string workflow ... ok ldap_md5_crypt (os_crypt backend): test basic using() workflow ... ok ldap_md5_crypt (os_crypt backend): test basic hash-string workflow. ... ok ldap_md5_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_md5_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok ldap_md5_crypt (os_crypt backend): test multi-backend support ... ok ldap_md5_crypt (os_crypt backend): validate optional salt attributes ... ok ldap_md5_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok ldap_md5_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok ldap_md5_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok ldap_md5_crypt (os_crypt backend): test hash() honors salt_chars ... ok ldap_md5_crypt (os_crypt backend): test non-string salt values ... ok ldap_md5_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_md5_crypt (os_crypt backend): test password case sensitivity ... ok ldap_md5_crypt (os_crypt backend): test non-string passwords are rejected ... ok ldap_md5_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok ldap_md5_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok ldap_md5_crypt (os_crypt backend): test known hashes ... ok ldap_md5_crypt (os_crypt backend): parsehash() ... SKIP: parsehash() not implemented ldap_md5_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided ldap_md5_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: parsehash() not implemented ldap_md5_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided ldap_md5_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_md5_crypt (os_crypt backend): test known identifiable-but-malformed strings ... ok ldap_md5_crypt (os_crypt backend): test known foreign hashes ... ok ldap_md5_crypt (os_crypt backend): test non-string hashes are rejected ... ok ldap_md5_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok ldap_md5_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_md5_crypt (os_crypt backend): test with faulty crypt() ... ok ldap_md5_crypt (os_crypt backend): test per-call crypt() fallback ... ok ldap_md5_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: not applicable to wrappers ldap_md5_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable ldap_md5_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_md5_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_md5_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_md5_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok ldap_md5_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok ldap_md5_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok ldap_md5: validate required attributes ... ok ldap_md5: test basic config-string workflow ... ok ldap_md5: test basic using() workflow ... ok ldap_md5: test basic hash-string workflow. ... ok ldap_md5: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_md5: test hashes can be unicode or bytes ... ok ldap_md5: test multi-backend support ... SKIP: handler only has one backend ldap_md5: validate optional salt attributes ... SKIP: handler doesn't have salt ldap_md5: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt ldap_md5: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt ldap_md5: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt ldap_md5: test hash() honors salt_chars ... SKIP: handler doesn't have salt ldap_md5: test non-string salt values ... SKIP: handler doesn't have salt ldap_md5: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_md5: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_md5: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_md5: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_md5: test password case sensitivity ... ok ldap_md5: test non-string passwords are rejected ... ok ldap_md5: test MAX_PASSWORD_SIZE is enforced ... ok ldap_md5: test forbidden characters not allowed in password ... SKIP: none listed ldap_md5: test known hashes ... ok ldap_md5: parsehash() ... ok ldap_md5: test known alternate hashes ... SKIP: no alternate hashes provided ldap_md5: parsehash() -- known outputs ... SKIP: no samples present ldap_md5: test known config strings ... SKIP: hash has no settings ldap_md5: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_md5: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided ldap_md5: test known foreign hashes ... ok ldap_md5: test non-string hashes are rejected ... ok ldap_md5: fuzz testing -- random passwords and options ... ok ldap_md5: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_md5: .disable() / .enable() methods ... SKIP: not applicable ldap_md5: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_md5: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_md5: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_md5: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_md5: test no password size limits enforced (if truncate_size=None) ... ok ldap_md5: validate 'truncate_error' setting & related attributes ... ok ldap_md5: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt ldap_plaintext: validate required attributes ... ok ldap_plaintext: test basic config-string workflow ... ok ldap_plaintext: test basic using() workflow ... ok ldap_plaintext: test basic hash-string workflow. ... ok ldap_plaintext: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_plaintext: test hashes can be unicode or bytes ... ok ldap_plaintext: test multi-backend support ... SKIP: handler only has one backend ldap_plaintext: validate optional salt attributes ... SKIP: handler doesn't have salt ldap_plaintext: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt ldap_plaintext: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt ldap_plaintext: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt ldap_plaintext: test hash() honors salt_chars ... SKIP: handler doesn't have salt ldap_plaintext: test non-string salt values ... SKIP: handler doesn't have salt ldap_plaintext: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_plaintext: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_plaintext: test password case sensitivity ... ok ldap_plaintext: test non-string passwords are rejected ... ok ldap_plaintext: test MAX_PASSWORD_SIZE is enforced ... ok ldap_plaintext: test forbidden characters not allowed in password ... SKIP: none listed ldap_plaintext: test known hashes ... ok ldap_plaintext: parsehash() ... SKIP: parsehash() not implemented ldap_plaintext: test known alternate hashes ... SKIP: no alternate hashes provided ldap_plaintext: parsehash() -- known outputs ... SKIP: parsehash() not implemented ldap_plaintext: test known config strings ... SKIP: hash has no settings ldap_plaintext: test known unidentifiably-mangled strings ... ok ldap_plaintext: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided ldap_plaintext: test known foreign hashes ... ok ldap_plaintext: test non-string hashes are rejected ... ok ldap_plaintext: fuzz testing -- random passwords and options ... ok ldap_plaintext: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_plaintext: .disable() / .enable() methods ... SKIP: not applicable ldap_plaintext: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_plaintext: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_plaintext: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_plaintext: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_plaintext: test no password size limits enforced (if truncate_size=None) ... ok ldap_plaintext: validate 'truncate_error' setting & related attributes ... ok ldap_plaintext: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt ldap_salted_md5: validate required attributes ... ok ldap_salted_md5: test basic config-string workflow ... ok ldap_salted_md5: test basic using() workflow ... ok ldap_salted_md5: test basic hash-string workflow. ... ok ldap_salted_md5: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_salted_md5: test hashes can be unicode or bytes ... ok ldap_salted_md5: test multi-backend support ... SKIP: handler only has one backend ldap_salted_md5: validate optional salt attributes ... ok ldap_salted_md5: test hash() / genconfig() creates new salt each time ... ok ldap_salted_md5: test hash() / genconfig() honors min_salt_size ... ok ldap_salted_md5: test hash() / genconfig() honors max_salt_size ... ok ldap_salted_md5: test hash() honors salt_chars ... ok ldap_salted_md5: test non-string salt values ... ok ldap_salted_md5: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_salted_md5: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_md5: test password case sensitivity ... ok ldap_salted_md5: test non-string passwords are rejected ... ok ldap_salted_md5: test MAX_PASSWORD_SIZE is enforced ... ok ldap_salted_md5: test forbidden characters not allowed in password ... SKIP: none listed ldap_salted_md5: test known hashes ... ok ldap_salted_md5: parsehash() ... ok ldap_salted_md5: test known alternate hashes ... SKIP: no alternate hashes provided ldap_salted_md5: parsehash() -- known outputs ... SKIP: no samples present ldap_salted_md5: test known config strings ... SKIP: no config strings provided ldap_salted_md5: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_salted_md5: test known identifiable-but-malformed strings ... ok ldap_salted_md5: test known foreign hashes ... ok ldap_salted_md5: test non-string hashes are rejected ... ok ldap_salted_md5: fuzz testing -- random passwords and options ... ok ldap_salted_md5: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_salted_md5: .disable() / .enable() methods ... SKIP: not applicable ldap_salted_md5: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_md5: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_salted_md5: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_salted_md5: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_salted_md5: test no password size limits enforced (if truncate_size=None) ... ok ldap_salted_md5: validate 'truncate_error' setting & related attributes ... ok ldap_salted_md5: Handler.using() -- default_salt_size ... ok ldap_salted_sha1: validate required attributes ... ok ldap_salted_sha1: test basic config-string workflow ... ok ldap_salted_sha1: test basic using() workflow ... ok ldap_salted_sha1: test basic hash-string workflow. ... ok ldap_salted_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_salted_sha1: test hashes can be unicode or bytes ... ok ldap_salted_sha1: test multi-backend support ... SKIP: handler only has one backend ldap_salted_sha1: validate optional salt attributes ... ok ldap_salted_sha1: test hash() / genconfig() creates new salt each time ... ok ldap_salted_sha1: test hash() / genconfig() honors min_salt_size ... ok ldap_salted_sha1: test hash() / genconfig() honors max_salt_size ... ok ldap_salted_sha1: test hash() honors salt_chars ... ok ldap_salted_sha1: test non-string salt values ... ok ldap_salted_sha1: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_salted_sha1: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha1: test password case sensitivity ... ok ldap_salted_sha1: test non-string passwords are rejected ... ok ldap_salted_sha1: test MAX_PASSWORD_SIZE is enforced ... ok ldap_salted_sha1: test forbidden characters not allowed in password ... SKIP: none listed ldap_salted_sha1: test known hashes ... ok ldap_salted_sha1: parsehash() ... ok ldap_salted_sha1: test known alternate hashes ... SKIP: no alternate hashes provided ldap_salted_sha1: parsehash() -- known outputs ... SKIP: no samples present ldap_salted_sha1: test known config strings ... SKIP: no config strings provided ldap_salted_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_salted_sha1: test known identifiable-but-malformed strings ... ok ldap_salted_sha1: test known foreign hashes ... ok ldap_salted_sha1: test non-string hashes are rejected ... ok ldap_salted_sha1: fuzz testing -- random passwords and options ... ok ldap_salted_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_salted_sha1: .disable() / .enable() methods ... SKIP: not applicable ldap_salted_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_salted_sha1: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_salted_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_salted_sha1: test no password size limits enforced (if truncate_size=None) ... ok ldap_salted_sha1: validate 'truncate_error' setting & related attributes ... ok ldap_salted_sha1: Handler.using() -- default_salt_size ... ok ldap_salted_sha256: validate required attributes ... ok ldap_salted_sha256: test basic config-string workflow ... ok ldap_salted_sha256: test basic using() workflow ... ok ldap_salted_sha256: test basic hash-string workflow. ... ok ldap_salted_sha256: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_salted_sha256: test hashes can be unicode or bytes ... ok ldap_salted_sha256: test multi-backend support ... SKIP: handler only has one backend ldap_salted_sha256: validate optional salt attributes ... ok ldap_salted_sha256: test hash() / genconfig() creates new salt each time ... ok ldap_salted_sha256: test hash() / genconfig() honors min_salt_size ... ok ldap_salted_sha256: test hash() / genconfig() honors max_salt_size ... ok ldap_salted_sha256: test hash() honors salt_chars ... ok ldap_salted_sha256: test non-string salt values ... ok ldap_salted_sha256: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_salted_sha256: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha256: test password case sensitivity ... ok ldap_salted_sha256: test non-string passwords are rejected ... ok ldap_salted_sha256: test MAX_PASSWORD_SIZE is enforced ... ok ldap_salted_sha256: test forbidden characters not allowed in password ... SKIP: none listed ldap_salted_sha256: test known hashes ... ok ldap_salted_sha256: parsehash() ... ok ldap_salted_sha256: test known alternate hashes ... SKIP: no alternate hashes provided ldap_salted_sha256: parsehash() -- known outputs ... SKIP: no samples present ldap_salted_sha256: test known config strings ... SKIP: no config strings provided ldap_salted_sha256: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_salted_sha256: test known identifiable-but-malformed strings ... ok ldap_salted_sha256: test known foreign hashes ... ok ldap_salted_sha256: test non-string hashes are rejected ... ok ldap_salted_sha256: fuzz testing -- random passwords and options ... ok ldap_salted_sha256: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_salted_sha256: .disable() / .enable() methods ... SKIP: not applicable ldap_salted_sha256: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha256: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_salted_sha256: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_salted_sha256: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_salted_sha256: test no password size limits enforced (if truncate_size=None) ... ok ldap_salted_sha256: validate 'truncate_error' setting & related attributes ... ok ldap_salted_sha256: Handler.using() -- default_salt_size ... ok ldap_salted_sha512: validate required attributes ... ok ldap_salted_sha512: test basic config-string workflow ... ok ldap_salted_sha512: test basic using() workflow ... ok ldap_salted_sha512: test basic hash-string workflow. ... ok ldap_salted_sha512: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_salted_sha512: test hashes can be unicode or bytes ... ok ldap_salted_sha512: test multi-backend support ... SKIP: handler only has one backend ldap_salted_sha512: validate optional salt attributes ... ok ldap_salted_sha512: test hash() / genconfig() creates new salt each time ... ok ldap_salted_sha512: test hash() / genconfig() honors min_salt_size ... ok ldap_salted_sha512: test hash() / genconfig() honors max_salt_size ... ok ldap_salted_sha512: test hash() honors salt_chars ... ok ldap_salted_sha512: test non-string salt values ... ok ldap_salted_sha512: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_salted_sha512: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha512: test password case sensitivity ... ok ldap_salted_sha512: test non-string passwords are rejected ... ok ldap_salted_sha512: test MAX_PASSWORD_SIZE is enforced ... ok ldap_salted_sha512: test forbidden characters not allowed in password ... SKIP: none listed ldap_salted_sha512: test known hashes ... ok ldap_salted_sha512: parsehash() ... ok ldap_salted_sha512: test known alternate hashes ... SKIP: no alternate hashes provided ldap_salted_sha512: parsehash() -- known outputs ... SKIP: no samples present ldap_salted_sha512: test known config strings ... SKIP: no config strings provided ldap_salted_sha512: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_salted_sha512: test known identifiable-but-malformed strings ... ok ldap_salted_sha512: test known foreign hashes ... ok ldap_salted_sha512: test non-string hashes are rejected ... ok ldap_salted_sha512: fuzz testing -- random passwords and options ... ok ldap_salted_sha512: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_salted_sha512: .disable() / .enable() methods ... SKIP: not applicable ldap_salted_sha512: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_salted_sha512: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_salted_sha512: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_salted_sha512: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_salted_sha512: test no password size limits enforced (if truncate_size=None) ... ok ldap_salted_sha512: validate 'truncate_error' setting & related attributes ... ok ldap_salted_sha512: Handler.using() -- default_salt_size ... ok ldap_sha1_crypt (os_crypt backend): validate required attributes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test basic config-string workflow ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test basic using() workflow ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test basic hash-string workflow. ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hashes can be unicode or bytes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test multi-backend support ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): validate optional salt attributes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() honors salt_chars ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test non-string salt values ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test password case sensitivity ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test non-string passwords are rejected ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test forbidden characters not allowed in password ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known hashes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): parsehash() ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known alternate hashes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known config strings ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test known foreign hashes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test non-string hashes are rejected ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test_77_fuzz_input (passlib.tests.test_handlers.ldap_sha1_crypt_os_crypt_test) ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test with faulty crypt() ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test per-call crypt() fallback ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: not applicable to wrappers ldap_sha1_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available ldap_sha1_crypt (os_crypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available ldap_sha1: validate required attributes ... ok ldap_sha1: test basic config-string workflow ... ok ldap_sha1: test basic using() workflow ... ok ldap_sha1: test basic hash-string workflow. ... ok ldap_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_sha1: test hashes can be unicode or bytes ... ok ldap_sha1: test multi-backend support ... SKIP: handler only has one backend ldap_sha1: validate optional salt attributes ... SKIP: handler doesn't have salt ldap_sha1: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt ldap_sha1: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt ldap_sha1: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt ldap_sha1: test hash() honors salt_chars ... SKIP: handler doesn't have salt ldap_sha1: test non-string salt values ... SKIP: handler doesn't have salt ldap_sha1: validate optional rounds attributes ... SKIP: handler lacks rounds attributes ldap_sha1: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes ldap_sha1: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes ldap_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_sha1: test password case sensitivity ... ok ldap_sha1: test non-string passwords are rejected ... ok ldap_sha1: test MAX_PASSWORD_SIZE is enforced ... ok ldap_sha1: test forbidden characters not allowed in password ... SKIP: none listed ldap_sha1: test known hashes ... ok ldap_sha1: parsehash() ... ok ldap_sha1: test known alternate hashes ... SKIP: no alternate hashes provided ldap_sha1: parsehash() -- known outputs ... SKIP: no samples present ldap_sha1: test known config strings ... SKIP: hash has no settings ldap_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_sha1: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided ldap_sha1: test known foreign hashes ... ok ldap_sha1: test non-string hashes are rejected ... ok ldap_sha1: fuzz testing -- random passwords and options ... ok ldap_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok ldap_sha1: .disable() / .enable() methods ... SKIP: not applicable ldap_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes ldap_sha1: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes ldap_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_sha1: test no password size limits enforced (if truncate_size=None) ... ok ldap_sha1: validate 'truncate_error' setting & related attributes ... ok ldap_sha1: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt lmhash: validate required attributes ... ok lmhash: test basic config-string workflow ... ok lmhash: test basic using() workflow ... ok lmhash: test basic hash-string workflow. ... ok lmhash: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok lmhash: test hashes can be unicode or bytes ... ok lmhash: test multi-backend support ... SKIP: handler only has one backend lmhash: validate optional salt attributes ... SKIP: handler doesn't have salt lmhash: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt lmhash: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt lmhash: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt lmhash: test hash() honors salt_chars ... SKIP: handler doesn't have salt lmhash: test non-string salt values ... SKIP: handler doesn't have salt lmhash: validate optional rounds attributes ... SKIP: handler lacks rounds attributes lmhash: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes lmhash: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes lmhash: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents lmhash: test password case sensitivity ... ok lmhash: test non-string passwords are rejected ... ok lmhash: test MAX_PASSWORD_SIZE is enforced ... ok lmhash: test forbidden characters not allowed in password ... SKIP: none listed lmhash: test known hashes ... ok lmhash: parsehash() ... ok lmhash: test known alternate hashes ... SKIP: no alternate hashes provided lmhash: parsehash() -- known outputs ... SKIP: no samples present lmhash: test known config strings ... SKIP: no config strings provided lmhash: test known unidentifiably-mangled strings ... ok lmhash: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided lmhash: test known foreign hashes ... ok lmhash: test non-string hashes are rejected ... ok lmhash: fuzz testing -- random passwords and options ... ok lmhash: multithreaded fuzz testing -- random password & options using multiple threads ... ok lmhash: test lmhash.raw() method ... ok lmhash: .disable() / .enable() methods ... SKIP: not applicable lmhash: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents lmhash: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes lmhash: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes lmhash: test password size limits raise truncate_error (if appropriate) ... ok lmhash: test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set lmhash: validate 'truncate_error' setting & related attributes ... ok lmhash: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt md5_crypt (builtin backend): validate required attributes ... ok md5_crypt (builtin backend): test basic config-string workflow ... ok md5_crypt (builtin backend): test basic using() workflow ... ok md5_crypt (builtin backend): test basic hash-string workflow. ... ok md5_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok md5_crypt (builtin backend): test hashes can be unicode or bytes ... ok md5_crypt (builtin backend): test multi-backend support ... ok md5_crypt (builtin backend): validate optional salt attributes ... ok md5_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok md5_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok md5_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok md5_crypt (builtin backend): test hash() honors salt_chars ... ok md5_crypt (builtin backend): test non-string salt values ... ok md5_crypt (builtin backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents md5_crypt (builtin backend): test password case sensitivity ... ok md5_crypt (builtin backend): test non-string passwords are rejected ... ok md5_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok md5_crypt (builtin backend): test forbidden characters not allowed in password ... ok md5_crypt (builtin backend): test known hashes ... ok md5_crypt (builtin backend): parsehash() ... ok md5_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided md5_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present md5_crypt (builtin backend): test known config strings ... SKIP: no config strings provided md5_crypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided md5_crypt (builtin backend): test known identifiable-but-malformed strings ... ok md5_crypt (builtin backend): test known foreign hashes ... ok md5_crypt (builtin backend): test non-string hashes are rejected ... ok md5_crypt (builtin backend): fuzz testing -- random passwords and options ... ok md5_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok md5_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable md5_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents md5_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes md5_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set md5_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok md5_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok md5_crypt (builtin backend): Handler.using() -- default_salt_size ... ok md5_crypt (os_crypt backend): validate required attributes ... ok md5_crypt (os_crypt backend): test basic config-string workflow ... ok md5_crypt (os_crypt backend): test basic using() workflow ... ok md5_crypt (os_crypt backend): test basic hash-string workflow. ... ok md5_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok md5_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok md5_crypt (os_crypt backend): test multi-backend support ... ok md5_crypt (os_crypt backend): validate optional salt attributes ... ok md5_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok md5_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok md5_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok md5_crypt (os_crypt backend): test hash() honors salt_chars ... ok md5_crypt (os_crypt backend): test non-string salt values ... ok md5_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents md5_crypt (os_crypt backend): test password case sensitivity ... ok md5_crypt (os_crypt backend): test non-string passwords are rejected ... ok md5_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok md5_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok md5_crypt (os_crypt backend): test known hashes ... ok md5_crypt (os_crypt backend): parsehash() ... ok md5_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided md5_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present md5_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided md5_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided md5_crypt (os_crypt backend): test known identifiable-but-malformed strings ... ok md5_crypt (os_crypt backend): test known foreign hashes ... ok md5_crypt (os_crypt backend): test non-string hashes are rejected ... ok md5_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok md5_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok md5_crypt (os_crypt backend): test with faulty crypt() ... ok md5_crypt (os_crypt backend): test per-call crypt() fallback ... ok md5_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) md5_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable md5_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents md5_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes md5_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set md5_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok md5_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok md5_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok msdcc2: validate required attributes ... ok msdcc2: test basic config-string workflow ... ok msdcc2: test basic using() workflow ... ok msdcc2: test basic hash-string workflow. ... ok msdcc2: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok msdcc2: test hashes can be unicode or bytes ... ok msdcc2: test multi-backend support ... SKIP: handler only has one backend msdcc2: validate optional salt attributes ... SKIP: handler doesn't have salt msdcc2: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt msdcc2: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt msdcc2: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt msdcc2: test hash() honors salt_chars ... SKIP: handler doesn't have salt msdcc2: test non-string salt values ... SKIP: handler doesn't have salt msdcc2: validate optional rounds attributes ... SKIP: handler lacks rounds attributes msdcc2: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes msdcc2: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes msdcc2: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents msdcc2: test password case sensitivity ... ok msdcc2: test non-string passwords are rejected ... ok msdcc2: test MAX_PASSWORD_SIZE is enforced ... ok msdcc2: test forbidden characters not allowed in password ... SKIP: none listed msdcc2: test known hashes ... ok msdcc2: parsehash() ... ok msdcc2: test known alternate hashes ... SKIP: no alternate hashes provided msdcc2: parsehash() -- known outputs ... SKIP: no samples present msdcc2: test known config strings ... SKIP: hash has no settings msdcc2: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided msdcc2: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided msdcc2: test known foreign hashes ... ok msdcc2: test non-string hashes are rejected ... ok msdcc2: fuzz testing -- random passwords and options ... ok msdcc2: multithreaded fuzz testing -- random password & options using multiple threads ... ok msdcc2: test user context keyword ... ok msdcc2: test user case sensitivity ... ok msdcc2: test user used as salt ... ok msdcc2: .disable() / .enable() methods ... SKIP: not applicable msdcc2: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents msdcc2: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes msdcc2: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes msdcc2: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set msdcc2: test no password size limits enforced (if truncate_size=None) ... ok msdcc2: validate 'truncate_error' setting & related attributes ... ok msdcc2: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt msdcc: validate required attributes ... ok msdcc: test basic config-string workflow ... ok msdcc: test basic using() workflow ... ok msdcc: test basic hash-string workflow. ... ok msdcc: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok msdcc: test hashes can be unicode or bytes ... ok msdcc: test multi-backend support ... SKIP: handler only has one backend msdcc: validate optional salt attributes ... SKIP: handler doesn't have salt msdcc: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt msdcc: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt msdcc: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt msdcc: test hash() honors salt_chars ... SKIP: handler doesn't have salt msdcc: test non-string salt values ... SKIP: handler doesn't have salt msdcc: validate optional rounds attributes ... SKIP: handler lacks rounds attributes msdcc: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes msdcc: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes msdcc: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents msdcc: test password case sensitivity ... ok msdcc: test non-string passwords are rejected ... ok msdcc: test MAX_PASSWORD_SIZE is enforced ... ok msdcc: test forbidden characters not allowed in password ... SKIP: none listed msdcc: test known hashes ... ok msdcc: parsehash() ... ok msdcc: test known alternate hashes ... ok msdcc: parsehash() -- known outputs ... SKIP: no samples present msdcc: test known config strings ... SKIP: hash has no settings msdcc: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided msdcc: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided msdcc: test known foreign hashes ... ok msdcc: test non-string hashes are rejected ... ok msdcc: fuzz testing -- random passwords and options ... ok msdcc: multithreaded fuzz testing -- random password & options using multiple threads ... ok msdcc: test user context keyword ... ok msdcc: test user case sensitivity ... ok msdcc: test user used as salt ... ok msdcc: .disable() / .enable() methods ... SKIP: not applicable msdcc: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents msdcc: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes msdcc: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes msdcc: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set msdcc: test no password size limits enforced (if truncate_size=None) ... ok msdcc: validate 'truncate_error' setting & related attributes ... ok msdcc: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt mssql2000: validate required attributes ... ok mssql2000: test basic config-string workflow ... ok mssql2000: test basic using() workflow ... ok mssql2000: test basic hash-string workflow. ... ok mssql2000: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok mssql2000: test hashes can be unicode or bytes ... ok mssql2000: test multi-backend support ... SKIP: handler only has one backend mssql2000: validate optional salt attributes ... ok mssql2000: test hash() / genconfig() creates new salt each time ... ok mssql2000: test hash() / genconfig() honors min_salt_size ... ok mssql2000: test hash() / genconfig() honors max_salt_size ... ok mssql2000: test hash() honors salt_chars ... ok mssql2000: test non-string salt values ... ok mssql2000: validate optional rounds attributes ... SKIP: handler lacks rounds attributes mssql2000: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes mssql2000: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes mssql2000: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents mssql2000: test password case sensitivity ... ok mssql2000: test non-string passwords are rejected ... ok mssql2000: test MAX_PASSWORD_SIZE is enforced ... ok mssql2000: test forbidden characters not allowed in password ... SKIP: none listed mssql2000: test known hashes ... ok mssql2000: parsehash() ... ok mssql2000: test known alternate hashes ... ok mssql2000: parsehash() -- known outputs ... SKIP: no samples present mssql2000: test known config strings ... SKIP: no config strings provided mssql2000: test known unidentifiably-mangled strings ... ok mssql2000: test known identifiable-but-malformed strings ... ok mssql2000: test known foreign hashes ... ok mssql2000: test non-string hashes are rejected ... ok mssql2000: fuzz testing -- random passwords and options ... ok mssql2000: multithreaded fuzz testing -- random password & options using multiple threads ... ok mssql2000: .disable() / .enable() methods ... SKIP: not applicable mssql2000: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents mssql2000: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes mssql2000: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes mssql2000: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set mssql2000: test no password size limits enforced (if truncate_size=None) ... ok mssql2000: validate 'truncate_error' setting & related attributes ... ok mssql2000: Handler.using() -- default_salt_size ... ok mssql2005: validate required attributes ... ok mssql2005: test basic config-string workflow ... ok mssql2005: test basic using() workflow ... ok mssql2005: test basic hash-string workflow. ... ok mssql2005: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok mssql2005: test hashes can be unicode or bytes ... ok mssql2005: test multi-backend support ... SKIP: handler only has one backend mssql2005: validate optional salt attributes ... ok mssql2005: test hash() / genconfig() creates new salt each time ... ok mssql2005: test hash() / genconfig() honors min_salt_size ... ok mssql2005: test hash() / genconfig() honors max_salt_size ... ok mssql2005: test hash() honors salt_chars ... ok mssql2005: test non-string salt values ... ok mssql2005: validate optional rounds attributes ... SKIP: handler lacks rounds attributes mssql2005: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes mssql2005: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes mssql2005: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents mssql2005: test password case sensitivity ... ok mssql2005: test non-string passwords are rejected ... ok mssql2005: test MAX_PASSWORD_SIZE is enforced ... ok mssql2005: test forbidden characters not allowed in password ... SKIP: none listed mssql2005: test known hashes ... ok mssql2005: parsehash() ... ok mssql2005: test known alternate hashes ... ok mssql2005: parsehash() -- known outputs ... SKIP: no samples present mssql2005: test known config strings ... SKIP: no config strings provided mssql2005: test known unidentifiably-mangled strings ... ok mssql2005: test known identifiable-but-malformed strings ... ok mssql2005: test known foreign hashes ... ok mssql2005: test non-string hashes are rejected ... ok mssql2005: fuzz testing -- random passwords and options ... ok mssql2005: multithreaded fuzz testing -- random password & options using multiple threads ... ok mssql2005: .disable() / .enable() methods ... SKIP: not applicable mssql2005: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents mssql2005: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes mssql2005: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes mssql2005: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set mssql2005: test no password size limits enforced (if truncate_size=None) ... ok mssql2005: validate 'truncate_error' setting & related attributes ... ok mssql2005: Handler.using() -- default_salt_size ... ok mysql323: validate required attributes ... ok mysql323: test basic config-string workflow ... ok mysql323: test basic using() workflow ... ok mysql323: test basic hash-string workflow. ... ok mysql323: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok mysql323: test hashes can be unicode or bytes ... ok mysql323: test multi-backend support ... SKIP: handler only has one backend mysql323: validate optional salt attributes ... SKIP: handler doesn't have salt mysql323: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt mysql323: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt mysql323: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt mysql323: test hash() honors salt_chars ... SKIP: handler doesn't have salt mysql323: test non-string salt values ... SKIP: handler doesn't have salt mysql323: validate optional rounds attributes ... SKIP: handler lacks rounds attributes mysql323: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes mysql323: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes mysql323: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents mysql323: test password case sensitivity ... ok mysql323: test non-string passwords are rejected ... ok mysql323: test MAX_PASSWORD_SIZE is enforced ... ok mysql323: test forbidden characters not allowed in password ... SKIP: none listed mysql323: test known hashes ... ok mysql323: parsehash() ... ok mysql323: test known alternate hashes ... SKIP: no alternate hashes provided mysql323: parsehash() -- known outputs ... SKIP: no samples present mysql323: test known config strings ... SKIP: hash has no settings mysql323: test known unidentifiably-mangled strings ... ok mysql323: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided mysql323: test known foreign hashes ... ok mysql323: test non-string hashes are rejected ... ok mysql323: fuzz testing -- random passwords and options ... ok mysql323: multithreaded fuzz testing -- random password & options using multiple threads ... ok mysql323: check whitespace is ignored per spec ... ok mysql323: .disable() / .enable() methods ... SKIP: not applicable mysql323: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents mysql323: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes mysql323: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes mysql323: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set mysql323: test no password size limits enforced (if truncate_size=None) ... ok mysql323: validate 'truncate_error' setting & related attributes ... ok mysql323: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt mysql41: validate required attributes ... ok mysql41: test basic config-string workflow ... ok mysql41: test basic using() workflow ... ok mysql41: test basic hash-string workflow. ... ok mysql41: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok mysql41: test hashes can be unicode or bytes ... ok mysql41: test multi-backend support ... SKIP: handler only has one backend mysql41: validate optional salt attributes ... SKIP: handler doesn't have salt mysql41: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt mysql41: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt mysql41: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt mysql41: test hash() honors salt_chars ... SKIP: handler doesn't have salt mysql41: test non-string salt values ... SKIP: handler doesn't have salt mysql41: validate optional rounds attributes ... SKIP: handler lacks rounds attributes mysql41: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes mysql41: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes mysql41: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents mysql41: test password case sensitivity ... ok mysql41: test non-string passwords are rejected ... ok mysql41: test MAX_PASSWORD_SIZE is enforced ... ok mysql41: test forbidden characters not allowed in password ... SKIP: none listed mysql41: test known hashes ... ok mysql41: parsehash() ... ok mysql41: test known alternate hashes ... SKIP: no alternate hashes provided mysql41: parsehash() -- known outputs ... SKIP: no samples present mysql41: test known config strings ... SKIP: hash has no settings mysql41: test known unidentifiably-mangled strings ... ok mysql41: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided mysql41: test known foreign hashes ... ok mysql41: test non-string hashes are rejected ... ok mysql41: fuzz testing -- random passwords and options ... ok mysql41: multithreaded fuzz testing -- random password & options using multiple threads ... ok mysql41: .disable() / .enable() methods ... SKIP: not applicable mysql41: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents mysql41: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes mysql41: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes mysql41: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set mysql41: test no password size limits enforced (if truncate_size=None) ... ok mysql41: validate 'truncate_error' setting & related attributes ... ok mysql41: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt nthash: validate required attributes ... ok nthash: test basic config-string workflow ... ok nthash: test basic using() workflow ... ok nthash: test basic hash-string workflow. ... ok nthash: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok nthash: test hashes can be unicode or bytes ... ok nthash: test multi-backend support ... SKIP: handler only has one backend nthash: validate optional salt attributes ... SKIP: handler doesn't have salt nthash: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt nthash: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt nthash: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt nthash: test hash() honors salt_chars ... SKIP: handler doesn't have salt nthash: test non-string salt values ... SKIP: handler doesn't have salt nthash: validate optional rounds attributes ... SKIP: handler lacks rounds attributes nthash: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes nthash: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes nthash: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents nthash: test password case sensitivity ... ok nthash: test non-string passwords are rejected ... ok nthash: test MAX_PASSWORD_SIZE is enforced ... ok nthash: test forbidden characters not allowed in password ... SKIP: none listed nthash: test known hashes ... ok nthash: parsehash() ... ok nthash: test known alternate hashes ... SKIP: no alternate hashes provided nthash: parsehash() -- known outputs ... SKIP: no samples present nthash: test known config strings ... SKIP: hash has no settings nthash: test known unidentifiably-mangled strings ... ok nthash: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided nthash: test known foreign hashes ... ok nthash: test non-string hashes are rejected ... ok nthash: fuzz testing -- random passwords and options ... ok nthash: multithreaded fuzz testing -- random password & options using multiple threads ... ok nthash: .disable() / .enable() methods ... SKIP: not applicable nthash: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents nthash: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes nthash: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes nthash: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set nthash: test no password size limits enforced (if truncate_size=None) ... ok nthash: validate 'truncate_error' setting & related attributes ... ok nthash: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt oracle10: validate required attributes ... ok oracle10: test basic config-string workflow ... ok oracle10: test basic using() workflow ... ok oracle10: test basic hash-string workflow. ... ok oracle10: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok oracle10: test hashes can be unicode or bytes ... ok oracle10: test multi-backend support ... SKIP: handler only has one backend oracle10: validate optional salt attributes ... SKIP: handler doesn't have salt oracle10: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt oracle10: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt oracle10: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt oracle10: test hash() honors salt_chars ... SKIP: handler doesn't have salt oracle10: test non-string salt values ... SKIP: handler doesn't have salt oracle10: validate optional rounds attributes ... SKIP: handler lacks rounds attributes oracle10: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes oracle10: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes oracle10: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents oracle10: test password case sensitivity ... ok oracle10: test non-string passwords are rejected ... ok oracle10: test MAX_PASSWORD_SIZE is enforced ... ok oracle10: test forbidden characters not allowed in password ... SKIP: none listed oracle10: test known hashes ... ok oracle10: parsehash() ... ok oracle10: test known alternate hashes ... SKIP: no alternate hashes provided oracle10: parsehash() -- known outputs ... SKIP: no samples present oracle10: test known config strings ... SKIP: hash has no settings oracle10: test known unidentifiably-mangled strings ... ok oracle10: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided oracle10: test known foreign hashes ... ok oracle10: test non-string hashes are rejected ... ok oracle10: fuzz testing -- random passwords and options ... ok oracle10: multithreaded fuzz testing -- random password & options using multiple threads ... ok oracle10: test user context keyword ... ok oracle10: test user case sensitivity ... ok oracle10: test user used as salt ... ok oracle10: .disable() / .enable() methods ... SKIP: not applicable oracle10: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents oracle10: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes oracle10: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes oracle10: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set oracle10: test no password size limits enforced (if truncate_size=None) ... ok oracle10: validate 'truncate_error' setting & related attributes ... ok oracle10: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt oracle11: validate required attributes ... ok oracle11: test basic config-string workflow ... ok oracle11: test basic using() workflow ... ok oracle11: test basic hash-string workflow. ... ok oracle11: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok oracle11: test hashes can be unicode or bytes ... ok oracle11: test multi-backend support ... SKIP: handler only has one backend oracle11: validate optional salt attributes ... ok oracle11: test hash() / genconfig() creates new salt each time ... ok oracle11: test hash() / genconfig() honors min_salt_size ... ok oracle11: test hash() / genconfig() honors max_salt_size ... ok oracle11: test hash() honors salt_chars ... ok oracle11: test non-string salt values ... ok oracle11: validate optional rounds attributes ... SKIP: handler lacks rounds attributes oracle11: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes oracle11: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes oracle11: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents oracle11: test password case sensitivity ... ok oracle11: test non-string passwords are rejected ... ok oracle11: test MAX_PASSWORD_SIZE is enforced ... ok oracle11: test forbidden characters not allowed in password ... SKIP: none listed oracle11: test known hashes ... ok oracle11: parsehash() ... ok oracle11: test known alternate hashes ... SKIP: no alternate hashes provided oracle11: parsehash() -- known outputs ... SKIP: no samples present oracle11: test known config strings ... SKIP: no config strings provided oracle11: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided oracle11: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided oracle11: test known foreign hashes ... ok oracle11: test non-string hashes are rejected ... ok oracle11: fuzz testing -- random passwords and options ... ok oracle11: multithreaded fuzz testing -- random password & options using multiple threads ... ok oracle11: .disable() / .enable() methods ... SKIP: not applicable oracle11: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents oracle11: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes oracle11: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes oracle11: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set oracle11: test no password size limits enforced (if truncate_size=None) ... ok oracle11: validate 'truncate_error' setting & related attributes ... ok oracle11: Handler.using() -- default_salt_size ... ok phpass: validate required attributes ... ok phpass: test basic config-string workflow ... ok phpass: test basic using() workflow ... ok phpass: test basic hash-string workflow. ... ok phpass: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok phpass: test hashes can be unicode or bytes ... ok phpass: test multi-backend support ... SKIP: handler only has one backend phpass: validate optional salt attributes ... ok phpass: test hash() / genconfig() creates new salt each time ... ok phpass: test hash() / genconfig() honors min_salt_size ... ok phpass: test hash() / genconfig() honors max_salt_size ... ok phpass: test hash() honors salt_chars ... ok phpass: test non-string salt values ... ok phpass: validate optional rounds attributes ... ok phpass: test hash() / genconfig() honors min_rounds ... ok phpass: test hash() / genconfig() honors max_rounds ... ok phpass: validate HasManyIdents configuration ... ok phpass: test password case sensitivity ... ok phpass: test non-string passwords are rejected ... ok phpass: test MAX_PASSWORD_SIZE is enforced ... ok phpass: test forbidden characters not allowed in password ... SKIP: none listed phpass: test known hashes ... ok phpass: parsehash() ... ok phpass: test known alternate hashes ... SKIP: no alternate hashes provided phpass: parsehash() -- known outputs ... SKIP: no samples present phpass: test known config strings ... SKIP: no config strings provided phpass: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided phpass: test known identifiable-but-malformed strings ... ok phpass: test known foreign hashes ... ok phpass: test non-string hashes are rejected ... ok phpass: fuzz testing -- random passwords and options ... ok phpass: multithreaded fuzz testing -- random password & options using multiple threads ... ok phpass: .disable() / .enable() methods ... SKIP: not applicable phpass: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok phpass: HasRounds.using() -- max_rounds / max_desired_rounds ... ok phpass: HasRounds.using() -- desired_rounds + needs_update() ... ok phpass: HasRounds.using() -- sanity check test harness ... ok phpass: HasRounds.using() -- default_rounds ... ok phpass: HasRounds.using() -- min_rounds / min_desired_rounds ... ok phpass: HasRounds.using() -- rounds ... ok phpass: HasRounds.using() -- vary_rounds generation ... ok phpass: HasRounds.using() -- vary_rounds parsing ... ok phpass: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set phpass: test no password size limits enforced (if truncate_size=None) ... ok phpass: validate 'truncate_error' setting & related attributes ... ok phpass: Handler.using() -- default_salt_size ... ok plaintext: validate required attributes ... ok plaintext: test basic config-string workflow ... ok plaintext: test basic using() workflow ... ok plaintext: test basic hash-string workflow. ... ok plaintext: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok plaintext: test hashes can be unicode or bytes ... ok plaintext: test multi-backend support ... SKIP: handler only has one backend plaintext: validate optional salt attributes ... SKIP: handler doesn't have salt plaintext: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt plaintext: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt plaintext: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt plaintext: test hash() honors salt_chars ... SKIP: handler doesn't have salt plaintext: test non-string salt values ... SKIP: handler doesn't have salt plaintext: validate optional rounds attributes ... SKIP: handler lacks rounds attributes plaintext: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes plaintext: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes plaintext: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents plaintext: test password case sensitivity ... ok plaintext: test non-string passwords are rejected ... ok plaintext: test MAX_PASSWORD_SIZE is enforced ... ok plaintext: test forbidden characters not allowed in password ... SKIP: none listed plaintext: test known hashes ... ok plaintext: parsehash() ... SKIP: parsehash() not implemented plaintext: test known alternate hashes ... SKIP: no alternate hashes provided plaintext: parsehash() -- known outputs ... SKIP: parsehash() not implemented plaintext: test known config strings ... SKIP: hash has no settings plaintext: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided plaintext: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided plaintext: test known foreign hashes ... SKIP: not applicable plaintext: test non-string hashes are rejected ... ok plaintext: fuzz testing -- random passwords and options ... ok plaintext: multithreaded fuzz testing -- random password & options using multiple threads ... ok plaintext: .disable() / .enable() methods ... SKIP: not applicable plaintext: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents plaintext: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes plaintext: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes plaintext: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set plaintext: test no password size limits enforced (if truncate_size=None) ... ok plaintext: validate 'truncate_error' setting & related attributes ... ok plaintext: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt postgres_md5: validate required attributes ... ok postgres_md5: test basic config-string workflow ... ok postgres_md5: test basic using() workflow ... ok postgres_md5: test basic hash-string workflow. ... ok postgres_md5: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok postgres_md5: test hashes can be unicode or bytes ... ok postgres_md5: test multi-backend support ... SKIP: handler only has one backend postgres_md5: validate optional salt attributes ... SKIP: handler doesn't have salt postgres_md5: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt postgres_md5: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt postgres_md5: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt postgres_md5: test hash() honors salt_chars ... SKIP: handler doesn't have salt postgres_md5: test non-string salt values ... SKIP: handler doesn't have salt postgres_md5: validate optional rounds attributes ... SKIP: handler lacks rounds attributes postgres_md5: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes postgres_md5: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes postgres_md5: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents postgres_md5: test password case sensitivity ... ok postgres_md5: test non-string passwords are rejected ... ok postgres_md5: test MAX_PASSWORD_SIZE is enforced ... ok postgres_md5: test forbidden characters not allowed in password ... SKIP: none listed postgres_md5: test known hashes ... ok postgres_md5: parsehash() ... ok postgres_md5: test known alternate hashes ... SKIP: no alternate hashes provided postgres_md5: parsehash() -- known outputs ... SKIP: no samples present postgres_md5: test known config strings ... SKIP: hash has no settings postgres_md5: test known unidentifiably-mangled strings ... ok postgres_md5: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided postgres_md5: test known foreign hashes ... ok postgres_md5: test non-string hashes are rejected ... ok postgres_md5: fuzz testing -- random passwords and options ... ok postgres_md5: multithreaded fuzz testing -- random password & options using multiple threads ... ok postgres_md5: test user context keyword ... ok postgres_md5: test user case sensitivity ... ok postgres_md5: test user used as salt ... ok postgres_md5: .disable() / .enable() methods ... SKIP: not applicable postgres_md5: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents postgres_md5: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes postgres_md5: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes postgres_md5: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set postgres_md5: test no password size limits enforced (if truncate_size=None) ... ok postgres_md5: validate 'truncate_error' setting & related attributes ... ok postgres_md5: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt sha1_crypt (builtin backend): validate required attributes ... ok sha1_crypt (builtin backend): test basic config-string workflow ... ok sha1_crypt (builtin backend): test basic using() workflow ... ok sha1_crypt (builtin backend): test basic hash-string workflow. ... ok sha1_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha1_crypt (builtin backend): test hashes can be unicode or bytes ... ok sha1_crypt (builtin backend): test multi-backend support ... ok sha1_crypt (builtin backend): validate optional salt attributes ... ok sha1_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok sha1_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok sha1_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok sha1_crypt (builtin backend): test hash() honors salt_chars ... ok sha1_crypt (builtin backend): test non-string salt values ... ok sha1_crypt (builtin backend): validate optional rounds attributes ... ok sha1_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... ok sha1_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... ok sha1_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha1_crypt (builtin backend): test password case sensitivity ... ok sha1_crypt (builtin backend): test non-string passwords are rejected ... ok sha1_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok sha1_crypt (builtin backend): test forbidden characters not allowed in password ... ok sha1_crypt (builtin backend): test known hashes ... ok sha1_crypt (builtin backend): parsehash() ... ok sha1_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided sha1_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present sha1_crypt (builtin backend): test known config strings ... SKIP: no config strings provided sha1_crypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha1_crypt (builtin backend): test known identifiable-but-malformed strings ... ok sha1_crypt (builtin backend): test known foreign hashes ... ok sha1_crypt (builtin backend): test non-string hashes are rejected ... ok sha1_crypt (builtin backend): fuzz testing -- random passwords and options ... ok sha1_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok sha1_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable sha1_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha1_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha1_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha1_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... ok sha1_crypt (builtin backend): HasRounds.using() -- default_rounds ... ok sha1_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha1_crypt (builtin backend): HasRounds.using() -- rounds ... ok sha1_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... ok sha1_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... ok sha1_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha1_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok sha1_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok sha1_crypt (builtin backend): Handler.using() -- default_salt_size ... ok sha1_crypt (os_crypt backend): validate required attributes ... SKIP: backend not available sha1_crypt (os_crypt backend): test basic config-string workflow ... SKIP: backend not available sha1_crypt (os_crypt backend): test basic using() workflow ... SKIP: backend not available sha1_crypt (os_crypt backend): test basic hash-string workflow. ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available sha1_crypt (os_crypt backend): test hashes can be unicode or bytes ... SKIP: backend not available sha1_crypt (os_crypt backend): test multi-backend support ... SKIP: backend not available sha1_crypt (os_crypt backend): validate optional salt attributes ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() honors salt_chars ... SKIP: backend not available sha1_crypt (os_crypt backend): test non-string salt values ... SKIP: backend not available sha1_crypt (os_crypt backend): validate optional rounds attributes ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: backend not available sha1_crypt (os_crypt backend): test password case sensitivity ... SKIP: backend not available sha1_crypt (os_crypt backend): test non-string passwords are rejected ... SKIP: backend not available sha1_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available sha1_crypt (os_crypt backend): test forbidden characters not allowed in password ... SKIP: backend not available sha1_crypt (os_crypt backend): test known hashes ... SKIP: backend not available sha1_crypt (os_crypt backend): parsehash() ... SKIP: backend not available sha1_crypt (os_crypt backend): test known alternate hashes ... SKIP: backend not available sha1_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: backend not available sha1_crypt (os_crypt backend): test known config strings ... SKIP: backend not available sha1_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available sha1_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available sha1_crypt (os_crypt backend): test known foreign hashes ... SKIP: backend not available sha1_crypt (os_crypt backend): test non-string hashes are rejected ... SKIP: backend not available sha1_crypt (os_crypt backend): fuzz testing -- random passwords and options ... SKIP: backend not available sha1_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available sha1_crypt (os_crypt backend): test with faulty crypt() ... SKIP: backend not available sha1_crypt (os_crypt backend): test per-call crypt() fallback ... SKIP: backend not available sha1_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = False) sha1_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: backend not available sha1_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- rounds ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available sha1_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available sha1_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available sha1_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available sha1_crypt (os_crypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available sha256_crypt (builtin backend): validate required attributes ... ok sha256_crypt (builtin backend): test basic config-string workflow ... ok sha256_crypt (builtin backend): test basic using() workflow ... ok sha256_crypt (builtin backend): test basic hash-string workflow. ... ok sha256_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha256_crypt (builtin backend): test hashes can be unicode or bytes ... ok sha256_crypt (builtin backend): test multi-backend support ... ok sha256_crypt (builtin backend): validate optional salt attributes ... ok sha256_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok sha256_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok sha256_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok sha256_crypt (builtin backend): test hash() honors salt_chars ... ok sha256_crypt (builtin backend): test non-string salt values ... ok sha256_crypt (builtin backend): validate optional rounds attributes ... ok sha256_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... ok sha256_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... ok sha256_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha256_crypt (builtin backend): test password case sensitivity ... ok sha256_crypt (builtin backend): test non-string passwords are rejected ... ok sha256_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok sha256_crypt (builtin backend): test forbidden characters not allowed in password ... ok sha256_crypt (builtin backend): test known hashes ... ok sha256_crypt (builtin backend): parsehash() ... ok sha256_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided sha256_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present sha256_crypt (builtin backend): test known config strings ... ok sha256_crypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha256_crypt (builtin backend): test known identifiable-but-malformed strings ... ok sha256_crypt (builtin backend): test known foreign hashes ... ok sha256_crypt (builtin backend): test non-string hashes are rejected ... ok sha256_crypt (builtin backend): fuzz testing -- random passwords and options ... ok sha256_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok sha256_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable sha256_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha256_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha256_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha256_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... ok sha256_crypt (builtin backend): HasRounds.using() -- default_rounds ... ok sha256_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha256_crypt (builtin backend): HasRounds.using() -- rounds ... ok sha256_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... ok sha256_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... ok sha256_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha256_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok sha256_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok sha256_crypt (builtin backend): Handler.using() -- default_salt_size ... ok sha256_crypt (os_crypt backend): validate required attributes ... ok sha256_crypt (os_crypt backend): test basic config-string workflow ... ok sha256_crypt (os_crypt backend): test basic using() workflow ... ok sha256_crypt (os_crypt backend): test basic hash-string workflow. ... ok sha256_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha256_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok sha256_crypt (os_crypt backend): test multi-backend support ... ok sha256_crypt (os_crypt backend): validate optional salt attributes ... ok sha256_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok sha256_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok sha256_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok sha256_crypt (os_crypt backend): test hash() honors salt_chars ... ok sha256_crypt (os_crypt backend): test non-string salt values ... ok sha256_crypt (os_crypt backend): validate optional rounds attributes ... ok sha256_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok sha256_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok sha256_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha256_crypt (os_crypt backend): test password case sensitivity ... ok sha256_crypt (os_crypt backend): test non-string passwords are rejected ... ok sha256_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok sha256_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok sha256_crypt (os_crypt backend): test known hashes ... ok sha256_crypt (os_crypt backend): parsehash() ... ok sha256_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided sha256_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present sha256_crypt (os_crypt backend): test known config strings ... ok sha256_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha256_crypt (os_crypt backend): test known identifiable-but-malformed strings ... ok sha256_crypt (os_crypt backend): test known foreign hashes ... ok sha256_crypt (os_crypt backend): test non-string hashes are rejected ... ok sha256_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok sha256_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok sha256_crypt (os_crypt backend): test with faulty crypt() ... ok sha256_crypt (os_crypt backend): test per-call crypt() fallback ... ok sha256_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) sha256_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable sha256_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha256_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- rounds ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok sha256_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok sha256_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha256_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok sha256_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok sha256_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok sha512_crypt (builtin backend): validate required attributes ... ok sha512_crypt (builtin backend): test basic config-string workflow ... ok sha512_crypt (builtin backend): test basic using() workflow ... ok sha512_crypt (builtin backend): test basic hash-string workflow. ... ok sha512_crypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha512_crypt (builtin backend): test hashes can be unicode or bytes ... ok sha512_crypt (builtin backend): test multi-backend support ... ok sha512_crypt (builtin backend): validate optional salt attributes ... ok sha512_crypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok sha512_crypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok sha512_crypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok sha512_crypt (builtin backend): test hash() honors salt_chars ... ok sha512_crypt (builtin backend): test non-string salt values ... ok sha512_crypt (builtin backend): validate optional rounds attributes ... ok sha512_crypt (builtin backend): test hash() / genconfig() honors min_rounds ... ok sha512_crypt (builtin backend): test hash() / genconfig() honors max_rounds ... ok sha512_crypt (builtin backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha512_crypt (builtin backend): test password case sensitivity ... ok sha512_crypt (builtin backend): test non-string passwords are rejected ... ok sha512_crypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok sha512_crypt (builtin backend): test forbidden characters not allowed in password ... ok sha512_crypt (builtin backend): test known hashes ... ok sha512_crypt (builtin backend): parsehash() ... ok sha512_crypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided sha512_crypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present sha512_crypt (builtin backend): test known config strings ... ok sha512_crypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha512_crypt (builtin backend): test known identifiable-but-malformed strings ... ok sha512_crypt (builtin backend): test known foreign hashes ... ok sha512_crypt (builtin backend): test non-string hashes are rejected ... ok sha512_crypt (builtin backend): fuzz testing -- random passwords and options ... ok sha512_crypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok sha512_crypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable sha512_crypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha512_crypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha512_crypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha512_crypt (builtin backend): HasRounds.using() -- sanity check test harness ... ok sha512_crypt (builtin backend): HasRounds.using() -- default_rounds ... ok sha512_crypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha512_crypt (builtin backend): HasRounds.using() -- rounds ... ok sha512_crypt (builtin backend): HasRounds.using() -- vary_rounds generation ... ok sha512_crypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... ok sha512_crypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha512_crypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok sha512_crypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok sha512_crypt (builtin backend): Handler.using() -- default_salt_size ... ok sha512_crypt (os_crypt backend): validate required attributes ... ok sha512_crypt (os_crypt backend): test basic config-string workflow ... ok sha512_crypt (os_crypt backend): test basic using() workflow ... ok sha512_crypt (os_crypt backend): test basic hash-string workflow. ... ok sha512_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha512_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok sha512_crypt (os_crypt backend): test multi-backend support ... ok sha512_crypt (os_crypt backend): validate optional salt attributes ... ok sha512_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok sha512_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok sha512_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok sha512_crypt (os_crypt backend): test hash() honors salt_chars ... ok sha512_crypt (os_crypt backend): test non-string salt values ... ok sha512_crypt (os_crypt backend): validate optional rounds attributes ... ok sha512_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok sha512_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok sha512_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha512_crypt (os_crypt backend): test password case sensitivity ... ok sha512_crypt (os_crypt backend): test non-string passwords are rejected ... ok sha512_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok sha512_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok sha512_crypt (os_crypt backend): test known hashes ... ok sha512_crypt (os_crypt backend): parsehash() ... ok sha512_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided sha512_crypt (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present sha512_crypt (os_crypt backend): test known config strings ... ok sha512_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha512_crypt (os_crypt backend): test known identifiable-but-malformed strings ... ok sha512_crypt (os_crypt backend): test known foreign hashes ... ok sha512_crypt (os_crypt backend): test non-string hashes are rejected ... ok sha512_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok sha512_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok sha512_crypt (os_crypt backend): test with faulty crypt() ... ok sha512_crypt (os_crypt backend): test per-call crypt() fallback ... ok sha512_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) sha512_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable sha512_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha512_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- rounds ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok sha512_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok sha512_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha512_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok sha512_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok sha512_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok sun_md5_crypt: validate required attributes ... ok sun_md5_crypt: test basic config-string workflow ... ok sun_md5_crypt: test basic using() workflow ... ok sun_md5_crypt: test basic hash-string workflow. ... ok sun_md5_crypt: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sun_md5_crypt: test hashes can be unicode or bytes ... ok sun_md5_crypt: test multi-backend support ... SKIP: handler only has one backend sun_md5_crypt: validate optional salt attributes ... ok sun_md5_crypt: test hash() / genconfig() creates new salt each time ... ok sun_md5_crypt: test hash() / genconfig() honors min_salt_size ... ok sun_md5_crypt: test hash() / genconfig() honors max_salt_size ... ok sun_md5_crypt: test hash() honors salt_chars ... ok sun_md5_crypt: test non-string salt values ... ok sun_md5_crypt: validate optional rounds attributes ... ok sun_md5_crypt: test hash() / genconfig() honors min_rounds ... ok sun_md5_crypt: test hash() / genconfig() honors max_rounds ... ok sun_md5_crypt: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sun_md5_crypt: test password case sensitivity ... ok sun_md5_crypt: test non-string passwords are rejected ... ok sun_md5_crypt: test MAX_PASSWORD_SIZE is enforced ... ok sun_md5_crypt: test forbidden characters not allowed in password ... SKIP: none listed sun_md5_crypt: test known hashes ... ok sun_md5_crypt: parsehash() ... ok sun_md5_crypt: test known alternate hashes ... SKIP: no alternate hashes provided sun_md5_crypt: parsehash() -- known outputs ... SKIP: no samples present sun_md5_crypt: test known config strings ... ok sun_md5_crypt: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sun_md5_crypt: test known identifiable-but-malformed strings ... ok sun_md5_crypt: test known foreign hashes ... ok sun_md5_crypt: test non-string hashes are rejected ... ok sun_md5_crypt: fuzz testing -- random passwords and options ... ok sun_md5_crypt: multithreaded fuzz testing -- random password & options using multiple threads ... ok sun_md5_crypt: .disable() / .enable() methods ... SKIP: not applicable sun_md5_crypt: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sun_md5_crypt: HasRounds.using() -- max_rounds / max_desired_rounds ... ok sun_md5_crypt: HasRounds.using() -- desired_rounds + needs_update() ... ok sun_md5_crypt: HasRounds.using() -- sanity check test harness ... ok sun_md5_crypt: HasRounds.using() -- default_rounds ... ok sun_md5_crypt: HasRounds.using() -- min_rounds / min_desired_rounds ... ok sun_md5_crypt: HasRounds.using() -- rounds ... ok sun_md5_crypt: HasRounds.using() -- vary_rounds generation ... ok sun_md5_crypt: HasRounds.using() -- vary_rounds parsing ... ok sun_md5_crypt: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sun_md5_crypt: test no password size limits enforced (if truncate_size=None) ... ok sun_md5_crypt: validate 'truncate_error' setting & related attributes ... ok sun_md5_crypt: Handler.using() -- default_salt_size ... ok unix_disabled: validate required attributes ... ok unix_disabled: test basic config-string workflow ... ok unix_disabled: test basic using() workflow ... ok unix_disabled: test basic hash-string workflow. ... ok unix_disabled: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok unix_disabled: test hashes can be unicode or bytes ... ok unix_disabled: test multi-backend support ... SKIP: handler only has one backend unix_disabled: validate optional salt attributes ... SKIP: handler doesn't have salt unix_disabled: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt unix_disabled: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt unix_disabled: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt unix_disabled: test hash() honors salt_chars ... SKIP: handler doesn't have salt unix_disabled: test non-string salt values ... SKIP: handler doesn't have salt unix_disabled: validate optional rounds attributes ... SKIP: handler lacks rounds attributes unix_disabled: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes unix_disabled: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes unix_disabled: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents unix_disabled: test password case sensitivity ... ok unix_disabled: test non-string passwords are rejected ... ok unix_disabled: test MAX_PASSWORD_SIZE is enforced ... ok unix_disabled: test forbidden characters not allowed in password ... SKIP: none listed unix_disabled: test known hashes ... ok unix_disabled: parsehash() ... SKIP: parsehash() not implemented unix_disabled: test known alternate hashes ... SKIP: no alternate hashes provided unix_disabled: parsehash() -- known outputs ... SKIP: parsehash() not implemented unix_disabled: test known config strings ... SKIP: no config strings provided unix_disabled: test known unidentifiably-mangled strings ... ok unix_disabled: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided unix_disabled: test known foreign hashes ... ok unix_disabled: test_76_hash_border (passlib.tests.test_handlers.unix_disabled_test) ... ok unix_disabled: fuzz testing -- random passwords and options ... SKIP: not applicable unix_disabled: multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: not applicable unix_disabled: test marker option & special behavior ... ok unix_disabled: .disable() / .enable() methods ... ok unix_disabled: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents unix_disabled: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes unix_disabled: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes unix_disabled: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set unix_disabled: test no password size limits enforced (if truncate_size=None) ... ok unix_disabled: validate 'truncate_error' setting & related attributes ... ok unix_disabled: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt unix_fallback: validate required attributes ... ok unix_fallback: test basic config-string workflow ... ok unix_fallback: test basic using() workflow ... ok unix_fallback: test basic hash-string workflow. ... ok unix_fallback: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok unix_fallback: test hashes can be unicode or bytes ... ok unix_fallback: test multi-backend support ... SKIP: handler only has one backend unix_fallback: validate optional salt attributes ... SKIP: handler doesn't have salt unix_fallback: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt unix_fallback: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt unix_fallback: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt unix_fallback: test hash() honors salt_chars ... SKIP: handler doesn't have salt unix_fallback: test non-string salt values ... SKIP: handler doesn't have salt unix_fallback: validate optional rounds attributes ... SKIP: handler lacks rounds attributes unix_fallback: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes unix_fallback: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes unix_fallback: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents unix_fallback: test password case sensitivity ... ok unix_fallback: test non-string passwords are rejected ... ok unix_fallback: test MAX_PASSWORD_SIZE is enforced ... ok unix_fallback: test forbidden characters not allowed in password ... SKIP: none listed unix_fallback: test known hashes ... ok unix_fallback: parsehash() ... ok unix_fallback: test known alternate hashes ... SKIP: no alternate hashes provided unix_fallback: parsehash() -- known outputs ... SKIP: no samples present unix_fallback: test known config strings ... SKIP: hash has no settings unix_fallback: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided unix_fallback: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided unix_fallback: test known foreign hashes ... SKIP: not applicable unix_fallback: test non-string hashes are rejected ... ok unix_fallback: fuzz testing -- random passwords and options ... SKIP: not applicable unix_fallback: multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: not applicable unix_fallback: test enable_wildcard flag ... ok unix_fallback: test preserves existing disabled hash ... ok unix_fallback: .disable() / .enable() methods ... ok unix_fallback: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents unix_fallback: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes unix_fallback: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes unix_fallback: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set unix_fallback: test no password size limits enforced (if truncate_size=None) ... ok unix_fallback: validate 'truncate_error' setting & related attributes ... ok unix_fallback: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt argon2 (argon2_cffi backend): validate required attributes ... ok argon2 (argon2_cffi backend): test basic config-string workflow ... ok argon2 (argon2_cffi backend): test basic using() workflow ... ok argon2 (argon2_cffi backend): test basic hash-string workflow. ... ok argon2 (argon2_cffi backend): test_03_legacy_hash_workflow (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... SKIP: legacy 1.6 workflow not supported argon2 (argon2_cffi backend): test hashes can be unicode or bytes ... ok argon2 (argon2_cffi backend): test multi-backend support ... ok argon2 (argon2_cffi backend): validate optional salt attributes ... ok argon2 (argon2_cffi backend): test hash() / genconfig() creates new salt each time ... ok argon2 (argon2_cffi backend): test hash() / genconfig() honors min_salt_size ... ok argon2 (argon2_cffi backend): test hash() / genconfig() honors max_salt_size ... ok argon2 (argon2_cffi backend): test hash() honors salt_chars ... ok argon2 (argon2_cffi backend): test non-string salt values ... ok argon2 (argon2_cffi backend): validate optional rounds attributes ... ok argon2 (argon2_cffi backend): test hash() / genconfig() honors min_rounds ... ok argon2 (argon2_cffi backend): test hash() / genconfig() honors max_rounds ... ok argon2 (argon2_cffi backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents argon2 (argon2_cffi backend): test password case sensitivity ... ok argon2 (argon2_cffi backend): test non-string passwords are rejected ... ok argon2 (argon2_cffi backend): test MAX_PASSWORD_SIZE is enforced ... ok argon2 (argon2_cffi backend): test forbidden characters not allowed in password ... SKIP: none listed argon2 (argon2_cffi backend): test known hashes ... ok argon2 (argon2_cffi backend): parsehash() ... ok argon2 (argon2_cffi backend): test known alternate hashes ... SKIP: no alternate hashes provided argon2 (argon2_cffi backend): parsehash() -- known outputs ... ok argon2 (argon2_cffi backend): test known config strings ... SKIP: no config strings provided argon2 (argon2_cffi backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided argon2 (argon2_cffi backend): test known identifiable-but-malformed strings ... ok argon2 (argon2_cffi backend): test known foreign hashes ... ok argon2 (argon2_cffi backend): test non-string hashes are rejected ... ok argon2 (argon2_cffi backend): fuzz testing -- random passwords and options ... ok argon2 (argon2_cffi backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok argon2 (argon2_cffi backend): verify we're using right base64 encoding for argon2 ... ok argon2 (argon2_cffi backend): test_data_parameter (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): .disable() / .enable() methods ... SKIP: not applicable argon2 (argon2_cffi backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents argon2 (argon2_cffi backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok argon2 (argon2_cffi backend): HasRounds.using() -- desired_rounds + needs_update() ... ok argon2 (argon2_cffi backend): HasRounds.using() -- sanity check test harness ... ok argon2 (argon2_cffi backend): HasRounds.using() -- default_rounds ... ok argon2 (argon2_cffi backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok argon2 (argon2_cffi backend): HasRounds.using() -- rounds ... ok argon2 (argon2_cffi backend): HasRounds.using() -- vary_rounds generation ... ok argon2 (argon2_cffi backend): HasRounds.using() -- vary_rounds parsing ... ok argon2 (argon2_cffi backend): test_keyid_and_data_parameters (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): test_keyid_parameter (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): test_needs_update_w_type (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): test_needs_update_w_version (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set argon2 (argon2_cffi backend): test no password size limits enforced (if truncate_size=None) ... ok argon2 (argon2_cffi backend): validate 'truncate_error' setting & related attributes ... ok argon2 (argon2_cffi backend): test_type_kwd (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): test_type_using (passlib.tests.test_handlers_argon2.argon2_argon2_cffi_test) ... ok argon2 (argon2_cffi backend): Handler.using() -- default_salt_size ... ok argon2 (argon2pure backend): validate required attributes ... SKIP: backend not available argon2 (argon2pure backend): test basic config-string workflow ... SKIP: backend not available argon2 (argon2pure backend): test basic using() workflow ... SKIP: backend not available argon2 (argon2pure backend): test basic hash-string workflow. ... SKIP: backend not available argon2 (argon2pure backend): test_03_legacy_hash_workflow (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test hashes can be unicode or bytes ... SKIP: backend not available argon2 (argon2pure backend): test multi-backend support ... SKIP: backend not available argon2 (argon2pure backend): validate optional salt attributes ... SKIP: backend not available argon2 (argon2pure backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available argon2 (argon2pure backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available argon2 (argon2pure backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available argon2 (argon2pure backend): test hash() honors salt_chars ... SKIP: backend not available argon2 (argon2pure backend): test non-string salt values ... SKIP: backend not available argon2 (argon2pure backend): validate optional rounds attributes ... SKIP: backend not available argon2 (argon2pure backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available argon2 (argon2pure backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available argon2 (argon2pure backend): validate HasManyIdents configuration ... SKIP: backend not available argon2 (argon2pure backend): test password case sensitivity ... SKIP: backend not available argon2 (argon2pure backend): test non-string passwords are rejected ... SKIP: backend not available argon2 (argon2pure backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available argon2 (argon2pure backend): test forbidden characters not allowed in password ... SKIP: backend not available argon2 (argon2pure backend): test known hashes ... SKIP: backend not available argon2 (argon2pure backend): parsehash() ... SKIP: backend not available argon2 (argon2pure backend): test known alternate hashes ... SKIP: backend not available argon2 (argon2pure backend): parsehash() -- known outputs ... SKIP: backend not available argon2 (argon2pure backend): test known config strings ... SKIP: backend not available argon2 (argon2pure backend): test known unidentifiably-mangled strings ... SKIP: backend not available argon2 (argon2pure backend): test known identifiable-but-malformed strings ... SKIP: backend not available argon2 (argon2pure backend): test known foreign hashes ... SKIP: backend not available argon2 (argon2pure backend): test non-string hashes are rejected ... SKIP: backend not available argon2 (argon2pure backend): fuzz testing -- random passwords and options ... SKIP: backend not available argon2 (argon2pure backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available argon2 (argon2pure backend): verify we're using right base64 encoding for argon2 ... SKIP: backend not available argon2 (argon2pure backend): test_data_parameter (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): .disable() / .enable() methods ... SKIP: backend not available argon2 (argon2pure backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- default_rounds ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- rounds ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available argon2 (argon2pure backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available argon2 (argon2pure backend): test_keyid_and_data_parameters (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test_keyid_parameter (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test_needs_update_w_type (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test_needs_update_w_version (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available argon2 (argon2pure backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available argon2 (argon2pure backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available argon2 (argon2pure backend): test_type_kwd (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): test_type_using (passlib.tests.test_handlers_argon2.argon2_argon2pure_test) ... SKIP: backend not available argon2 (argon2pure backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt (bcrypt backend): validate required attributes ... ok bcrypt (bcrypt backend): test basic config-string workflow ... ok bcrypt (bcrypt backend): test basic using() workflow ... ok bcrypt (bcrypt backend): test basic hash-string workflow. ... ok bcrypt (bcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bcrypt (bcrypt backend): test hashes can be unicode or bytes ... ok bcrypt (bcrypt backend): test multi-backend support ... ok bcrypt (bcrypt backend): validate optional salt attributes ... ok bcrypt (bcrypt backend): test hash() / genconfig() creates new salt each time ... ok bcrypt (bcrypt backend): test hash() / genconfig() honors min_salt_size ... ok bcrypt (bcrypt backend): test hash() / genconfig() honors max_salt_size ... ok bcrypt (bcrypt backend): test hash() honors salt_chars ... ok bcrypt (bcrypt backend): test non-string salt values ... ok bcrypt (bcrypt backend): validate optional rounds attributes ... ok bcrypt (bcrypt backend): test hash() / genconfig() honors min_rounds ... ok bcrypt (bcrypt backend): test hash() / genconfig() honors max_rounds ... ok bcrypt (bcrypt backend): validate HasManyIdents configuration ... ok bcrypt (bcrypt backend): test password case sensitivity ... ok bcrypt (bcrypt backend): test non-string passwords are rejected ... ok bcrypt (bcrypt backend): test MAX_PASSWORD_SIZE is enforced ... ok bcrypt (bcrypt backend): test forbidden characters not allowed in password ... ok bcrypt (bcrypt backend): test known hashes ... ok bcrypt (bcrypt backend): parsehash() ... ok bcrypt (bcrypt backend): test known alternate hashes ... SKIP: no alternate hashes provided bcrypt (bcrypt backend): parsehash() -- known outputs ... SKIP: no samples present bcrypt (bcrypt backend): test known config strings ... ok bcrypt (bcrypt backend): test known unidentifiably-mangled strings ... ok bcrypt (bcrypt backend): test known identifiable-but-malformed strings ... ok bcrypt (bcrypt backend): test known foreign hashes ... ok bcrypt (bcrypt backend): test non-string hashes are rejected ... ok bcrypt (bcrypt backend): fuzz testing -- random passwords and options ... ok bcrypt (bcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok bcrypt (bcrypt backend): test passlib correctly handles bcrypt padding bits ... ok bcrypt (bcrypt backend): .disable() / .enable() methods ... SKIP: not applicable bcrypt (bcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok bcrypt (bcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bcrypt (bcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bcrypt (bcrypt backend): HasRounds.using() -- sanity check test harness ... ok bcrypt (bcrypt backend): HasRounds.using() -- default_rounds ... ok bcrypt (bcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bcrypt (bcrypt backend): HasRounds.using() -- rounds ... ok bcrypt (bcrypt backend): HasRounds.using() -- vary_rounds generation ... ok bcrypt (bcrypt backend): HasRounds.using() -- vary_rounds parsing ... ok bcrypt (bcrypt backend): needs_update corrects bcrypt padding ... ok bcrypt (bcrypt backend): test password size limits raise truncate_error (if appropriate) ... ok bcrypt (bcrypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set bcrypt (bcrypt backend): validate 'truncate_error' setting & related attributes ... ok bcrypt (bcrypt backend): Handler.using() -- default_salt_size ... ok bcrypt (bcryptor backend): validate required attributes ... SKIP: backend not available bcrypt (bcryptor backend): test basic config-string workflow ... SKIP: backend not available bcrypt (bcryptor backend): test basic using() workflow ... SKIP: backend not available bcrypt (bcryptor backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt (bcryptor backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt (bcryptor backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt (bcryptor backend): test multi-backend support ... SKIP: backend not available bcrypt (bcryptor backend): validate optional salt attributes ... SKIP: backend not available bcrypt (bcryptor backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt (bcryptor backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt (bcryptor backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt (bcryptor backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt (bcryptor backend): test non-string salt values ... SKIP: backend not available bcrypt (bcryptor backend): validate optional rounds attributes ... SKIP: backend not available bcrypt (bcryptor backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt (bcryptor backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt (bcryptor backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt (bcryptor backend): test password case sensitivity ... SKIP: backend not available bcrypt (bcryptor backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt (bcryptor backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt (bcryptor backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt (bcryptor backend): test known hashes ... SKIP: backend not available bcrypt (bcryptor backend): parsehash() ... SKIP: backend not available bcrypt (bcryptor backend): test known alternate hashes ... SKIP: backend not available bcrypt (bcryptor backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt (bcryptor backend): test known config strings ... SKIP: backend not available bcrypt (bcryptor backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt (bcryptor backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt (bcryptor backend): test known foreign hashes ... SKIP: backend not available bcrypt (bcryptor backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt (bcryptor backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt (bcryptor backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt (bcryptor backend): test passlib correctly handles bcrypt padding bits ... SKIP: backend not available bcrypt (bcryptor backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt (bcryptor backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt (bcryptor backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt (bcryptor backend): needs_update corrects bcrypt padding ... SKIP: backend not available bcrypt (bcryptor backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt (bcryptor backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt (bcryptor backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt (bcryptor backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt (builtin backend): validate required attributes ... SKIP: backend not available bcrypt (builtin backend): test basic config-string workflow ... SKIP: backend not available bcrypt (builtin backend): test basic using() workflow ... SKIP: backend not available bcrypt (builtin backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt (builtin backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt (builtin backend): test multi-backend support ... SKIP: backend not available bcrypt (builtin backend): validate optional salt attributes ... SKIP: backend not available bcrypt (builtin backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt (builtin backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt (builtin backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt (builtin backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt (builtin backend): test non-string salt values ... SKIP: backend not available bcrypt (builtin backend): validate optional rounds attributes ... SKIP: backend not available bcrypt (builtin backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt (builtin backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt (builtin backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt (builtin backend): test password case sensitivity ... SKIP: backend not available bcrypt (builtin backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt (builtin backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt (builtin backend): test known hashes ... SKIP: backend not available bcrypt (builtin backend): parsehash() ... SKIP: backend not available bcrypt (builtin backend): test known alternate hashes ... SKIP: backend not available bcrypt (builtin backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt (builtin backend): test known config strings ... SKIP: backend not available bcrypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt (builtin backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt (builtin backend): test known foreign hashes ... SKIP: backend not available bcrypt (builtin backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt (builtin backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt (builtin backend): test passlib correctly handles bcrypt padding bits ... SKIP: backend not available bcrypt (builtin backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt (builtin backend): needs_update corrects bcrypt padding ... SKIP: backend not available bcrypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt (builtin backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt (builtin backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt (os_crypt backend): validate required attributes ... ok bcrypt (os_crypt backend): test basic config-string workflow ... ok bcrypt (os_crypt backend): test basic using() workflow ... ok bcrypt (os_crypt backend): test basic hash-string workflow. ... ok bcrypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bcrypt (os_crypt backend): test hashes can be unicode or bytes ... ok bcrypt (os_crypt backend): test multi-backend support ... ok bcrypt (os_crypt backend): validate optional salt attributes ... ok bcrypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok bcrypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok bcrypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok bcrypt (os_crypt backend): test hash() honors salt_chars ... ok bcrypt (os_crypt backend): test non-string salt values ... ok bcrypt (os_crypt backend): validate optional rounds attributes ... ok bcrypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok bcrypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok bcrypt (os_crypt backend): validate HasManyIdents configuration ... ok bcrypt (os_crypt backend): test password case sensitivity ... ok bcrypt (os_crypt backend): test non-string passwords are rejected ... ok bcrypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok bcrypt (os_crypt backend): test forbidden characters not allowed in password ... ok bcrypt (os_crypt backend): test known hashes ... ok bcrypt (os_crypt backend): parsehash() ... ok bcrypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided bcrypt (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present bcrypt (os_crypt backend): test known config strings ... ok bcrypt (os_crypt backend): test known unidentifiably-mangled strings ... ok bcrypt (os_crypt backend): test known identifiable-but-malformed strings ... ok bcrypt (os_crypt backend): test known foreign hashes ... ok bcrypt (os_crypt backend): test non-string hashes are rejected ... ok bcrypt (os_crypt backend): fuzz testing -- random passwords and options ... ok bcrypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok bcrypt (os_crypt backend): test with faulty crypt() ... ok bcrypt (os_crypt backend): test per-call crypt() fallback ... ok bcrypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) bcrypt (os_crypt backend): test passlib correctly handles bcrypt padding bits ... ok bcrypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable bcrypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok bcrypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bcrypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bcrypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok bcrypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok bcrypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bcrypt (os_crypt backend): HasRounds.using() -- rounds ... ok bcrypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok bcrypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok bcrypt (os_crypt backend): needs_update corrects bcrypt padding ... ok bcrypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... ok bcrypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set bcrypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok bcrypt (os_crypt backend): Handler.using() -- default_salt_size ... ok bcrypt (pybcrypt backend): validate required attributes ... SKIP: backend not available bcrypt (pybcrypt backend): test basic config-string workflow ... SKIP: backend not available bcrypt (pybcrypt backend): test basic using() workflow ... SKIP: backend not available bcrypt (pybcrypt backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt (pybcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt (pybcrypt backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt (pybcrypt backend): test multi-backend support ... SKIP: backend not available bcrypt (pybcrypt backend): validate optional salt attributes ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt (pybcrypt backend): test non-string salt values ... SKIP: backend not available bcrypt (pybcrypt backend): validate optional rounds attributes ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt (pybcrypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt (pybcrypt backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt (pybcrypt backend): test password case sensitivity ... SKIP: backend not available bcrypt (pybcrypt backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt (pybcrypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt (pybcrypt backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt (pybcrypt backend): test known hashes ... SKIP: backend not available bcrypt (pybcrypt backend): parsehash() ... SKIP: backend not available bcrypt (pybcrypt backend): test known alternate hashes ... SKIP: backend not available bcrypt (pybcrypt backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt (pybcrypt backend): test known config strings ... SKIP: backend not available bcrypt (pybcrypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt (pybcrypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt (pybcrypt backend): test known foreign hashes ... SKIP: backend not available bcrypt (pybcrypt backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt (pybcrypt backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt (pybcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt (pybcrypt backend): test passlib correctly handles bcrypt padding bits ... SKIP: backend not available bcrypt (pybcrypt backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt (pybcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt (pybcrypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt (pybcrypt backend): needs_update corrects bcrypt padding ... SKIP: backend not available bcrypt (pybcrypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt (pybcrypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt (pybcrypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt (pybcrypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt_sha256 (bcrypt backend): validate required attributes ... ok bcrypt_sha256 (bcrypt backend): test basic config-string workflow ... ok bcrypt_sha256 (bcrypt backend): test basic using() workflow ... ok bcrypt_sha256 (bcrypt backend): test basic hash-string workflow. ... ok bcrypt_sha256 (bcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bcrypt_sha256 (bcrypt backend): test hashes can be unicode or bytes ... ok bcrypt_sha256 (bcrypt backend): test multi-backend support ... ok bcrypt_sha256 (bcrypt backend): validate optional salt attributes ... ok bcrypt_sha256 (bcrypt backend): test hash() / genconfig() creates new salt each time ... ok bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors min_salt_size ... ok bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors max_salt_size ... ok bcrypt_sha256 (bcrypt backend): test hash() honors salt_chars ... ok bcrypt_sha256 (bcrypt backend): test non-string salt values ... ok bcrypt_sha256 (bcrypt backend): validate optional rounds attributes ... ok bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors min_rounds ... ok bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors max_rounds ... ok bcrypt_sha256 (bcrypt backend): validate HasManyIdents configuration ... SKIP: multiple idents not supported bcrypt_sha256 (bcrypt backend): test_30_HasOneIdent (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_bcrypt_test) ... ok bcrypt_sha256 (bcrypt backend): test password case sensitivity ... ok bcrypt_sha256 (bcrypt backend): test non-string passwords are rejected ... ok bcrypt_sha256 (bcrypt backend): test MAX_PASSWORD_SIZE is enforced ... ok bcrypt_sha256 (bcrypt backend): test forbidden characters not allowed in password ... SKIP: none listed bcrypt_sha256 (bcrypt backend): test known hashes ... ok bcrypt_sha256 (bcrypt backend): parsehash() ... ok bcrypt_sha256 (bcrypt backend): test known alternate hashes ... SKIP: no alternate hashes provided bcrypt_sha256 (bcrypt backend): parsehash() -- known outputs ... SKIP: no samples present bcrypt_sha256 (bcrypt backend): test known config strings ... ok bcrypt_sha256 (bcrypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided bcrypt_sha256 (bcrypt backend): test known identifiable-but-malformed strings ... ok bcrypt_sha256 (bcrypt backend): test known foreign hashes ... ok bcrypt_sha256 (bcrypt backend): test non-string hashes are rejected ... ok bcrypt_sha256 (bcrypt backend): fuzz testing -- random passwords and options ... ok bcrypt_sha256 (bcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok bcrypt_sha256 (bcrypt backend): test digest calc v2 matches bcrypt() ... ok bcrypt_sha256 (bcrypt backend): .disable() / .enable() methods ... SKIP: not applicable bcrypt_sha256 (bcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: multiple idents not supported bcrypt_sha256 (bcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- sanity check test harness ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- default_rounds ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- rounds ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- vary_rounds generation ... ok bcrypt_sha256 (bcrypt backend): HasRounds.using() -- vary_rounds parsing ... ok bcrypt_sha256 (bcrypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bcrypt_sha256 (bcrypt backend): test no password size limits enforced (if truncate_size=None) ... ok bcrypt_sha256 (bcrypt backend): validate 'truncate_error' setting & related attributes ... ok bcrypt_sha256 (bcrypt backend): Handler.using() -- default_salt_size ... ok bcrypt_sha256 (bcrypt backend): test_using_version (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_bcrypt_test) ... ok bcrypt_sha256 (bcryptor backend): validate required attributes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test basic config-string workflow ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test basic using() workflow ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test multi-backend support ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): validate optional salt attributes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test non-string salt values ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): validate optional rounds attributes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test_30_HasOneIdent (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_bcryptor_test) ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test password case sensitivity ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known hashes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): parsehash() ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known alternate hashes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known config strings ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test known foreign hashes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test digest calc v2 matches bcrypt() ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt_sha256 (bcryptor backend): test_using_version (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_bcryptor_test) ... SKIP: backend not available bcrypt_sha256 (builtin backend): validate required attributes ... SKIP: backend not available bcrypt_sha256 (builtin backend): test basic config-string workflow ... SKIP: backend not available bcrypt_sha256 (builtin backend): test basic using() workflow ... SKIP: backend not available bcrypt_sha256 (builtin backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt_sha256 (builtin backend): test multi-backend support ... SKIP: backend not available bcrypt_sha256 (builtin backend): validate optional salt attributes ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt_sha256 (builtin backend): test non-string salt values ... SKIP: backend not available bcrypt_sha256 (builtin backend): validate optional rounds attributes ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt_sha256 (builtin backend): test_30_HasOneIdent (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_builtin_test) ... SKIP: backend not available bcrypt_sha256 (builtin backend): test password case sensitivity ... SKIP: backend not available bcrypt_sha256 (builtin backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt_sha256 (builtin backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt_sha256 (builtin backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known hashes ... SKIP: backend not available bcrypt_sha256 (builtin backend): parsehash() ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known alternate hashes ... SKIP: backend not available bcrypt_sha256 (builtin backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known config strings ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt_sha256 (builtin backend): test known foreign hashes ... SKIP: backend not available bcrypt_sha256 (builtin backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt_sha256 (builtin backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt_sha256 (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt_sha256 (builtin backend): test digest calc v2 matches bcrypt() ... SKIP: backend not available bcrypt_sha256 (builtin backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt_sha256 (builtin backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt_sha256 (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt_sha256 (builtin backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt_sha256 (builtin backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt_sha256 (builtin backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt_sha256 (builtin backend): test_using_version (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_builtin_test) ... SKIP: backend not available bcrypt_sha256 (os_crypt backend): validate required attributes ... ok bcrypt_sha256 (os_crypt backend): test basic config-string workflow ... ok bcrypt_sha256 (os_crypt backend): test basic using() workflow ... ok bcrypt_sha256 (os_crypt backend): test basic hash-string workflow. ... ok bcrypt_sha256 (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bcrypt_sha256 (os_crypt backend): test hashes can be unicode or bytes ... ok bcrypt_sha256 (os_crypt backend): test multi-backend support ... ok bcrypt_sha256 (os_crypt backend): validate optional salt attributes ... ok bcrypt_sha256 (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok bcrypt_sha256 (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok bcrypt_sha256 (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok bcrypt_sha256 (os_crypt backend): test hash() honors salt_chars ... ok bcrypt_sha256 (os_crypt backend): test non-string salt values ... ok bcrypt_sha256 (os_crypt backend): validate optional rounds attributes ... ok bcrypt_sha256 (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok bcrypt_sha256 (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok bcrypt_sha256 (os_crypt backend): validate HasManyIdents configuration ... SKIP: multiple idents not supported bcrypt_sha256 (os_crypt backend): test_30_HasOneIdent (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test) ... ok bcrypt_sha256 (os_crypt backend): test password case sensitivity ... ok bcrypt_sha256 (os_crypt backend): test non-string passwords are rejected ... ok bcrypt_sha256 (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok bcrypt_sha256 (os_crypt backend): test forbidden characters not allowed in password ... SKIP: none listed bcrypt_sha256 (os_crypt backend): test known hashes ... ok bcrypt_sha256 (os_crypt backend): parsehash() ... ok bcrypt_sha256 (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided bcrypt_sha256 (os_crypt backend): parsehash() -- known outputs ... SKIP: no samples present bcrypt_sha256 (os_crypt backend): test known config strings ... ok bcrypt_sha256 (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided bcrypt_sha256 (os_crypt backend): test known identifiable-but-malformed strings ... ok bcrypt_sha256 (os_crypt backend): test known foreign hashes ... ok bcrypt_sha256 (os_crypt backend): test non-string hashes are rejected ... ok bcrypt_sha256 (os_crypt backend): fuzz testing -- random passwords and options ... ok bcrypt_sha256 (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok bcrypt_sha256 (os_crypt backend): test with faulty crypt() ... ok bcrypt_sha256 (os_crypt backend): test per-call crypt() fallback ... ok bcrypt_sha256 (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'sunos5' platform (current host support = True) bcrypt_sha256 (os_crypt backend): test digest calc v2 matches bcrypt() ... ok bcrypt_sha256 (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable bcrypt_sha256 (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: multiple idents not supported bcrypt_sha256 (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- default_rounds ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- rounds ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok bcrypt_sha256 (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok bcrypt_sha256 (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bcrypt_sha256 (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok bcrypt_sha256 (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok bcrypt_sha256 (os_crypt backend): Handler.using() -- default_salt_size ... ok bcrypt_sha256 (os_crypt backend): test_using_version (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_os_crypt_test) ... ok bcrypt_sha256 (pybcrypt backend): validate required attributes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test basic config-string workflow ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test basic using() workflow ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test basic hash-string workflow. ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hashes can be unicode or bytes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test multi-backend support ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): validate optional salt attributes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() honors salt_chars ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test non-string salt values ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): validate optional rounds attributes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): validate HasManyIdents configuration ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test_30_HasOneIdent (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_pybcrypt_test) ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test password case sensitivity ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test non-string passwords are rejected ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test forbidden characters not allowed in password ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known hashes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): parsehash() ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known alternate hashes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): parsehash() -- known outputs ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known config strings ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test known foreign hashes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test non-string hashes are rejected ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): fuzz testing -- random passwords and options ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test digest calc v2 matches bcrypt() ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): .disable() / .enable() methods ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- rounds ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available bcrypt_sha256 (pybcrypt backend): test_using_version (passlib.tests.test_handlers_bcrypt.bcrypt_sha256_pybcrypt_test) ... SKIP: backend not available cisco_asa: validate required attributes ... ok cisco_asa: test basic config-string workflow ... ok cisco_asa: test basic using() workflow ... ok cisco_asa: test basic hash-string workflow. ... ok cisco_asa: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok cisco_asa: test hashes can be unicode or bytes ... ok cisco_asa: test multi-backend support ... SKIP: handler only has one backend cisco_asa: validate optional salt attributes ... SKIP: handler doesn't have salt cisco_asa: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt cisco_asa: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt cisco_asa: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt cisco_asa: test hash() honors salt_chars ... SKIP: handler doesn't have salt cisco_asa: test non-string salt values ... SKIP: handler doesn't have salt cisco_asa: validate optional rounds attributes ... SKIP: handler lacks rounds attributes cisco_asa: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes cisco_asa: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes cisco_asa: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents cisco_asa: test password case sensitivity ... ok cisco_asa: test non-string passwords are rejected ... ok cisco_asa: test MAX_PASSWORD_SIZE is enforced ... ok cisco_asa: test forbidden characters not allowed in password ... SKIP: none listed cisco_asa: test known hashes ... ok cisco_asa: parsehash() ... ok cisco_asa: test known alternate hashes ... SKIP: no alternate hashes provided cisco_asa: parsehash() -- known outputs ... SKIP: no samples present cisco_asa: test known config strings ... SKIP: hash has no settings cisco_asa: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided cisco_asa: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided cisco_asa: test known foreign hashes ... ok cisco_asa: test non-string hashes are rejected ... ok cisco_asa: fuzz testing -- random passwords and options ... ok cisco_asa: multithreaded fuzz testing -- random password & options using multiple threads ... ok cisco_asa: test user context keyword ... ok cisco_asa: test user case sensitivity ... ok cisco_asa: test user used as salt ... ok cisco_asa: _calc_checksum() -- spoil oversize passwords during verify ... ok cisco_asa: .disable() / .enable() methods ... SKIP: not applicable cisco_asa: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents cisco_asa: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes cisco_asa: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes cisco_asa: test password size limits raise truncate_error (if appropriate) ... ok cisco_asa: test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set cisco_asa: validate 'truncate_error' setting & related attributes ... ok cisco_asa: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt cisco_pix: validate required attributes ... ok cisco_pix: test basic config-string workflow ... ok cisco_pix: test basic using() workflow ... ok cisco_pix: test basic hash-string workflow. ... ok cisco_pix: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok cisco_pix: test hashes can be unicode or bytes ... ok cisco_pix: test multi-backend support ... SKIP: handler only has one backend cisco_pix: validate optional salt attributes ... SKIP: handler doesn't have salt cisco_pix: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt cisco_pix: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt cisco_pix: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt cisco_pix: test hash() honors salt_chars ... SKIP: handler doesn't have salt cisco_pix: test non-string salt values ... SKIP: handler doesn't have salt cisco_pix: validate optional rounds attributes ... SKIP: handler lacks rounds attributes cisco_pix: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes cisco_pix: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes cisco_pix: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents cisco_pix: test password case sensitivity ... ok cisco_pix: test non-string passwords are rejected ... ok cisco_pix: test MAX_PASSWORD_SIZE is enforced ... ok cisco_pix: test forbidden characters not allowed in password ... SKIP: none listed cisco_pix: test known hashes ... ok cisco_pix: parsehash() ... ok cisco_pix: test known alternate hashes ... SKIP: no alternate hashes provided cisco_pix: parsehash() -- known outputs ... SKIP: no samples present cisco_pix: test known config strings ... SKIP: hash has no settings cisco_pix: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided cisco_pix: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided cisco_pix: test known foreign hashes ... ok cisco_pix: test non-string hashes are rejected ... ok cisco_pix: fuzz testing -- random passwords and options ... ok cisco_pix: multithreaded fuzz testing -- random password & options using multiple threads ... ok cisco_pix: test user context keyword ... ok cisco_pix: test user case sensitivity ... ok cisco_pix: test user used as salt ... ok cisco_pix: _calc_checksum() -- spoil oversize passwords during verify ... ok cisco_pix: .disable() / .enable() methods ... SKIP: not applicable cisco_pix: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents cisco_pix: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes cisco_pix: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes cisco_pix: test password size limits raise truncate_error (if appropriate) ... ok cisco_pix: test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set cisco_pix: validate 'truncate_error' setting & related attributes ... ok cisco_pix: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt cisco_type7: validate required attributes ... ok cisco_type7: test basic config-string workflow ... ok cisco_type7: test basic using() workflow ... ok cisco_type7: test basic hash-string workflow. ... ok cisco_type7: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok cisco_type7: test hashes can be unicode or bytes ... ok cisco_type7: test multi-backend support ... SKIP: handler only has one backend cisco_type7: validate optional salt attributes ... SKIP: handler doesn't provide salt info cisco_type7: test hash() / genconfig() creates new salt each time ... ok cisco_type7: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't provide salt info cisco_type7: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't provide salt info cisco_type7: test hash() honors salt_chars ... SKIP: handler doesn't provide salt info cisco_type7: test non-string salt values ... ok cisco_type7: validate optional rounds attributes ... SKIP: handler lacks rounds attributes cisco_type7: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes cisco_type7: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes cisco_type7: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents cisco_type7: test password case sensitivity ... ok cisco_type7: test non-string passwords are rejected ... ok cisco_type7: test MAX_PASSWORD_SIZE is enforced ... ok cisco_type7: test forbidden characters not allowed in password ... SKIP: none listed cisco_type7: test known hashes ... ok cisco_type7: parsehash() ... ok cisco_type7: test known alternate hashes ... SKIP: no alternate hashes provided cisco_type7: parsehash() -- known outputs ... SKIP: no samples present cisco_type7: test known config strings ... SKIP: no config strings provided cisco_type7: test known unidentifiably-mangled strings ... ok cisco_type7: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided cisco_type7: test known foreign hashes ... ok cisco_type7: test non-string hashes are rejected ... ok cisco_type7: fuzz testing -- random passwords and options ... ok cisco_type7: multithreaded fuzz testing -- random password & options using multiple threads ... ok cisco_type7: test cisco_type7.decode() ... ok cisco_type7: test salt value border cases ... ok cisco_type7: .disable() / .enable() methods ... SKIP: not applicable cisco_type7: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents cisco_type7: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes cisco_type7: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes cisco_type7: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set cisco_type7: test no password size limits enforced (if truncate_size=None) ... ok cisco_type7: validate 'truncate_error' setting & related attributes ... ok cisco_type7: Handler.using() -- default_salt_size ... SKIP: handler doesn't provide salt info django_argon2 (argon2_cffi backend): validate required attributes ... ok django_argon2 (argon2_cffi backend): test basic config-string workflow ... ok django_argon2 (argon2_cffi backend): test basic using() workflow ... ok django_argon2 (argon2_cffi backend): test basic hash-string workflow. ... ok django_argon2 (argon2_cffi backend): test_03_legacy_hash_workflow (passlib.tests.test_handlers_django.django_argon2_test) ... SKIP: legacy 1.6 workflow not supported django_argon2 (argon2_cffi backend): test hashes can be unicode or bytes ... ok django_argon2 (argon2_cffi backend): test multi-backend support ... ok django_argon2 (argon2_cffi backend): validate optional salt attributes ... ok django_argon2 (argon2_cffi backend): test hash() / genconfig() creates new salt each time ... ok django_argon2 (argon2_cffi backend): test hash() / genconfig() honors min_salt_size ... ok django_argon2 (argon2_cffi backend): test hash() / genconfig() honors max_salt_size ... ok django_argon2 (argon2_cffi backend): test hash() honors salt_chars ... ok django_argon2 (argon2_cffi backend): test non-string salt values ... ok django_argon2 (argon2_cffi backend): validate optional rounds attributes ... ok django_argon2 (argon2_cffi backend): test hash() / genconfig() honors min_rounds ... ok django_argon2 (argon2_cffi backend): test hash() / genconfig() honors max_rounds ... ok django_argon2 (argon2_cffi backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_argon2 (argon2_cffi backend): test password case sensitivity ... ok django_argon2 (argon2_cffi backend): test non-string passwords are rejected ... ok django_argon2 (argon2_cffi backend): test MAX_PASSWORD_SIZE is enforced ... ok django_argon2 (argon2_cffi backend): test forbidden characters not allowed in password ... SKIP: none listed django_argon2 (argon2_cffi backend): test known hashes ... ok django_argon2 (argon2_cffi backend): parsehash() ... SKIP: parsehash() not implemented django_argon2 (argon2_cffi backend): test known alternate hashes ... SKIP: no alternate hashes provided django_argon2 (argon2_cffi backend): parsehash() -- known outputs ... SKIP: parsehash() not implemented django_argon2 (argon2_cffi backend): test known config strings ... SKIP: no config strings provided django_argon2 (argon2_cffi backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_argon2 (argon2_cffi backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_argon2 (argon2_cffi backend): test known foreign hashes ... ok django_argon2 (argon2_cffi backend): test non-string hashes are rejected ... ok django_argon2 (argon2_cffi backend): fuzz testing -- random passwords and options ... ok django_argon2 (argon2_cffi backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok django_argon2 (argon2_cffi backend): run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_argon2 (argon2_cffi backend): test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_argon2 (argon2_cffi backend): .disable() / .enable() methods ... SKIP: not applicable django_argon2 (argon2_cffi backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_argon2 (argon2_cffi backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- desired_rounds + needs_update() ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- sanity check test harness ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- default_rounds ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- rounds ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- vary_rounds generation ... ok django_argon2 (argon2_cffi backend): HasRounds.using() -- vary_rounds parsing ... ok django_argon2 (argon2_cffi backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_argon2 (argon2_cffi backend): test no password size limits enforced (if truncate_size=None) ... ok django_argon2 (argon2_cffi backend): validate 'truncate_error' setting & related attributes ... ok django_argon2 (argon2_cffi backend): Handler.using() -- default_salt_size ... ok django_bcrypt_sha256 (bcrypt backend): validate required attributes ... ok django_bcrypt_sha256 (bcrypt backend): test basic config-string workflow ... ok django_bcrypt_sha256 (bcrypt backend): test basic using() workflow ... ok django_bcrypt_sha256 (bcrypt backend): test basic hash-string workflow. ... ok django_bcrypt_sha256 (bcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_bcrypt_sha256 (bcrypt backend): test hashes can be unicode or bytes ... ok django_bcrypt_sha256 (bcrypt backend): test multi-backend support ... ok django_bcrypt_sha256 (bcrypt backend): validate optional salt attributes ... ok django_bcrypt_sha256 (bcrypt backend): test hash() / genconfig() creates new salt each time ... ok django_bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors min_salt_size ... ok django_bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors max_salt_size ... ok django_bcrypt_sha256 (bcrypt backend): test hash() honors salt_chars ... ok django_bcrypt_sha256 (bcrypt backend): test non-string salt values ... ok django_bcrypt_sha256 (bcrypt backend): validate optional rounds attributes ... ok django_bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors min_rounds ... ok django_bcrypt_sha256 (bcrypt backend): test hash() / genconfig() honors max_rounds ... ok django_bcrypt_sha256 (bcrypt backend): validate HasManyIdents configuration ... ok django_bcrypt_sha256 (bcrypt backend): test password case sensitivity ... ok django_bcrypt_sha256 (bcrypt backend): test non-string passwords are rejected ... ok django_bcrypt_sha256 (bcrypt backend): test MAX_PASSWORD_SIZE is enforced ... ok django_bcrypt_sha256 (bcrypt backend): test forbidden characters not allowed in password ... SKIP: none listed django_bcrypt_sha256 (bcrypt backend): test known hashes ... ok django_bcrypt_sha256 (bcrypt backend): parsehash() ... ok django_bcrypt_sha256 (bcrypt backend): test known alternate hashes ... SKIP: no alternate hashes provided django_bcrypt_sha256 (bcrypt backend): parsehash() -- known outputs ... SKIP: no samples present django_bcrypt_sha256 (bcrypt backend): test known config strings ... SKIP: no config strings provided django_bcrypt_sha256 (bcrypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_bcrypt_sha256 (bcrypt backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_bcrypt_sha256 (bcrypt backend): test known foreign hashes ... ok django_bcrypt_sha256 (bcrypt backend): test non-string hashes are rejected ... ok django_bcrypt_sha256 (bcrypt backend): fuzz testing -- random passwords and options ... ok django_bcrypt_sha256 (bcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok django_bcrypt_sha256 (bcrypt backend): run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_bcrypt_sha256 (bcrypt backend): test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_bcrypt_sha256 (bcrypt backend): .disable() / .enable() methods ... SKIP: not applicable django_bcrypt_sha256 (bcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- sanity check test harness ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- default_rounds ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- rounds ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- vary_rounds generation ... ok django_bcrypt_sha256 (bcrypt backend): HasRounds.using() -- vary_rounds parsing ... ok django_bcrypt_sha256 (bcrypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_bcrypt_sha256 (bcrypt backend): test no password size limits enforced (if truncate_size=None) ... ok django_bcrypt_sha256 (bcrypt backend): validate 'truncate_error' setting & related attributes ... ok django_bcrypt_sha256 (bcrypt backend): Handler.using() -- default_salt_size ... ok django_bcrypt (bcrypt backend): validate required attributes ... ok django_bcrypt (bcrypt backend): test basic config-string workflow ... ok django_bcrypt (bcrypt backend): test basic using() workflow ... ok django_bcrypt (bcrypt backend): test basic hash-string workflow. ... ok django_bcrypt (bcrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_bcrypt (bcrypt backend): test hashes can be unicode or bytes ... ok django_bcrypt (bcrypt backend): test multi-backend support ... ok django_bcrypt (bcrypt backend): validate optional salt attributes ... ok django_bcrypt (bcrypt backend): test hash() / genconfig() creates new salt each time ... ok django_bcrypt (bcrypt backend): test hash() / genconfig() honors min_salt_size ... ok django_bcrypt (bcrypt backend): test hash() / genconfig() honors max_salt_size ... ok django_bcrypt (bcrypt backend): test hash() honors salt_chars ... ok django_bcrypt (bcrypt backend): test non-string salt values ... ok django_bcrypt (bcrypt backend): validate optional rounds attributes ... ok django_bcrypt (bcrypt backend): test hash() / genconfig() honors min_rounds ... ok django_bcrypt (bcrypt backend): test hash() / genconfig() honors max_rounds ... ok django_bcrypt (bcrypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_bcrypt (bcrypt backend): test password case sensitivity ... ok django_bcrypt (bcrypt backend): test non-string passwords are rejected ... ok django_bcrypt (bcrypt backend): test MAX_PASSWORD_SIZE is enforced ... ok django_bcrypt (bcrypt backend): test forbidden characters not allowed in password ... ok django_bcrypt (bcrypt backend): test known hashes ... ok django_bcrypt (bcrypt backend): parsehash() ... SKIP: parsehash() not implemented django_bcrypt (bcrypt backend): test known alternate hashes ... SKIP: no alternate hashes provided django_bcrypt (bcrypt backend): parsehash() -- known outputs ... SKIP: parsehash() not implemented django_bcrypt (bcrypt backend): test known config strings ... SKIP: no config strings provided django_bcrypt (bcrypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_bcrypt (bcrypt backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_bcrypt (bcrypt backend): test known foreign hashes ... ok django_bcrypt (bcrypt backend): test non-string hashes are rejected ... ok django_bcrypt (bcrypt backend): fuzz testing -- random passwords and options ... ok django_bcrypt (bcrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok django_bcrypt (bcrypt backend): run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_bcrypt (bcrypt backend): test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_bcrypt (bcrypt backend): .disable() / .enable() methods ... SKIP: not applicable django_bcrypt (bcrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_bcrypt (bcrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- sanity check test harness ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- default_rounds ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- rounds ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- vary_rounds generation ... ok django_bcrypt (bcrypt backend): HasRounds.using() -- vary_rounds parsing ... ok django_bcrypt (bcrypt backend): test password size limits raise truncate_error (if appropriate) ... ok django_bcrypt (bcrypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set django_bcrypt (bcrypt backend): validate 'truncate_error' setting & related attributes ... ok django_bcrypt (bcrypt backend): Handler.using() -- default_salt_size ... ok django_des_crypt: validate required attributes ... ok django_des_crypt: test basic config-string workflow ... ok django_des_crypt: test basic using() workflow ... ok django_des_crypt: test basic hash-string workflow. ... ok django_des_crypt: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_des_crypt: test hashes can be unicode or bytes ... ok django_des_crypt: test multi-backend support ... SKIP: handler only has one backend django_des_crypt: validate optional salt attributes ... ok django_des_crypt: test hash() / genconfig() creates new salt each time ... ok django_des_crypt: test hash() / genconfig() honors min_salt_size ... ok django_des_crypt: test hash() / genconfig() honors max_salt_size ... ok django_des_crypt: test hash() honors salt_chars ... ok django_des_crypt: test non-string salt values ... ok django_des_crypt: validate optional rounds attributes ... SKIP: handler lacks rounds attributes django_des_crypt: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes django_des_crypt: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes django_des_crypt: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_des_crypt: test password case sensitivity ... ok django_des_crypt: test non-string passwords are rejected ... ok django_des_crypt: test MAX_PASSWORD_SIZE is enforced ... ok django_des_crypt: test forbidden characters not allowed in password ... SKIP: none listed django_des_crypt: test known hashes ... ok django_des_crypt: parsehash() ... ok django_des_crypt: test known alternate hashes ... ok django_des_crypt: parsehash() -- known outputs ... SKIP: no samples present django_des_crypt: test known config strings ... SKIP: no config strings provided django_des_crypt: test known unidentifiably-mangled strings ... ok django_des_crypt: test known identifiable-but-malformed strings ... ok django_des_crypt: test known foreign hashes ... ok django_des_crypt: test non-string hashes are rejected ... ok django_des_crypt: fuzz testing -- random passwords and options ... ok django_des_crypt: multithreaded fuzz testing -- random password & options using multiple threads ... ok django_des_crypt: run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_des_crypt: test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_des_crypt: .disable() / .enable() methods ... SKIP: not applicable django_des_crypt: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_des_crypt: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes django_des_crypt: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes django_des_crypt: test password size limits raise truncate_error (if appropriate) ... ok django_des_crypt: test no password size limits enforced (if truncate_size=None) ... SKIP: truncate_size is set django_des_crypt: validate 'truncate_error' setting & related attributes ... ok django_des_crypt: Handler.using() -- default_salt_size ... ok django_disabled: validate required attributes ... ok django_disabled: test basic config-string workflow ... ok django_disabled: test basic using() workflow ... ok django_disabled: test basic hash-string workflow. ... ok django_disabled: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_disabled: test hashes can be unicode or bytes ... ok django_disabled: test multi-backend support ... SKIP: handler only has one backend django_disabled: validate optional salt attributes ... SKIP: handler doesn't have salt django_disabled: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt django_disabled: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt django_disabled: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt django_disabled: test hash() honors salt_chars ... SKIP: handler doesn't have salt django_disabled: test non-string salt values ... SKIP: handler doesn't have salt django_disabled: validate optional rounds attributes ... SKIP: handler lacks rounds attributes django_disabled: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes django_disabled: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes django_disabled: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_disabled: test password case sensitivity ... ok django_disabled: test non-string passwords are rejected ... ok django_disabled: test MAX_PASSWORD_SIZE is enforced ... ok django_disabled: test forbidden characters not allowed in password ... SKIP: none listed django_disabled: test known hashes ... ok django_disabled: parsehash() ... ok django_disabled: test known alternate hashes ... ok django_disabled: parsehash() -- known outputs ... SKIP: no samples present django_disabled: test known config strings ... SKIP: hash has no settings django_disabled: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_disabled: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_disabled: test known foreign hashes ... ok django_disabled: test non-string hashes are rejected ... ok django_disabled: fuzz testing -- random passwords and options ... SKIP: not applicable django_disabled: multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: not applicable django_disabled: .disable() / .enable() methods ... ok django_disabled: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_disabled: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes django_disabled: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes django_disabled: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_disabled: test no password size limits enforced (if truncate_size=None) ... ok django_disabled: validate 'truncate_error' setting & related attributes ... ok django_disabled: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt django_pbkdf2_sha1: validate required attributes ... ok django_pbkdf2_sha1: test basic config-string workflow ... ok django_pbkdf2_sha1: test basic using() workflow ... ok django_pbkdf2_sha1: test basic hash-string workflow. ... ok django_pbkdf2_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_pbkdf2_sha1: test hashes can be unicode or bytes ... ok django_pbkdf2_sha1: test multi-backend support ... SKIP: handler only has one backend django_pbkdf2_sha1: validate optional salt attributes ... ok django_pbkdf2_sha1: test hash() / genconfig() creates new salt each time ... ok django_pbkdf2_sha1: test hash() / genconfig() honors min_salt_size ... ok django_pbkdf2_sha1: test hash() / genconfig() honors max_salt_size ... ok django_pbkdf2_sha1: test hash() honors salt_chars ... ok django_pbkdf2_sha1: test non-string salt values ... ok django_pbkdf2_sha1: validate optional rounds attributes ... ok django_pbkdf2_sha1: test hash() / genconfig() honors min_rounds ... ok django_pbkdf2_sha1: test hash() / genconfig() honors max_rounds ... ok django_pbkdf2_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_pbkdf2_sha1: test password case sensitivity ... ok django_pbkdf2_sha1: test non-string passwords are rejected ... ok django_pbkdf2_sha1: test MAX_PASSWORD_SIZE is enforced ... ok django_pbkdf2_sha1: test forbidden characters not allowed in password ... SKIP: none listed django_pbkdf2_sha1: test known hashes ... ok django_pbkdf2_sha1: parsehash() ... ok django_pbkdf2_sha1: test known alternate hashes ... SKIP: no alternate hashes provided django_pbkdf2_sha1: parsehash() -- known outputs ... SKIP: no samples present django_pbkdf2_sha1: test known config strings ... SKIP: no config strings provided django_pbkdf2_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_pbkdf2_sha1: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_pbkdf2_sha1: test known foreign hashes ... ok django_pbkdf2_sha1: test non-string hashes are rejected ... ok django_pbkdf2_sha1: fuzz testing -- random passwords and options ... ok django_pbkdf2_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok django_pbkdf2_sha1: run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_pbkdf2_sha1: test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_pbkdf2_sha1: .disable() / .enable() methods ... SKIP: not applicable django_pbkdf2_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_pbkdf2_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... ok django_pbkdf2_sha1: HasRounds.using() -- desired_rounds + needs_update() ... ok django_pbkdf2_sha1: HasRounds.using() -- sanity check test harness ... ok django_pbkdf2_sha1: HasRounds.using() -- default_rounds ... ok django_pbkdf2_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... ok django_pbkdf2_sha1: HasRounds.using() -- rounds ... ok django_pbkdf2_sha1: HasRounds.using() -- vary_rounds generation ... ok django_pbkdf2_sha1: HasRounds.using() -- vary_rounds parsing ... ok django_pbkdf2_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_pbkdf2_sha1: test no password size limits enforced (if truncate_size=None) ... ok django_pbkdf2_sha1: validate 'truncate_error' setting & related attributes ... ok django_pbkdf2_sha1: Handler.using() -- default_salt_size ... ok django_pbkdf2_sha256: validate required attributes ... ok django_pbkdf2_sha256: test basic config-string workflow ... ok django_pbkdf2_sha256: test basic using() workflow ... ok django_pbkdf2_sha256: test basic hash-string workflow. ... ok django_pbkdf2_sha256: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_pbkdf2_sha256: test hashes can be unicode or bytes ... ok django_pbkdf2_sha256: test multi-backend support ... SKIP: handler only has one backend django_pbkdf2_sha256: validate optional salt attributes ... ok django_pbkdf2_sha256: test hash() / genconfig() creates new salt each time ... ok django_pbkdf2_sha256: test hash() / genconfig() honors min_salt_size ... ok django_pbkdf2_sha256: test hash() / genconfig() honors max_salt_size ... ok django_pbkdf2_sha256: test hash() honors salt_chars ... ok django_pbkdf2_sha256: test non-string salt values ... ok django_pbkdf2_sha256: validate optional rounds attributes ... ok django_pbkdf2_sha256: test hash() / genconfig() honors min_rounds ... ok django_pbkdf2_sha256: test hash() / genconfig() honors max_rounds ... ok django_pbkdf2_sha256: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_pbkdf2_sha256: test password case sensitivity ... ok django_pbkdf2_sha256: test non-string passwords are rejected ... ok django_pbkdf2_sha256: test MAX_PASSWORD_SIZE is enforced ... ok django_pbkdf2_sha256: test forbidden characters not allowed in password ... SKIP: none listed django_pbkdf2_sha256: test known hashes ... ok django_pbkdf2_sha256: parsehash() ... ok django_pbkdf2_sha256: test known alternate hashes ... SKIP: no alternate hashes provided django_pbkdf2_sha256: parsehash() -- known outputs ... SKIP: no samples present django_pbkdf2_sha256: test known config strings ... SKIP: no config strings provided django_pbkdf2_sha256: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided django_pbkdf2_sha256: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided django_pbkdf2_sha256: test known foreign hashes ... ok django_pbkdf2_sha256: test non-string hashes are rejected ... ok django_pbkdf2_sha256: fuzz testing -- random passwords and options ... ok django_pbkdf2_sha256: multithreaded fuzz testing -- random password & options using multiple threads ... ok django_pbkdf2_sha256: run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_pbkdf2_sha256: test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_pbkdf2_sha256: .disable() / .enable() methods ... SKIP: not applicable django_pbkdf2_sha256: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_pbkdf2_sha256: HasRounds.using() -- max_rounds / max_desired_rounds ... ok django_pbkdf2_sha256: HasRounds.using() -- desired_rounds + needs_update() ... ok django_pbkdf2_sha256: HasRounds.using() -- sanity check test harness ... ok django_pbkdf2_sha256: HasRounds.using() -- default_rounds ... ok django_pbkdf2_sha256: HasRounds.using() -- min_rounds / min_desired_rounds ... ok django_pbkdf2_sha256: HasRounds.using() -- rounds ... ok django_pbkdf2_sha256: HasRounds.using() -- vary_rounds generation ... ok django_pbkdf2_sha256: HasRounds.using() -- vary_rounds parsing ... ok django_pbkdf2_sha256: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_pbkdf2_sha256: test no password size limits enforced (if truncate_size=None) ... ok django_pbkdf2_sha256: validate 'truncate_error' setting & related attributes ... ok django_pbkdf2_sha256: Handler.using() -- default_salt_size ... ok django_salted_md5: validate required attributes ... ok django_salted_md5: test basic config-string workflow ... ok django_salted_md5: test basic using() workflow ... ok django_salted_md5: test basic hash-string workflow. ... ok django_salted_md5: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_salted_md5: test hashes can be unicode or bytes ... ok django_salted_md5: test multi-backend support ... SKIP: handler only has one backend django_salted_md5: validate optional salt attributes ... ok django_salted_md5: test hash() / genconfig() creates new salt each time ... ok django_salted_md5: test hash() / genconfig() honors min_salt_size ... ok django_salted_md5: test hash() / genconfig() honors max_salt_size ... ok django_salted_md5: test hash() honors salt_chars ... ok django_salted_md5: test non-string salt values ... ok django_salted_md5: validate optional rounds attributes ... SKIP: handler lacks rounds attributes django_salted_md5: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes django_salted_md5: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes django_salted_md5: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_salted_md5: test password case sensitivity ... ok django_salted_md5: test non-string passwords are rejected ... ok django_salted_md5: test MAX_PASSWORD_SIZE is enforced ... ok django_salted_md5: test forbidden characters not allowed in password ... SKIP: none listed django_salted_md5: test known hashes ... ok django_salted_md5: parsehash() ... ok django_salted_md5: test known alternate hashes ... SKIP: no alternate hashes provided django_salted_md5: parsehash() -- known outputs ... SKIP: no samples present django_salted_md5: test known config strings ... SKIP: no config strings provided django_salted_md5: test known unidentifiably-mangled strings ... ok django_salted_md5: test known identifiable-but-malformed strings ... ok django_salted_md5: test known foreign hashes ... ok django_salted_md5: test non-string hashes are rejected ... ok django_salted_md5: fuzz testing -- random passwords and options ... ok django_salted_md5: multithreaded fuzz testing -- random password & options using multiple threads ... ok django_salted_md5: run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_salted_md5: test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_salted_md5: .disable() / .enable() methods ... SKIP: not applicable django_salted_md5: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_salted_md5: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes django_salted_md5: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes django_salted_md5: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_salted_md5: test no password size limits enforced (if truncate_size=None) ... ok django_salted_md5: validate 'truncate_error' setting & related attributes ... ok django_salted_md5: Handler.using() -- default_salt_size ... ok django_salted_sha1: validate required attributes ... ok django_salted_sha1: test basic config-string workflow ... ok django_salted_sha1: test basic using() workflow ... ok django_salted_sha1: test basic hash-string workflow. ... ok django_salted_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok django_salted_sha1: test hashes can be unicode or bytes ... ok django_salted_sha1: test multi-backend support ... SKIP: handler only has one backend django_salted_sha1: validate optional salt attributes ... ok django_salted_sha1: test hash() / genconfig() creates new salt each time ... ok django_salted_sha1: test hash() / genconfig() honors min_salt_size ... ok django_salted_sha1: test hash() / genconfig() honors max_salt_size ... ok django_salted_sha1: test hash() honors salt_chars ... ok django_salted_sha1: test non-string salt values ... ok django_salted_sha1: validate optional rounds attributes ... SKIP: handler lacks rounds attributes django_salted_sha1: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents django_salted_sha1: test password case sensitivity ... ok django_salted_sha1: test non-string passwords are rejected ... ok django_salted_sha1: test MAX_PASSWORD_SIZE is enforced ... ok django_salted_sha1: test forbidden characters not allowed in password ... SKIP: none listed django_salted_sha1: test known hashes ... ok django_salted_sha1: parsehash() ... ok django_salted_sha1: test known alternate hashes ... SKIP: no alternate hashes provided django_salted_sha1: parsehash() -- known outputs ... SKIP: no samples present django_salted_sha1: test known config strings ... SKIP: no config strings provided django_salted_sha1: test known unidentifiably-mangled strings ... ok django_salted_sha1: test known identifiable-but-malformed strings ... ok django_salted_sha1: test known foreign hashes ... ok django_salted_sha1: test non-string hashes are rejected ... ok django_salted_sha1: fuzz testing -- random passwords and options ... ok django_salted_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok django_salted_sha1: run known correct hashes through Django's check_password() ... SKIP: Django >= 1.8 not installed django_salted_sha1: test against output of Django's make_password() ... SKIP: Django >= 1.8 not installed django_salted_sha1: .disable() / .enable() methods ... SKIP: not applicable django_salted_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents django_salted_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes django_salted_sha1: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes django_salted_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set django_salted_sha1: test no password size limits enforced (if truncate_size=None) ... ok django_salted_sha1: validate 'truncate_error' setting & related attributes ... ok django_salted_sha1: Handler.using() -- default_salt_size ... ok atlassian_pbkdf2_sha1: validate required attributes ... ok atlassian_pbkdf2_sha1: test basic config-string workflow ... ok atlassian_pbkdf2_sha1: test basic using() workflow ... ok atlassian_pbkdf2_sha1: test basic hash-string workflow. ... ok atlassian_pbkdf2_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok atlassian_pbkdf2_sha1: test hashes can be unicode or bytes ... ok atlassian_pbkdf2_sha1: test multi-backend support ... SKIP: handler only has one backend atlassian_pbkdf2_sha1: validate optional salt attributes ... ok atlassian_pbkdf2_sha1: test hash() / genconfig() creates new salt each time ... ok atlassian_pbkdf2_sha1: test hash() / genconfig() honors min_salt_size ... ok atlassian_pbkdf2_sha1: test hash() / genconfig() honors max_salt_size ... ok atlassian_pbkdf2_sha1: test hash() honors salt_chars ... ok atlassian_pbkdf2_sha1: test non-string salt values ... ok atlassian_pbkdf2_sha1: validate optional rounds attributes ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents atlassian_pbkdf2_sha1: test password case sensitivity ... ok atlassian_pbkdf2_sha1: test non-string passwords are rejected ... ok atlassian_pbkdf2_sha1: test MAX_PASSWORD_SIZE is enforced ... ok atlassian_pbkdf2_sha1: test forbidden characters not allowed in password ... SKIP: none listed atlassian_pbkdf2_sha1: test known hashes ... ok atlassian_pbkdf2_sha1: parsehash() ... ok atlassian_pbkdf2_sha1: test known alternate hashes ... SKIP: no alternate hashes provided atlassian_pbkdf2_sha1: parsehash() -- known outputs ... SKIP: no samples present atlassian_pbkdf2_sha1: test known config strings ... SKIP: no config strings provided atlassian_pbkdf2_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided atlassian_pbkdf2_sha1: test known identifiable-but-malformed strings ... ok atlassian_pbkdf2_sha1: test known foreign hashes ... ok atlassian_pbkdf2_sha1: test non-string hashes are rejected ... ok atlassian_pbkdf2_sha1: fuzz testing -- random passwords and options ... ok atlassian_pbkdf2_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok atlassian_pbkdf2_sha1: .disable() / .enable() methods ... SKIP: not applicable atlassian_pbkdf2_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents atlassian_pbkdf2_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes atlassian_pbkdf2_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set atlassian_pbkdf2_sha1: test no password size limits enforced (if truncate_size=None) ... ok atlassian_pbkdf2_sha1: validate 'truncate_error' setting & related attributes ... ok atlassian_pbkdf2_sha1: Handler.using() -- default_salt_size ... ok cta_pbkdf2_sha1: validate required attributes ... ok cta_pbkdf2_sha1: test basic config-string workflow ... ok cta_pbkdf2_sha1: test basic using() workflow ... ok cta_pbkdf2_sha1: test basic hash-string workflow. ... ok cta_pbkdf2_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok cta_pbkdf2_sha1: test hashes can be unicode or bytes ... ok cta_pbkdf2_sha1: test multi-backend support ... SKIP: handler only has one backend cta_pbkdf2_sha1: validate optional salt attributes ... ok cta_pbkdf2_sha1: test hash() / genconfig() creates new salt each time ... ok cta_pbkdf2_sha1: test hash() / genconfig() honors min_salt_size ... ok cta_pbkdf2_sha1: test hash() / genconfig() honors max_salt_size ... ok cta_pbkdf2_sha1: test hash() honors salt_chars ... ok cta_pbkdf2_sha1: test non-string salt values ... ok cta_pbkdf2_sha1: validate optional rounds attributes ... ok cta_pbkdf2_sha1: test hash() / genconfig() honors min_rounds ... ok cta_pbkdf2_sha1: test hash() / genconfig() honors max_rounds ... ok cta_pbkdf2_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents cta_pbkdf2_sha1: test password case sensitivity ... ok cta_pbkdf2_sha1: test non-string passwords are rejected ... ok cta_pbkdf2_sha1: test MAX_PASSWORD_SIZE is enforced ... ok cta_pbkdf2_sha1: test forbidden characters not allowed in password ... SKIP: none listed cta_pbkdf2_sha1: test known hashes ... ok cta_pbkdf2_sha1: parsehash() ... ok cta_pbkdf2_sha1: test known alternate hashes ... SKIP: no alternate hashes provided cta_pbkdf2_sha1: parsehash() -- known outputs ... SKIP: no samples present cta_pbkdf2_sha1: test known config strings ... SKIP: no config strings provided cta_pbkdf2_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided cta_pbkdf2_sha1: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided cta_pbkdf2_sha1: test known foreign hashes ... ok cta_pbkdf2_sha1: test non-string hashes are rejected ... ok cta_pbkdf2_sha1: fuzz testing -- random passwords and options ... ok cta_pbkdf2_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok cta_pbkdf2_sha1: .disable() / .enable() methods ... SKIP: not applicable cta_pbkdf2_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents cta_pbkdf2_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... ok cta_pbkdf2_sha1: HasRounds.using() -- desired_rounds + needs_update() ... ok cta_pbkdf2_sha1: HasRounds.using() -- sanity check test harness ... ok cta_pbkdf2_sha1: HasRounds.using() -- default_rounds ... ok cta_pbkdf2_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... ok cta_pbkdf2_sha1: HasRounds.using() -- rounds ... ok cta_pbkdf2_sha1: HasRounds.using() -- vary_rounds generation ... ok cta_pbkdf2_sha1: HasRounds.using() -- vary_rounds parsing ... ok cta_pbkdf2_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set cta_pbkdf2_sha1: test no password size limits enforced (if truncate_size=None) ... ok cta_pbkdf2_sha1: validate 'truncate_error' setting & related attributes ... ok cta_pbkdf2_sha1: Handler.using() -- default_salt_size ... ok dlitz_pbkdf2_sha1: validate required attributes ... ok dlitz_pbkdf2_sha1: test basic config-string workflow ... ok dlitz_pbkdf2_sha1: test basic using() workflow ... ok dlitz_pbkdf2_sha1: test basic hash-string workflow. ... ok dlitz_pbkdf2_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok dlitz_pbkdf2_sha1: test hashes can be unicode or bytes ... ok dlitz_pbkdf2_sha1: test multi-backend support ... SKIP: handler only has one backend dlitz_pbkdf2_sha1: validate optional salt attributes ... ok dlitz_pbkdf2_sha1: test hash() / genconfig() creates new salt each time ... ok dlitz_pbkdf2_sha1: test hash() / genconfig() honors min_salt_size ... ok dlitz_pbkdf2_sha1: test hash() / genconfig() honors max_salt_size ... ok dlitz_pbkdf2_sha1: test hash() honors salt_chars ... ok dlitz_pbkdf2_sha1: test non-string salt values ... ok dlitz_pbkdf2_sha1: validate optional rounds attributes ... ok dlitz_pbkdf2_sha1: test hash() / genconfig() honors min_rounds ... ok dlitz_pbkdf2_sha1: test hash() / genconfig() honors max_rounds ... ok dlitz_pbkdf2_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents dlitz_pbkdf2_sha1: test password case sensitivity ... ok dlitz_pbkdf2_sha1: test non-string passwords are rejected ... ok dlitz_pbkdf2_sha1: test MAX_PASSWORD_SIZE is enforced ... ok dlitz_pbkdf2_sha1: test forbidden characters not allowed in password ... SKIP: none listed dlitz_pbkdf2_sha1: test known hashes ... ok dlitz_pbkdf2_sha1: parsehash() ... ok dlitz_pbkdf2_sha1: test known alternate hashes ... SKIP: no alternate hashes provided dlitz_pbkdf2_sha1: parsehash() -- known outputs ... SKIP: no samples present dlitz_pbkdf2_sha1: test known config strings ... SKIP: no config strings provided dlitz_pbkdf2_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided dlitz_pbkdf2_sha1: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided dlitz_pbkdf2_sha1: test known foreign hashes ... ok dlitz_pbkdf2_sha1: test non-string hashes are rejected ... ok dlitz_pbkdf2_sha1: fuzz testing -- random passwords and options ... ok dlitz_pbkdf2_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok dlitz_pbkdf2_sha1: .disable() / .enable() methods ... SKIP: not applicable dlitz_pbkdf2_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents dlitz_pbkdf2_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- desired_rounds + needs_update() ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- sanity check test harness ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- default_rounds ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- rounds ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- vary_rounds generation ... ok dlitz_pbkdf2_sha1: HasRounds.using() -- vary_rounds parsing ... ok dlitz_pbkdf2_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set dlitz_pbkdf2_sha1: test no password size limits enforced (if truncate_size=None) ... ok dlitz_pbkdf2_sha1: validate 'truncate_error' setting & related attributes ... ok dlitz_pbkdf2_sha1: Handler.using() -- default_salt_size ... ok grub_pbkdf2_sha512: validate required attributes ... ok grub_pbkdf2_sha512: test basic config-string workflow ... ok grub_pbkdf2_sha512: test basic using() workflow ... ok grub_pbkdf2_sha512: test basic hash-string workflow. ... ok grub_pbkdf2_sha512: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok grub_pbkdf2_sha512: test hashes can be unicode or bytes ... ok grub_pbkdf2_sha512: test multi-backend support ... SKIP: handler only has one backend grub_pbkdf2_sha512: validate optional salt attributes ... ok grub_pbkdf2_sha512: test hash() / genconfig() creates new salt each time ... ok grub_pbkdf2_sha512: test hash() / genconfig() honors min_salt_size ... ok grub_pbkdf2_sha512: test hash() / genconfig() honors max_salt_size ... ok grub_pbkdf2_sha512: test hash() honors salt_chars ... ok grub_pbkdf2_sha512: test non-string salt values ... ok grub_pbkdf2_sha512: validate optional rounds attributes ... ok grub_pbkdf2_sha512: test hash() / genconfig() honors min_rounds ... ok grub_pbkdf2_sha512: test hash() / genconfig() honors max_rounds ... ok grub_pbkdf2_sha512: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents grub_pbkdf2_sha512: test password case sensitivity ... ok grub_pbkdf2_sha512: test non-string passwords are rejected ... ok grub_pbkdf2_sha512: test MAX_PASSWORD_SIZE is enforced ... ok grub_pbkdf2_sha512: test forbidden characters not allowed in password ... SKIP: none listed grub_pbkdf2_sha512: test known hashes ... ok grub_pbkdf2_sha512: parsehash() ... ok grub_pbkdf2_sha512: test known alternate hashes ... SKIP: no alternate hashes provided grub_pbkdf2_sha512: parsehash() -- known outputs ... SKIP: no samples present grub_pbkdf2_sha512: test known config strings ... SKIP: no config strings provided grub_pbkdf2_sha512: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided grub_pbkdf2_sha512: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided grub_pbkdf2_sha512: test known foreign hashes ... ok grub_pbkdf2_sha512: test non-string hashes are rejected ... ok grub_pbkdf2_sha512: fuzz testing -- random passwords and options ... ok grub_pbkdf2_sha512: multithreaded fuzz testing -- random password & options using multiple threads ... ok grub_pbkdf2_sha512: .disable() / .enable() methods ... SKIP: not applicable grub_pbkdf2_sha512: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents grub_pbkdf2_sha512: HasRounds.using() -- max_rounds / max_desired_rounds ... ok grub_pbkdf2_sha512: HasRounds.using() -- desired_rounds + needs_update() ... ok grub_pbkdf2_sha512: HasRounds.using() -- sanity check test harness ... ok grub_pbkdf2_sha512: HasRounds.using() -- default_rounds ... ok grub_pbkdf2_sha512: HasRounds.using() -- min_rounds / min_desired_rounds ... ok grub_pbkdf2_sha512: HasRounds.using() -- rounds ... ok grub_pbkdf2_sha512: HasRounds.using() -- vary_rounds generation ... ok grub_pbkdf2_sha512: HasRounds.using() -- vary_rounds parsing ... ok grub_pbkdf2_sha512: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set grub_pbkdf2_sha512: test no password size limits enforced (if truncate_size=None) ... ok grub_pbkdf2_sha512: validate 'truncate_error' setting & related attributes ... ok grub_pbkdf2_sha512: Handler.using() -- default_salt_size ... ok test ldap pbkdf2 wrappers ... ok pbkdf2_sha1: validate required attributes ... ok pbkdf2_sha1: test basic config-string workflow ... ok pbkdf2_sha1: test basic using() workflow ... ok pbkdf2_sha1: test basic hash-string workflow. ... ok pbkdf2_sha1: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok pbkdf2_sha1: test hashes can be unicode or bytes ... ok pbkdf2_sha1: test multi-backend support ... SKIP: handler only has one backend pbkdf2_sha1: validate optional salt attributes ... ok pbkdf2_sha1: test hash() / genconfig() creates new salt each time ... ok pbkdf2_sha1: test hash() / genconfig() honors min_salt_size ... ok pbkdf2_sha1: test hash() / genconfig() honors max_salt_size ... ok pbkdf2_sha1: test hash() honors salt_chars ... ok pbkdf2_sha1: test non-string salt values ... ok pbkdf2_sha1: validate optional rounds attributes ... ok pbkdf2_sha1: test hash() / genconfig() honors min_rounds ... ok pbkdf2_sha1: test hash() / genconfig() honors max_rounds ... ok pbkdf2_sha1: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha1: test password case sensitivity ... ok pbkdf2_sha1: test non-string passwords are rejected ... ok pbkdf2_sha1: test MAX_PASSWORD_SIZE is enforced ... ok pbkdf2_sha1: test forbidden characters not allowed in password ... SKIP: none listed pbkdf2_sha1: test known hashes ... ok pbkdf2_sha1: parsehash() ... ok pbkdf2_sha1: test known alternate hashes ... SKIP: no alternate hashes provided pbkdf2_sha1: parsehash() -- known outputs ... SKIP: no samples present pbkdf2_sha1: test known config strings ... SKIP: no config strings provided pbkdf2_sha1: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided pbkdf2_sha1: test known identifiable-but-malformed strings ... ok pbkdf2_sha1: test known foreign hashes ... ok pbkdf2_sha1: test non-string hashes are rejected ... ok pbkdf2_sha1: fuzz testing -- random passwords and options ... ok pbkdf2_sha1: multithreaded fuzz testing -- random password & options using multiple threads ... ok pbkdf2_sha1: .disable() / .enable() methods ... SKIP: not applicable pbkdf2_sha1: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha1: HasRounds.using() -- max_rounds / max_desired_rounds ... ok pbkdf2_sha1: HasRounds.using() -- desired_rounds + needs_update() ... ok pbkdf2_sha1: HasRounds.using() -- sanity check test harness ... ok pbkdf2_sha1: HasRounds.using() -- default_rounds ... ok pbkdf2_sha1: HasRounds.using() -- min_rounds / min_desired_rounds ... ok pbkdf2_sha1: HasRounds.using() -- rounds ... ok pbkdf2_sha1: HasRounds.using() -- vary_rounds generation ... ok pbkdf2_sha1: HasRounds.using() -- vary_rounds parsing ... ok pbkdf2_sha1: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set pbkdf2_sha1: test no password size limits enforced (if truncate_size=None) ... ok pbkdf2_sha1: validate 'truncate_error' setting & related attributes ... ok pbkdf2_sha1: Handler.using() -- default_salt_size ... ok pbkdf2_sha256: validate required attributes ... ok pbkdf2_sha256: test basic config-string workflow ... ok pbkdf2_sha256: test basic using() workflow ... ok pbkdf2_sha256: test basic hash-string workflow. ... ok pbkdf2_sha256: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok pbkdf2_sha256: test hashes can be unicode or bytes ... ok pbkdf2_sha256: test multi-backend support ... SKIP: handler only has one backend pbkdf2_sha256: validate optional salt attributes ... ok pbkdf2_sha256: test hash() / genconfig() creates new salt each time ... ok pbkdf2_sha256: test hash() / genconfig() honors min_salt_size ... ok pbkdf2_sha256: test hash() / genconfig() honors max_salt_size ... ok pbkdf2_sha256: test hash() honors salt_chars ... ok pbkdf2_sha256: test non-string salt values ... ok pbkdf2_sha256: validate optional rounds attributes ... ok pbkdf2_sha256: test hash() / genconfig() honors min_rounds ... ok pbkdf2_sha256: test hash() / genconfig() honors max_rounds ... ok pbkdf2_sha256: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha256: test password case sensitivity ... ok pbkdf2_sha256: test non-string passwords are rejected ... ok pbkdf2_sha256: test MAX_PASSWORD_SIZE is enforced ... ok pbkdf2_sha256: test forbidden characters not allowed in password ... SKIP: none listed pbkdf2_sha256: test known hashes ... ok pbkdf2_sha256: parsehash() ... ok pbkdf2_sha256: test known alternate hashes ... SKIP: no alternate hashes provided pbkdf2_sha256: parsehash() -- known outputs ... SKIP: no samples present pbkdf2_sha256: test known config strings ... SKIP: no config strings provided pbkdf2_sha256: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided pbkdf2_sha256: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided pbkdf2_sha256: test known foreign hashes ... ok pbkdf2_sha256: test non-string hashes are rejected ... ok pbkdf2_sha256: fuzz testing -- random passwords and options ... ok pbkdf2_sha256: multithreaded fuzz testing -- random password & options using multiple threads ... ok pbkdf2_sha256: .disable() / .enable() methods ... SKIP: not applicable pbkdf2_sha256: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha256: HasRounds.using() -- max_rounds / max_desired_rounds ... ok pbkdf2_sha256: HasRounds.using() -- desired_rounds + needs_update() ... ok pbkdf2_sha256: HasRounds.using() -- sanity check test harness ... ok pbkdf2_sha256: HasRounds.using() -- default_rounds ... ok pbkdf2_sha256: HasRounds.using() -- min_rounds / min_desired_rounds ... ok pbkdf2_sha256: HasRounds.using() -- rounds ... ok pbkdf2_sha256: HasRounds.using() -- vary_rounds generation ... ok pbkdf2_sha256: HasRounds.using() -- vary_rounds parsing ... ok pbkdf2_sha256: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set pbkdf2_sha256: test no password size limits enforced (if truncate_size=None) ... ok pbkdf2_sha256: validate 'truncate_error' setting & related attributes ... ok pbkdf2_sha256: Handler.using() -- default_salt_size ... ok pbkdf2_sha512: validate required attributes ... ok pbkdf2_sha512: test basic config-string workflow ... ok pbkdf2_sha512: test basic using() workflow ... ok pbkdf2_sha512: test basic hash-string workflow. ... ok pbkdf2_sha512: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok pbkdf2_sha512: test hashes can be unicode or bytes ... ok pbkdf2_sha512: test multi-backend support ... SKIP: handler only has one backend pbkdf2_sha512: validate optional salt attributes ... ok pbkdf2_sha512: test hash() / genconfig() creates new salt each time ... ok pbkdf2_sha512: test hash() / genconfig() honors min_salt_size ... ok pbkdf2_sha512: test hash() / genconfig() honors max_salt_size ... ok pbkdf2_sha512: test hash() honors salt_chars ... ok pbkdf2_sha512: test non-string salt values ... ok pbkdf2_sha512: validate optional rounds attributes ... ok pbkdf2_sha512: test hash() / genconfig() honors min_rounds ... ok pbkdf2_sha512: test hash() / genconfig() honors max_rounds ... ok pbkdf2_sha512: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha512: test password case sensitivity ... ok pbkdf2_sha512: test non-string passwords are rejected ... ok pbkdf2_sha512: test MAX_PASSWORD_SIZE is enforced ... ok pbkdf2_sha512: test forbidden characters not allowed in password ... SKIP: none listed pbkdf2_sha512: test known hashes ... ok pbkdf2_sha512: parsehash() ... ok pbkdf2_sha512: test known alternate hashes ... SKIP: no alternate hashes provided pbkdf2_sha512: parsehash() -- known outputs ... SKIP: no samples present pbkdf2_sha512: test known config strings ... SKIP: no config strings provided pbkdf2_sha512: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided pbkdf2_sha512: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided pbkdf2_sha512: test known foreign hashes ... ok pbkdf2_sha512: test non-string hashes are rejected ... ok pbkdf2_sha512: fuzz testing -- random passwords and options ... ok pbkdf2_sha512: multithreaded fuzz testing -- random password & options using multiple threads ... ok pbkdf2_sha512: .disable() / .enable() methods ... SKIP: not applicable pbkdf2_sha512: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents pbkdf2_sha512: HasRounds.using() -- max_rounds / max_desired_rounds ... ok pbkdf2_sha512: HasRounds.using() -- desired_rounds + needs_update() ... ok pbkdf2_sha512: HasRounds.using() -- sanity check test harness ... ok pbkdf2_sha512: HasRounds.using() -- default_rounds ... ok pbkdf2_sha512: HasRounds.using() -- min_rounds / min_desired_rounds ... ok pbkdf2_sha512: HasRounds.using() -- rounds ... ok pbkdf2_sha512: HasRounds.using() -- vary_rounds generation ... ok pbkdf2_sha512: HasRounds.using() -- vary_rounds parsing ... ok pbkdf2_sha512: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set pbkdf2_sha512: test no password size limits enforced (if truncate_size=None) ... ok pbkdf2_sha512: validate 'truncate_error' setting & related attributes ... ok pbkdf2_sha512: Handler.using() -- default_salt_size ... ok scram: validate required attributes ... ok scram: test basic config-string workflow ... ok scram: test basic using() workflow ... ok scram: test basic hash-string workflow. ... ok scram: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok scram: test hashes can be unicode or bytes ... ok scram: test multi-backend support ... SKIP: handler only has one backend scram: validate optional salt attributes ... ok scram: test hash() / genconfig() creates new salt each time ... ok scram: test hash() / genconfig() honors min_salt_size ... ok scram: test hash() / genconfig() honors max_salt_size ... ok scram: test hash() honors salt_chars ... ok scram: test non-string salt values ... ok scram: validate optional rounds attributes ... ok scram: test hash() / genconfig() honors min_rounds ... ok scram: test hash() / genconfig() honors max_rounds ... ok scram: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents scram: test password case sensitivity ... ok scram: test non-string passwords are rejected ... ok scram: test MAX_PASSWORD_SIZE is enforced ... ok scram: test forbidden characters not allowed in password ... SKIP: none listed scram: test known hashes ... ok scram: parsehash() ... ok scram: test known alternate hashes ... SKIP: no alternate hashes provided scram: parsehash() -- known outputs ... SKIP: no samples present scram: test known config strings ... SKIP: no config strings provided scram: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided scram: test known identifiable-but-malformed strings ... ok scram: test known foreign hashes ... ok scram: test non-string hashes are rejected ... ok scram: fuzz testing -- random passwords and options ... ok scram: multithreaded fuzz testing -- random password & options using multiple threads ... ok scram: test parsing of 'algs' setting ... ok scram: test internal parsing of 'checksum' keyword ... ok scram: test scram.extract_digest_info() ... ok scram: test scram.extract_digest_algs() ... ok scram: test scram.derive_digest() ... ok scram: needs_update() -- algs setting ... ok scram: test hash/verify use saslprep ... ok scram: using() -- 'algs' parameter ... ok scram: using() -- 'default_algs' parameter ... ok scram: test handling of 'algs' in context object ... ok scram: test verify(full=True) flag ... ok scram: .disable() / .enable() methods ... SKIP: not applicable scram: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents scram: HasRounds.using() -- max_rounds / max_desired_rounds ... ok scram: HasRounds.using() -- desired_rounds + needs_update() ... ok scram: HasRounds.using() -- sanity check test harness ... ok scram: HasRounds.using() -- default_rounds ... ok scram: HasRounds.using() -- min_rounds / min_desired_rounds ... ok scram: HasRounds.using() -- rounds ... ok scram: HasRounds.using() -- vary_rounds generation ... ok scram: HasRounds.using() -- vary_rounds parsing ... ok scram: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set scram: test no password size limits enforced (if truncate_size=None) ... ok scram: validate 'truncate_error' setting & related attributes ... ok scram: Handler.using() -- default_salt_size ... ok scrypt (builtin backend): validate required attributes ... ok scrypt (builtin backend): test basic config-string workflow ... ok scrypt (builtin backend): test basic using() workflow ... ok scrypt (builtin backend): test basic hash-string workflow. ... ok scrypt (builtin backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok scrypt (builtin backend): test hashes can be unicode or bytes ... ok scrypt (builtin backend): test multi-backend support ... ok scrypt (builtin backend): validate optional salt attributes ... ok scrypt (builtin backend): test hash() / genconfig() creates new salt each time ... ok scrypt (builtin backend): test hash() / genconfig() honors min_salt_size ... ok scrypt (builtin backend): test hash() / genconfig() honors max_salt_size ... ok scrypt (builtin backend): test hash() honors salt_chars ... ok scrypt (builtin backend): test non-string salt values ... ok scrypt (builtin backend): validate optional rounds attributes ... ok scrypt (builtin backend): test hash() / genconfig() honors min_rounds ... ok scrypt (builtin backend): test hash() / genconfig() honors max_rounds ... ok scrypt (builtin backend): validate HasManyIdents configuration ... ok scrypt (builtin backend): test password case sensitivity ... ok scrypt (builtin backend): test non-string passwords are rejected ... ok scrypt (builtin backend): test MAX_PASSWORD_SIZE is enforced ... ok scrypt (builtin backend): test forbidden characters not allowed in password ... SKIP: none listed scrypt (builtin backend): test known hashes ... ok scrypt (builtin backend): parsehash() ... ok scrypt (builtin backend): test known alternate hashes ... SKIP: no alternate hashes provided scrypt (builtin backend): parsehash() -- known outputs ... SKIP: no samples present scrypt (builtin backend): test known config strings ... SKIP: no config strings provided scrypt (builtin backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided scrypt (builtin backend): test known identifiable-but-malformed strings ... ok scrypt (builtin backend): test known foreign hashes ... ok scrypt (builtin backend): test non-string hashes are rejected ... ok scrypt (builtin backend): fuzz testing -- random passwords and options ... ok scrypt (builtin backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok scrypt (builtin backend): .disable() / .enable() methods ... SKIP: not applicable scrypt (builtin backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok scrypt (builtin backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok scrypt (builtin backend): HasRounds.using() -- desired_rounds + needs_update() ... ok scrypt (builtin backend): HasRounds.using() -- sanity check test harness ... ok scrypt (builtin backend): HasRounds.using() -- default_rounds ... ok scrypt (builtin backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok scrypt (builtin backend): HasRounds.using() -- rounds ... ok scrypt (builtin backend): HasRounds.using() -- vary_rounds generation ... ok scrypt (builtin backend): HasRounds.using() -- vary_rounds parsing ... ok scrypt (builtin backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set scrypt (builtin backend): test no password size limits enforced (if truncate_size=None) ... ok scrypt (builtin backend): validate 'truncate_error' setting & related attributes ... ok scrypt (builtin backend): Handler.using() -- default_salt_size ... ok scrypt (scrypt backend): validate required attributes ... SKIP: backend not available scrypt (scrypt backend): test basic config-string workflow ... SKIP: backend not available scrypt (scrypt backend): test basic using() workflow ... SKIP: backend not available scrypt (scrypt backend): test basic hash-string workflow. ... SKIP: backend not available scrypt (scrypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... SKIP: backend not available scrypt (scrypt backend): test hashes can be unicode or bytes ... SKIP: backend not available scrypt (scrypt backend): test multi-backend support ... SKIP: backend not available scrypt (scrypt backend): validate optional salt attributes ... SKIP: backend not available scrypt (scrypt backend): test hash() / genconfig() creates new salt each time ... SKIP: backend not available scrypt (scrypt backend): test hash() / genconfig() honors min_salt_size ... SKIP: backend not available scrypt (scrypt backend): test hash() / genconfig() honors max_salt_size ... SKIP: backend not available scrypt (scrypt backend): test hash() honors salt_chars ... SKIP: backend not available scrypt (scrypt backend): test non-string salt values ... SKIP: backend not available scrypt (scrypt backend): validate optional rounds attributes ... SKIP: backend not available scrypt (scrypt backend): test hash() / genconfig() honors min_rounds ... SKIP: backend not available scrypt (scrypt backend): test hash() / genconfig() honors max_rounds ... SKIP: backend not available scrypt (scrypt backend): validate HasManyIdents configuration ... SKIP: backend not available scrypt (scrypt backend): test password case sensitivity ... SKIP: backend not available scrypt (scrypt backend): test non-string passwords are rejected ... SKIP: backend not available scrypt (scrypt backend): test MAX_PASSWORD_SIZE is enforced ... SKIP: backend not available scrypt (scrypt backend): test forbidden characters not allowed in password ... SKIP: backend not available scrypt (scrypt backend): test known hashes ... SKIP: backend not available scrypt (scrypt backend): parsehash() ... SKIP: backend not available scrypt (scrypt backend): test known alternate hashes ... SKIP: backend not available scrypt (scrypt backend): parsehash() -- known outputs ... SKIP: backend not available scrypt (scrypt backend): test known config strings ... SKIP: backend not available scrypt (scrypt backend): test known unidentifiably-mangled strings ... SKIP: backend not available scrypt (scrypt backend): test known identifiable-but-malformed strings ... SKIP: backend not available scrypt (scrypt backend): test known foreign hashes ... SKIP: backend not available scrypt (scrypt backend): test non-string hashes are rejected ... SKIP: backend not available scrypt (scrypt backend): fuzz testing -- random passwords and options ... SKIP: backend not available scrypt (scrypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: backend not available scrypt (scrypt backend): .disable() / .enable() methods ... SKIP: backend not available scrypt (scrypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- desired_rounds + needs_update() ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- sanity check test harness ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- default_rounds ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- rounds ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- vary_rounds generation ... SKIP: backend not available scrypt (scrypt backend): HasRounds.using() -- vary_rounds parsing ... SKIP: backend not available scrypt (scrypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: backend not available scrypt (scrypt backend): test no password size limits enforced (if truncate_size=None) ... SKIP: backend not available scrypt (scrypt backend): validate 'truncate_error' setting & related attributes ... SKIP: backend not available scrypt (scrypt backend): Handler.using() -- default_salt_size ... SKIP: backend not available scrypt (stdlib backend): validate required attributes ... ok scrypt (stdlib backend): test basic config-string workflow ... ok scrypt (stdlib backend): test basic using() workflow ... ok scrypt (stdlib backend): test basic hash-string workflow. ... ok scrypt (stdlib backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok scrypt (stdlib backend): test hashes can be unicode or bytes ... ok scrypt (stdlib backend): test multi-backend support ... ok scrypt (stdlib backend): validate optional salt attributes ... ok scrypt (stdlib backend): test hash() / genconfig() creates new salt each time ... ok scrypt (stdlib backend): test hash() / genconfig() honors min_salt_size ... ok scrypt (stdlib backend): test hash() / genconfig() honors max_salt_size ... ok scrypt (stdlib backend): test hash() honors salt_chars ... ok scrypt (stdlib backend): test non-string salt values ... ok scrypt (stdlib backend): validate optional rounds attributes ... ok scrypt (stdlib backend): test hash() / genconfig() honors min_rounds ... ok scrypt (stdlib backend): test hash() / genconfig() honors max_rounds ... ok scrypt (stdlib backend): validate HasManyIdents configuration ... ok scrypt (stdlib backend): test password case sensitivity ... ok scrypt (stdlib backend): test non-string passwords are rejected ... ok scrypt (stdlib backend): test MAX_PASSWORD_SIZE is enforced ... ok scrypt (stdlib backend): test forbidden characters not allowed in password ... SKIP: none listed scrypt (stdlib backend): test known hashes ... ok scrypt (stdlib backend): parsehash() ... ok scrypt (stdlib backend): test known alternate hashes ... SKIP: no alternate hashes provided scrypt (stdlib backend): parsehash() -- known outputs ... SKIP: no samples present scrypt (stdlib backend): test known config strings ... SKIP: no config strings provided scrypt (stdlib backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided scrypt (stdlib backend): test known identifiable-but-malformed strings ... ok scrypt (stdlib backend): test known foreign hashes ... ok scrypt (stdlib backend): test non-string hashes are rejected ... ok scrypt (stdlib backend): fuzz testing -- random passwords and options ... ok scrypt (stdlib backend): multithreaded fuzz testing -- random password & options using multiple threads ... ok scrypt (stdlib backend): .disable() / .enable() methods ... SKIP: not applicable scrypt (stdlib backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... ok scrypt (stdlib backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok scrypt (stdlib backend): HasRounds.using() -- desired_rounds + needs_update() ... ok scrypt (stdlib backend): HasRounds.using() -- sanity check test harness ... ok scrypt (stdlib backend): HasRounds.using() -- default_rounds ... ok scrypt (stdlib backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok scrypt (stdlib backend): HasRounds.using() -- rounds ... ok scrypt (stdlib backend): HasRounds.using() -- vary_rounds generation ... ok scrypt (stdlib backend): HasRounds.using() -- vary_rounds parsing ... ok scrypt (stdlib backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set scrypt (stdlib backend): test no password size limits enforced (if truncate_size=None) ... ok scrypt (stdlib backend): validate 'truncate_error' setting & related attributes ... ok scrypt (stdlib backend): Handler.using() -- default_salt_size ... ok test_bsd_contexts (passlib.tests.test_hosts.HostsTest) ... ok test_host_context (passlib.tests.test_hosts.HostsTest) ... ok test_linux_context (passlib.tests.test_hosts.HostsTest) ... ok passlib.pwd.genphrase(): 'length' & 'entropy' keywords ... ok passlib.pwd.genphrase(): general behavior ... ok passlib.pwd.genphrase(): 'returns' keyword ... ok passlib.pwd.genphrase(): 'wordset' & 'words' options ... ok passlib.pwd: _self_info_rate() ... ok passlib.pwd.genword(): 'charset' & 'chars' options ... ok passlib.pwd.genword(): general behavior ... ok passlib.pwd.genword(): 'returns' keyword ... ok passlib.registry: test get_crypt_handler() ... ok passlib.registry: verify we have tests for all builtin handlers ... ok passlib.registry: test passlib.hash proxy object ... ok passlib.registry: test list_crypt_handlers() ... ok passlib.registry: test register_crypt_handler() ... ok passlib.registry: test register_crypt_handler_path() ... ok passlib.totp.AppWallet: .decrypt_key() ... ok passlib.totp.AppWallet: .decrypt_key() -- needs_recrypt flag ... ok passlib.totp.AppWallet: constructor -- 'default_tag' param ... ok passlib.totp.AppWallet: verify cost parameter via timing ... ok passlib.totp.AppWallet: .encrypt_key() ... ok passlib.totp.AppWallet: constructor -- 'secrets' param -- tag/value normalization ... ok passlib.totp.AppWallet: constructor -- 'secrets' param -- input types ... ok passlib.totp.TOTP: helper to iterate over test vectors. ... ok passlib.totp.TOTP: constructor -- 'alg' parameter ... ok passlib.totp.TOTP: constructor -- 'digits' parameter ... ok passlib.totp.TOTP: constructor -- 'issuer' parameter ... ok passlib.totp.TOTP: constructor -- 'key' and 'format' parameters ... ok passlib.totp.TOTP: constructor -- 'label' parameter ... ok passlib.totp.TOTP: constructor -- 'new' parameter ... ok passlib.totp.TOTP: constructor -- 'period' parameter ... ok passlib.totp.TOTP: constructor -- 'size' parameter ... ok passlib.totp.TOTP: from_dict() ... ok passlib.totp.TOTP: from_source() ... ok passlib.totp.TOTP: from_uri() ... ok passlib.totp.TOTP: generate() ... ok passlib.totp.TOTP: generate() -- reference vectors ... ok passlib.totp.TOTP: pretty_key() and .key attributes ... ok passlib.totp.TOTP: match() -- reference vectors ... ok passlib.totp.TOTP: match() -- 'reuse' and 'last_counter' parameters ... ok passlib.totp.TOTP: match() -- 'skew' parameters ... ok passlib.totp.TOTP: match() -- token normalization ... ok passlib.totp.TOTP: match() -- 'time' and 'window' parameters ... ok passlib.totp.TOTP: normalize_time() ... ok passlib.totp.TOTP: normalize_token() -- class method ... ok passlib.totp.TOTP: normalize_token() -- instance method ... ok passlib.totp.TOTP: internal test -- randotp() ... ok passlib.totp.TOTP: to_dict() ... ok passlib.totp.TOTP: to_uri() ... ok passlib.totp.TOTP: match() -- invalid TotpMatch object ... ok passlib.totp.TOTP: match() -- valid TotpMatch object with past token ... ok passlib.totp.TOTP: match() -- valid TotpMatch object with future token ... ok passlib.totp.TOTP: match() -- valid TotpMatch object ... ok passlib.totp.TOTP: generate() -- TotpToken() class ... ok passlib.totp.TOTP: using -- 'now' parameter ... ok passlib.totp.TOTP: using() -- 'period' parameter ... ok passlib.totp.TOTP: verify() ... ok ab64_decode() ... ok ab64_encode() ... ok b64s_decode() ... ok b64s_encode() ... ok test_constructor (passlib.tests.test_utils.Base64EngineTest) ... ok test b() helper, bytes and native str type ... ok test is_ascii_safe() ... ok test is_same_codec() ... ok test to_bytes() ... ok test to_native_str() ... ok test to_unicode() ... ok h64big codec: test encode_bytes/decode_bytes against random data ... ok h64big codec: test decode_bytes() against reference inputs ... ok h64big codec: test decode_bytes() with bad input ... ok h64big codec: test decode_bytes() ignores padding bits ... ok h64big codec: test decode_transposed_bytes() ... ok h64big codec: test decode_transposed_bytes() fails if map is a one-way ... ok h64big codec: test encode_bytes() against reference inputs ... ok h64big codec: test encode_bytes() with bad input ... ok h64big codec: test encode_transposed_bytes() ... ok h64big codec: test against reference integer encodings ... ok h64big codec: test_int12 (passlib.tests.test_utils.H64Big_Test) ... ok h64big codec: test_int24 (passlib.tests.test_utils.H64Big_Test) ... ok h64big codec: test_int6 (passlib.tests.test_utils.H64Big_Test) ... ok h64big codec: test_int64 (passlib.tests.test_utils.H64Big_Test) ... ok h64big codec: test repair_unused() ... ok h64 codec: test encode_bytes/decode_bytes against random data ... ok h64 codec: test decode_bytes() against reference inputs ... ok h64 codec: test decode_bytes() with bad input ... ok h64 codec: test decode_bytes() ignores padding bits ... ok h64 codec: test decode_transposed_bytes() ... ok h64 codec: test decode_transposed_bytes() fails if map is a one-way ... ok h64 codec: test encode_bytes() against reference inputs ... ok h64 codec: test encode_bytes() with bad input ... ok h64 codec: test encode_transposed_bytes() ... ok h64 codec: test against reference integer encodings ... ok h64 codec: test_int12 (passlib.tests.test_utils.H64_Test) ... ok h64 codec: test_int24 (passlib.tests.test_utils.H64_Test) ... ok h64 codec: test_int6 (passlib.tests.test_utils.H64_Test) ... ok h64 codec: test_int64 (passlib.tests.test_utils.H64_Test) ... ok h64 codec: test repair_unused() ... ok test_classproperty (passlib.tests.test_utils.MiscTest) ... ok test compat's lazymodule ... ok test consteq() ... ok test crypt.crypt() wrappers ... ok test_deprecated_function (passlib.tests.test_utils.MiscTest) ... ok generate_password() ... ok test genseed() ... ok getrandbytes() ... ok getrandstr() ... ok test is_crypt_context() ... ok test_memoized_property (passlib.tests.test_utils.MiscTest) ... ok test saslprep() unicode normalizer ... ok test_splitcomma (passlib.tests.test_utils.MiscTest) ... ok utf8_truncate() ... ok test PrefixWrapper lazy loading of handler ... ok test PrefixWrapper active loading of handler ... ok test PrefixWrapper with explicitly specified handler ... ok test_10_wrapped_attributes (passlib.tests.test_utils_handlers.PrefixWrapperTest) ... ok test_11_wrapped_methods (passlib.tests.test_utils_handlers.PrefixWrapperTest) ... ok test_12_ident (passlib.tests.test_utils_handlers.PrefixWrapperTest) ... ok test repr() ... ok test orig_prefix sanity check ... ok salted_test_hash: validate required attributes ... ok salted_test_hash: test basic config-string workflow ... ok salted_test_hash: test basic using() workflow ... ok salted_test_hash: test basic hash-string workflow. ... ok salted_test_hash: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok salted_test_hash: test hashes can be unicode or bytes ... ok salted_test_hash: test multi-backend support ... SKIP: handler only has one backend salted_test_hash: validate optional salt attributes ... ok salted_test_hash: test hash() / genconfig() creates new salt each time ... ok salted_test_hash: test hash() / genconfig() honors min_salt_size ... ok salted_test_hash: test hash() / genconfig() honors max_salt_size ... ok salted_test_hash: test hash() honors salt_chars ... ok salted_test_hash: test non-string salt values ... ok salted_test_hash: validate optional rounds attributes ... SKIP: handler lacks rounds attributes salted_test_hash: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes salted_test_hash: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes salted_test_hash: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents salted_test_hash: test password case sensitivity ... ok salted_test_hash: test non-string passwords are rejected ... ok salted_test_hash: test MAX_PASSWORD_SIZE is enforced ... ok salted_test_hash: test forbidden characters not allowed in password ... SKIP: none listed salted_test_hash: test known hashes ... ok salted_test_hash: parsehash() ... ok salted_test_hash: test known alternate hashes ... SKIP: no alternate hashes provided salted_test_hash: parsehash() -- known outputs ... SKIP: no samples present salted_test_hash: test known config strings ... SKIP: no config strings provided salted_test_hash: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided salted_test_hash: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided salted_test_hash: test known foreign hashes ... ok salted_test_hash: test non-string hashes are rejected ... ok salted_test_hash: fuzz testing -- random passwords and options ... ok salted_test_hash: multithreaded fuzz testing -- random password & options using multiple threads ... ok salted_test_hash: test_bad_kwds (passlib.tests.test_utils_handlers.SaltedHashTest) ... ok salted_test_hash: .disable() / .enable() methods ... SKIP: not applicable salted_test_hash: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents salted_test_hash: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes salted_test_hash: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes salted_test_hash: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set salted_test_hash: test no password size limits enforced (if truncate_size=None) ... ok salted_test_hash: validate 'truncate_error' setting & related attributes ... ok salted_test_hash: Handler.using() -- default_salt_size ... ok test StaticHandler class ... ok test StaticHandler legacy attr ... ok test GenericHandler.identify() ... ok test GenericHandler checksum handling ... ok test GenericHandler + HasRawChecksum mixin ... ok test GenericHandler + HasSalt mixin ... ok test GenericHandler + HasRounds mixin ... ok test GenericHandler + HasManyBackends mixin ... ok test GenericHandler + HasManyBackends mixin (deprecated api) ... ok test GenericHandler + HasManyIdents ... ok test parsehash() ... ok test bitsize() ... ok unsalted_test_hash: validate required attributes ... ok unsalted_test_hash: test basic config-string workflow ... ok unsalted_test_hash: test basic using() workflow ... ok unsalted_test_hash: test basic hash-string workflow. ... ok unsalted_test_hash: test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok unsalted_test_hash: test hashes can be unicode or bytes ... ok unsalted_test_hash: test multi-backend support ... SKIP: handler only has one backend unsalted_test_hash: validate optional salt attributes ... SKIP: handler doesn't have salt unsalted_test_hash: test hash() / genconfig() creates new salt each time ... SKIP: handler doesn't have salt unsalted_test_hash: test hash() / genconfig() honors min_salt_size ... SKIP: handler doesn't have salt unsalted_test_hash: test hash() / genconfig() honors max_salt_size ... SKIP: handler doesn't have salt unsalted_test_hash: test hash() honors salt_chars ... SKIP: handler doesn't have salt unsalted_test_hash: test non-string salt values ... SKIP: handler doesn't have salt unsalted_test_hash: validate optional rounds attributes ... SKIP: handler lacks rounds attributes unsalted_test_hash: test hash() / genconfig() honors min_rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: test hash() / genconfig() honors max_rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents unsalted_test_hash: test password case sensitivity ... ok unsalted_test_hash: test non-string passwords are rejected ... ok unsalted_test_hash: test MAX_PASSWORD_SIZE is enforced ... ok unsalted_test_hash: test forbidden characters not allowed in password ... SKIP: none listed unsalted_test_hash: test known hashes ... ok unsalted_test_hash: parsehash() ... ok unsalted_test_hash: test known alternate hashes ... SKIP: no alternate hashes provided unsalted_test_hash: parsehash() -- known outputs ... SKIP: no samples present unsalted_test_hash: test known config strings ... SKIP: hash has no settings unsalted_test_hash: test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided unsalted_test_hash: test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided unsalted_test_hash: test known foreign hashes ... ok unsalted_test_hash: test non-string hashes are rejected ... ok unsalted_test_hash: fuzz testing -- random passwords and options ... ok unsalted_test_hash: multithreaded fuzz testing -- random password & options using multiple threads ... ok unsalted_test_hash: test_bad_kwds (passlib.tests.test_utils_handlers.UnsaltedHashTest) ... ok unsalted_test_hash: .disable() / .enable() methods ... SKIP: not applicable unsalted_test_hash: HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents unsalted_test_hash: HasRounds.using() -- max_rounds / max_desired_rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- desired_rounds + needs_update() ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- sanity check test harness ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- default_rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- min_rounds / min_desired_rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- rounds ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- vary_rounds generation ... SKIP: handler lacks rounds attributes unsalted_test_hash: HasRounds.using() -- vary_rounds parsing ... SKIP: handler lacks rounds attributes unsalted_test_hash: test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set unsalted_test_hash: test no password size limits enforced (if truncate_size=None) ... ok unsalted_test_hash: validate 'truncate_error' setting & related attributes ... ok unsalted_test_hash: Handler.using() -- default_salt_size ... SKIP: handler doesn't have salt passlib.utils.md4.md4(): informational attributes ... ok passlib.utils.md4.md4(): copy() method ... ok passlib.utils.md4.md4(): digest() method ... ok passlib.utils.md4.md4(): hexdigest() method ... ok passlib.utils.md4.md4(): update() method ... ok passlib.utils.pbkdf2.pbkdf1(): test border cases ... ok passlib.utils.pbkdf2.pbkdf1(): test reference vectors ... ok passlib.utils.pbkdf2.pbkdf2(): test border cases ... ok passlib.utils.pbkdf2.pbkdf2(): test custom prf function ... ok passlib.utils.pbkdf2.pbkdf2(): test keylen==None ... ok passlib.utils.pbkdf2.pbkdf2(): test reference vectors ... ok passlib.utils.pbkdf2: norm_hash_name() ... ok test_lmhash (passlib.tests.test_win32.UtilTest) ... ok test_nthash (passlib.tests.test_win32.UtilTest) ... ok ---------------------------------------------------------------------- Ran 4420 tests OK (SKIP=2008) py$(PYV): OK congratulations :)