
    i?                        S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr   " S S\R                   5      r " S	 S
\5      r " S S\5      r " S S\R                   5      r " S S\5      r " S S\5      r " S S\R                   5      r " S S\5      r " S S\5      r " S S\R                   5      r " S S\5      r " S S\5      r0 4S jr\S :X  a  S SKrS! r\R@                  " S"S#9  gg)$    N)	unhexlifyhexlify)tobytes)strxor_c)list_test_cases)BLAKE2bBLAKE2sc                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)
Blake2Test,   c                    U R                   R                  U R                  S9nU R                   R                  UR                  4 H  n[        SU R                  S-   S5       H(  nU" US9nU R	                  UR
                  US-  5        M*     [        SU R                  S-   5       H%  nU" US9nU R	                  UR
                  U5        M'     U" SU R                  S9R                  5       nU" U R                  S9R                  S5      R                  5       nU R	                  Xg5        U" SSU R                  S	9  M     UR                  5       nU R	                  UR
                  U R                  5        g )
Ndigest_bits      digest_bytes   )datar      A   5)r   keyr   )	BLAKE2newmax_bitsrangeassertEqualdigest_size	max_bytesdigestupdate)selfhnew_funcdbitshobjdbytesdigest1digest2s           [/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Hash/test_BLAKE2.pytest_new_positiveBlake2Test.test_new_positive.   s3   KKOOO6.Hq$--!"3Q7E2  !1!15A:> 8  4>>A#56V4  !1!16: 7 G$..IPPRGDNN;BB7KRRTGW.$Dt~~F /  uuw))4>>:    c                 v   U R                   R                  U R                  S9nU R                   R                  UR                  4 H  nU R                  [        UU R
                  U R                  S9  U R                  [        USS9  U R                  [        UU R
                  S-   S9  U R                  [        USS9  U R                  [        USS9  U R                  [        UU R                  S-   S9  U R                  [        UU R
                  SS	9  U R                  [        UU R
                  SS
9  M     g )Nr   )r   r   r   r   r         stringr   r   )r   r   )r   r   r   assertRaises	TypeErrorr   
ValueError)r"   r#   r$   s      r*   test_new_negativeBlake2Test.test_new_negativeD   s%   KKOOO6.Hi+/>>*.--  9 j(Cj(+/>>A+=  ?j(Bj(Cj(*.--!*;  =i+/>>"+  - i+/>>#,  . /r-   c                     U R                   R                  SS9R                  5       nU R                  [	        U5      U R
                  5        g )Ns   abcr   )r   r   r    r   lenr   )r"   r    s     r*   test_default_digest_size#Blake2Test.test_default_digest_sizeY   s7    f-446Vdnn5r-   c                 x   SS/nU R                   R                  U R                  S9nUR                  US   5      R                  US   5        UR	                  5       nU R                   R                  U R                  S9nUR                  US   US   -   5        U R                  UR	                  5       U5        g )Ns   







































































































































































































s,  r   r   r   )r   r   r   r!   r    r   )r"   piecesr#   r    s       r*   test_updateBlake2Test.test_update]   s    /KKOOO8	""6!9-KKOOO8	VAY&'V,r-   c                     U R                   R                  U R                  S9nU R                  [        UR
                  S5        g )Nr   r1   )r   r   r   r3   r4   r!   )r"   r#   s     r*   test_update_negativeBlake2Test.test_update_negativef   s0    KKOOO8)QXXy9r-   c                     U R                   R                  U R                  S9nUR                  5       nU R	                  UR                  5       U5        U R                  [        U[        S5      5      5        g )Nr   s   digest)r   r   r   r    r   
assertTrue
isinstancetype)r"   r#   r    s      r*   test_digestBlake2Test.test_digestj   sT    KKOOO8 	V,
64	?;<r-   c                    SnU R                   R                  SUS S S9nUR                  5       nU R                  [        UR
                  USS  5        U R                   R                  SUS9R                  5       nU R                   R                  SUS S SS9nU R                  UR                  5       U5        UR                  USS  5        U R                  UR                  5       U5        g )Ns   rrrrttt      )r   r   T)r   r   update_after_digest)r   r   r    r3   r4   r!   r   )r"   msgr#   dig1dig2s        r*   test_update_after_digest#Blake2Test.test_update_after_digests   s     KKOO#bq'O:xxz)QXXs12w7{{3S9@@B KKOO#bq'tOTT* 	
QRT*r-   c                 Z   U R                   R                  U R                  S9nUR                  5       nUR	                  5       nU R                  [        U5      [        U5      5        U R                  UR	                  5       U5        U R                  [        U[        S5      5      5        g )Nr   r    )r   r   r   r    	hexdigestr   r   r   rE   rF   rG   )r"   macr    rT   s       r*   test_hex_digestBlake2Test.test_hex_digest   sx    kkoo$--o8MMO	 	')*<=)4
9d8n=>r-   c                     U R                   R                  U R                  SS9nUR                  5       nUR	                  U5        [        US5      nU R                  [        UR                  U5        g )N   4r2      )r   r   r   r    verifyr   r3   r5   )r"   r#   rU   	wrong_macs       r*   test_verifyBlake2Test.test_verify   sT    KKOOTOBhhj	S#&	*ahh	:r-   c                     U R                   R                  U R                  SS9nUR                  5       nUR	                  U5        U R                  [        UR                  S5        g )NrY   r2   4556)r   r   r   rT   	hexverifyr3   r5   )r"   r#   rU   s      r*   test_hexverifyBlake2Test.test_hexverify   sI    KKOOTOBkkm	C*akk6:r-   c           	        ^ SU R                   -   S-   nU R                   H{  nU R                  R                  US9mU R	                  TR
                  U[        US-  5      -   5        U R                  R                  USS9mU R                  [        U4S j5        M}     SU R                  4 H.  nX R                  ;   a  M  U R                  [        U4S j5        M0     g )	Nz1.3.6.1.4.1.1722.12.2..r   r   s   secret)r   r   c                     > T R                   $ Noidr#   s   r*   <lambda>%Blake2Test.test_oid.<locals>.<lambda>   	    aeer-   c                     > T R                   $ rg   rh   rj   s   r*   rk   rl      rm   r-   )
oid_variantdigest_bits_oidr   r   r   ri   strr3   AttributeErrorr   )r"   prefixr   r#   s      @r*   test_oidBlake2Test.test_oid   s    )D,<,<<sB//KK8AQUUFS1A-B$BCKYGAnm< 0 t}}-K222nm< .r-   c                 4   SnSn[        U5      n[        U5      nU R                  R                  X!S9nU R                  R                  XCS9nSUS S& SUS S& U R                  UR	                  5       UR	                  5       5        [        U5      nU R                  R                  5       nU R                  R                  5       nUR                  U5        UR                  U5        SUS S& U R                  UR	                  5       UR	                  5       5        g )N   0000000000000000    r   r      r   )	bytearrayr   r   r   r    r!   )r"   r   r   key_badata_bah1h2s          r*   test_bytearrayBlake2Test.test_bytearray   s     3D/[[__$_0[[__'_6r
biik2 D/[[__[[__
		$
		'biik2r-   c                    SnSnS nS nX44 GH1  nU" U5      nU" U5      nU R                   R                  X!S9nU R                   R                  XvS9n	UR                  (       d
  SUS S& SUS S& U R                  UR	                  5       U	R	                  5       5        U" U5      nU R                   R                  5       nU R                   R                  5       n	UR                  U5        U	R                  U5        UR                  (       d  SUS S& U R                  UR	                  5       U	R	                  5       5        GM4     g )Nrw   rx   c                     [        U 5      $ rg   )
memoryviewr9   s    r*   	get_mv_ro-Blake2Test.test_memoryview.<locals>.get_mv_ro   s    d##r-   c                 *    [        [        U 5      5      $ rg   )r   r{   r9   s    r*   	get_mv_rw-Blake2Test.test_memoryview.<locals>.get_mv_rw   s    io..r-   ry   rz   r   )r   r   readonlyr   r    r!   )
r"   r   r   r   r   get_mvkey_mvdata_mvr~   r   s
             r*   test_memoryviewBlake2Test.test_memoryview   s   	$	/ !,F C[FTlGd4Bg:B##%$r
RYY["))+6 TlG"B"BIIdOIIg##%RYY["))+61 -r-    N)__name__
__module____qualname____firstlineno__r+   r6   r;   r?   rB   rH   rQ   rV   r]   rb   rt   r   r   __static_attributes__r   r-   r*   r   r   ,   sC    ;,.*6-:=+"
?;;= 36#7r-   r   c                   (    \ rS rSr\rSrSrSrSr	Sr
g)Blake2bTest      @   )   rK     r   1r   N)r   r   r   r   r   r   r   r   rp   ro   r   r   r-   r*   r   r          FHI*OKr-   r   c                   (    \ rS rSr\rSrSrSrSr	Sr
g)Blake2sTest   rK       )   r      rK   2r   N)r   r   r   r   r	   r   r   r   rp   ro   r   r   r-   r*   r   r      r   r-   r   c                   &    \ rS rSrS rS rS rSrg)Blake2OfficialTestVectori  c           	         Sn/ n[        US5       n[        U5       H  u  pVUR                  5       S:X  d  UR                  S5      (       a  M1  [        R
                  " SU-  U5      nU(       d  [        SU-  5      eUR                  S5      (       a$  [        [        UR                  S5      5      5      nOSnUS:X  a  Un	S	nM  US	:X  a  Un
S
nM  UnSnUR                  W	W
U45        M     S S S 5        U$ ! , (       d  f       U$ = f)Ninrt #z%s:	([0-9A-Fa-f]*)&Incorrect test vector format (line %d)r   r-   r   hash)open	enumeratestrip
startswithrematchr5   groupr   r   append)r"   test_vector_fileexpectedtest_vectorstest_vector_fdline_numberlineres	bin_value
input_datar   results               r*   _load_tests$Blake2OfficialTestVector._load_tests
  s   "D)^%.~%>!::<2%)=)=hh4x?F$%M'2&3 4 4 99Q<< )'#))A,*? @I #It#!*J$H&#C%H&F#H ''S&(AB/ &? *2 3 *)2 s   CC77
Dc                    SU R                   4nU R                   R                  5       S-   nSU R                   -  U l         SS Kn[        R                  R                  UR                  5      n[        R                  R                  [        R                  R                  " U/UQ76 U5      nU R                  U5      U l        g ! [         a2    [
        R                  " SU R                   -  [        5        / U l         g f = f)NHashz	-test.txt%s testsr   'Warning: skipping extended tests for %s)namelowerdescriptionpycryptodome_test_vectorsImportErrorwarningswarnUserWarningr   ospathdirname__file__joinr   r"   	dir_comps	file_namer   init_dirfull_file_names         r*   setUpBlake2OfficialTestVector.setUp(  s    TYY'	IIOO%3	%		1	, 77??#<#E#EFbggll8&Hi&H)T ,,^<  	MMCdiiO&( "D		s   C 9D ?D c                     U R                    HZ  u  pnU R                  R                  X R                  S9nUR	                  U5        U R                  UR                  5       U5        M\     g )N)r   r   )r   r   r   r   r!   r   r    )r"   r   r   r   rU   s        r*   runTest Blake2OfficialTestVector.runTest:  sQ    )-):):%Zf++//c/GCJJz"SZZ\62 *;r-   r   r   Nr   r   r   r   r   r   r   r   r   r-   r*   r   r     s    <=$3r-   r   c                        \ rS rSr\rSrSrSrg)Blake2bOfficialTestVectoriA  r   r   r   N	r   r   r   r   r   r   r   r   r   r   r-   r*   r   r   A      FDIr-   r   c                        \ rS rSr\rSrSrSrg)Blake2sOfficialTestVectoriJ  r	   r   r   N	r   r   r   r   r	   r   r   r   r   r   r-   r*   r   r   J  r   r-   r   c                   &    \ rS rSrS rS rS rSrg)Blake2TestVector1iS  c                    / n[        US5       n[        U5       H  u  pEUR                  5       S:X  d  UR                  S5      (       a  M1  [        R
                  " SU5      nU(       d  [        SU-  5      eUR                  [        [        UR                  S5      5      5      5        M     S S S 5        U$ ! , (       d  f       U$ = f)Nr   r   r   zdigest: ([0-9A-Fa-f]*)r   r   )r   r   r   r   r   r   r5   r   r   r   r   )r"   r   r   r   r   r   r   s          r*   r   Blake2TestVector1._load_testsU  s    "D)^%.~%>!::<2%)=)=hh7>$%M'2&3 4 4 ##Igciil.C$DE &? *  *) s   BB88
Cc                    SU R                   4nSnSU R                   -  U l         SS Kn[        R                  R                  UR                  5      n[        R                  R                  [        R                  R                  " U/UQ76 U5      nU R                  U5      U l        g ! [         a2    [        R
                  " SU R                   -  [        5        / U l         g f = f)Nr   ztv1.txtr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s         r*   r   Blake2TestVector1.setUpc      TYY'		%		1	, 77??#<#E#EFbggll8&Hi&H)T ,,^<  	MMCdiiO&( "D		   B) )9C%$C%c                 "   U R                    H  n[        U5      nSn[        S5       H@  nU R                  R	                  US9nUR                  U5        UR                  5       U-   nMB     U R                  WR                  5       U5        M     g )Nr-   d   r   )r   r:   r   r   r   r!   r    r   )r"   tvr   	next_data_r#   s         r*   r   Blake2TestVector1.runTestt  sv    ##Br7LI3ZKKOOO>#HHJ2	   QXXZ, $r-   r   Nr   r   r-   r*   r   r   S  s    ="	-r-   r   c                       \ rS rSr\rSrSrg)Blake2bTestVector1r   r   r   N)r   r   r   r   r   r   r   r   r   r-   r*   r   r         FDr-   r   c                       \ rS rSr\rSrSrg)Blake2sTestVector1i  r	   r   N)r   r   r   r   r	   r   r   r   r   r-   r*   r   r     r   r-   r   c                   &    \ rS rSrS rS rS rSrg)Blake2TestVector2i  c           	         / n[        US5       n[        U5       H  u  pEUR                  5       S:X  d  UR                  S5      (       a  M1  [        R
                  " SU5      nU(       d  [        SU-  5      e[        UR                  S5      5      n[        [        UR                  S5      5      5      nUR                  Xx45        M     S S S 5        U$ ! , (       d  f       U$ = f)Nr   r   r   z"digest\(([0-9]+)\): ([0-9A-Fa-f]*)r   r      )r   r   r   r   r   r   r5   intr   r   r   r   )	r"   r   r   r   r   r   r   key_sizer   s	            r*   r   Blake2TestVector2._load_tests  s    "D)^%.~%>!::<2%)=)=hhDdK$%M'2&3 4 4syy|,"7399Q<#89##X$67 &? *  *) s   B<C
C$c                    SU R                   4nSnSU R                   -  U l         SS Kn[        R                  R                  UR                  5      n[        R                  R                  [        R                  R                  " U/UQ76 U5      nU R                  U5      U l        g ! [         a2    [        R
                  " SU R                   -  [        5        / U l         g f = f)Nr   ztv2.txtr   r   r   r   r   s         r*   r   Blake2TestVector2.setUp  r   r   c                 ,   U R                    H  u  pSn[        S5       HN  nU R                  R                  U R                  SU-  S9nUR                  U5        UR                  5       U-   nMP     U R                  WR                  5       U5        M     g )Nr-   r   r   r2   )r   r   r   r   r   r!   r    r   )r"   r   r   r   r   r#   s         r*   r   Blake2TestVector2.runTest  s     $ 1 1HI3ZKKOO(,x $ 9#HHJ2		  
 QXXZ0 !2r-   r   Nr   r   r-   r*   r   r     s    ="	1r-   r   c                        \ rS rSr\rSrSrSrg)Blake2bTestVector2i  r   r   r   Nr   r   r-   r*   r  r    r   r-   r  c                        \ rS rSr\rSrSrSrg)Blake2sTestVector2i  r	   r   r   Nr   r   r-   r*   r	  r	    r   r-   r	  c                 ~   / nU[        [        5      -  nUR                  [        5       5        UR                  [	        5       5        UR                  [        5       5        U[        [        5      -  nUR                  [        5       5        UR                  [        5       5        UR                  [        5       5        U$ rg   )
r   r   r   r   r   r  r   r   r   r	  )configtestss     r*   	get_testsr    s    E	_[))E	LL*,-	LL#%&	LL#%&	_[))E	LL*,-	LL#%&	LL#%&Lr-   __main__c                  >    [         R                  " [        5       5      $ rg   )unittest	TestSuiter  r   r-   r*   suiter    s    !!)+..r-   r  )defaultTest)!r   r   r  r   binasciir   r   Crypto.Util.py3compatr   Crypto.Util.strxorr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r	   TestCaser   r   r   r   r   r   r   r   r   r   r  r	  r  r   r  mainr   r-   r*   <module>r     s  > 
 	   ' ) ' 5 (7"" 7D
* 

* 
63x00 63r 8  8 *-)) *-Z* * +1)) +1\* *     z/MMg&	 r-   