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() <backends: hashlib-ssl, builtin-from-bytes>: verify expected backends are present ... ok
passlib.crypto.digest.pbkdf2_hmac() <backends: hashlib-ssl, builtin-from-bytes>: test border cases ... ok
passlib.crypto.digest.pbkdf2_hmac() <backends: hashlib-ssl, builtin-from-bytes>: test keylen==None ... ok
passlib.crypto.digest.pbkdf2_hmac() <backends: hashlib-ssl, builtin-from-bytes>: test reference vectors ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: backend management ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: 'keylen' parameter ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: backend management -- missing backend ... SKIP: non-builtin backend is present
passlib.utils.scrypt.scrypt() <builtin backend>: 'n' (rounds) parameter ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: compare output to other backends ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: 'p' (parallelism) parameter ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: 'r' (block size) parameter ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: reference vectors ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: 'salt' parameter ... ok
passlib.utils.scrypt.scrypt() <builtin backend>: '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() <stdlib backend>: backend management ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: backend management -- default backend ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: 'keylen' parameter ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: 'n' (rounds) parameter ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: 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() <stdlib backend>: 'p' (parallelism) parameter ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: 'r' (block size) parameter ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: reference vectors ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: 'salt' parameter ... ok
passlib.utils.scrypt.scrypt() <stdlib backend>: '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='<preset>' ... 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 :)