Ë
    àU.j·  ã                   óJ  — d Z ddlZddlZ ej                  e«      ZddlmZmZm	Z	m
Z
 ddlmZmZ ddlmc mZ ddlmZ g d¢Z G d„ dej*                  «      Zedd	fd
„Z edd¬«      Z eddd¬«      Z edd¬«      Z ed«      Z ed«      Z G d„ dej:                  «      Zy)z.passlib.handlers.digests - plain hash digests
é    N)Úto_native_strÚto_bytesÚrender_bytesÚconsteq)ÚunicodeÚstr_to_uascii)Úlookup_hash)Úcreate_hex_hashÚhex_md4Úhex_md5Úhex_sha1Ú
hex_sha256Ú
hex_sha512c                   óJ   — e Zd ZdZdZdZej                  ZdZ	e
d„ «       Zd„ Zy)ÚHexDigestHashzTthis provides a template for supporting passwords stored as plain hexadecimal hashesNTc                 ó"   — |j                  «       S ©N)Úlower©ÚclsÚhashs     úZC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/handlers/digests.pyÚ
_norm_hashzHexDigestHash._norm_hash+   s   € à�z‰z‹|Ðó    c                 ó”   — t        |t        «      r|j                  d«      }t        | j	                  |«      j                  «       «      S )Núutf-8)Ú
isinstancer   Úencoder   Ú
_hash_funcÚ	hexdigest)ÚselfÚsecrets     r   Ú_calc_checksumzHexDigestHash._calc_checksum/   s7   € Ü�fœgÔ&Ø—]‘] 7Ó+ˆFÜ˜TŸ_™_¨VÓ4×>Ñ>Ó@ÓAÐAr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úchecksum_sizeÚuhÚ	HEX_CHARSÚchecksum_charsÚ	supportedÚclassmethodr   r#   © r   r   r   r      s;   „ Ù^ð €JØ€MØ—\‘\€Nð €Ið
 ñó ðóBr   r   Tc                 ó8  — t        | |¬«      }d|j                  z   }|j                  sd|_        t	        |t
        ft        ||t        |j                  «      |j                  dz  d|j                  ›d�¬«      «      }|j                  sd|_        |r||_	        |S )	a@  
    create hex-encoded unsalted hasher for specified digest algorithm.

    .. versionchanged:: 1.7.3
        If called with unknown/supported digest, won't throw error immediately,
        but instead return a dummy hasher that will throw error when called.

        set ``required=True`` to restore old behavior.
    ©ÚrequiredÚhex_r   é   z*This class implements a plain hexadecimal zb hash, and follows the :ref:`password-hash-api`.

It supports no optional or contextual keywords.
)Únamer%   r   r(   r'   F)
r	   r4   r,   Údigest_sizeÚtyper   ÚdictÚstaticmethodÚconstÚdjango_name)ÚdigestÚmoduler:   r1   Úinfor4   Úhashers          r   r
   r
   8   s”   € ô �v¨Ô1€DØ�D—I‘IÑ€DØ�>Š>ØˆÔÜ�$œÐ(¬$ØØÜ §
¡
Ó+Ø×&Ñ& qÒ(ð ‡yƒyðô	+ó 	€Fð �>Š>Ø ˆÔÙØ(ˆÔØ€Mr   Úmd4Fr0   Úmd5Úunsalted_md5)r:   r1   Úsha1Úsha256Úsha512c                   óâ   — e Zd ZdZd ZdZdZdZedd„«       Z	ed„ «       Z
edd„«       Zed	„ «       Z ej                  d
d¬«      ed„ «       «       Z ej                  d
d¬«      edd„«       «       Zy)ÚhtdigestzFhtdigest hash function.

    .. todo::
        document this hash
    r.   )ÚuserÚrealmÚencodingr   Nc                 ó   — |s| j                   }t        j                  |«       t        |t        «      r|j                  |«      }t        ||d«      }t        ||d«      }t        d|||«      }t        j                  |«      j                  «       S )NrG   rH   z%s:%s:%s)Údefault_encodingr)   Úvalidate_secretr   r   r   r   r   Úhashlibr@   r    )r   r"   rG   rH   rI   Údatas         r   r   zhtdigest.hashr   s|   € ñ Ø×+Ñ+ˆHÜ
×Ñ˜6Ô"Ü�fœgÔ&Ø—]‘] 8Ó,ˆFÜ˜˜h¨Ó/ˆÜ˜ ¨'Ó2ˆÜ˜J¨¨e°VÓ<ˆÜ�{‰{˜4Ó ×*Ñ*Ó,Ð,r   c                 óî   — t        |d¬«      }t        |«      dk7  r t        j                  j	                  | d«      ‚|D ]4  }|t        j
                  vsŒt        j                  j	                  | d«      ‚ |S )z0normalize hash to native string, and validate itr   )Úparamé    z
wrong sizezinvalid chars in hash)r   Úlenr)   ÚexcÚMalformedHashErrorÚLC_HEX_CHARS)r   r   Úchars      r   r   zhtdigest._norm_hash€   sg   € ô ˜T¨Ô0ˆÜˆt‹9˜Š?Ü—&‘&×+Ñ+¨C°Ó>Ð>ÛˆDØœ2Ÿ?™?Ò*Ü—f‘f×/Ñ/°Ð5LÓMÐMð ð ˆr   c                 ód   — | j                  |«      }| j                  ||||«      }t        ||«      S r   )r   r   r   )r   r"   r   rG   rH   rI   Úothers          r   Úverifyzhtdigest.verify‹   s1   € à�~‰~˜dÓ#ˆØ—‘˜  u¨hÓ7ˆÜ�t˜UÓ#Ð#r   c                 óF   — 	 | j                  |«       y# t        $ r Y yw xY w)NFT)r   Ú
ValueErrorr   s     r   Úidentifyzhtdigest.identify‘   s,   € ð	Ø�N‰N˜4Ô ð øô ò 	Ùð	ús   ‚ ”	 Ÿ z1.7z2.0)Ú
deprecatedÚremovedc                 ó(   — | j                  ddd«      S )NÚ )r   )r   s    r   Ú	genconfigzhtdigest.genconfig™   s   € ð �x‰x˜˜B Ó#Ð#r   c                 óL   — | j                  |«       | j                  ||||«      S r   )r   r   )r   r"   ÚconfigrG   rH   rI   s         r   Úgenhashzhtdigest.genhashž   s%   € ð
 	�‰�vÔØ�x‰x˜  e¨XÓ6Ð6r   r   )r   )r$   r%   r&   r'   r4   Úsetting_kwdsÚcontext_kwdsrK   r-   r   r   rY   r\   r)   Údeprecated_methodra   rd   r.   r   r   rF   rF   g   sÂ   „ ñð
 €DØ€LØ0€LØÐàò-ó ð-ð ñó ðð ò$ó ð$ð
 ñó ðð €R×Ñ U°EÔ:Øñ$ó ó ;ð$ð €R×Ñ U°EÔ:Øò7ó ó ;ñ7r   rF   )r'   rM   ÚloggingÚ	getLoggerr$   ÚlogÚpasslib.utilsr   r   r   r   Úpasslib.utils.compatr   r   Úpasslib.utils.handlersÚutilsÚhandlersr)   Úpasslib.crypto.digestr	   Ú__all__ÚStaticHandlerr   r
   r   r   r   r   r   ÚMinimalHandlerrF   r.   r   r   Ú<module>rt      s±   ðñó Û Ð'�g×'Ñ'¨Ó1�÷ IÓ Hß 7ß #Ð #Ý -ò€ôB�B×$Ñ$ô Bð8 $,¸Èó ñL ˜e¨eÔ4€Ù˜e°È%ÔP€Ù˜f¨uÔ5€Ù˜hÓ'€
Ù˜hÓ'€
ô
=7ˆr× Ñ õ =7r   