o
    5h5Y                     @   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   v/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/passlib/tests/test_handlers_argon2.pyhashtest   s   r         r   passwordsomesalt@f6c4db4a54e2a370627aff3db6176b94a2a209a62c8e36152711802f7b30c694zP$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ   @9690ec55d28d3ed32562f2e73ea62b02b018757643a2ae6e79528459de8106e9zR$argon2i$m=1048576,t=2,p=1$c29tZXNhbHQ$lpDsVdKNPtMlYvLnPqYrArAYdXZDoq5ueVKEWd6BBuk   @3e689aaa3d28a77cf2bc72a51ac53166761751182f1ee292e3f677a7da4c2467zQ$argon2i$m=262144,t=2,p=1$c29tZXNhbHQ$Pmiaqj0op3zyvHKlGsUxZnYXURgvHuKS4/Z3p9pMJGc   @fd4dd83d762c49bdeaf57c47bdcd0c2f1babf863fdeb490df63ede9975fccf06zN$argon2i$m=256,t=2,p=1$c29tZXNhbHQ$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY@b6c11560a6a9d61eac706b79a2f97d68b4463aa3ad87e00c07e2b01e90c564fbzN$argon2i$m=256,t=2,p=2$c29tZXNhbHQ$tsEVYKap1h6scGt5ovl9aLRGOqOth+AMB+KwHpDFZPs@81630552b8f3b1f48cdb1992c4c678643d490b2b5eb4ff6c4b3438b5621724b2zP$argon2i$m=65536,t=1,p=1$c29tZXNhbHQ$gWMFUrjzsfSM2xmSxMZ4ZD1JCytetP9sSzQ4tWIXJLI   @f212f01615e6eb5d74734dc3ef40ade2d51d052468d8c69440a3a1f2c1c2847bzP$argon2i$m=65536,t=4,p=1$c29tZXNhbHQ$8hLwFhXm6110c03D70Ct4tUdBSRo2MaUQKOh8sHChHsdifferentpassword@e9c902074b6754531a3a0be519e5baf404b30ce69b3f01ac3bf21229960109a3zP$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ$6ckCB0tnVFMaOgvlGeW69ASzDOabPwGsO/ISKZYBCaMdiffsalt@79a103b90fe8aef8570cb31fc8b22259778916f8336b7bdac3892569d4f1c497zP$argon2i$m=65536,t=2,p=1$ZGlmZnNhbHQ$eaEDuQ/orvhXDLMfyLIiWXeJFvgza3vaw4kladTxxJc   @c1628832147d9720c5bd1cfd61367078729f6dfb6f8fea9ff98158e0d7816ed0zU$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA@d1587aca0922c3b5d6a83edab31bee3c4ebaef342ed6127a55d19b2351ad1f41zW$argon2i$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ$0Vh6ygkiw7XWqD7asxvuPE667zQu1hJ6VdGbI1GtH0E@296dbae80b807cdceaad44ae741b506f14db0959267b183b118f9b24229bc7cbzV$argon2i$v=19$m=262144,t=2,p=1$c29tZXNhbHQ$KW266AuAfNzqrUSudBtQbxTbCVkmexg7EY+bJCKbx8s@89e9029f4637b295beb027056a7336c414fadd43f6b208645281cb214a56452fzS$argon2i$v=19$m=256,t=2,p=1$c29tZXNhbHQ$iekCn0Y3spW+sCcFanM2xBT63UP2sghkUoHLIUpWRS8@4ff5ce2769a1d7f4c8a491df09d41a9fbe90e5eb02155a13e4c01e20cd4eab61S$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQ$T/XOJ2mh1/TIpJHfCdQan76Q5esCFVoT5MAeIM1Oq2E@d168075c4d985e13ebeae560cf8b94c3b5d8a16c51916b6f4ac2da3ac11bbecfzU$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQ$0WgHXE2YXhPr6uVgz4uUw7XYoWxRkWtvSsLaOsEbvs8@aaa953d58af3706ce3df1aefd4a64a84e31d7f54175231f1285259f88174ce5bzU$argon2i$v=19$m=65536,t=4,p=1$c29tZXNhbHQ$qqlT1YrzcGzj3xrv1KZKhOMdf1QXUjHxKFJZ+IF0zls@14ae8da01afea8700c2358dcef7c5358d9021282bd88663a4562f59fb74d22eezU$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$FK6NoBr+qHAMI1jc73xTWNkCEoK9iGY6RWL1n7dNIu4@b0357cccfbef91f3860b0dba447b2348cbefecadaf990abfe9cc40726c521271zU$argon2i$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ$sDV8zPvvkfOGCw26RHsjSMvv7K2vmQq/6cxAcmxSEnE@09316115d5cf24ed5a15a31a3ba326e5cf32edc24702987c02b6566f61913cf7zV$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc@78fe1ec91fb3aa5657d72e710854e4c3d9b9198c742f9616c2f085bed95b2e8czW$argon2id$v=19$m=262144,t=2,p=1$c29tZXNhbHQ$eP4eyR+zqlZX1y5xCFTkw9m5GYx0L5YWwvCFvtlbLow@9dfeb910e80bad0311fee20f9c0e2b12c17987b4cac90c2ef54d5b3021c68bfezT$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4@6d093c501fd5999645e0ea3bf620d7b8be7fd2db59c20d9fff9539da2bf57037zT$argon2id$v=19$m=256,t=2,p=2$c29tZXNhbHQ$bQk8UB/VmZZF4Oo79iDXuL5/0ttZwg2f/5U52iv1cDc@f6a5adc1ba723dddef9b5ac1d464e180fcd9dffc9d1cbf76cca2fed795d9ca98zV$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ$9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypg@9025d48e68ef7395cca9079da4c4ec3affb3c8911fe4f86d1a2520856f63172czV$argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHQ$kCXUjmjvc5XMqQedpMTsOv+zyJEf5PhtGiUghW9jFyw@0b84d652cf6b0c4beaef0dfe278ba6a80df6696281d7e0d2891b817d8c458fdezV$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$C4TWUs9rDEvq7w3+J4umqA32aWKB1+DSiRuBfYxFj94@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   rG      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using_stub_checksumrD   	to_stringrF   r=   do_stub_encrypt)rK   rR   settingsrL   r   r   rV      s   


z!_base_argon2_test.do_stub_encryptc                 C   s
   |  d)Nz!legacy 1.6 workflow not supported)skipTestrJ   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NotImplementedErrorrR   verifyrJ   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$uEeXt1dxN1iFKGhklseW4wrN   r   
argon2pure)	rR   rQ   r\   r]   r^   assertEqualgenhash
assertTrueassertFalse)rK   rR   sample1sample2sample3r   r   r   test_data_parameter   s    

z%_base_argon2_test.test_data_parameterc                 C   rZ   )Nstubzj$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD,data=EFGH$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4r[   rJ   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 )	NrC   r?   dr   rP   TxXxr   )rR   rc   setting_kwdstype_valuesassertIsInstancer   rC   get_sample_hash	parsehashr\   
ValueError)rK   clsvaluerR   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 )NTrO   rC   )rs   r   r   r   effective_type[  s   z9_base_argon2_test.test_type_using.<locals>.effective_typerw   rl   Ir?   )rR   rC   rn   AssertionErrorrS   ra   r\   rr   )rK   rR   	orig_typealt_typerx   subclsr   r   r   test_type_usingM  s,   
z!_base_argon2_test.test_type_usingc                 C   sB   | j }|d}| || tdd|}| || d S )Nri   z\$argon2\w+\$z	$argon2d$)rR   r   rd   needs_updateresubrc   )rK   rR   r   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   )rR   rS   max_versionrd   r   rc   )rK   rR   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 hashesrB   r@   r   r   r?   )r   r   r   r   checksum_sizerC   r   r0   s   somesalt        z^$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQAAAAAAAAAAA$rqnbEp1/jFDUEKZZmw+z14amDsFqMDC53dIe57ZHD38N)rR   r	   rX   rS   r   ra   )rK   rR   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   rC   c                 C   s   | j | jjS N)rngchoicerR   rn   rJ   r   r   r   r     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 )Nr`      i  r@   i  i @  i   )testrQ   randintgaussrJ   r   r   r   r     s   z6_base_argon2_test.FuzzHashGenerator.random_memory_costN)
__name__
__module____qualname__r   FuzzHashGeneratorsettings_mapcopyupdater   r   r   r   r   r   r     s
    r   r   )r   r   r   r   argon2rR   r   r   known_correct_hashesknown_malformed_hashesr   known_parsehash_resultsrG   rV   rY   r_   rh   rj   rv   r~   r   r   r   r   r   __classcell__r   r   rL   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)r   r   r   r=   r   extendreference_datar   r   r   r   r     s
    
!r   rN   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   r   r   r   r   r     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   rA   r   )r   rJ   r   r   r   random_rounds  s   z6argon2_argon2pure_test.FuzzHashGenerator.random_roundsN)r   r   r   r   r   r   r   r   r     s    r   )r   r   r   r   r   rS   rR   pure_use_threadsr=   r   r   r   r   r   r   r   r   r     s    
r   r`   )__doc__logging	getLoggerr   logr   rH   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r   r   r	   r   r   r=   create_backend_caser   r   r   r   r   r   <module>   s    
((&  %)