On 2017/01/19 12:58, Jiri B wrote: > Hi, > > while playing with Ansible I saw an issue with password_hash('blowfish') > filter - it did not work[1], and I found py-passlib has newer version. > > With py-passlib 1.7.0 I am able with little change in Ansible (22 chars > long salt) to make encrypted passwords using Blowfish on OpenBSD. > > With old py-passlib I could not make passwords to have '2b' ident. > > I did not test much, not enough skills here :/ There sure will be > some mistakes, sorry. > > (My goal was just make Ansible do valid passwords encryption. Not sure > I follow good way.) > > j. > > [1] https://marc.info/?l=openbsd-ports&m=148482296414763&w=2 > > ~~ > --- > /usr/local/lib/python2.7/site-packages/ansible/plugins/filter/core.py.orig > Thu Jan 19 18:46:05 2017 > +++ /usr/local/lib/python2.7/site-packages/ansible/plugins/filter/core.py > Thu Jan 19 18:48:42 2017 > @ -247,6 +247,8 @@ def get_encrypted_password(password, hashtype='sha512' > r = SystemRandom() > if hashtype in ['md5']: > saltsize = 8 > + elif hashtype in ['blowfish']: > + saltsize = 22 > else: > saltsize = 16 > salt = ''.join([r.choice(string.ascii_letters + string.digits) > for _ in range(saltsize)]) > # > ~~~ > > Diff:
Here is a better diff for passlib. Updates HOMEPAGE and fixes the egg-version mess. I'm not using passlib for anything at the moment so haven't tested runtime yet but it should be equivalent to your diff apart from those fixes. Index: Makefile =================================================================== RCS file: /cvs/ports/security/py-passlib/Makefile,v retrieving revision 1.8 diff -u -p -r1.8 Makefile --- Makefile 3 Jan 2017 19:26:14 -0000 1.8 +++ Makefile 19 Jan 2017 20:36:22 -0000 @@ -2,16 +2,15 @@ COMMENT = Python module providing a password hashing framework -MODPY_EGG_VERSION = 1.6.5 +MODPY_EGG_VERSION = 1.7.0 DISTNAME = passlib-${MODPY_EGG_VERSION} PKGNAME = py-passlib-${MODPY_EGG_VERSION} -REVISION = 0 CATEGORIES = security MAINTAINER = Stuart Henderson <st...@openbsd.org> -HOMEPAGE = https://pythonhosted.org/passlib/ +HOMEPAGE = https://bitbucket.org/ecollins/passlib/wiki/Home # BSD PERMIT_PACKAGE_CDROM = Yes @@ -25,6 +24,7 @@ FLAVOR ?= TEST_DEPENDS = devel/py-nose${MODPY_FLAVOR} \ devel/py-mock${MODPY_FLAVOR} +MAKE_ENV = PASSLIB_SETUP_TAG_RELEASE=no do-test: cd ${WRKSRC} && \ Index: distinfo =================================================================== RCS file: /cvs/ports/security/py-passlib/distinfo,v retrieving revision 1.2 diff -u -p -r1.2 distinfo --- distinfo 15 Jan 2016 12:46:36 -0000 1.2 +++ distinfo 19 Jan 2017 20:36:22 -0000 @@ -1,2 +1,2 @@ -SHA256 (passlib-1.6.5.tar.gz) = qD009T3JsXqkLJo1w/vMUSDz/LB/f4ch7EXmonvjR/w= -SIZE (passlib-1.6.5.tar.gz) = 417044 +SHA256 (passlib-1.7.0.tar.gz) = C+T2BTNXxOu6VXigZfva11qERQHUxtkdSjoMFZTGq+0= +SIZE (passlib-1.7.0.tar.gz) = 637909 Index: patches/patch-passlib_hosts_py =================================================================== RCS file: /cvs/ports/security/py-passlib/patches/patch-passlib_hosts_py,v retrieving revision 1.1 diff -u -p -r1.1 patch-passlib_hosts_py --- patches/patch-passlib_hosts_py 15 Jan 2016 12:46:37 -0000 1.1 +++ patches/patch-passlib_hosts_py 19 Jan 2017 20:36:22 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-passlib_hosts_py,v 1.1 2016/01/15 12:46:37 sthen Exp $ ---- passlib/hosts.py.orig Sun Jul 26 03:39:39 2015 -+++ passlib/hosts.py Fri Jan 15 12:46:20 2016 -@@ -48,7 +48,8 @@ linux_context = linux2_context = LazyCryptContext( +--- passlib/hosts.py.orig Wed Nov 23 03:20:22 2016 ++++ passlib/hosts.py Mon Jan 16 14:26:12 2017 +@@ -47,7 +47,8 @@ linux_context = linux2_context = LazyCryptContext( # referencing source via -http://fxr.googlebit.com # freebsd 6,7,8 - des, md5, bcrypt, bsd_nthash # netbsd - des, ext, md5, bcrypt, sha1 Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/security/py-passlib/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 13 May 2014 09:18:24 -0000 1.3 +++ pkg/PLIST 19 Jan 2017 20:36:22 -0000 @@ -4,6 +4,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/PKG-INFO lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/SOURCES.txt lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/dependency_links.txt +lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/requires.txt lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/top_level.txt lib/python${MODPY_VERSION}/site-packages/passlib-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/zip-safe lib/python${MODPY_VERSION}/site-packages/passlib/__init__.py @@ -16,8 +17,16 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}hash.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}hosts.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}ifc.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}pwd.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}registry.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}totp.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/${MODPY_PYCACHE}win32.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/_data/ +lib/python${MODPY_VERSION}/site-packages/passlib/_data/wordsets/ +lib/python${MODPY_VERSION}/site-packages/passlib/_data/wordsets/bip39.txt +lib/python${MODPY_VERSION}/site-packages/passlib/_data/wordsets/eff_long.txt +lib/python${MODPY_VERSION}/site-packages/passlib/_data/wordsets/eff_prefixed.txt +lib/python${MODPY_VERSION}/site-packages/passlib/_data/wordsets/eff_short.txt lib/python${MODPY_VERSION}/site-packages/passlib/_setup/ lib/python${MODPY_VERSION}/site-packages/passlib/_setup/__init__.py ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/_setup/${MODPY_PYCACHE}/ @@ -29,6 +38,36 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/apache.py lib/python${MODPY_VERSION}/site-packages/passlib/apps.py lib/python${MODPY_VERSION}/site-packages/passlib/context.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/__init__.py +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/crypto/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/${MODPY_PYCACHE}_md4.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/${MODPY_PYCACHE}des.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/${MODPY_PYCACHE}digest.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/__init__.py +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/${MODPY_PYCACHE}_gen_files.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/${MODPY_PYCACHE}unrolled.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/_gen_files.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/base.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_blowfish/unrolled.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/_md4.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/des.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/digest.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/__init__.py +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/${MODPY_PYCACHE}_builtin.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/${MODPY_PYCACHE}_gen_files.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/${MODPY_PYCACHE}_salsa.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/_builtin.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/_gen_files.py +lib/python${MODPY_VERSION}/site-packages/passlib/crypto/scrypt/_salsa.py lib/python${MODPY_VERSION}/site-packages/passlib/exc.py lib/python${MODPY_VERSION}/site-packages/passlib/ext/ lib/python${MODPY_VERSION}/site-packages/passlib/ext/__init__.py @@ -46,6 +85,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/handlers/__init__.py ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}/ lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}argon2.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}bcrypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}cisco.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}des_crypt.${MODPY_PYC_MAGIC_TAG}pyc @@ -63,10 +103,12 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}postgres.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}roundup.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}scram.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}scrypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}sha1_crypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}sha2_crypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}sun_md5_crypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/handlers/${MODPY_PYCACHE}windows.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/handlers/argon2.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/bcrypt.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/cisco.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/des_crypt.py @@ -84,6 +126,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/handlers/postgres.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/roundup.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/scram.py +lib/python${MODPY_VERSION}/site-packages/passlib/handlers/scrypt.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/sha1_crypt.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/sha2_crypt.py lib/python${MODPY_VERSION}/site-packages/passlib/handlers/sun_md5_crypt.py @@ -91,6 +134,7 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/hash.py lib/python${MODPY_VERSION}/site-packages/passlib/hosts.py lib/python${MODPY_VERSION}/site-packages/passlib/ifc.py +lib/python${MODPY_VERSION}/site-packages/passlib/pwd.py lib/python${MODPY_VERSION}/site-packages/passlib/registry.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/ lib/python${MODPY_VERSION}/site-packages/passlib/tests/__init__.py @@ -104,15 +148,26 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_apps.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_context.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_context_deprecated.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_crypto_builtin_md4.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_crypto_des.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_crypto_digest.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_crypto_scrypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_ext_django.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_ext_django_source.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers_argon2.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers_bcrypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers_django.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers_pbkdf2.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_handlers_scrypt.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_hosts.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_pwd.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_registry.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_totp.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_utils.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_utils_crypto.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_utils_handlers.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_utils_md4.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_utils_pbkdf2.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}test_win32.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}tox_support.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/tests/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc @@ -126,38 +181,48 @@ lib/python${MODPY_VERSION}/site-packages lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_apps.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_context.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_context_deprecated.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_crypto_builtin_md4.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_crypto_des.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_crypto_digest.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_crypto_scrypt.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_ext_django.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_ext_django_source.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers_argon2.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers_bcrypt.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers_django.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers_pbkdf2.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_handlers_scrypt.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_hosts.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_pwd.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_registry.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_totp.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_utils.py -lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_utils_crypto.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_utils_handlers.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_utils_md4.py +lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_utils_pbkdf2.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/test_win32.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/tox_support.py lib/python${MODPY_VERSION}/site-packages/passlib/tests/utils.py +lib/python${MODPY_VERSION}/site-packages/passlib/totp.py lib/python${MODPY_VERSION}/site-packages/passlib/utils/ lib/python${MODPY_VERSION}/site-packages/passlib/utils/__init__.py ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}/ lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}compat.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}binary.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}decor.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}des.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}handlers.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}md4.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/passlib/utils/${MODPY_PYCACHE}pbkdf2.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/ -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/__init__.py -${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/${MODPY_PYCACHE}/ -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/${MODPY_PYCACHE}_gen_files.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/${MODPY_PYCACHE}unrolled.${MODPY_PYC_MAGIC_TAG}pyc -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/_gen_files.py -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/base.py -lib/python${MODPY_VERSION}/site-packages/passlib/utils/_blowfish/unrolled.py -lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat.py +lib/python${MODPY_VERSION}/site-packages/passlib/utils/binary.py +lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/ +lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/__init__.py +${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/${MODPY_PYCACHE}_ordered_dict.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/passlib/utils/compat/_ordered_dict.py +lib/python${MODPY_VERSION}/site-packages/passlib/utils/decor.py lib/python${MODPY_VERSION}/site-packages/passlib/utils/des.py lib/python${MODPY_VERSION}/site-packages/passlib/utils/handlers.py lib/python${MODPY_VERSION}/site-packages/passlib/utils/md4.py