
    g5Y                     ,   S r SSKr\R                  " \5      rSSKrSSKrSSKJr  SSK	J
r
  SSKJrJr  SSKJrJr  S rSr\" \S	SS
SSSS5      \" \S	SS
SSSS5      \" \S	SS
SSSS5      \" \S	SS
SSSS5      \" \S	SS	SSSS5      \" \S
SS
SSSS5      \" \SSS
SSSS5      \" \S	SS
SSS S!5      \" \S	SS
SS"S#S$5      /	rS%r\R)                  \" \S	SS
SSS&S'5      \" \S	SS
SSS(S)5      \" \S	SS
SSS*S+5      \" \S	SS
SSS,S-5      \" \S	SS	SSS.S/5      \" \S
SS
SSS0S15      \" \SSS
SSS2S35      \" \S	SS
SSS4S55      \" \S	SS
SS"S6S75      /	5        S%r\R)                  \" \S	SS
SSS8S95      \" \S	SS
SSS:S;5      \" \S	SS
SSS<S=5      \" \S	SS	SSS>S?5      \" \S
SS
SSS@SA5      \" \SSS
SSSBSC5      \" \S	SS
SSSDSE5      \" \S	SS
SS"SFSG5      /5         " SH SI\5      r " SJ SK\R-                  SL5      5      r " SM SN\R-                  SO5      5      rg)PzFpasslib.tests.test_handlers_argon2 - tests for passlib hash algorithms    N)hash)unicode)HandlerCase	TEST_MODE)UPASS_TABLEPASS_TABLE_UTF8c                 $    [        XUSU-  UXEXgS9	$ )N   )	versionroundslogMmemory_costparallelismsecretsalt
hex_digestr   )dict)r   tr   pr   r   r   r   s           [/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_handlers_argon2.pyhashtestr      s#    !T'WXZ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            
          ^  \ rS rSr\R
                  rSS\S4\S4SS/r	/ SQr
S\" S	S
SSSSS94/rU 4S jrSU 4S jjrS rS rS rS rS rS rS rS rS r " S S\R2                  5      rSrU =r$ )_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                 X   > [         [        U ]  5         [        R                  " SS5        g )Nignorez.*Using argon2pure backend.*)superr@   setUpWarningswarningsfilterwarnings)self	__class__s    r   rL   _base_argon2_test.setUpWarnings   s"    46*HIr   c                   > U R                   S:X  a_  U=(       d    U R                  R                  " S0 UD6nU" SS9n U R                  U l        U R                  (       d   eU R                  5       $ [        [        U ]"  " U40 UD6$ )Nargon2_cffiTuse_defaults )	backendhandlerusing_stub_checksumrH   	to_stringrK   r@   do_stub_encrypt)rO   rX   settingsrP   s      r   r\   !_base_argon2_test.do_stub_encrypt   su    <<=( .$,,55AAG-D //DM== =>>##*DA'VXVVr   c                 $    U R                  S5      e)Nz!legacy 1.6 workflow not supported)skipTestrO   s    r   test_03_legacy_hash_workflow._base_argon2_test.test_03_legacy_hash_workflow   s    mm?@@r   c                 \    U R                  [        U R                  R                  SS5        g )Nr   z`$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4assertRaisesNotImplementedErrorrX   verifyra   s    r   test_keyid_parameter&_base_argon2_test.test_keyid_parameter   s*    
 	-t||/B/BJH	Ir   c                    U R                   nSnSnSnU R                  S:X  aE  U R                  [        UR                  SU5        U R                  UR                  SU5      U5        OUU R                  S:X  d   eU R                  UR	                  SU5      5        U R                  UR                  SU5      U5        U R                  S:X  aE  U R                  [        UR                  SU5        U R                  UR                  SU5      U5        g U R                  S:X  d   eU R                  U R                   R	                  SU5      5        U R                  UR                  SU5      U5        g )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$uEeXt1dxN1iFKGhklseW4wrS   r   
argon2pure)	rX   rW   rf   rg   rh   assertEqualgenhash
assertTrueassertFalse)rO   rX   sample1sample2sample3s        r   test_data_parameter%_base_argon2_test.test_data_parameter   sI   
 ,, 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                 \    U R                  [        U R                  R                  SS5        g )Nstubzj$argon2i$v=19$m=65536,t=2,p=4,keyid=ABCD,data=EFGH$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4re   ra   s    r   test_keyid_and_data_parameters0_base_argon2_test.test_keyid_and_data_parameters!  s(    -t||/B/BFH	Ir   c                 D   U R                   nU R                  SUR                  ;   5        UR                   H  nU R	                  U[
        5        M     U R                  SUR                  ;   5        U R                  SUR                  ;   5        U R                  UR                  UR                  ;   5        UnU R                  5       S   nUR                  U5      nUS	 U" SSUR                  0UD6  U" S0 UD6  U" SSS0UD6  U R                  " [        U4SS0UD6  g )	NrG   rC   dr
   rU   TxXxrV   )rX   ro   setting_kwdstype_valuesassertIsInstancer   rG   get_sample_hash	parsehashrf   
ValueError)rO   clsvaluerX   r   kwdss         r   test_type_kwd_base_argon2_test.test_type_kwd'  s	   ll 	#"2"223 __E!!%1 %s./s./ 	COO34 ##%a(  &L 	&SXX&&
 	$ 	*T*T* 	*gBEBTBr   c                    U R                   nUR                  nUR                   H
  nX2:w  d  M
    O   [        SU< SUR                  < 35      eS nUR	                  5       nU R                  UR                  U5        UR	                  US9nU R                  UR                  U5        U R                  UR                  U5        U R                  U" U5      U5        U R                  U" U5      U5        U R                  [        UR                  SS9  UR	                  US9nU R                  UR                  U5        U R                  UR                  U5        U R                  U" UR	                  SS95      S5        g )Nz)expected to find alternate type: default=z values=c                 "    U " SS9R                   $ )NTrT   rG   )r   s    r   effective_type9_base_argon2_test.test_type_using.<locals>.effective_type[  s    D)...r   r   r|   IrC   )rX   rG   r~   AssertionErrorrY   rm   rf   r   )rO   rX   	orig_typealt_typer   subclss         r   test_type_using!_base_argon2_test.test_type_usingM  sT   ,,
 LL	++H$ , !"+W-@-@"B C C	/ i0 H-h/y1 	/:0)< 	*gmm%@ H-h/y1 	3(?@#Fr   c                     U R                   nUR                  S5      nU R                  UR                  U5      5        [        R
                  " SSU5      nU R                  UR                  U5      5        g )Nrw   z\$argon2\w+\$z	$argon2d$)rX   r   rp   needs_updateresubro   )rO   rX   r   hash2s       r   test_needs_update_w_type*_base_argon2_test.test_needs_update_w_typew  s\    ,,||F#--d34'd;,,U34r   c                     U R                   R                  SSSSS9nSnUR                  S:X  a!  U R                  UR	                  U5      5        g U R                  UR	                  U5      5        g )Ni   r   r&       )r   	time_costr   digest_size[$argon2i$m=65536,t=2,p=4$c29tZXNhbHQAAAAAAAAAAA$QWLzI4TY9HkL2ZTLc8g6SinwdhZewYrzz9zxCo0bkGYr   )rX   rY   max_versionrp   r   ro   )rO   rX   r   s      r   test_needs_update_w_version-_base_argon2_test.test_needs_update_w_version  sj    ,,$$!QR13 % 5>$&W11$78OOG0067r   c           	      B   U R                   nUR                  S:w  a  U R                  S5      eSnUR                  SSSUSSS9nUR	                  S	5      nU R                  US
5        SnUR                  SSSUSSS9nUR	                  S	5      nU R                  US5        g)z3verify we're using right base64 encoding for argon2r,   z,handler uses wrong version for sample hashesrF   rD   r   r   rC   )r   r   r   r   checksum_sizerG   r   r2   s   somesalt        z^$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQAAAAAAAAAAA$rqnbEp1/jFDUEKZZmw+z14amDsFqMDC53dIe57ZHD38N)rX   r   r`   rY   r   rm   )rO   rX   r   tempr   s        r   test_argon_byte_encoding*_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                       \ rS rSr\R
                  R                  R                  5       r\R                  SSS9  S r	S r
Srg)	#_base_argon2_test.FuzzHashGeneratori  random_memory_costrandom_type)r   rG   c                 `    U R                   R                  U R                  R                  5      $ N)rngchoicerX   r~   ra   s    r   r   /_base_argon2_test.FuzzHashGenerator.random_type  s    88??4<<#;#;<<r   c                     U R                   R                  S:X  a  U R                  SSSS5      $ U R                  SSSS5      $ )Nrl      i  rD   i  i @  i   )testrW   randintgaussra   s    r   r   6_base_argon2_test.FuzzHashGenerator.random_memory_cost  sB    yy  L0((c3<<((eUDAAr   rV   N)__name__
__module____qualname____firstlineno__r   FuzzHashGeneratorsettings_mapcopyupdater   r   __static_attributes__rV   r   r   r   r     s;    "44AAFFH(<=Q	=	Br   r   )rH   r   )r   r   r   r   r   argon2rX   r   r   known_correct_hashesknown_malformed_hashesr   known_parsehash_resultsrL   r\   rb   ri   rt   rx   r   r   r   r   r   r   r   r   __classcell__)rP   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                   f    \ rS rSr\R
                  / SQ-   r\R                  S \ 5       5        Srg)argon2_argon2_cffi_testi  ))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)rB   zU$argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$Vpzuc0v0SrP88LcVvmg+z5RoOYpMDKH/lt6O+CZabIQc              #   p   #    U  H,  nUS    [        S5      (       a  SOS::  d  M   US   US   4v   M.     g7f)r   fullr    r   r   r   N)r   .0infos     r   	<genexpr>!argon2_argon2_cffi_test.<genexpr>  s=       3A4<)F"3"3B< 	'hf&>s   66rV   N)	r   r   r   r   r@   r   extendreference_datar   rV   r   r   r   r     s9     -AA E
 
B   3A  r   r   rS   c                       \ rS rSr\R
                  R                  SSS9rS\l        \	R                  SS r
\
R                  S \ 5       5         " S S	\	R                  5      rS
rg)argon2_argon2pure_testi  r   r   )r   r   TNc              #   L   #    U  H  nUS    S:  d  M  US   US   4v   M     g7f)r   r   r   r   NrV   r   s     r   r    argon2_argon2pure_test.<genexpr>  s1       3A4<" 	'hf&>s   $$c                       \ rS rSrS rSrg)(argon2_argon2pure_test.FuzzHashGeneratori  c                 *    U R                  SSSS5      $ )Nr
   rE   r   )r   ra   s    r   random_rounds6argon2_argon2pure_test.FuzzHashGenerator.random_rounds  s    $$Q1a00r   rV   N)r   r   r   r   r   r   rV   r   r   r   r     s    	1r   r   rV   )r   r   r   r   r   r   rY   rX   pure_use_threadsr@   r   r   r   r   r   rV   r   r   r   r     sh    
 kkBA>G  $G -AA!D  3A  
1-?? 1r   r   rl   )__doc__logging	getLoggerr   logr   rM   passlibr   passlib.utils.compatr   passlib.tests.utilsr   r   passlib.tests.test_handlersr   r   r   r   r   r   r@   create_backend_caser   r   rV   r   r   <module>r      s   L
 ! 	   ( 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   