
    ,h!                        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	m
Z
  G d de j                        Z G d d	e      Z G d
 de      Z G d de j                        Zi fdZedk(  rd Z e j&                  d       yy)    N)	unhexlifyhexlify)tobytes)list_test_cases)TupleHash128TupleHash256c                   N    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y)TupleHashTestc                 :     | j                   j                  |i |S N)	TupleHashnew)selfargskwargss      e/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_TupleHash.pyr   zTupleHashTest.new   s    !t~~!!42622    c                    | j                         }| j                  j                   |j                   fD ]r  }t        ddd      D ]*  } ||      }| j                  |j                  dz  |       , t        dd      D ]'  } ||      }| j                  |j                  |       ) t |j                         }| j                  |j                  | j
                         y )N@   i     digest_bits   digest_bytes)r   r   rangeassertEqualdigest_sizedefault_bytes)r   hnew_funcdbitshobjdbytess         r   test_new_positivezTupleHashTest.test_new_positive   s    HHJ**AEE1 	;Hr8Q/ >E2  !1!1A!5u=>  7+ ;V4  !1!16:;	; uuw))4+=+=>r   c                    | j                         }| j                  j                   |j                   fD ]  }| j                  t        || j                  | j
                         | j                  t        |d       | j                  t        || j
                  dz          | j                  t        || j
                  dz
         | j                  t        || j                  dz
          y )N)r   r   r   r      r   r      )r   r   assertRaises	TypeErrorminimum_bytesminimum_bits
ValueError)r   r    r!   s      r   test_new_negativezTupleHashTest.test_new_negative   s    HHJ**AEE1 
	BHi+/+=+=*.*;*;  = j(Cj(*.*;*;a*?  Aj(*.*;*;a*?  Aj(*.*<*<q*@  B
	Br   c                     | j                         j                         }| j                  t        |      | j                         y r   )r   digestr   lenr   )r   r0   s     r   test_default_digest_sizez&TupleHashTest.test_default_digest_size.   s0    ""$Vd&8&89r   c                    | j                         }|j                  d       |j                          | j                         }|j                  d       |j                  d       |j                  d       |j                         }| j                         }|j                  d       |j                  d       |j                         }| j                  ||       | j                         }|j                  dd       | j	                  ||j                                | j                         }d} |j                  |  | j	                  ||j                                y )Nr      STRING1   STRING2r4   r5   )r   updater0   assertNotEqualr   )r   r    mac1mac2ts        r   test_updatezTupleHashTest.test_update2   s    HHJ		
HHJ			xxzHHJ		xxzD$'HHJ	Z(qxxz*HHJ"!qxxz*r   c                     | j                         }| j                  t        |j                  d       | j                  t        |j                  d        | j                  t        |j                  d       y )Nstringr6   )r   r)   r*   r7   )r   r    s     r   test_update_negativez"TupleHashTest.test_update_negativeL   sP    HHJ)QXXy9)QXXt4)QXX/GHr   c                     | j                         }|j                         }| j                  |j                         |       | j                  t	        |t        d                   y )Ns   digest)r   r0   r   
assertTrue
isinstancetype)r   r    r0   s      r   test_digestzTupleHashTest.test_digestR   sG    HHJ 	V,
64	?;<r   c                     d}| j                         }|j                  |       |j                         }| j                  t        |j                  |       y )Ns   rrrrttt)r   r7   r0   r)   r*   )r   msgr    dig1s       r   test_update_after_digestz&TupleHashTest.test_update_after_digest[   s@     HHJ	xxz)QXXt4r   c                 4   | j                         }|j                         }|j                         }| j                  t	        |      t        |             | j                  |j                         |       | j                  t        |t        d                   y )Nr0   )	r   r0   	hexdigestr   r   r   rA   rB   rC   )r   macr0   rJ   s       r   test_hex_digestzTupleHashTest.test_hex_digestd   sk    hhjMMO	 	')*<=)4
9d8n=>r   c                    d}t        |      }| j                         }| j                         }|j                  |       |j                  |       d|d d | j                  |j	                         |j	                                y )N       r(   )	bytearrayr   r7   r   r0   )r   datadata_bah1h2s        r   test_bytearrayzTupleHashTest.test_bytearrayp   sf     D/XXZXXZ
		$
		'biik2r   c                 8   d}d }d }||fD ]  } ||      }| j                         }| j                         }|j                  |       |j                  |       |j                  sd|d d | j                  |j	                         |j	                                 y )NrN   c                     t        |       S r   )
memoryviewrQ   s    r   	get_mv_roz0TupleHashTest.test_memoryview.<locals>.get_mv_ro   s    d##r   c                 *    t        t        |             S r   )rX   rP   rY   s    r   	get_mv_rwz0TupleHashTest.test_memoryview.<locals>.get_mv_rw   s    io..r   rO   r(   )r   r7   readonlyr   r0   )r   rQ   rZ   r\   get_mvdata_mvrS   rT   s           r   test_memoryviewzTupleHashTest.test_memoryview   s    	$	/ !), 	7F TlGBBIIdOIIg##%RYY["))+6	7r   N)__name__
__module____qualname__r   r%   r.   r2   r<   r?   rD   rH   rL   rU   r`    r   r   r
   r
   
   s;    3? B:+4I=5
?37r   r
   c                        e Zd ZeZdZdZdZdZy)TupleHash128Testr   r      N)	ra   rb   rc   r   r   r+   r   r,   default_bitsrd   r   r   rf   rf          IMMLLr   rf   c                        e Zd ZeZdZdZdZdZy)TupleHash256Testr   r   rg   N)	ra   rb   rc   r   r   r+   r   r,   rh   rd   r   r   rk   rk      ri   r   rk   c            
       d    e Zd Zddddefddddefddd	d
efddddefddddefddddefgZd Zd Zy)NISTExampleTestVectors)00 01 0210 11 12 13 14 15 z^C5 D8 78 6C 1A FB 9B 82 11 1A B3 4B 65 B2 C0 048F A6 4E 6D 48 E2 63 26 4C E1 70 7D 3F FC 8E D1zKMAC128 Sample #1 NISTzMy Tuple Appz^75 CD B2 0F F4 DB 11 54 E8 41 D7 58 E2 41 60 C54B AE 86 EB 8C 13 E7 F5 F4 0E B3 55 88 E9 6D FBzKMAC128 Sample #2 NIST)rn   ro   z20 21 22 23 24 25 26 27 28z^E6 0F 20 2C 89 A2 63 1E DA 8D 4C 58 8C A5 FD 07F3 9E 51 51 99 8D EC CF 97 3A DB 38 04 BB 6E 84zKMAC128 Sample #3 NISTzCF B7 05 8C AC A5 E6 68 F8 1A 12 A2 0A 21 95 CE97 A9 25 F1 DB A3 E7 44 9A 56 F8 22 01 EC 60 7311 AC 26 96 B1 AB 5E A2 35 2D F1 42 3B DE 7B D4BB 78 C9 AE D1 A8 53 C7 86 72 F9 EB 23 BB E1 94zKMAC256 Sample #4 NISTz14 7C 21 91 D5 ED 7E FD 98 DB D9 6D 7A B5 A1 1692 57 6F 5F E2 A5 06 5F 3E 33 DE 6B BA 9F 3A A1C4 E9 A0 68 A2 89 C6 1C 95 AA B3 0A EE 1E 41 0B0B 60 7D E3 62 0E 24 A4 E3 BF 98 52 A1 D4 36 7EzKMAC256 Sample #5 NISTz45 00 0B E6 3F 9B 6B FD 89 F5 47 17 67 0F 69 A9BC 76 35 91 A4 F0 5C 50 D6 88 91 A7 44 BC C6 E7D6 D5 B5 E8 2C 01 8D A9 99 ED 35 B0 BB 49 C9 678E 52 6A BD 8E 85 C1 3E D2 54 02 1D B9 E7 90 CEzKMAC256 Sample #6 NISTc           
      t   g }| j                   D ]  }d gt        |      z  }g |d<   |d   D ]/  }|d   j                  t        |j	                  dd                   1 t        |d         |d<   t        |d   j	                  dd            |d<   |d   |d<   |d   |d<   |j                  |        || _         y )Nr    rp   r(            )	test_datar1   appendr   replacer   )r   tdtv_intv_outr>   s        r   setUpzNISTExampleTestVectors.setUp  s    ^^ 	EVc%j(FF1I( Eq	  6>>#r+B!CDE  a)F1I!%("2"23";<F1IaF1IaF1IIIf	 r   c                 x   | j                   D ]  \  }}}}}|j                  |t        |            }|j                  |t        |            }|D ]  }|j                  |         |j                  |  | j	                  |j                         ||       | j	                  |j                         ||        y )N)customr   )rF   )rv   r   r1   r7   r   r0   )	r   rQ   r~   r0   textmodulehd1hd2r>   s	            r   runTestzNISTExampleTestVectors.runTest  s    26.. 	=.D&&$**FV*EC**FV*EC  #

6"# CJJSZZ\6t<SZZ\6t<	=r   N)ra   rb   rc   r   r   rv   r|   r   rd   r   r   rm   rm      s    
 >$
	
 >$
	

 >$	
 > %	
 > %	

 > %	
{NI` =r   rm   c                     g }|t        t              z  }|t        t              z  }|j                  t	                      |S r   )r   rf   rk   rw   rm   )configtestss     r   	get_testsr   !  s<    E	_-..E	_-..E	LL')*Lr   __main__c                  <    t        j                  t                     S r   )unittest	TestSuiter   rd   r   r   suiter   ,  s    !!)+..r   r   )defaultTest)r   binasciir   r   Crypto.Util.py3compatr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   TestCaser
   rf   rk   rm   r   ra   r   mainrd   r   r   <module>r      s     ' ) 5 2K7H%% K7\} } q=X.. q=f   z/HMMg& r   