Mock Version: 1.4.19 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/python-passlib.spec'], chrootPath='/var/lib/mock/1043446-epel-8-x86_64-1569935906.129690/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'en_US.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '5ef6ca55b8ee432887d717d7836f0bce', '-D', '/var/lib/mock/1043446-epel-8-x86_64-1569935906.129690/root', '-a', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;\\007"', '--setenv=PS1= \\s-\\v\\$ ', '--setenv=LANG=en_US.UTF-8', '-u', 'mockbuild', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/python-passlib.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'en_US.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Wrote: /builddir/build/SRPMS/python-passlib-1.7.1-5.el8.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/python-passlib.spec'], chrootPath='/var/lib/mock/1043446-epel-8-x86_64-1569935906.129690/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'en_US.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', 'd1c87b66c86741ae80151417bd5fda7a', '-D', '/var/lib/mock/1043446-epel-8-x86_64-1569935906.129690/root', '-a', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.6triv302:/etc/resolv.conf', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;\\007"', '--setenv=PS1= \\s-\\v\\$ ', '--setenv=LANG=en_US.UTF-8', '-u', 'mockbuild', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/python-passlib.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'en_US.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.KetuK9 + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf passlib-1.7.1 + /usr/bin/gzip -dc /builddir/build/SOURCES/passlib-1.7.1.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd passlib-1.7.1 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/bin/cat /builddir/build/SOURCES/python-passlib-1.7.1-libxcrypt-compat.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch + /usr/bin/cat /builddir/build/SOURCES/0001-Remove-time-clock.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch + /usr/bin/cat /builddir/build/SOURCES/0002-Fix-for-Python-3-8.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch + rm -fr passlib.egg-info + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Gsv3Ff + umask 022 + cd /builddir/build/BUILD + cd passlib-1.7.1 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' + /usr/libexec/platform-python setup.py build '--executable=/usr/libexec/platform-python -s' running build running build_py creating build creating build/lib creating build/lib/passlib copying passlib/win32.py -> build/lib/passlib copying passlib/apache.py -> build/lib/passlib copying passlib/totp.py -> build/lib/passlib copying passlib/apps.py -> build/lib/passlib copying passlib/registry.py -> build/lib/passlib copying passlib/hash.py -> build/lib/passlib copying passlib/pwd.py -> build/lib/passlib copying passlib/exc.py -> build/lib/passlib copying passlib/hosts.py -> build/lib/passlib copying passlib/context.py -> build/lib/passlib copying passlib/ifc.py -> build/lib/passlib copying passlib/__init__.py -> build/lib/passlib creating build/lib/passlib/tests copying passlib/tests/test_handlers.py -> build/lib/passlib/tests copying passlib/tests/test_context.py -> build/lib/passlib/tests copying passlib/tests/test_context_deprecated.py -> build/lib/passlib/tests copying passlib/tests/test_crypto_des.py -> build/lib/passlib/tests copying passlib/tests/__main__.py -> build/lib/passlib/tests copying passlib/tests/test_registry.py -> build/lib/passlib/tests copying passlib/tests/test_crypto_scrypt.py -> build/lib/passlib/tests copying passlib/tests/test_ext_django.py -> build/lib/passlib/tests copying passlib/tests/test_win32.py -> build/lib/passlib/tests copying passlib/tests/tox_support.py -> build/lib/passlib/tests copying passlib/tests/test_hosts.py -> build/lib/passlib/tests copying passlib/tests/test_crypto_builtin_md4.py -> build/lib/passlib/tests copying passlib/tests/utils.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_django.py -> build/lib/passlib/tests copying passlib/tests/backports.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_cisco.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_bcrypt.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_argon2.py -> build/lib/passlib/tests copying passlib/tests/_test_bad_register.py -> build/lib/passlib/tests copying passlib/tests/test_totp.py -> build/lib/passlib/tests copying passlib/tests/test_ext_django_source.py -> build/lib/passlib/tests copying passlib/tests/test_utils_pbkdf2.py -> build/lib/passlib/tests copying passlib/tests/test_apps.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_pbkdf2.py -> build/lib/passlib/tests copying passlib/tests/test_utils.py -> build/lib/passlib/tests copying passlib/tests/test_apache.py -> build/lib/passlib/tests copying passlib/tests/test_crypto_digest.py -> build/lib/passlib/tests copying passlib/tests/test_pwd.py -> build/lib/passlib/tests copying passlib/tests/test_utils_md4.py -> build/lib/passlib/tests copying passlib/tests/test_utils_handlers.py -> build/lib/passlib/tests copying passlib/tests/test_handlers_scrypt.py -> build/lib/passlib/tests copying passlib/tests/__init__.py -> build/lib/passlib/tests creating build/lib/passlib/handlers copying passlib/handlers/misc.py -> build/lib/passlib/handlers copying passlib/handlers/sun_md5_crypt.py -> build/lib/passlib/handlers copying passlib/handlers/cisco.py -> build/lib/passlib/handlers copying passlib/handlers/mysql.py -> build/lib/passlib/handlers copying passlib/handlers/phpass.py -> build/lib/passlib/handlers copying passlib/handlers/pbkdf2.py -> build/lib/passlib/handlers copying passlib/handlers/django.py -> build/lib/passlib/handlers copying passlib/handlers/postgres.py -> build/lib/passlib/handlers copying passlib/handlers/windows.py -> build/lib/passlib/handlers copying passlib/handlers/digests.py -> build/lib/passlib/handlers copying passlib/handlers/mssql.py -> build/lib/passlib/handlers copying passlib/handlers/sha2_crypt.py -> build/lib/passlib/handlers copying passlib/handlers/md5_crypt.py -> build/lib/passlib/handlers copying passlib/handlers/bcrypt.py -> build/lib/passlib/handlers copying passlib/handlers/argon2.py -> build/lib/passlib/handlers copying passlib/handlers/sha1_crypt.py -> build/lib/passlib/handlers copying passlib/handlers/des_crypt.py -> build/lib/passlib/handlers copying passlib/handlers/roundup.py -> build/lib/passlib/handlers copying passlib/handlers/scram.py -> build/lib/passlib/handlers copying passlib/handlers/oracle.py -> build/lib/passlib/handlers copying passlib/handlers/scrypt.py -> build/lib/passlib/handlers copying passlib/handlers/ldap_digests.py -> build/lib/passlib/handlers copying passlib/handlers/__init__.py -> build/lib/passlib/handlers copying passlib/handlers/fshp.py -> build/lib/passlib/handlers creating build/lib/passlib/_setup copying passlib/_setup/stamp.py -> build/lib/passlib/_setup copying passlib/_setup/__init__.py -> build/lib/passlib/_setup creating build/lib/passlib/crypto copying passlib/crypto/des.py -> build/lib/passlib/crypto copying passlib/crypto/digest.py -> build/lib/passlib/crypto copying passlib/crypto/_md4.py -> build/lib/passlib/crypto copying passlib/crypto/__init__.py -> build/lib/passlib/crypto creating build/lib/passlib/ext copying passlib/ext/__init__.py -> build/lib/passlib/ext creating build/lib/passlib/utils copying passlib/utils/__init__.py -> build/lib/passlib/utils copying passlib/utils/des.py -> build/lib/passlib/utils copying passlib/utils/pbkdf2.py -> build/lib/passlib/utils copying passlib/utils/binary.py -> build/lib/passlib/utils copying passlib/utils/decor.py -> build/lib/passlib/utils copying passlib/utils/handlers.py -> build/lib/passlib/utils copying passlib/utils/md4.py -> build/lib/passlib/utils creating build/lib/passlib/crypto/scrypt copying passlib/crypto/scrypt/_gen_files.py -> build/lib/passlib/crypto/scrypt copying passlib/crypto/scrypt/_builtin.py -> build/lib/passlib/crypto/scrypt copying passlib/crypto/scrypt/_salsa.py -> build/lib/passlib/crypto/scrypt copying passlib/crypto/scrypt/__init__.py -> build/lib/passlib/crypto/scrypt creating build/lib/passlib/crypto/_blowfish copying passlib/crypto/_blowfish/_gen_files.py -> build/lib/passlib/crypto/_blowfish copying passlib/crypto/_blowfish/unrolled.py -> build/lib/passlib/crypto/_blowfish copying passlib/crypto/_blowfish/base.py -> build/lib/passlib/crypto/_blowfish copying passlib/crypto/_blowfish/__init__.py -> build/lib/passlib/crypto/_blowfish creating build/lib/passlib/ext/django copying passlib/ext/django/models.py -> build/lib/passlib/ext/django copying passlib/ext/django/utils.py -> build/lib/passlib/ext/django copying passlib/ext/django/__init__.py -> build/lib/passlib/ext/django creating build/lib/passlib/utils/compat copying passlib/utils/compat/_ordered_dict.py -> build/lib/passlib/utils/compat copying passlib/utils/compat/__init__.py -> build/lib/passlib/utils/compat creating build/lib/passlib/_data creating build/lib/passlib/_data/wordsets copying passlib/_data/wordsets/eff_long.txt -> build/lib/passlib/_data/wordsets copying passlib/_data/wordsets/bip39.txt -> build/lib/passlib/_data/wordsets copying passlib/_data/wordsets/eff_prefixed.txt -> build/lib/passlib/_data/wordsets copying passlib/_data/wordsets/eff_short.txt -> build/lib/passlib/_data/wordsets copying passlib/tests/sample1c.cfg -> build/lib/passlib/tests copying passlib/tests/sample_config_1s.cfg -> build/lib/passlib/tests copying passlib/tests/sample1.cfg -> build/lib/passlib/tests copying passlib/tests/sample1b.cfg -> build/lib/passlib/tests + sleep 1 + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.yfki4q + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 ++ dirname /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 + cd passlib-1.7.1 + export PASSLIB_SETUP_TAG_RELEASE=no + PASSLIB_SETUP_TAG_RELEASE=no + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' + /usr/libexec/platform-python setup.py install -O1 --skip-build --root /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 running install running install_lib creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6 creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data/wordsets copying build/lib/passlib/_data/wordsets/eff_short.txt -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data/wordsets copying build/lib/passlib/_data/wordsets/eff_prefixed.txt -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data/wordsets copying build/lib/passlib/_data/wordsets/bip39.txt -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data/wordsets copying build/lib/passlib/_data/wordsets/eff_long.txt -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_data/wordsets creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/compat copying build/lib/passlib/utils/compat/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/compat copying build/lib/passlib/utils/compat/_ordered_dict.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/compat copying build/lib/passlib/utils/md4.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/handlers.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/decor.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/binary.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/pbkdf2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/des.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils copying build/lib/passlib/utils/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django copying build/lib/passlib/ext/django/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django copying build/lib/passlib/ext/django/utils.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django copying build/lib/passlib/ext/django/models.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django copying build/lib/passlib/ext/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish copying build/lib/passlib/crypto/_blowfish/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish copying build/lib/passlib/crypto/_blowfish/base.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish copying build/lib/passlib/crypto/_blowfish/unrolled.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish copying build/lib/passlib/crypto/_blowfish/_gen_files.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt copying build/lib/passlib/crypto/scrypt/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt copying build/lib/passlib/crypto/scrypt/_salsa.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt copying build/lib/passlib/crypto/scrypt/_builtin.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt copying build/lib/passlib/crypto/scrypt/_gen_files.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt copying build/lib/passlib/crypto/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto copying build/lib/passlib/crypto/_md4.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto copying build/lib/passlib/crypto/digest.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto copying build/lib/passlib/crypto/des.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_setup copying build/lib/passlib/_setup/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_setup copying build/lib/passlib/_setup/stamp.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_setup creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/fshp.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/ldap_digests.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/scrypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/oracle.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/scram.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/roundup.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/des_crypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/sha1_crypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/argon2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/bcrypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/md5_crypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/sha2_crypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/mssql.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/digests.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/windows.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/postgres.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/django.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/pbkdf2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/phpass.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/mysql.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/cisco.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/sun_md5_crypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers copying build/lib/passlib/handlers/misc.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers creating /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/sample1b.cfg -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/sample1.cfg -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/sample_config_1s.cfg -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/sample1c.cfg -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_scrypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_utils_handlers.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_utils_md4.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_pwd.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_crypto_digest.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_apache.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_utils.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_pbkdf2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_apps.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_utils_pbkdf2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_ext_django_source.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_totp.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/_test_bad_register.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_argon2.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_bcrypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_cisco.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/backports.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers_django.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/utils.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_crypto_builtin_md4.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_hosts.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/tox_support.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_win32.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_ext_django.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_crypto_scrypt.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_registry.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/__main__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_crypto_des.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_context_deprecated.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_context.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/tests/test_handlers.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests copying build/lib/passlib/__init__.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/ifc.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/context.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/hosts.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/exc.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/pwd.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/hash.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/registry.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/apps.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/totp.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/apache.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib copying build/lib/passlib/win32.py -> /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/compat/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/compat/_ordered_dict.py to _ordered_dict.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/md4.py to md4.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/handlers.py to handlers.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/decor.py to decor.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/binary.py to binary.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/pbkdf2.py to pbkdf2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/des.py to des.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/utils/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django/utils.py to utils.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/django/models.py to models.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ext/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish/base.py to base.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish/unrolled.py to unrolled.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_blowfish/_gen_files.py to _gen_files.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt/_salsa.py to _salsa.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt/_builtin.py to _builtin.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/scrypt/_gen_files.py to _gen_files.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/_md4.py to _md4.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/digest.py to digest.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/crypto/des.py to des.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_setup/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/_setup/stamp.py to stamp.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/fshp.py to fshp.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/ldap_digests.py to ldap_digests.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/scrypt.py to scrypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/oracle.py to oracle.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/scram.py to scram.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/roundup.py to roundup.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/des_crypt.py to des_crypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/sha1_crypt.py to sha1_crypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/argon2.py to argon2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/bcrypt.py to bcrypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/md5_crypt.py to md5_crypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/sha2_crypt.py to sha2_crypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/mssql.py to mssql.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/digests.py to digests.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/windows.py to windows.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/postgres.py to postgres.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/django.py to django.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/pbkdf2.py to pbkdf2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/phpass.py to phpass.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/mysql.py to mysql.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/cisco.py to cisco.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/sun_md5_crypt.py to sun_md5_crypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/handlers/misc.py to misc.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_scrypt.py to test_handlers_scrypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_utils_handlers.py to test_utils_handlers.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_utils_md4.py to test_utils_md4.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_pwd.py to test_pwd.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_crypto_digest.py to test_crypto_digest.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_apache.py to test_apache.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_utils.py to test_utils.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_pbkdf2.py to test_handlers_pbkdf2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_apps.py to test_apps.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_utils_pbkdf2.py to test_utils_pbkdf2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_ext_django_source.py to test_ext_django_source.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_totp.py to test_totp.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/_test_bad_register.py to _test_bad_register.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_argon2.py to test_handlers_argon2.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_bcrypt.py to test_handlers_bcrypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_cisco.py to test_handlers_cisco.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/backports.py to backports.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers_django.py to test_handlers_django.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/utils.py to utils.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_crypto_builtin_md4.py to test_crypto_builtin_md4.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_hosts.py to test_hosts.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/tox_support.py to tox_support.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_win32.py to test_win32.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_ext_django.py to test_ext_django.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_crypto_scrypt.py to test_crypto_scrypt.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_registry.py to test_registry.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/__main__.py to __main__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_crypto_des.py to test_crypto_des.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_context_deprecated.py to test_context_deprecated.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_context.py to test_context.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/tests/test_handlers.py to test_handlers.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/__init__.py to __init__.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/ifc.py to ifc.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/context.py to context.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/hosts.py to hosts.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/exc.py to exc.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/pwd.py to pwd.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/hash.py to hash.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/registry.py to registry.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/apps.py to apps.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/totp.py to totp.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/apache.py to apache.cpython-36.pyc byte-compiling /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib/win32.py to win32.cpython-36.pyc writing byte-compilation script '/tmp/tmpn05onaq1.py' /usr/libexec/platform-python /tmp/tmpn05onaq1.py removing /tmp/tmpn05onaq1.py running install_egg_info running egg_info creating passlib.egg-info writing passlib.egg-info/PKG-INFO writing dependency_links to passlib.egg-info/dependency_links.txt writing requirements to passlib.egg-info/requires.txt writing top-level names to passlib.egg-info/top_level.txt writing manifest file 'passlib.egg-info/SOURCES.txt' reading manifest file 'passlib.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching 'CHANGES' writing manifest file 'passlib.egg-info/SOURCES.txt' Copying passlib.egg-info to /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6/site-packages/passlib-1.7.1-py3.6.egg-info running install_scripts + /usr/lib/rpm/find-debuginfo.sh -j2 --strict-build-id -m -i --build-id-seed 1.7.1-5.el8 --unique-debug-suffix -1.7.1-5.el8.x86_64 --unique-debug-src-base python-passlib-1.7.1-5.el8.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /builddir/build/BUILD/passlib-1.7.1 find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig /sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile 1 Bytecompiling .py files below /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/lib/python3.6 using /usr/libexec/platform-python + /usr/lib/rpm/brp-python-hardlink + PYTHON3=/usr/libexec/platform-python + /usr/lib/rpm/redhat/brp-mangle-shebangs Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.SIaqiN + umask 022 + cd /builddir/build/BUILD + cd passlib-1.7.1 + nosetests-3.6 -v /builddir/build/BUILD/passlib-1.7.1/passlib/crypto/scrypt/__init__.py:127: 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 "is strongly recommended" % slowdown, exc.PasslibSecurityWarning) 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 ... /builddir/build/BUILD/passlib-1.7.1/passlib/apache.py:717: PasslibSecurityWarning: HtpasswdFile: no bcrypt backends available, using fallback for default scheme 'portable' exc.PasslibSecurityWarning) 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 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: norm_hash_name() ... ok passlib.crypto.digest.pbkdf1: test border cases ... ok passlib.crypto.digest.pbkdf1: test reference vectors ... ok passlib.crypto.digest.pbkdf2_hmac() : verify expected backends are present ... ok passlib.crypto.digest.pbkdf2_hmac() : test border cases ... ok passlib.crypto.digest.pbkdf2_hmac() : test keylen==None ... ok passlib.crypto.digest.pbkdf2_hmac() : test reference vectors ... ok passlib.utils.scrypt.scrypt() : backend management ... ok passlib.utils.scrypt.scrypt() : 'keylen' parameter ... ok passlib.utils.scrypt.scrypt() : backend management -- missing backend ... ok passlib.utils.scrypt.scrypt() : 'n' (rounds) parameter ... ok passlib.utils.scrypt.scrypt() : compare output to other backends ... SKIP: no other backends found passlib.utils.scrypt.scrypt() : 'p' (parallelism) parameter ... ok passlib.utils.scrypt.scrypt() : 'r' (block size) parameter ... ok passlib.utils.scrypt.scrypt() : reference vectors ... ok passlib.utils.scrypt.scrypt() : 'salt' parameter ... ok passlib.utils.scrypt.scrypt() : 'secret' parameter ... ok passlib.crypto.scrypt._builtin: bmix() ... ok passlib.crypto.scrypt._builtin: salsa20() ... ok passlib.crypto.scrypt._builtin: smix() ... ok verify django behavior: test hashing interface ... SKIP: Django not installed passlib.ext.django plugin: test set_django_password_context patch/unpatch ... SKIP: Django not installed passlib.ext.django plugin: test detection of foreign monkeypatching ... SKIP: Django not installed passlib.ext.django plugin: test Hasher-compatible handler wrappers ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG='disabled' ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG='' ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG default behavior ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_CONFIG type checks ... SKIP: Django not installed passlib.ext.django plugin: test PASSLIB_GET_CATEGORY parameter ... SKIP: Django not installed verify extension behavior: test hashing interface ... 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 (os_crypt backend): validate required attributes ... ok bsdi_crypt (os_crypt backend): test basic config-string workflow ... ok bsdi_crypt (os_crypt backend): test basic using() workflow ... ok bsdi_crypt (os_crypt backend): test basic hash-string workflow. ... ok bsdi_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok bsdi_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok bsdi_crypt (os_crypt backend): test multi-backend support ... ok bsdi_crypt (os_crypt backend): validate optional salt attributes ... ok bsdi_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok bsdi_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok bsdi_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok bsdi_crypt (os_crypt backend): test hash() honors salt_chars ... ok bsdi_crypt (os_crypt backend): test non-string salt values ... ok bsdi_crypt (os_crypt backend): validate optional rounds attributes ... ok bsdi_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok bsdi_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok bsdi_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents bsdi_crypt (os_crypt backend): test password case sensitivity ... ok bsdi_crypt (os_crypt backend): test non-string passwords are rejected ... ok bsdi_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok bsdi_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok bsdi_crypt (os_crypt backend): test known hashes ... ok bsdi_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided bsdi_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided bsdi_crypt (os_crypt backend): test known unidentifiably-mangled strings ... ok bsdi_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided bsdi_crypt (os_crypt backend): test known foreign hashes ... ok bsdi_crypt (os_crypt backend): test non-string hashes are rejected ... ok bsdi_crypt (os_crypt backend): test_77_fuzz_input (passlib.tests.test_handlers.bsdi_crypt_os_crypt_test) ... ok bsdi_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: requires >= 'full' test mode bsdi_crypt (os_crypt backend): test with faulty crypt() ... ok bsdi_crypt (os_crypt backend): test per-call crypt() fallback ... ok bsdi_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'linux' platform bsdi_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable bsdi_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents bsdi_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- rounds ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok bsdi_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok bsdi_crypt (os_crypt backend): needs_update() should flag even rounds ... ok bsdi_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set bsdi_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok bsdi_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok bsdi_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 (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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 ... ok 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 (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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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_sha1_crypt (os_crypt backend): validate required attributes ... ok ldap_sha1_crypt (os_crypt backend): test basic config-string workflow ... ok ldap_sha1_crypt (os_crypt backend): test basic using() workflow ... ok ldap_sha1_crypt (os_crypt backend): test basic hash-string workflow. ... ok ldap_sha1_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok ldap_sha1_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok ldap_sha1_crypt (os_crypt backend): test multi-backend support ... ok ldap_sha1_crypt (os_crypt backend): validate optional salt attributes ... ok ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok ldap_sha1_crypt (os_crypt backend): test hash() honors salt_chars ... ok ldap_sha1_crypt (os_crypt backend): test non-string salt values ... ok ldap_sha1_crypt (os_crypt backend): validate optional rounds attributes ... ok ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok ldap_sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok ldap_sha1_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents ldap_sha1_crypt (os_crypt backend): test password case sensitivity ... ok ldap_sha1_crypt (os_crypt backend): test non-string passwords are rejected ... ok ldap_sha1_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok ldap_sha1_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok ldap_sha1_crypt (os_crypt backend): test known hashes ... ok ldap_sha1_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided ldap_sha1_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided ldap_sha1_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided ldap_sha1_crypt (os_crypt backend): test known identifiable-but-malformed strings ... SKIP: no malformed hashes provided ldap_sha1_crypt (os_crypt backend): test known foreign hashes ... ok ldap_sha1_crypt (os_crypt backend): test non-string hashes are rejected ... ok ldap_sha1_crypt (os_crypt backend): test_77_fuzz_input (passlib.tests.test_handlers.ldap_sha1_crypt_os_crypt_test) ... SKIP: unneeded ldap_sha1_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: requires >= 'full' test mode ldap_sha1_crypt (os_crypt backend): test with faulty crypt() ... ok ldap_sha1_crypt (os_crypt backend): test per-call crypt() fallback ... ok 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: not applicable ldap_sha1_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- rounds ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok ldap_sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok ldap_sha1_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set ldap_sha1_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok ldap_sha1_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok ldap_sha1_crypt (os_crypt backend): Handler.using() -- default_salt_size ... ok 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 (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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 ... ok 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... ok 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... ok 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... ok 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 (os_crypt backend): validate required attributes ... ok sha1_crypt (os_crypt backend): test basic config-string workflow ... ok sha1_crypt (os_crypt backend): test basic using() workflow ... ok sha1_crypt (os_crypt backend): test basic hash-string workflow. ... ok sha1_crypt (os_crypt backend): test hash-string workflow with legacy .encrypt() & .genhash() methods ... ok sha1_crypt (os_crypt backend): test hashes can be unicode or bytes ... ok sha1_crypt (os_crypt backend): test multi-backend support ... ok sha1_crypt (os_crypt backend): validate optional salt attributes ... ok sha1_crypt (os_crypt backend): test hash() / genconfig() creates new salt each time ... ok sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_salt_size ... ok sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_salt_size ... ok sha1_crypt (os_crypt backend): test hash() honors salt_chars ... ok sha1_crypt (os_crypt backend): test non-string salt values ... ok sha1_crypt (os_crypt backend): validate optional rounds attributes ... ok sha1_crypt (os_crypt backend): test hash() / genconfig() honors min_rounds ... ok sha1_crypt (os_crypt backend): test hash() / genconfig() honors max_rounds ... ok sha1_crypt (os_crypt backend): validate HasManyIdents configuration ... SKIP: handler doesn't derive from HasManyIdents sha1_crypt (os_crypt backend): test password case sensitivity ... ok sha1_crypt (os_crypt backend): test non-string passwords are rejected ... ok sha1_crypt (os_crypt backend): test MAX_PASSWORD_SIZE is enforced ... ok sha1_crypt (os_crypt backend): test forbidden characters not allowed in password ... ok sha1_crypt (os_crypt backend): test known hashes ... ok sha1_crypt (os_crypt backend): test known alternate hashes ... SKIP: no alternate hashes provided sha1_crypt (os_crypt backend): test known config strings ... SKIP: no config strings provided sha1_crypt (os_crypt backend): test known unidentifiably-mangled strings ... SKIP: no unidentified hashes provided sha1_crypt (os_crypt backend): test known identifiable-but-malformed strings ... ok sha1_crypt (os_crypt backend): test known foreign hashes ... ok sha1_crypt (os_crypt backend): test non-string hashes are rejected ... ok sha1_crypt (os_crypt backend): fuzz testing -- random passwords and options ... ok sha1_crypt (os_crypt backend): multithreaded fuzz testing -- random password & options using multiple threads ... SKIP: requires >= 'full' test mode sha1_crypt (os_crypt backend): test with faulty crypt() ... ok sha1_crypt (os_crypt backend): test per-call crypt() fallback ... ok sha1_crypt (os_crypt backend): test platform-specific crypt() support detection ... SKIP: no data for 'linux' platform sha1_crypt (os_crypt backend): .disable() / .enable() methods ... SKIP: not applicable sha1_crypt (os_crypt backend): HasManyIdents.using() -- 'default_ident' and 'ident' keywords ... SKIP: handler doesn't derive from HasManyIdents sha1_crypt (os_crypt backend): HasRounds.using() -- max_rounds / max_desired_rounds ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- desired_rounds + needs_update() ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- sanity check test harness ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- default_rounds ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- min_rounds / min_desired_rounds ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- rounds ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds generation ... ok sha1_crypt (os_crypt backend): HasRounds.using() -- vary_rounds parsing ... ok sha1_crypt (os_crypt backend): test password size limits raise truncate_error (if appropriate) ... SKIP: truncate_size not set sha1_crypt (os_crypt backend): test no password size limits enforced (if truncate_size=None) ... ok sha1_crypt (os_crypt backend): validate 'truncate_error' setting & related attributes ... ok sha1_crypt (os_crypt 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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 ... ok 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 (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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 ... ok 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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: requires >= 'full' test mode 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 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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_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: test known alternate hashes ... ok 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... ok 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: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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): test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 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() ... SKIP: 'cryptography' package not installed passlib.totp.AppWallet: .decrypt_key() -- needs_recrypt flag ... SKIP: 'cryptography' package not installed passlib.totp.AppWallet: constructor -- 'default_tag' param ... ok passlib.totp.AppWallet: verify cost parameter via timing ... SKIP: 'cryptography' package not installed passlib.totp.AppWallet: .encrypt_key() ... SKIP: 'cryptography' package not installed 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 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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: test known alternate hashes ... SKIP: no alternate hashes provided 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 ... SKIP: requires >= 'full' test mode 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 3020 tests in 194.009s OK (SKIP=1267) + exit 0 Processing files: python3-passlib-1.7.1-5.el8.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.w0xu30 + umask 022 + cd /builddir/build/BUILD + cd passlib-1.7.1 + DOCDIR=/builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/doc/python3-passlib + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/doc/python3-passlib + cp -pr README /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/doc/python3-passlib + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.EjMmSe + umask 022 + cd /builddir/build/BUILD + cd passlib-1.7.1 + LICENSEDIR=/builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/licenses/python3-passlib + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/licenses/python3-passlib + cp -pr LICENSE /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64/usr/share/licenses/python3-passlib + exit 0 Provides: python3-passlib = 1.7.1-5.el8 python3.6dist(passlib) = 1.7.1 python3dist(passlib) = 1.7.1 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 3.6 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 Wrote: /builddir/build/RPMS/python3-passlib-1.7.1-5.el8.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.skyZ7D + umask 022 + cd /builddir/build/BUILD + cd passlib-1.7.1 + /usr/bin/rm -rf /builddir/build/BUILDROOT/python-passlib-1.7.1-5.el8.x86_64 + exit 0 Child return code was: 0