1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
from passlib import registry
from passlib.context import LazyCryptContext
# local
__all__ = [
"linux_context",
"linux2_context",
"openbsd_context",
"netbsd_context",
"freebsd_context",
"host_context",
]
# known platform names - linux2
linux_context = linux2_context = LazyCryptContext(
schemes=["sha512_crypt", "sha256_crypt", "md5_crypt", "des_crypt", "unix_disabled"],
deprecated=["des_crypt"],
)
# known platform names -
# freebsd2
# freebsd3
# freebsd4
# freebsd5
# freebsd6
# freebsd7
#
# netbsd1
# referencing source via -http://fxr.googlebit.com
# freebsd 6,7,8 - des, md5, bcrypt, bsd_nthash
# netbsd - des, ext, md5, bcrypt, sha1
# openbsd - des, ext, md5, bcrypt
freebsd_context = LazyCryptContext(
["bcrypt", "md5_crypt", "bsd_nthash", "des_crypt", "unix_disabled"]
)
openbsd_context = LazyCryptContext(
["bcrypt", "md5_crypt", "bsdi_crypt", "des_crypt", "unix_disabled"]
)
netbsd_context = LazyCryptContext(
["bcrypt", "sha1_crypt", "md5_crypt", "bsdi_crypt", "des_crypt", "unix_disabled"]
)
# XXX: include darwin in this list? it's got a BSD crypt variant,
# but that's not what it uses for user passwords.
if registry.os_crypt_present:
# NOTE: this is basically mimicing the output of os crypt(),
# except that it uses passlib's (usually stronger) defaults settings,
# and can be inspected and used much more flexibly.
def _iter_os_crypt_schemes():
"""helper which iterates over supported os_crypt schemes"""
out = registry.get_supported_os_crypt_schemes()
if out:
# only offer disabled handler if there's another scheme in front,
# as this can't actually hash any passwords
out += ("unix_disabled",)
return out
host_context = LazyCryptContext(_iter_os_crypt_schemes())
# known platform strings -
# aix3
# aix4
# atheos
# beos5
# darwin
# generic
# hp-ux11
# irix5
# irix6
# mac
# next3
# os2emx
# riscos
# sunos5
# unixware7
|