Ñò §ÚêLc @sQdZddkZddkZddklZddklZeieidZ deddƒfd„ƒYZ dd „Z dd „Z e d dd d ƒZe ddddƒZe ddddƒZe ddddƒZgZxTeeefD]CZe deƒZeo'eeƒeijoeieƒqóqóWeieƒ[[dS(s»Wrapper to the POSIX crypt library call and associated functionality. Note that the ``methods`` and ``METHOD_*`` attributes are non-standard extensions to Python 2.6, backported from 3.3iÿÿÿÿN(tchoice(t namedtuples./t_Methods name ident salt_chars total_sizecBseZdZd„ZRS(siClass representing a salt method per the Modular Crypt Format or the legacy 2-character crypt method.cCs d|iS(Ns(tname(tself((s/usr/lib64/python2.6/crypt.pyt__repr__s(t__name__t __module__t__doc__R(((s/usr/lib64/python2.6/crypt.pyRscCsc|djotd}n|iod|ind}|did„t|iƒDƒƒ7}|S(s»Generate a salt for the specified method. If not specified, the strongest available method will be used. This is a non-standard extension to Python 2.6, backported from 3.3 is$%s$tcssx|]}ttƒVqWdS(N(Rt _saltchars(t.0t_((s/usr/lib64/python2.6/crypt.pys #s N(tNonetmethodstidenttjointranget salt_chars(tmethodts((s/usr/lib64/python2.6/crypt.pytmksalts  &cCs=|djpt|tƒot|ƒ}nti||ƒS(sNReturn a string representing the one-way hash of a password, with a salt prepended. If ``salt`` is not specified or is ``None``, the strongest available method will be selected and a salt generated. Otherwise, ``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as returned by ``crypt.mksalt()``. Note that these are non-standard extensions to Python 2.6's crypt.crypt() entrypoint, backported from 3.3: the standard Python 2.6 crypt.crypt() entrypoint requires two strings as the parameters, and does not support keyword arguments. N(R t isinstanceRRt_crypttcrypt(twordtsalt((s/usr/lib64/python2.6/crypt.pyR'stCRYPTii tMD5t1ii"tSHA256t5ii?tSHA512t6ijR (RRtstringtrandomRt collectionsRt ascii_letterstdigitsR RR RRt METHOD_CRYPTt METHOD_MD5t METHOD_SHA256t METHOD_SHA512Rt_methodt_resulttlent total_sizetappend(((s/usr/lib64/python2.6/crypt.pyts(