U
    hdI                     @   s   d Z ddlZeeZddlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ G dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )z?passlib.tests.test_handlers - tests for passlib hash algorithms    N)hash)u)TestCaseHandlerCase)	UPASS_WAVc                   @   s   e Zd Zdd ZdS )ldap_pbkdf2_testc                 C   s@   |  tjdd |  tjdd |  tjdd dS )ztest ldap pbkdf2 wrapperspasswordz?{PBKDF2}1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGIzV{PBKDF2-SHA256}1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQz{PBKDF2-SHA512}1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGwwN)
assertTruer   Zldap_pbkdf2_sha1verifyZldap_pbkdf2_sha256Zldap_pbkdf2_sha512self r   H./venv/lib/python3.8/site-packages/passlib/tests/test_handlers_pbkdf2.pytest_wrappers   s$    zldap_pbkdf2_test.test_wrappersN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                   @   s$   e Zd ZejZdedfgZdgZdS )atlassian_pbkdf2_sha1_test)ZadminzI{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/pzI{PKCS5S2}cE9Yq6Am5tQGdHSHhky2XLeOnURwzaLBG2sur7FHKpvy2u0qDn6GcVGRjlmJoIUyz{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy!0IPksHChwoTAVYFrhsgoq8/p{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/=N)	r   r   r   r   Zatlassian_pbkdf2_sha1handlerr   known_correct_hashesknown_malformed_hashesr   r   r   r   r   6   s   r   c                   @   s(   e Zd ZejZdedfgZdddgZdS )pbkdf2_sha1_test)r   z?$pbkdf2$1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGIz?$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz@$pbkdf2$01212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz;$pbkdf2$$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz@$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc$N)	r   r   r   r   Zpbkdf2_sha1r   r   r   r   r   r   r   r   r   M   s   r   c                   @   s   e Zd ZejZdedfgZdS )pbkdf2_sha256_test)r   zV$pbkdf2-sha256$1212$4vjV83LKPjQzk31VI4E0Vw$hsYF68OiOUPdDZ1Fg.fJPeq1h/gXXY7acBp9/6c.tmQzV$pbkdf2-sha256$1212$3SABFJGDtyhrQMVt1uABPw$WyaUoqCLgvz97s523nF4iuOqZNbp5Nt8do/cuaa7AiIN)r   r   r   r   Zpbkdf2_sha256r   r   r   r   r   r   r   r   `   s   r   c                   @   s   e Zd ZejZdedfgZdS )pbkdf2_sha512_test)r   z$pbkdf2-sha512$1212$RHY0Fr3IDMSVO/RSZyb5ow$eNLfBK.eVozomMr.1gYa17k9B7KIK25NOEshvhrSX.esqY3s.FvWZViXz4KoLlQI.BzY/YTNJOiKc5gBYFYGwwz$pbkdf2-sha512$1212$KkbvoKGsAIcF8IslDR6skQ$8be/PRmd88Ps8fmPowCJttH9G3vgxpG.Krjt3KT.NP6cKJ0V4Prarqf.HBwz0dCkJ6xgWnSj2ynXSV7MlvMa8QN)r   r   r   r   Zpbkdf2_sha512r   r   r   r   r   r   r   r   k   s   r   c                   @   s(   e Zd ZejZeddfdedfgZdS )cta_pbkdf2_sha1_testu   hashy the ☃z4$p5k2$1000$ZxK4ZBJCfQg=$jJZVscWtO--p1-xIZl6jhO2LKR0=)r   z%$p5k2$1$$h1TDLGSw9ST8UMAPeIE13i0t12c=z4$p5k2$4321$OTg3NjU0MzIx$jINJrSvZ3LXeIbUdrJkRpN62_WQ=N)	r   r   r   r   Zcta_pbkdf2_sha1r   r   r   r   r   r   r   r   r   x   s   
r   c                   @   s$   e Zd ZejZddddedfgZdS )dlitz_pbkdf2_sha1_test)Zcloadmz,$p5k2$$exec$r1EWMCMk7Rlv3L/RNcFXviDefYa0hlql)Zgnuz1$p5k2$c$u9HvcT4d$Sd1gwSVCLZYAuqZ25piRnbBEoAesaa/g)Zdclz1$p5k2$d$tUsch7fU$nqDkaxMDOFBeJsTSfABsyn.PYUXilHwL)Zspamz3$p5k2$3e8$H0NX9mT/$wk/sE8vv6OMKuMaqazCJYDSUhWY9YB2Jz0$p5k2$$KosHgqNo$9mjN8gqjt02hDoP0c2J0ABtLIwtot8cQN)r   r   r   r   Zdlitz_pbkdf2_sha1r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZedfdgZdS )grub_pbkdf2_sha512_testzgrub.pbkdf2.sha512.10000.BCAC1CEC5E4341C8C511C5297FA877BE91C2817B32A35A3ECF5CA6B8B257F751.6968526A2A5B1AEEE0A29A9E057336B48D388FFB3F600233237223C2104DE1752CEC35B0DD1ED49563398A282C0F471099C2803FBA47C7919CABC43192C68F60)Ztoomanysecretsa  grub.pbkdf2.sha512.10000.9B436BB6978682363D5C449BBEAB322676946C632208BC1294D51F47174A9A3B04A7E4785986CD4EA7470FAB8FE9F6BD522D1FC6C51109A8596FB7AD487C4493.0FE5EF169AFFCB67D86E2581B1E251D88C777B98BA2D3256ECC9F765D84956FC5CA5C4B6FD711AA285F0A04DCF4634083F9A20F4B6F339A52FBD6BED618E527BN)r   r   r   r   Zgrub_pbkdf2_sha512r   r   r   r   r   r   r   r      s   r   c                       s   e Zd ZejZddeddfeddfeddfgZddd	d
dddddddgZ fddZ	dd Z
dd Zdd Zdd Zdd Zdd Zd+d!d"Zd#d$ Zd%d& Zd'd( Zd)d* Z  ZS ),
scram_test)pencil>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30)r   $scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQu   IX àz>$scram$6400$0BojBCBE6P2/N4bQ$sha-1=YniLes.b8WFMvBhtSACZyyvxeCcu	   Ⅸ　àu   ­IX àz?$scram$04096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$409A$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$4096$QSXCR.Q6sek8bf9-$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30z>$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX3-z$scram$4096$QSXCR.Q6sek8bf92z$scram$4096$QSXCR.Q6sek8bf92$z?$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30$zq$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVYze$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,shaxxx-190=HZbuOlKbWl.eR8AfIposuKbhX30z@$scram$4096$QSXCR.Q6sek8bf92$sha-256=HZbuOlKbWl.eR8AfIposuKbhX30z=$scram$4096$QSXCR.Q6sek8bf92$sha1=HZbuOlKbWl.eR8AfIposuKbhX30c                    s&   t t|   |   tdd d S )Nignorez norm_hash_name\(\): unknown hash)superr   setUpZrequire_stringprepwarningsfilterwarningsr   	__class__r   r   r#      s    zscram_test.setUpc                    s   t ddd  fdd}|dddtjj t|d |d	d
g |ddd
dg |d
dgd
dg t|dg jt|g dd t|d
dg jt|d
gd
did dS )ztest parsing of 'algs' settings
   AAAAAAAAAA  )Zsaltroundsc                    s0    D ]}| | |  qjf d| i|jS )Nalgs)
setdefaultr   r*   )r*   kwdskdefaultsr   r   r   parse  s    z&scram_test.test_90_algs.<locals>.parseNT)use_defaultssha1sha-1zsha1, sha256, md5md5sha-256Zsha256)r*   r1   z
shaxxx-190s                       )checksum)	dictassertEqualr   scramdefault_algsassertRaises	TypeError
ValueErrorRuntimeError)r   r0   r   r.   r   test_90_algs   s    zscram_test.test_90_algsc                 C   s<   | j t| jddtdd id | j t| jdddid dS )	z+test internal parsing of 'checksum' keywordTr3   X   )r1   r6   r5   s    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN)r;   r<   r   r   r=   r   r   r   r   test_90_checksums  s    zscram_test.test_90_checksumsc                 C   s   | j j}d}d}| ||d|ddf | ||d|ddf | ||d|dd	f | t||d
 d}| t||d | t||d | t||d
 dS )z test scram.extract_digest_info()z'$scram$10$AAAAAA$sha-1=AQ,bbb=Ag,ccc=Aws       SHA1
      Zbbb   Zccc   Zdddz$scram$10$....$sha-1,bbb,cccr3   N)r   Zextract_digest_infor8   r;   KeyErrorr=   )r   Zedihscr   r   r   test_91_extract_digest_info*  s    z&scram_test.test_91_extract_digest_infoc                 C   sJ   | j j}| |ddg | |ddddg | |ddddg d	S )
z test scram.extract_digest_algs()r   r3   Zhashlib)formatr2   r    r5   zsha-512N)r   extract_digest_algsr8   )r   Zedar   r   r   test_92_extract_digest_algs<  s    

z&scram_test.test_92_extract_digest_algsc                 C   s   | j j}d}d}| |td|dd| | |d|dd| | |td|dd	| | |d
|dd| | |d|ddd | t|d|dd | t|d|dd | |td|ddd	| dS )ztest scram.derive_digest()s   s   [tNuPnIZZn   Ⅸr(   r3   s   ⅨzSHA-1IXr2   s   IXrC   r4   s   3/Modzsha-666r   zlatin-1N)r   Zderive_digestr8   r   r;   r=   decode)r   r   s1Zd1r   r   r   test_93_derive_digestN  s    z scram_test.test_93_derive_digestc                 C   s   |  td}| | td| | | td| |  td}| | td| | | td| | t| j td | t| jtd| dS )	ztest hash/verify use saslprepu   I­XrQ   rP      óu   óu   ‍óu   ﷐N)Z
do_encryptr   r	   Z	do_verifyr;   r=   )r   rI   r   r   r   test_94_saslprepg  s    zscram_test.test_94_saslprepr:   c                 C   sd   | j }t|j}|jf |di}| |j| | |jddg |d}| ||ddg dS )z#using() -- 'default_algs' parametersha1,md5r4   r3   dummyN)r   listr:   usingr8   r   rN   )r   paramr   Zorigsubclsh1r   r   r   test_94_using_w_default_algs{  s    

z'scram_test.test_94_using_w_default_algsc                 C   s   | j dd dS )zusing() -- 'algs' parameterr*   )r[   N)r^   r   r   r   r   test_94_using_w_algs  s    zscram_test.test_94_using_w_algsc                 C   sd   | j jdd}|d}| || |jdd}| || |jdd}| || dS )zneeds_update() -- algs settingrW   )r*   rX   r2   sha1,sha256N)r   rZ   r   assertFalseneeds_updater	   )r   Zhandler1r]   Zhandler2Zhandler3r   r   r   test_94_needs_update_algs  s    
z$scram_test.test_94_needs_update_algsc                 C   s   | j }ddlm} |dgdd}|d}| ||ddg | || |jd	d}| || |jd
d}| 	|| dS )z)test handling of 'algs' in context objectr   )CryptContextr9   rW   )Zscram__algsrX   r4   r3   r2   r`   N)
r   Zpasslib.contextrd   r   r8   rN   ra   rb   copyr	   )r   r   rd   Zc1rI   Zc2r   r   r   test_95_context_algs  s    
zscram_test.test_95_context_algsc                    s    fdd} fdd}d}  |d|  |d| d} t|d| d	} t|d| d
}  |d|  |d|  t|d|  t|d| dS )ztest verify(full=True) flagc                    s    j | |S )Nr   r
   rJ   rI   r   r   r   vpart  s    z-scram_test.test_96_full_verify.<locals>.vpartc                    s    j j| |ddS )NT)Zfullrg   rh   r   r   r   vfull  s    z-scram_test.test_96_full_verify.<locals>.vfullr    r   Ztapez$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhV,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQz$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVYa,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQz$scram$4096$QSXCR.Q6sek8bf92$sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,sha-256=R7RJDWIbeKRTFwhE9oxh04kab0CllrQ3kCcpZUcligc,sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQN)r	   ra   r;   r=   )r   ri   rj   rI   r   r   r   test_96_full_verify  s    zscram_test.test_96_full_verify)r:   )r   r   r   r   r9   r   r   r   r   r#   r?   rB   rL   rO   rT   rV   r^   r_   rc   rf   rk   __classcell__r   r   r&   r   r      s>   


#	
r   )__doc__ZloggingZ	getLoggerr   logr$   Zpasslibr   Zpasslib.utils.compatr   Zpasslib.tests.utilsr   r   Zpasslib.tests.test_handlersr   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    
	