Ë
    °ÉnbÓ  ã                   ó  — d dl mZ d dl mZ d dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZmZmZmZmZ ddlmZ g d¢Z ej&                  d«      Zdd	ed
edefd„Zdededefd„Zdededefd„Z	 ddededed	ededefd„Zdeddfd„Zy)é    )Úabsolute_import)ÚdivisionNé   )Ú
__author__Ú__copyright__Ú	__email__Ú__license__Ú__summary__Ú	__title__Ú__uri__Ú__version__)Ú_bcrypt)r   r
   r   r   r   r   r	   r   ÚgensaltÚhashpwÚkdfÚcheckpws   ^\$2y\$ÚroundsÚprefixÚreturnc                 óˆ  — |dvrt        d«      ‚| dk  s| dkD  rt        d«      ‚t        j                  d«      }t        j                  j                  dd«      }t        j                  j                  ||t        |«      «       d	|z   d	z   d
| z  j                  d«      z   d	z   t        j                  j                  |«      z   S )N)s   2aó   2bz%Supported prefixes are b'2a' or b'2b'é   é   zInvalid roundsé   úchar[]é   ó   $z%2.2uÚascii)Ú
ValueErrorÚosÚurandomr   ÚffiÚnewÚlibÚencode_base64ÚlenÚencodeÚstring)r   r   ÚsaltÚoutputs       ú1/usr/lib/python3/dist-packages/bcrypt/__init__.pyr   r   8   sÁ   € Ø�^Ñ#ÜÐ@ÓAÐAà�‚z�V˜b’[ÜÐ)Ó*Ð*ä�:‰:�b‹>€DÜ�[‰[�_‰_˜X rÓ*€FÜ‡K�K×Ñ˜f d¬C°«IÔ6ð 	Ø
ñ	à
ñ	ð �VÑ×
#Ñ
# GÓ
,ñ	-ð ñ		ô
 �+‰+×
Ñ
˜VÓ
$ñ	%ðó    Úpasswordr)   c                 ó¶  — t        | t        «      st        |t        «      rt        d«      ‚d| v rt        d«      ‚| d d } |t        j                  d|«      }}t        j                  j                  dd«      }t        j                  j                  | ||t        |«      «      }|dk7  rt        d	«      ‚|d d
 t        j                  j                  |«      d
d  z   S )Nú&Strings must be encoded before hashingó    z"password may not contain NUL byteséH   s   $2b$r   é€   r   zInvalid saltr   )Ú
isinstanceÚstrÚ	TypeErrorr   Ú_normalize_reÚsubr   r"   r#   r$   Úbcrypt_hashpassr&   r(   )r-   r)   Úoriginal_saltÚhashedÚretvals        r+   r   r   M   sÈ   € Ü�(œCÔ ¤J¨t´SÔ$9ÜÐ@ÓAÐAà�(ÑÜÐ=Ó>Ð>ð ˜˜ˆ}€Hð ¤× 1Ñ 1°'¸4Ó @�4€Mä�[‰[�_‰_˜X sÓ+€FÜ�[‰[×(Ñ(¨°4¸ÄÀVÃÓM€Fà�‚{Ü˜Ó(Ð(ð ˜˜!ÐœwŸ{™{×1Ñ1°&Ó9¸!¸"Ð=Ñ=Ð=r,   Úhashed_passwordc                 óÂ   — t        | t        «      st        |t        «      rt        d«      ‚d| v sd|v rt        d«      ‚t	        | |«      }t        j                  ||«      S )Nz'Strings must be encoded before checkingr0   z6password and hashed_password may not contain NUL bytes)r3   r4   r5   r   r   ÚhmacÚcompare_digest)r-   r<   Úrets      r+   r   r   s   sa   € Ü�(œCÔ ¤J¨ÄÔ$DÜÐAÓBÐBà�(Ñ˜g¨Ñ8ÜØDó
ð 	
ô �˜?Ó
+€CÜ×Ñ˜s OÓ4Ð4r,   Údesired_key_bytesÚignore_few_roundsc           
      óv  — t        | t        «      st        |t        «      rt        d«      ‚t        | «      dk(  st        |«      dk(  rt	        d«      ‚|dk  s|dkD  rt	        d«      ‚|dk  rt	        d«      ‚|dk  r-|s+t        j                  d	j                  |«      t        d
¬«       t        j                  j                  d|«      }t        j                  j                  | t        | «      |t        |«      |t        |«      |«      }t        |dk(  «       t        j                  j                  ||«      d d  S )Nr/   r   z#password and salt must not be emptyi   zdesired_key_bytes must be 1-512r   zrounds must be 1 or moreé2   zrWarning: bcrypt.kdf() called with only {0} round(s). This few is not secure: the parameter is linear, like PBKDF2.é   )Ú
stacklevelz	uint8_t[])r3   r4   r5   r&   r   ÚwarningsÚwarnÚformatÚUserWarningr   r"   r#   r$   Úbcrypt_pbkdfÚ_bcrypt_assertÚbuffer)r-   r)   rA   r   rB   ÚkeyÚress          r+   r   r   €   s  € ô �(œCÔ ¤J¨t´SÔ$9ÜÐ@ÓAÐAä
ˆ8ƒ}˜ÒœS ›Y¨!š^ÜÐ>Ó?Ð?à˜AÒÐ!2°SÒ!8ÜÐ:Ó;Ð;à�‚zÜÐ3Ó4Ð4à�‚{Ñ,ô 	�‰ðPç‰f�V‹nÜØõ	
ô �+‰+�/‰/˜+Ð'8Ó
9€CÜ
�+‰+×
"Ñ
"Ø”#�h“- ¤s¨4£y°#´s¸3³xÀó€Cô �3˜!‘8Ôä�;‰;×Ñ˜cÐ#4Ó5±aÐ8Ð8r,   Úokc                 ó   — | st        d«      ‚y )Nzbcrypt assertion failed)ÚSystemError)rP   s    r+   rL   rL   ©   s   € ÙÜÐ3Ó4Ð4ð r,   )é   r   )F)Ú
__future__r   r   r>   r    ÚrerG   Ú	__about__r   r   r   r	   r
   r   r   r   Ú r   Ú__all__Úcompiler6   ÚintÚbytesr   r   Úboolr   r   rL   © r,   r+   ú<module>r^      së   ðõ  'Ý ã Û 	Û 	Û ÷	÷ 	ó 	õ ò€ð  �—
‘
˜;Ó'€ñ�Cð  eð ¸ó ð*#>�Uð #> %ð #>¨Eó #>ðL
5�eð 
5¨eð 
5¸ó 
5ð$ $ñ&9Øð&9à
ð&9ð ð&9ð ð	&9ð
 ð&9ð ó&9ðR5�tð 5 ô 5r,   