o
    _6d5Y                     @   s  d Z ddlZeeZddl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mZ dd Zd	Zeed
d	dddddeed
ddddddeed
ddddddeed
ddddddeed
dd
ddddeedd	dddddeedd	dddddeed
d	dd dd!d"eed
d	ddd#d$d%g	Zd&Zeeed
d	dddd'd(eed
ddddd)d*eed
ddddd+d,eed
ddddd-d.eed
dd
ddd/d0eedd	dddd1d2eedd	dddd3d4eed
d	dd dd5d6eed
d	ddd#d7d8g	 d&Zeeed
d	dddd9d:eed
ddddd;d<eed
ddddd=d>eed
dd
ddd?d@eedd	ddddAdBeedd	ddddCdDeed
d	dd ddEdFeed
d	ddd#dGdHg G dIdJ dJeZG dKdL dLedMZG dNdO dOedPZdS )QzFpasslib.tests.test_handlers_argon2 - tests for passlib hash algorithms    N)hash)unicode)HandlerCase	TEST_MODE)UPASS_TABLEPASS_TABLE_UTF8c                 C   s   t | ||d|> |||||d	S )N   )	versionroundslogMmemory_costparallelismsecretsalt
hex_digestr   )dict)r	   tr   pr   r   r   r    r   yC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\passlib/tests/test_handlers_argon2.pyhashtest   s   r         r   passwordZsomesaltZ@f6c4db4a54e2a370627aff3db6176b94a2a209a62c8e36152711802f7b30c694zP$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ   Z@9690ec55d28d3ed32562f2e73ea62b02b018757643a2ae6e79528459de8106e9zR$argon2i$m=1048576,t=2,p=1$c29tZXNhbHQ$lpDsVdKNPtMlYvLnPqYrArAYdXZDoq5ueVKEWd6BBuk   Z@3e689aaa3d28a77cf2bc72a51ac53166761751182f1ee292e3f677a7da4c2467zQ$argon2i$m=262144,t=2,p=1$c29tZXNhbHQ$Pmiaqj0op3zyvHKlGsUxZnYXURgvHuKS4/Z3p9pMJGc   Z@fd4dd83d762c49bdeaf57c47bdcd0c2f1babf863fdeb490df63ede9975fccf06zN$argon2i$m=256,t=2,p=1$c29tZXNhbHQ$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwYZ@b6c11560a6a9d61eac706b79a2f97d68b4463aa3ad87e00c07e2b01e90c564fbzN$argon2i$m=256,t=2,p=2$c29tZXNhbHQ$tsEVYKap1h6scGt5ovl9aLRGOqOth+AMB+KwHpDFZPsZ@81630552b8f3b1f48cdb1992c4c678643d490b2b5eb4ff6c4b3438b5621724b2zP$argon2i$m=65536,t=1,p=1$c29tZXNhbHQ$gWMFUrjzsfSM2xmSxMZ4ZD1JCytetP9sSzQ4tWIXJLI   Z@f212f01615e6eb5d74734dc3ef40ade2d51d052468d8c69440a3a1f2c1c2847bzP$argon2i$m=65536,t=4,p=1$c29tZXNhbHQ$8hLwFhXm6110c03D70Ct4tUdBSRo2MaUQKOh8sHChHsZdifferentpasswordZ@e9c902074b6754531a3a0be519e5baf404b30ce69b3f01ac3bf21229960109a3zP$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ$6ckCB0tnVFMaOgvlGeW69ASzDOabPwGsO/ISKZYBCaMZdiffsaltZ@79a103b90fe8aef8570cb31fc8b22259778916f8336b7bdac3892569d4f1c497zP$argon2i$m=65536,t=2,p=1$ZGlmZnNhbHQ$eaEDuQ/orvhXDLMfyLIiWXeJFvgza3vaw4kladTxxJc   Z@c1628832147d9720c5bd1cfd61367078729f6dfb6f8fea9ff98158e0d7816ed0zU$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtAZ@d1587aca0922c3b5d6a83edab31bee3c4ebaef342ed6127a55d19b2351ad1f41zW$argon2i$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ$0Vh6ygkiw7XWqD7asxvuPE667zQu1hJ6VdGbI1GtH0EZ@296dbae80b807cdceaad44ae741b506f14db0959267b183b118f9b24229bc7cbzV$argon2i$v=19$m=262144,t=2,p=1$c29tZXNhbHQ$KW266AuAfNzqrUSudBtQbxTbCVkmexg7EY+bJCKbx8sZ@89e9029f4637b295beb027056a7336c414fadd43f6b208645281cb214a56452fzS$argon2i$v=19$m=256,t=2,p=1$c29tZXNhbHQ$iekCn0Y3spW+sCcFanM2xBT63UP2sghkUoHLIUpWRS8Z@4ff5ce2769a1d7f4c8a491df09d41a9fbe90e5eb02155a13e4c01e20cd4eab61S$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQ$T/XOJ2mh1/TIpJHfCdQan76Q5esCFVoT5MAeIM1Oq2EZ@d168075c4d985e13ebeae560cf8b94c3b5d8a16c51916b6f4ac2da3ac11bbecfzU$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQ$0WgHXE2YXhPr6uVgz4uUw7XYoWxRkWtvSsLaOsEbvs8Z@aaa953d58af3706ce3df1aefd4a64a84e31d7f54175231f1285259f88174ce5bzU$argon2i$v=19$m=65536,t=4,p=1$c29tZXNhbHQ$qqlT1YrzcGzj3xrv1KZKhOMdf1QXUjHxKFJZ+IF0zlsZ@14ae8da01afea8700c2358dcef7c5358d9021282bd88663a4562f59fb74d22eezU$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$FK6NoBr+qHAMI1jc73xTWNkCEoK9iGY6RWL1n7dNIu4Z@b0357cccfbef91f3860b0dba447b2348cbefecadaf990abfe9cc40726c521271zU$argon2i$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ$sDV8zPvvkfOGCw26RHsjSMvv7K2vmQq/6cxAcmxSEnEZ@09316115d5cf24ed5a15a31a3ba326e5cf32edc24702987c02b6566f61913cf7zV$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPcZ@78fe1ec91fb3aa5657d72e710854e4c3d9b9198c742f9616c2f085bed95b2e8czW$argon2id$v=19$m=262144,t=2,p=1$c29tZXNhbHQ$eP4eyR+zqlZX1y5xCFTkw9m5GYx0L5YWwvCFvtlbLowZ@9dfeb910e80bad0311fee20f9c0e2b12c17987b4cac90c2ef54d5b3021c68bfezT$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4Z@6d093c501fd5999645e0ea3bf620d7b8be7fd2db59c20d9fff9539da2bf57037zT$argon2id$v=19$m=256,t=2,p=2$c29tZXNhbHQ$bQk8UB/VmZZF4Oo79iDXuL5/0ttZwg2f/5U52iv1cDcZ@f6a5adc1ba723dddef9b5ac1d464e180fcd9dffc9d1cbf76cca2fed795d9ca98zV$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ$9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypgZ@9025d48e68ef7395cca9079da4c4ec3affb3c8911fe4f86d1a2520856f63172czV$argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHQ$kCXUjmjvc5XMqQedpMTsOv+zyJEf5PhtGiUghW9jFywZ@0b84d652cf6b0c4beaef0dfe278ba6a80df6696281d7e0d2891b817d8c458fdezV$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$C4TWUs9rDEvq7w3+J4umqA32aWKB1+DSiRuBfYxFj94Z@bdf32b05ccc42eb15d58fd19b1f856b113da1e9a5874fdcc544308565aa8141czV$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ$vfMrBczELrFdWP0ZsfhWsRPaHppYdP3MVEMIVlqoFBwc                	       s   e Zd ZejZddedfedfddgZg dZ	de
dd	d
ddddfgZ fddZd( fdd	Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZG d&d' d'ejZ  ZS ))_base_argon2_test)r   z>$argon2i$v=19$m=256,t=1,p=1$c29tZXNhbHQ$AJFIsNZTMKTAewB4+ETN1A)r   z>$argon2i$v=19$m=380,t=2,p=2$c29tZXNhbHQ$SrssP8n7m/12VWPM8dvNrwzI$argon2i$v=19$m=512,t=2,p=2$1sV0O4PWLtc12Ypv1f7oGw$z+yqzlKtrq3SaNfXDfIDnQ)	password z>$argon2i$v=19$m=512,t=2,p=2$c29tZXNhbHQ$Fb5+nPuLzZvtqKRwqUEtUQ)r   zL$argon2d$v=19$m=102400,t=2,p=8$g2RodLh8j8WbSdCp+lUy/A$zzAJqL/HSjm809PYQu6qkA)zY$argon2qq$v=19$t=2,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYzX$argon2i$v=19$t=2,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYzi$argon2i$v=19$m=65536,t=8589934592,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYzd$argon2i$v=19$m=65536,t=2,p=4,q=5$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYzd$argon2i$v=19$t=2,m=65536,p=4,q=5$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYzT$argon2i$v=19$m=127,t=2,p=16$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4z>$argon2i$v=19$m=256,t=2,p=3$c29tZXNhbHQ$AJFIsNZTMKTAewB4+ETN1Ai   r         somesalts    HS0{ xD)typer   r
   r   r   checksumc                    s   t t|   tdd d S )Nignorez.*Using argon2pure backend.*)superr    setUpWarningswarningsfilterwarningsself	__class__r   r   r*      s   z_base_argon2_test.setUpWarningsNc                    s\   | j dkr"|p	| jjdi |}|dd} | j| _| jsJ |  S tt| j|fi |S )Nargon2_cffiTuse_defaultsr   )	backendhandlerusingZ_stub_checksumr'   Z	to_stringr)   r    do_stub_encrypt)r.   r5   settingsr/   r   r   r7      s   


z!_base_argon2_test.do_stub_encryptc                 C   s
   |  d)Nz!legacy 1.6 workflow not supported)skipTestr-   r   r   r   test_03_legacy_hash_workflow   s   
z._base_argon2_test.test_03_legacy_hash_workflowc                 C      |  t| jjdd d S )Nr   z`$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4assertRaisesNotImplementedErrorr5   verifyr-   r   r   r   test_keyid_parameter   s   z&_base_argon2_test.test_keyid_parameterc                 C   s   | j }d}d}d}| jdkr"| t|jd| | |d|| n| jdks)J | |d| | |d|| | jdkrV| t|jd| | |d|| d S | jdks]J | | j d| | |d|| d S )NzO$argon2i$v=19$m=512,t=2,p=2,data=c29tZWRhdGE$c29tZXNhbHQ$KgHyCesFyyjkVkihZ5VNFwzO$argon2i$v=19$m=512,t=2,p=2,data=c29tZWRhdGE$c29tZXNhbHQ$uEeXt1dxN1iFKGhklseW4wz>$argon2i$v=19$m=512,t=2,p=2$c29tZXNhbHQ$uEeXt1dxN1iFKGhklseW4wr1   r   
argon2pure)	r5   r4   r=   r>   r?   assertEqualZgenhash
assertTrueassertFalse)r.   r5   Zsample1Zsample2Zsample3r   r   r   test_data_parameter   s    

z%_base_argon2_test.test_data_parameterc                 C   r;   )Nstubzj$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD,data=EFGH$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4r<   r-   r   r   r   test_keyid_and_data_parameters!  s   z0_base_argon2_test.test_keyid_and_data_parametersc                 C   s   | j }| d|jv  |jD ]}| |t q| d|jv  | d|jv  | |j|jv  |}|  d }||}|d= |dd|ji| |di | |dddi| | j	t
|fddi| d S )	Nr&   r"   dr   r3   TxXxr   )r5   rC   Zsetting_kwdstype_valuesZassertIsInstancer   r&   Zget_sample_hashZ	parsehashr=   
ValueError)r.   clsvaluer5   r   kwdsr   r   r   test_type_kwd'  s   

z_base_argon2_test.test_type_kwdc                 C   s   | j }|j}|jD ]}||kr n
q	td||jf dd }| }| |j| |j|d}| |j| | |j| | ||| | ||| | jt|jdd |j|d}| |j| | |j| | ||jddd d S )Nz5expected to find alternate type: default=%r values=%rc                 S   s   | ddj S )NTr2   r&   )rL   r   r   r   effective_type[  s   z9_base_argon2_test.test_type_using.<locals>.effective_typerP   rI   Ir"   )r5   r&   rJ   AssertionErrorr6   rB   r=   rK   )r.   r5   	orig_typeZalt_typerQ   subclsr   r   r   test_type_usingM  s,   
z!_base_argon2_test.test_type_usingc                 C   sB   | j }|d}| || tdd|}| || d S )NrF   z\$argon2\w+\$z	$argon2d$)r5   r   rD   needs_updateresubrC   )r.   r5   r   Zhash2r   r   r   test_needs_update_w_typew  s
   
z*_base_argon2_test.test_needs_update_w_typec                 C   sJ   | j jddddd}d}|jdkr| || d S | || d S )Ni   r   r       )r   	time_costr   digest_size[$argon2i$m=65536,t=2,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYr   )r5   r6   Zmax_versionrD   rW   rC   )r.   r5   r   r   r   r   test_needs_update_w_version  s   
z-_base_argon2_test.test_needs_update_w_versionc                 C   s~   | j }|jdkr| dd}|jddd|ddd}|d	}| |d
 d}|jddd|ddd}|d	}| |d dS )z3verify we're using right base64 encoding for argon2r   z,handler uses wrong version for sample hashesr%   r#   r   r[   r"   )r   r\   r   r   Zchecksum_sizer&   r   r   s   somesalt        z^$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQAAAAAAAAAAA$rqnbEp1/jFDUEKZZmw+z14amDsFqMDC53dIe57ZHD38N)r5   r	   r9   r6   r   rB   )r.   r5   r   tempr   r   r   r   test_argon_byte_encoding  s   



z*_base_argon2_test.test_argon_byte_encodingc                   @   s6   e Zd Zejj Zejddd dd Zdd Z	dS )	z#_base_argon2_test.FuzzHashGeneratorrandom_memory_costrandom_type)r   r&   c                 C   s   | j | jjS N)rngchoicer5   rJ   r-   r   r   r   rc     s   z/_base_argon2_test.FuzzHashGenerator.random_typec                 C   s,   | j jdkr| ddddS | ddddS )NrA      i  r#   i  i @  i   )testr4   randintgaussr-   r   r   r   rb     s   z6_base_argon2_test.FuzzHashGenerator.random_memory_costN)
__name__
__module____qualname__r   FuzzHashGeneratorZsettings_mapcopyupdaterc   rb   r   r   r   r   rm     s
    rm   rd   )rj   rk   rl   r   argon2r5   r   r   known_correct_hashesZknown_malformed_hashesr   Zknown_parsehash_resultsr*   r7   r:   r@   rE   rG   rO   rV   rZ   r_   ra   r   rm   __classcell__r   r   r/   r   r       s8    	:&*	
r    c                   @   s.   e Zd Zejg d Zedd eD  dS )argon2_argon2_cffi_test))r   r^   )r   zU$argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4)r   zU$argon2d$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$cZn5d+rFh+ZfuRhm2iGUGgcrW5YLeM6q7L3vBsdmFA0)r   zV$argon2id$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$GpZ3sK/oH9p7VIiV56G/64Zo/8GaUw434IimaPqxwCo)r!   zU$argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$Vpzuc0v0SrP88LcVvmg+z5RoOYpMDKH/lt6O+CZabIQc                 c   s8    | ]}|d  t drdndkr|d |d fV  qdS )r   fullr   r   r   r   N)r   .0infor   r   r   	<genexpr>  s    z!argon2_argon2_cffi_test.<genexpr>N)rj   rk   rl   r    rq   extendreference_datar   r   r   r   rs     s
    
!rs   r1   c                   @   sV   e Zd ZejjdddZde_ej	dd Z	e	
dd eD  G dd	 d	ejZdS )
argon2_argon2pure_testr[   r   )r   r   TNc                 c   s,    | ]}|d  dk r|d |d fV  qdS )r   r   r   r   Nr   ru   r   r   r   rx     s    z argon2_argon2pure_test.<genexpr>c                   @   s   e Zd Zdd ZdS )z(argon2_argon2pure_test.FuzzHashGeneratorc                 C   s   |  ddddS )Nr   r$   r   )ri   r-   r   r   r   random_rounds  s   z6argon2_argon2pure_test.FuzzHashGenerator.random_roundsN)rj   rk   rl   r|   r   r   r   r   rm     s    rm   )rj   rk   rl   r   rp   r6   r5   Zpure_use_threadsr    rq   ry   rz   rm   r   r   r   r   r{     s    
r{   rA   )__doc__logging	getLoggerrj   logrX   r+   Zpasslibr   Zpasslib.utils.compatr   Zpasslib.tests.utilsr   r   Zpasslib.tests.test_handlersr   r   r   r	   rz   ry   r    Zcreate_backend_casers   r{   r   r   r   r   <module>   s    
((&  %)