
     h5Y                     ,   d Z ddlZ ej                  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 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j)                   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d0d1       eeddd
ddd2d3       eed	dd
ddd4d5       eed	dd
dd"d6d7      g	       d%Zej)                   eed	dd
ddd8d9       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@dA       eeddd
dddBdC       eed	dd
dddDdE       eed	dd
dd"dFdG      g        G dH dIe      Z G dJ dKej-                  dL            Z G dM dNej-                  dO            Zy)PzFpasslib.tests.test_handlers_argon2 - tests for passlib hash algorithms    N)hash)unicode)HandlerCase	TEST_MODE)UPASS_TABLEPASS_TABLE_UTF8c                 0    t        | ||d|z  |||||	      S )N   )	versionroundslogMmemory_costparallelismsecretsalt
hex_digestr   )dict)r   tr   pr   r   r   r   s           d/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/passlib/tests/test_handlers_argon2.pyhashtestr      s)    !T'WXDZdL L          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            	            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      fgZ fdZd fd	Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d dej0                        Z x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                 V    t         t        |           t        j                  dd       y )Nignorez.*Using argon2pure backend.*)superr@   setUpWarningswarningsfilterwarnings)self	__class__s    r   rK   z_base_argon2_test.setUpWarnings   s"    46*HIr   c                     | j                   dk(  rX |xs | j                  j                  di |} |d      } | j                  | _        | j                  sJ | j                         S t        t        | "  |fi |S )Nargon2_cffiTuse_defaults )	backendhandlerusing_stub_checksumrG   	to_stringrJ   r@   do_stub_encrypt)rN   rV   settingsrO   s      r   rZ   z!_base_argon2_test.do_stub_encrypt   su    <<=( 6w.$,,55AAG-D //DM== >>##*DA'VXVVr   c                 $    | j                  d      )Nz!legacy 1.6 workflow not supported)skipTestrN   s    r   test_03_legacy_hash_workflowz._base_argon2_test.test_03_legacy_hash_workflow   s    mm?@@r   c                 \    | j                  t        | j                  j                  dd       y )Nr   z`$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4assertRaisesNotImplementedErrorrV   verifyr^   s    r   test_keyid_parameterz&_base_argon2_test.test_keyid_parameter   s*    
 	-t||/B/BJH	Ir   c                    | j                   }d}d}d}| j                  dk(  rE| j                  t        |j                  d|       | j                  |j                  d|      |       nT| j                  dk(  sJ | j                  |j	                  d|             | j                  |j                  d|      |       | j                  dk(  rE| j                  t        |j                  d|       | j                  |j                  d|      |       y | j                  dk(  sJ | j                  | j                   j	                  d|             | j                  |j                  d|      |       y )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$uEeXt1dxN1iFKGhklseW4wrQ   r   
argon2pure)	rV   rU   rb   rc   rd   assertEqualgenhash
assertTrueassertFalse)rN   rV   sample1sample2sample3s        r   test_data_parameterz%_base_argon2_test.test_data_parameter   sC   
 ,, d d S <<=( 17>>:wW W__ZA7K <<<//OOGNN:w?@ W__ZA7K <<=( 17>>*gV W__ZA7K <<<//T\\00WEF W__ZA7Kr   c                 \    | j                  t        | j                  j                  dd       y )Nstubzj$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD,data=EFGH$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4ra   r^   s    r   test_keyid_and_data_parametersz0_base_argon2_test.test_keyid_and_data_parameters!  s(    -t||/B/BFH	Ir   c                 8   | j                   }| j                  d|j                  v        |j                  D ]  }| j	                  |t
                | j                  d|j                  v        | j                  d|j                  v        | j                  |j                  |j                  v        |}| j                         d   }|j                  |      }|d=  |dd|j                  i|  |di |  |dddi|  | j                  t        |fddi| y )	NrF   rB   dr
   rS   TxXxrT   )rV   rj   setting_kwdstype_valuesassertIsInstancer   rF   get_sample_hash	parsehashrb   
ValueError)rN   clsvaluerV   r   kwdss         r   test_type_kwdz_base_argon2_test.test_type_kwd'  s   ll 	#"2"223 __ 	2E!!%1	2s./s./ 	COO34 ##%a(  &L 	&SXX&&
 	$ 	*T*T* 	*gBEBTBr   c                    | j                   }|j                  }|j                  D ]	  }||k7  s	 n t        d|d|j                        d }|j	                         }| j                  |j                  |       |j	                  |      }| j                  |j                  |       | j                  |j                  |       | j                   ||      |       | j                   ||      |       | j                  t        |j                  d       |j	                  |      }| j                  |j                  |       | j                  |j                  |       | j                   ||j	                  d            d       y )Nz)expected to find alternate type: default=z values=c                 (     | d      j                   S )NTrR   rF   )r|   s    r   effective_typez9_base_argon2_test.test_type_using.<locals>.effective_type[  s    D)...r   r   ru   IrB   )rV   rF   rw   AssertionErrorrW   rh   rb   r{   )rN   rV   	orig_typealt_typer   subclss         r   test_type_usingz!_base_argon2_test.test_type_usingM  s]   ,,
 LL	++ 	CH9$	C !"+W-@-@"B C C	/ i0 H-h/y1 	/:0)< 	*gmm%@ H-h/y1 	3(?@#Fr   c                     | j                   }|j                  d      }| j                  |j                  |             t	        j
                  dd|      }| j                  |j                  |             y )Nrq   z\$argon2\w+\$z	$argon2d$)rV   r   rk   needs_updateresubrj   )rN   rV   r   hash2s       r   test_needs_update_w_typez*_base_argon2_test.test_needs_update_w_typew  s\    ,,||F#--d34'd;,,U34r   c                     | j                   j                  dddd      }d}|j                  dk(  r!| j                  |j	                  |             y | j                  |j	                  |             y )Ni   r   r&       )r   	time_costr   digest_size[$argon2i$m=65536,t=2,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYr   )rV   rW   max_versionrk   r   rj   )rN   rV   r   s      r   test_needs_update_w_versionz-_base_argon2_test.test_needs_update_w_version  sj    ,,$$!QR13 % 5>$&W11$78OOG0067r   c                 L   | j                   }|j                  dk7  r| j                  d      d}|j                  ddd|dd      }|j	                  d	      }| j                  |d
       d}|j                  ddd|dd      }|j	                  d	      }| j                  |d       y)z3verify we're using right base64 encoding for argon2r,   z,handler uses wrong version for sample hashesrE   rC   r   r   rB   )r   r   r   r   checksum_sizerF   r   r2   s   somesalt        z^$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQAAAAAAAAAAA$rqnbEp1/jFDUEKZZmw+z14amDsFqMDC53dIe57ZHD38N)rV   r   r]   rW   r   rh   )rN   rV   r   tempr   s        r   test_argon_byte_encodingz*_base_argon2_test.test_argon_byte_encoding  s    ,,??d"-- NOO }}qt+-C  9yy$  N 	O
 ;}}qt+-C  9yy$  N 	Or   c                       e Zd Zej                  j
                  j                         Zej                  dd       d Zd Z	y)#_base_argon2_test.FuzzHashGeneratorrandom_memory_costrandom_type)r   rF   c                 `    | j                   j                  | j                  j                        S N)rngchoicerV   rw   r^   s    r   r   z/_base_argon2_test.FuzzHashGenerator.random_type  s    88??4<<#;#;<<r   c                     | j                   j                  dk(  r| j                  dddd      S | j                  dddd      S )Nrg      i  rC   i  i @  i   )testrU   randintgaussr^   s    r   r   z6_base_argon2_test.FuzzHashGenerator.random_memory_cost  sB    yy  L0((c3<<((eUDAAr   N)
__name__
__module____qualname__r   FuzzHashGeneratorsettings_mapcopyupdater   r   rT   r   r   r   r     s;    "44AAFFH(<=Q	=	Br   r   r   )r   r   r   r   argon2rV   r   r   known_correct_hashesknown_malformed_hashesr   known_parsehash_resultsrK   rZ   r_   re   ro   rr   r   r   r   r   r   r   r   __classcell__)rO   s   @r   r@   r@      s    kkG 	W 	W 
 / 	0	 3 	4 	[ 	e+
2* 
J	3Cq{H
J	KJ
WAI8LtI$CL(GT58O2BK99 B Br   r@   c                   ^    e Zd Zej                  g dz   Zej                  d eD               y)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)rA   zU$argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$Vpzuc0v0SrP88LcVvmg+z5RoOYpMDKH/lt6O+CZabIQc              #   Z   K   | ]#  }|d    t        d      rdndk  r|d   |d   f % yw)r   fullr    r   r   r   N)r   .0infos     r   	<genexpr>z!argon2_argon2_cffi_test.<genexpr>  s:       +/<)F"3B< 
hf& s   )+N)r   r   r   r@   r   extendreference_datarT   r   r   r   r     s9     -AA E
 
B   3A  r   r   rQ   c                       e Zd Zej                  j                  dd      Zde_        ej                  dd Z	e	j                  d eD                G d dej                        Zy)	argon2_argon2pure_testr   r   )r   r   TNc              #   @   K   | ]  }|d    dk  r|d   |d   f  yw)r   r   r   r   NrT   r   s     r   r   z argon2_argon2pure_test.<genexpr>  s1       +/<" 
hf& s   c                       e Zd Zd Zy)(argon2_argon2pure_test.FuzzHashGeneratorc                 *    | j                  dddd      S )Nr
   rD   r   )r   r^   s    r   random_roundsz6argon2_argon2pure_test.FuzzHashGenerator.random_rounds  s    $$Q1a00r   N)r   r   r   r   rT   r   r   r   r     s    	1r   r   )r   r   r   r   r   rW   rV   pure_use_threadsr@   r   r   r   r   rT   r   r   r   r     sh    
 kkBA>G  $G -AA!D  3A  
1-?? 1r   r   rg   )__doc__logging	getLoggerr   logr   rL   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r   r   r   r   r   r@   create_backend_caser   r   rT   r   r   <module>r      s   L
 g! 	   ( 6 DL
 WaQ
JO<= WaQ
JO<= WaQ
JO<= WaAz:O<= WaAz:O<= WaQ
JO<= WaQ
JO<= WaQ 3ZO<= WaQ
JO<=C%P    WaQ
JO<= WaQ
JO<= WaQ
JO<= WaAz:O<= WaAz:O<= WaQ
JO<= WaQ
JO<= WaQ 3ZO<= WaQ
JO<=C% %P    WaQ
JO<= WaQ
JO<= WaAz:O<= WaAz:O<= WaQ
JO<= WaQ
JO<= WaQ 3ZO<= WaQ
JO<=;! !L[B [BF	'/CCMR 'R1.BB<P 1r   