
    XR_                         d Z ddlmZ ddlZ ej        e          ZddlmZ ddl	m
Z
mZmZ ddlmc mZ dgZ G d dej        ej                  ZdS )zXpasslib.handlers.postgres_md5 - MD5-based algorithm used by Postgres for pg_shadow table    )md5N)to_bytes)str_to_uasciiunicodeupostgres_md5c                   D    e Zd ZdZd Z ed          Zej        Z	dZ
d ZdS )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                     t          |t                    r|                    d          }t          | j        dd          }t          t          ||z                                                       S )Nzutf-8user)param)
isinstancer   encoder   r   r   r   	hexdigest)selfsecretr   s      ;/usr/lib/python3/dist-packages/passlib/handlers/postgres.py_calc_checksumzpostgres_md5._calc_checksum+   sa    fg&& 	,]]7++F	7&999S$//99;;<<<    N)__name__
__module____qualname____doc__namer   _hash_prefixuh	HEX_CHARSchecksum_charschecksum_sizer    r   r   r   r      sM        	 	 D1U88L\NM
= = = = =r   )r   hashlibr   logging	getLoggerr   logpasslib.utilsr   passlib.utils.compatr   r   r   passlib.utils.handlersutilshandlersr   __all__HasUserContextStaticHandlerr   r    r   r   <module>r-      s    ^ ^
       'g'11 # " " " " " : : : : : : : : : : # # # # # # # # # = = = = =2$b&6 = = = = =r   