
    ,h?                     
   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"#       yy)$    N)	unhexlifyhexlify)tobytes)strxor_c)list_test_cases)BLAKE2bBLAKE2sc                   Z    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y)
Blake2Testc                    | j                   j                  | j                        }| j                   j                  |j                  fD ]  }t        d| j                  dz   d      D ]*  } ||      }| j	                  |j
                  |dz         , t        d| j                  dz         D ]'  } ||      }| j	                  |j
                  |       )  |d| j                        j                         } || j                        j                  d      j                         }| j	                  ||        |dd| j                  	       	 |j                         }| j	                  |j
                  | j                         y )
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           b/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_BLAKE2.pytest_new_positivezBlake2Test.test_new_positive.   sF   KKOOO6. 	GHq$--!"3Q7 ?E2  !1!15A:>?  4>>A#56 ;V4  !1!16:; G$..IPPRGDNN;BB7KRRTGWg.$Dt~~F	G  uuw))4>>:    c                    | j                   j                  | j                        }| j                   j                  |j                  fD ]  }| j                  t        || j
                  | j                         | j                  t        |d       | j                  t        || j
                  dz          | j                  t        |d       | j                  t        |d       | j                  t        || j                  dz          | j                  t        || j
                  d	       | j                  t        || j
                  d
        y )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   s*   KKOOO6. 	.Hi+/>>*.--  9 j(Cj(+/>>A+=  ?j(Bj(Cj(*.--!*;  =i+/>>"+  - i+/>>#,  .	.r+   c                     | j                   j                  d      j                         }| j                  t	        |      | j
                         y )Ns   abcr   )r   r   r   r   lenr   )r!   r   s     r)   test_default_digest_sizez#Blake2Test.test_default_digest_sizeY   s7    f-446Vdnn5r+   c                    ddg}| j                   j                  | j                        }|j                  |d         j                  |d          |j	                         }| j                   j                  | j                        }|j                  |d   |d   z          | j                  |j	                         |       y )Ns   







































































































































































































s,  r   r   r   )r   r   r   r    r   r   )r!   piecesr"   r   s       r)   test_updatezBlake2Test.test_update]   s    /KKOOO8	""6!9-KKOOO8	VAY&'V,r+   c                     | j                   j                  | j                        }| j                  t        |j
                  d       y )Nr   r/   )r   r   r   r1   r2   r    )r!   r"   s     r)   test_update_negativezBlake2Test.test_update_negativef   s0    KKOOO8)QXXy9r+   c                     | j                   j                  | j                        }|j                         }| j	                  |j                         |       | j                  t        |t        d                   y )Nr   s   digest)r   r   r   r   r   
assertTrue
isinstancetype)r!   r"   r   s      r)   test_digestzBlake2Test.test_digestj   sT    KKOOO8 	V,
64	?;<r+   c                    d}| j                   j                  d|d d       }|j                         }| j                  t        |j
                  |dd         | j                   j                  d|      j                         }| j                   j                  d|d d d      }| j                  |j                         |       |j                  |dd         | j                  |j                         |       y )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     KKOO#bq'O:xxz)QXXs12w7{{3S9@@B KKOO#bq'tOTT* 	
QRT*r+   c                 `   | j                   j                  | j                        }|j                         }|j	                         }| j                  t        |      t        |             | j                  |j	                         |       | j                  t        |t        d                   y )Nr   r   )r   r   r   r   	hexdigestr   r   r   r?   r@   rA   )r!   macr   rL   s       r)   test_hex_digestzBlake2Test.test_hex_digest   sx    kkoo$--o8MMO	 	')*<=)4
9d8n=>r+   c                     | j                   j                  | j                  d      }|j                         }|j	                  |       t        |d      }| j                  t        |j                  |       y )N   4r0      )r   r   r   r   verifyr   r1   r3   )r!   r"   rM   	wrong_macs       r)   test_verifyzBlake2Test.test_verify   sT    KKOOTOBhhj	S#&	*ahh	:r+   c                     | j                   j                  | j                  d      }|j                         }|j	                  |       | j                  t        |j                  d       y )NrP   r0   4556)r   r   r   rL   	hexverifyr1   r3   )r!   r"   rM   s      r)   test_hexverifyzBlake2Test.test_hexverify   sI    KKOOTOBkkm	C*akk6:r+   c           	         d| j                   z   dz   }| j                  D ]  }| j                  j                  |      | j	                  j
                  |t        |dz        z          | j                  j                  |d      | j                  t        fd        d| j                  fD ]*  }|| j                  v r| j                  t        fd       , y )	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>       aee 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8AQUUFS1A-B$BCKYGAnm<	= t}}- 	=Kd222nm<	=r+   c                 D   d}d}t        |      }t        |      }| j                  j                  ||      }| j                  j                  ||      }d|d d d|d d | j                  |j	                         |j	                                t        |      }| j                  j                         }| j                  j                         }|j                  |       |j                  |       d|d d | j                  |j	                         |j	                                y )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[[__'v_6r
biik2 D/[[__[[__
		$
		'biik2r+   c                    d}d}d }d }||fD ].  } ||      } ||      }| j                   j                  ||      }| j                   j                  ||      }	|j                  s
d|d d d|d d | j                  |j	                         |	j	                                 ||      }| j                   j                         }| j                   j                         }	|j                  |       |	j                  |       |j                  sd|d d | j                  |j	                         |	j	                                1 y )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o..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   s   	$	/ !), 	7F C[FTlGd4Bg6:B##%$r
RYY["))+6 TlG"B"BIIdOIIg##%RYY["))+61	7r+   N)__name__
__module____qualname__r*   r4   r8   r;   r=   rB   rJ   rN   rT   rX   rh   rs   r~    r+   r)   r   r   ,   sC    ;,.*6-:=+"
?;;= 36#7r+   r   c                        e Zd ZeZdZdZdZdZy)Blake2bTest   @   )   rD   i  r   1N)	r   r   r   r   r   r   r   rd   rc   r   r+   r)   r   r          FHI*OKr+   r   c                        e Zd ZeZdZdZdZdZy)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y)Blake2OfficialTestVectorc           	         d}g }t        |d      5 }t        |      D ]  \  }}|j                         dk(  s|j                  d      r+t	        j
                  d|z  |      }|st        d|z        |j                  d      r$t        t        |j                  d                  }nd}|dk(  r|}	d	}|d	k(  r|}
d
}|}d}|j                  	
|f        	 d d d        |S # 1 sw Y   |S xY w)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!T::<2%)=hh4x?F$%M'2&3 4 4 99Q< )'#))A,*? @I #It#!*J$H&#C%H&F#H ''S&(AB/C	C2 3	C2 s   CC!!C+c                     d| j                   f}| j                   j                         dz   }d| j                   z  | _        	 dd l}t        j                  j                  |j                        }t        j                  j                  t        j                  j                  |g| |      }| j                  |      | _        y # t        $ r1 t        j                  d| j                   z  t               g | _        Y y w xY w)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    TYY'	IIOO%3	%		1	, 77??#<#E#EFbggll8&Hi&H)T ,,^<  	MMCdiiO&( "D		s   C 7C=<C=c                     | j                   D ]^  \  }}}| j                  j                  || j                        }|j	                  |       | j                  |j                         |       ` y )N)r   r   )r   r   r   r   r    r   r   )r!   r   r   r   rM   s        r)   runTestz Blake2OfficialTestVector.runTest:  sZ    )-):): 	3%Zf++//c/GCJJz"SZZ\62	3r+   Nr   r   r   r   r   r   r   r+   r)   r   r     s    <=$3r+   r   c                       e Zd ZeZdZdZy)Blake2bOfficialTestVectorr   r   Nr   r   r   r   r   r   r   r   r+   r)   r   r   A      FDIr+   r   c                       e Zd ZeZdZdZy)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y)Blake2TestVector1c                 p   g }t        |d      5 }t        |      D ]  \  }}|j                         dk(  s|j                  d      r+t	        j
                  d|      }|st        d|z        |j                  t        t        |j                  d                          	 d d d        |S # 1 sw Y   |S xY w)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  s    "D) 		F^%.~%> F!T::<2%)=hh7>$%M'2&3 4 4 ##Igciil.C$DEF		F 		F s   BB++B5c                    d| j                   f}d}d| j                   z  | _        	 dd l}t        j                  j                  |j                        }t        j                  j                  t        j                  j                  |g| |      }| j                  |      | _        y # t        $ r1 t	        j
                  d| j                   z  t               g | _        Y y w xY w)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      TYY'		%		1	, 77??#<#E#EFbggll8&Hi&H)T ,,^<  	MMCdiiO&( "D		   B( (7C"!C"c                     | j                   D ]  }t        |      }d}t        d      D ]B  }| j                  j	                  |      }|j                  |       |j                         |z   }D | j                  j                         |        y )Nr+   d   r   )r   r7   r   r   r   r    r   r   )r!   tvr   	next_data_r"   s         r)   r   zBlake2TestVector1.runTestt  s    ## 	-Br7LI3Z 3KKOOO>#HHJ2	3 QXXZ,	-r+   Nr   r   r+   r)   r   r   S  s    ="	-r+   r   c                       e Zd ZeZdZy)Blake2bTestVector1r   N)r   r   r   r   r   r   r   r+   r)   r   r         FDr+   r   c                       e Zd ZeZdZy)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y)Blake2TestVector2c           	         g }t        |d      5 }t        |      D ]  \  }}|j                         dk(  s|j                  d      r+t	        j
                  d|      }|st        d|z        t        |j                  d            }t        t        |j                  d                  }|j                  ||f        	 d d d        |S # 1 sw Y   |S xY w)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  s    "D) 
	8^%.~%> 	8!T::<2%)=hhDdK$%M'2&3 4 4syy|,"7399Q<#89##Xv$67	8
	8 
	8 s   B/C		Cc                    d| j                   f}d}d| j                   z  | _        	 dd l}t        j                  j                  |j                        }t        j                  j                  t        j                  j                  |g| |      }| j                  |      | _        y # t        $ r1 t	        j
                  d| j                   z  t               g | _        Y y w xY w)Nr   ztv2.txtr   r   r   r   r   s         r)   r   zBlake2TestVector2.setUp  r   r   c                 ,   | j                   D ]  \  }}d}t        d      D ]P  }| j                  j                  | j                  d|z        }|j                  |       |j                         |z   }R | j                  j                         |        y )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3Z 3KKOO(,x $ 9#HHJ2		3
 QXXZ0	1r+   Nr   r   r+   r)   r   r     s    ="	1r+   r   c                       e Zd ZeZdZdZy)Blake2bTestVector2r   r   Nr   r   r+   r)   r   r     r   r+   r   c                       e Zd ZeZdZdZy)Blake2sTestVector2r	   r   Nr   r   r+   r)   r   r     r   r+   r   c                 ~   g }|t        t              z  }|j                  t                      |j                  t	                      |j                  t                      |t        t              z  }|j                  t                      |j                  t                      |j                  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                  <    t        j                  t                     S r\   )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/HMMg&	 r+   