o
    5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   ldap_pbkdf2_sha1verifyldap_pbkdf2_sha256ldap_pbkdf2_sha512self r   v/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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)adminzI{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/pzI{PKCS5S2}cE9Yq6Am5tQGdHSHhky2XLeOnURwzaLBG2sur7FHKpvy2u0qDn6GcVGRjlmJoIUyz{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy!0IPksHChwoTAVYFrhsgoq8/p{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/{PKCS5S2}c4xaeTQM0lUieMS3V5voiexyX9XhqC2dBd5ecVy60IPksHChwoTAVYFrhsgoq8/=N)	r   r   r   r   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g dZdS )pbkdf2_sha1_test)r   z?$pbkdf2$1212$OB.dtnSEXZK8U5cgxU/GYQ$y5LKPOplRmok7CZp/aqVDVg8zGIz?$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc)z@$pbkdf2$01212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz;$pbkdf2$$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZcz@$pbkdf2$1212$THDqatpidANpadlLeTeOEg$HV3oi1k5C5LQCgG1BMOL.BX4YZc$N)	r   r   r   r   pbkdf2_sha1r   r   r   r   r   r   r   r   r   M   s    r   c                   @      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   pbkdf2_sha256r   r   r   r   r   r   r   r   `   s    r   c                   @   r   )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   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   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)cloadmz,$p5k2$$exec$r1EWMCMk7Rlv3L/RNcFXviDefYa0hlql)gnuz1$p5k2$c$u9HvcT4d$Sd1gwSVCLZYAuqZ25piRnbBEoAesaa/g)dclz1$p5k2$d$tUsch7fU$nqDkaxMDOFBeJsTSfABsyn.PYUXilHwL)spamz3$p5k2$3e8$H0NX9mT/$wk/sE8vv6OMKuMaqazCJYDSUhWY9YB2Jz0$p5k2$$KosHgqNo$9mjN8gqjt02hDoP0c2J0ABtLIwtot8cQN)r   r   r   r   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)toomanysecretsa  grub.pbkdf2.sha512.10000.9B436BB6978682363D5C449BBEAB322676946C632208BC1294D51F47174A9A3B04A7E4785986CD4EA7470FAB8FE9F6BD522D1FC6C51109A8596FB7AD487C4493.0FE5EF169AFFCB67D86E2581B1E251D88C777B98BA2D3256ECC9F765D84956FC5CA5C4B6FD711AA285F0A04DCF4634083F9A20F4B6F339A52FBD6BED618E527BN)r   r   r   r   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g d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.   setUprequire_stringprepwarningsfilterwarningsr   	__class__r   r   r4      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g d |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  )saltroundsc                    s0    D ]
}| | |  qjdd| i|jS )Nalgsr   )
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)md5rF   sha-256sha256rH   )r=   rD   z
shaxxx-190s                       )checksum)	dictassertEqualr   scramdefault_algsassertRaises	TypeError
ValueErrorRuntimeError)r   rC   r   rA   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' keywordTrF   X   )rD   rJ   rH   s    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN)rO   rP   r   r   rQ   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
      bbb   ccc   dddz$scram$10$....$sha-1,bbb,cccrF   N)r   extract_digest_inforL   rO   KeyErrorrQ   )r   edihscr   r   r   test_91_extract_digest_info*  s   z&scram_test.test_91_extract_digest_infoc                 C   sH   | j j}| |ddg | |ddddg | |dg d dS )	z test scram.extract_digest_algs()r0   rF   hashlib)formatrE   r1   )rF   rH   zsha-512N)r   extract_digest_algsrL   )r   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:   rF   s   ⅨzSHA-1IXrE   s   IXrW   rG   s   3/Modzsha-666r   zlatin-1N)r   derive_digestrL   r   rO   rQ   decode)r   r   s1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­Xrl   rk      óu   óu   ‍óu   ﷐N)
do_encryptr   r	   	do_verifyrO   rQ   )r   rb   r   r   r   test_94_saslprepg  s   zscram_test.test_94_saslpreprN   c                 C   sh   | j }t|j}|jdi |di}| |j| | |jddg |d}| ||ddg dS )z#using() -- 'default_algs' parametersha1,md5rG   rF   dummyNr   )r   listrN   usingrL   r   rh   )r   paramr   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=   )rz   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 settingrv   )r=   rw   rE   sha1,sha256N)r   ry   r   assertFalseneeds_updater	   )r   handler1r}   handler2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   )CryptContextrM   rv   )scram__algsrw   rG   rF   rE   r   N)
r   passlib.contextr   r   rL   rh   r   r   copyr	   )r   r   r   c1rb   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   rc   rb   r   r   r   vpart  s   z-scram_test.test_96_full_verify.<locals>.vpartc                    s    j j| |ddS )NT)fullr   r   r   r   r   vfull  s   z-scram_test.test_96_full_verify.<locals>.vfullr1   r/   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	   r   rO   rQ   )r   r   r   rb   r   r   r   test_96_full_verify  s   zscram_test.test_96_full_verify)rN   )r   r   r   r   rM   r   r   r   r   r4   rS   rV   re   rj   rq   ru   r~   r   r   r   r   __classcell__r   r   r8   r   r.      s*    


#	
r.   )__doc__logging	getLoggerr   logr6   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r   r   r   r   r!   r#   r%   r+   r.   r   r   r   r   <module>   s"    
	