+
    THi>                     z    R t ^ RIHt ^ RIHu Ht ^ RIHt R.t	 ! R R]P                  ]P                  4      tR# )z8MD5-based algorithm used by Postgres for pg_shadow table)md5N)to_bytespostgres_md5c                   N   a  ] tR t^t o RtR tRt]P                  t	^ t
R tRtV tR# )r   a  This class implements the Postgres MD5 Password hash, and follows the :ref:`password-hash-api`.

It does a single round of hashing, and relies on the username as the salt.

The :meth:`~passlib.ifc.PasswordHash.hash`, :meth:`~passlib.ifc.PasswordHash.genhash`, and :meth:`~passlib.ifc.PasswordHash.verify` methods all require the
following additional contextual keywords:

:type user: str
:param user: name of postgres user account this password is associated with.
r   c                    \        V\        4      '       d   VP                  R 4      p\        V P                  R RR7      p\        W,           4      P                  4       # )zutf-8user)param)
isinstancestrencoder   r   r   	hexdigest)selfsecretr   s   && ;/usr/lib/python3/dist-packages/passlib/handlers/postgres.py_calc_checksumpostgres_md5._calc_checksum   sE    fc""]]7+F		7&96=!++--     N)__name__
__module____qualname____firstlineno____doc__name_hash_prefixuh	HEX_CHARSchecksum_charschecksum_sizer   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s.     	 DL\\NM. .r   )r   hashlibr   passlib.utils.handlersutilshandlersr   passlib.utilsr   __all__HasUserContextStaticHandlerr   r   r   r   <module>r*      s:    >  # # " 
.2$$b&6&6 .r   