
    ¿ig?                     ,   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ  G d dej                  Z G d	 d
e          Z G d de          Z G d dej                  Z G d de          Z G d de          Z G d dej                  Z G d de          Z G d de          Z G d dej                  Z G d de          Z G d de          Zi fdZed k    rd dlZd! Z ej         d"#           dS dS )$    N)	unhexlifyhexlify)tobytes)strxor_c)list_test_cases)BLAKE2bBLAKE2sc                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )
Blake2Testc                    | j                             | j                  }| j         j        |j        fD ]}t          d| j        dz   d          D ],} ||          }|                     |j        |dz             -t          d| j        dz             D ])} ||          }|                     |j        |           * |d| j                                                  } || j                                      d                                          }|                     ||            |dd| j        	           |                                }|                     |j        | j                   d S )
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/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Hash/test_BLAKE2.pytest_new_positivezBlake2Test.test_new_positive.   s   KOOO66. 	G 	GHq$-!"3Q77 ? ?xE222  !15A:>>>>4>A#566 ; ;xV444  !16::::hG$.IIIPPRRGhDN;;;BB7KKRRTTGWg...H$Dt~FFFFFuuww)4>:::::    c                    | j                             | j                  }| j         j        |j        fD ]}|                     t          || j        | j                   |                     t          |d           |                     t          || j        dz              |                     t          |d           |                     t          |d           |                     t          || j        dz              |                     t          || j        d	           |                     t          || j        d
           d S )Nr   )r   r   r   r   r         stringr   r   )r   r   )r   r   r   assertRaises	TypeErrorr   
ValueError)r!   r"   r#   s      r)   test_new_negativezBlake2Test.test_new_negativeD   sj   KOOO66. 	. 	.Hi+/>*.-  9 9 9 j(CCCj(+/>A+=  ? ? ?j(BBBj(CCCj(*.-!*;  = = =i+/>"+  - - - i+/>#,  . . . .	. 	.r+   c                     | j                             d                                          }|                     t	          |          | j                   d S )Ns   abcr   )r   r   r   r   lenr   )r!   r   s     r)   test_default_digest_sizez#Blake2Test.test_default_digest_sizeY   sG    f--4466Vdn55555r+   c                    ddg}| j                             | j                  }|                    |d                                       |d                    |                                }| j                             | j                  }|                    |d         |d         z              |                     |                                |           d S )Ns   







































































































































































































s,  r   r   r   )r   r   r   r    r   r   )r!   piecesr"   r   s       r)   test_updatezBlake2Test.test_update]   s    /KOOO88	""6!9---KOOO88	VAY&'''V,,,,,r+   c                     | j                             | j                  }|                     t          |j        d           d S )Nr   r/   )r   r   r   r1   r2   r    )r!   r"   s     r)   test_update_negativezBlake2Test.test_update_negativef   s9    KOOO88)QXy99999r+   c                    | j                             | j                  }|                                }|                     |                                |           |                     t          |t          d                               d S )Nr   s   digest)r   r   r   r   r   
assertTrue
isinstancetype)r!   r"   r   s      r)   test_digestzBlake2Test.test_digestj   sn    KOOO88 	V,,,
64	??;;<<<<<r+   c                 L   d}| j                             d|d d                   }|                                }|                     t          |j        |dd                     | j                             d|                                          }| j                             d|d d         d          }|                     |                                |           |                    |dd                     |                     |                                |           d S )Ns   rrrrttt      )r   r   T)r   r   update_after_digest)r   r   r   r1   r2   r    r   )r!   msgr"   dig1dig2s        r)   test_update_after_digestz#Blake2Test.test_update_after_digests   s     KOO#bqb'O::xxzz)QXs122w777{3S99@@BB KOO#bqb'tOTTT*** 	
QRRT*****r+   c                    | j                             | j                  }|                                }|                                }|                     t          |          t          |                     |                     |                                |           |                     t          |t          d                               d S )Nr   r   )r   r   r   r   	hexdigestr   r   r   r?   r@   rA   )r!   macr   rL   s       r)   test_hex_digestzBlake2Test.test_hex_digest   s    koo$-o88MMOO	 	')*<*<===)444
9d8nn==>>>>>r+   c                     | j                             | j        d          }|                                }|                    |           t          |d          }|                     t          |j        |           d S )N   4r0      )r   r   r   r   verifyr   r1   r3   )r!   r"   rM   	wrong_macs       r)   test_verifyzBlake2Test.test_verify   sf    KOOTOBBhhjj	S#&&	*ah	:::::r+   c                     | j                             | j        d          }|                                }|                    |           |                     t          |j        d           d S )NrP   r0   4556)r   r   r   rL   	hexverifyr1   r3   )r!   r"   rM   s      r)   test_hexverifyzBlake2Test.test_hexverify   sZ    KOOTOBBkkmm	C*ak6:::::r+   c           	         d| j         z   dz   }| j        D ]}| j                            |          |                     j        |t          |dz            z              | j                            |d          |                     t          fd           d| j	        fD ]*}|| j        v r|                     t          fd           +d S )	Nz1.3.6.1.4.1.1722.12.2..r   r   s   secret)r   r   c                       j         S Noidr"   s   r)   <lambda>z%Blake2Test.test_oid.<locals>.<lambda>   	    ae r+   c                       j         S r\   r]   r_   s   r)   r`   z%Blake2Test.test_oid.<locals>.<lambda>   ra   r+   )
oid_variantdigest_bits_oidr   r   r   r^   strr1   AttributeErrorr   )r!   prefixr   r"   s      @r)   test_oidzBlake2Test.test_oid   s    )D,<<sB/ 	= 	=KK88AQUFS1A-B-B$BCCCKYGGAnmmmm<<<<t}- 	= 	=Kd222nmmmm<<<<	= 	=r+   c                    d}d}t          |          }t          |          }| j                            ||          }| j                            ||          }d|d d<   d|d d<   |                     |                                |                                           t          |          }| j                                        }| j                                        }|                    |           |                    |           d|d d<   |                     |                                |                                           d S )N   0000000000000000    r   r      r   )	bytearrayr   r   r   r   r    )r!   r   r   key_badata_bah1h2s          r)   test_bytearrayzBlake2Test.test_bytearray   s    3D//[__$C_00[__'v_66rr
biikk222 D//[__[__
		$
		'biikk22222r+   c                    d}d}d }d }||fD ]O} ||          } ||          }| j                             ||          }| j                             ||          }	|j        sd|d d<   d|d d<   |                     |                                |	                                            ||          }| j                                         }| j                                         }	|                    |           |	                    |           |j        sd|d d<   |                     |                                |	                                           Qd S )Nrj   rk   c                      t          |           S r\   )
memoryviewr6   s    r)   	get_mv_roz-Blake2Test.test_memoryview.<locals>.get_mv_ro   s    d###r+   c                 :    t          t          |                     S r\   )rv   rn   r6   s    r)   	get_mv_rwz-Blake2Test.test_memoryview.<locals>.get_mv_rw   s    ioo...r+   rl   rm   r   )r   r   readonlyr   r   r    )
r!   r   r   rw   ry   get_mvkey_mvdata_mvrq   rr   s
             r)   test_memoryviewzBlake2Test.test_memoryview   sr   	$ 	$ 	$	/ 	/ 	/ !), 	7 	7F VC[[FfTllGd44Bg6::B# %%$rr
RYY[["))++666 fTllG""B""BIIdOOOIIg# &%RYY[["))++66661	7 	7r+   N)__name__
__module____qualname__r*   r4   r8   r;   r=   rB   rJ   rN   rT   rX   rh   rs   r~    r+   r)   r   r   ,   s        ; ; ;,. . .*6 6 6- - -: : := = =+ + +"
? 
? 
?; ; ;; ; ;= = = 3 3 36#7 #7 #7 #7 #7r+   r   c                   "    e Zd ZeZdZdZdZdZdS )Blake2bTest   @   )   rD   i  r   1N)	r   r   r   r   r   r   r   rd   rc   r   r+   r)   r   r      '        FHI*OKKKr+   r   c                   "    e Zd ZeZdZdZdZdZdS )Blake2sTestrD       )   r      rD   2N)	r   r   r   r	   r   r   r   rd   rc   r   r+   r)   r   r      r   r+   r   c                        e Zd Zd Zd Zd ZdS )Blake2OfficialTestVectorc           	      0   d}g }t          |d          5 }t          |          D ]\  }}|                                dk    s|                    d          r3t	          j        d|z  |          }|st          d|z            |                    d          r0t          t          |                    d                              }nd}|dk    r|}	d	}|d	k    r|}
d
}|}d}|
                    |	|
|f           	 d d d            n# 1 swxY w Y   |S )Ninrt #z%s:	([0-9A-Fa-f]*)&Incorrect test vector format (line %d)r   r+   r   hash)open	enumeratestrip
startswithrematchr3   groupr   r   append)r!   test_vector_fileexpectedtest_vectorstest_vector_fdline_numberlineres	bin_value
input_datar   results               r)   _load_testsz$Blake2OfficialTestVector._load_tests
  s   "D)) 	C^%.~%>%> C C!T::<<2%%)=)=%h4x?FF 4$%M'2&3 4 4 4 99Q<< $ )'#))A,,*?*? @ @II #It##!*J$HH&&#C%HH&F#H ''S&(ABBBB/C	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C2 s   C)DDDc                    d| j         f}| j                                         dz   }d| j         z  | _        	 dd l}n:# t          $ r- t          j        d| j         z  t                     g | _        Y d S w xY wt          j
                            |j                  }t          j
                            t          j
        j        |g|R  |          }|                     |          | _        d S )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)   setUpzBlake2OfficialTestVector.setUp(  s    TY'	IOO%%3	%	1	,,,,, 	 	 	MCdiO&( ( ( "DFF		 7??#<#EFFbgl8&Hi&H&H&H)TT ,,^<<s   ; 3A21A2c                     | j         D ]d\  }}}| j                            || j                  }|                    |           |                     |                                |           ed S )N)r   r   )r   r   r   r   r    r   r   )r!   r   r   r   rM   s        r)   runTestz Blake2OfficialTestVector.runTest:  sq    )-): 	3 	3%Zf+//c/GGCJJz"""SZZ\\62222	3 	3r+   Nr   r   r   r   r   r   r   r+   r)   r   r     sA          <= = =$3 3 3 3 3r+   r   c                       e Zd ZeZdZdZdS )Blake2bOfficialTestVectorr   r   Nr   r   r   r   r   r   r   r   r+   r)   r   r   A          FDIIIr+   r   c                       e Zd ZeZdZdZdS )Blake2sOfficialTestVectorr	   r   Nr   r   r   r	   r   r   r   r   r+   r)   r   r   J  r   r+   r   c                        e Zd Zd Zd Zd ZdS )Blake2TestVector1c                    g }t          |d          5 }t          |          D ]\  }}|                                dk    s|                    d          r3t	          j        d|          }|st          d|z            |                    t          t          |
                    d                                         	 d d d            n# 1 swxY w Y   |S )Nr   r   r   zdigest: ([0-9A-Fa-f]*)r   r   )r   r   r   r   r   r   r3   r   r   r   r   )r!   r   r   r   r   r   r   s          r)   r   zBlake2TestVector1._load_testsU  s7   "D)) 		F^%.~%>%> F F!T::<<2%%)=)=%h7>> 4$%M'2&3 4 4 4 ##Igciill.C.C$D$DEEEEF		F 		F 		F 		F 		F 		F 		F 		F 		F 		F 		F 		F 		F 		F 		F s   B/CCCc                    d| j         f}d}d| j         z  | _        	 dd l}n:# t          $ r- t	          j        d| j         z  t                     g | _        Y d S w xY wt          j	        
                    |j                  }t          j	                            t          j	        j        |g|R  |          }|                     |          | _        d S )Nr   ztv1.txtr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s         r)   r   zBlake2TestVector1.setUpc      TY'		%	1	,,,,, 	 	 	MCdiO&( ( ( "DFF		 7??#<#EFFbgl8&Hi&H&H&H)TT ,,^<<   ! 3AAc                 >   | j         D ]}t          |          }d}t          d          D ]I}| j                            |          }|                    |           |                                |z   }J|                     |                                |           d S )Nr+   d   r   )r   r7   r   r   r   r    r   r   )r!   tvr   	next_data_r"   s         r)   r   zBlake2TestVector1.runTestt  s    # 	- 	-Br77LI3ZZ 3 3KOOO>>###HHJJ2		QXXZZ,,,,	- 	-r+   Nr   r   r+   r)   r   r   S  sA          = = ="	- 	- 	- 	- 	-r+   r   c                       e Zd ZeZdZdS )Blake2bTestVector1r   N)r   r   r   r   r   r   r   r+   r)   r   r             FDDDr+   r   c                       e Zd ZeZdZdS )Blake2sTestVector1r	   N)r   r   r   r	   r   r   r   r+   r)   r   r     r   r+   r   c                        e Zd Zd Zd Zd ZdS )Blake2TestVector2c           	         g }t          |d          5 }t          |          D ]\  }}|                                dk    s|                    d          r3t	          j        d|          }|st          d|z            t          |                    d                    }t          t          |                    d                              }|                    ||f           	 d d d            n# 1 swxY w Y   |S )Nr   r   r   z"digest\(([0-9]+)\): ([0-9A-Fa-f]*)r   r      )r   r   r   r   r   r   r3   intr   r   r   r   )	r!   r   r   r   r   r   r   key_sizer   s	            r)   r   zBlake2TestVector2._load_tests  sC   "D)) 
	8^%.~%>%> 	8 	8!T::<<2%%)=)=%hDdKK 4$%M'2&3 4 4 4syy||,,"7399Q<<#8#899##Xv$67777	8
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 
	8 s   CC55C9<C9c                    d| j         f}d}d| j         z  | _        	 dd l}n:# t          $ r- t	          j        d| j         z  t                     g | _        Y d S w xY wt          j	        
                    |j                  }t          j	                            t          j	        j        |g|R  |          }|                     |          | _        d S )Nr   ztv2.txtr   r   r   r   r   s         r)   r   zBlake2TestVector2.setUp  r   r   c                 8   | j         D ]\  }}d}t          d          D ]R}| j                            | j        d|z            }|                    |           |                                |z   }S|                     |                                |           d S )Nr+   r   r   r0   )r   r   r   r   r   r    r   r   )r!   r   r   r   r   r"   s         r)   r   zBlake2TestVector2.runTest  s     $ 1 	1 	1HfI3ZZ 3 3KOO(,x $ 9 9###HHJJ2		QXXZZ0000	1 	1r+   Nr   r   r+   r)   r   r     sA          = = ="	1 	1 	1 	1 	1r+   r   c                       e Zd ZeZdZdZdS )Blake2bTestVector2r   r   Nr   r   r+   r)   r   r     r   r+   r   c                       e Zd ZeZdZdZdS )Blake2sTestVector2r	   r   Nr   r   r+   r)   r   r     r   r+   r   c                    g }|t          t                    z  }|                    t                                 |                    t	                                 |                    t                                 |t          t                    z  }|                    t                                 |                    t                                 |                    t                                 |S r\   )
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                  B    t          j        t                                S r\   )unittest	TestSuiter   r   r+   r)   suiter     s    !)++...r+   r   )defaultTest)!r   r   r   r   binasciir   r   Cryptodome.Util.py3compatr   Cryptodome.Util.strxorr   Cryptodome.SelfTest.st_commonr   Cryptodome.Hashr   r	   TestCaser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   mainr   r+   r)   <module>r      s  > 
			 				   ' ' ' ' ' ' ' ' - - - - - - + + + + + + 9 9 9 9 9 9 , , , , , , , ,7 7 7 7 7" 7 7 7D
 
 
 
 
* 
 
 

 
 
 
 
* 
 
 
63 63 63 63 63x0 63 63 63r     8        8   *- *- *- *- *-) *- *- *-Z    *       *   +1 +1 +1 +1 +1) +1 +1 +1\    *       *          zOOO/ / /HMg&&&&&&	 r+   