
    ¿ig"                        d 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mZ  G d d	ej                  Z G d
 dej                  Z eddddd i          pg Ze eddddd i          pg z  Z ee          D ]G\  ZZej        dk    r ed          Zn eej                  Zeej        fdZ eedez  e           H eddddd i          pg Ze eddddd i          pg z  Z ee          D ]G\  ZZej        dk    r ed          Zn eej                  Zeej        fdZ eedez  e           H eddd dd! i          pg Ze edd"d#dd$ i          pg z  Z ee          D ]G\  ZZej        dk    r ed          Zn eej                  Zeej        fd%Z eed&ez  e           H edd'd(dd) i          pg Ze edd*d+dd, i          pg z  Z ee          D ]G\  ZZej        dk    r ed          Zn eej                  Zeej        fd-Z eed.ez  e           Hi fd/Ze d0k    rddlZd1 Z! ej"        d23           dS dS )4z*Self-test suite for Cryptodome.Hash.keccak    N)hexlify	unhexlify)load_test_vectors)list_test_cases)keccak)btobytesbchrc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

KeccakTestc                    dD ]g}t          j        |          }|                     |j        |dz             |                                }|                     |j        |dz             hdD ]a}t          j        |          }|                     |j        |           |                                }|                     |j        |           bd S )N)           digest_bits   )       0   @   digest_bytes)r   newassertEqualdigest_size)selfr   hobjhobj2r   s        `/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Hash/test_keccak.pytest_new_positivezKeccakTest.test_new_positive,   s    / 	B 	BK:+666DT-{a/?@@@HHJJEU.q0@AAAA, 	> 	>L:<888DT-|<<<HHJJEU.====	> 	>    c                 *   t          j        t          d          d                                          }t          j        d                              t          d                                                    }|                     ||           d S )N   r   )datar   r   )r   r   r   digestupdater   )r   digest1digest2s      r!   test_new_positive2zKeccakTest.test_new_positive2<   sv    *!F))"===DDFF*"---44QvYY??FFHH'*****r#   c                    |                      t          t          j                   t          j        d          }|                      t          t          j        dd           |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d	           d S )
Nr   r   r   )r   r   r   r      A   i  )assertRaises	TypeErrorr   r   
ValueErrorr   hs     r!   test_new_negativezKeccakTest.test_new_negativeB   s    	)VZ000J3''' 	)VZ+-*- 	 	/ 	/ 	/
 	*fjqAAA*fjqAAA*fjrBBB*fja@@@*fja@@@*fjcBBBBBr#   c                    t          d          dz  t          d          dz  g}t          j        d          }|                    |d                                       |d                    |                                }t          j        d          }|                    |d         |d         z              |                     |                                |           d S )	N
         i,  r   r   r   r-   )r
   r   r   r(   r'   r   )r   piecesr3   r'   s       r!   test_updatezKeccakTest.test_updateV   s    r((S.$r((S.1JB'''	""6!9---JB'''	VAY&'''V,,,,,r#   c                 r    t          j        d          }|                     t          |j        d           d S )Nr   r   string)r   r   r/   r0   r(   r2   s     r!   test_update_negativezKeccakTest.test_update_negative_   s4    JB''')QXy99999r#   c           
      "   t          j        d          }|                                }|                     |                                |           |                     t          |t          t          d                                         d S )Nr   r   r'   )r   r   r'   r   
assertTrue
isinstancetyper   )r   r3   r'   s      r!   test_digestzKeccakTest.test_digestc   sq    JB''' 	V,,,
64(+<+<==>>>>>r#   c                    t          j        d          }|                                }|                                }|                     t          |          t          |                     |                     |                                |           |                     t          |t          d                               d S )Nr   r   r'   )
r   r   r'   	hexdigestr   r   r	   r?   r@   rA   )r   macr'   rD   s       r!   test_hex_digestzKeccakTest.test_hex_digestl   s    jS)))MMOO	 	')*<*<===)444
9d8nn==>>>>>r#   c                 B   t          d          }t          j        d|d d                   }|                                }|                     t
          |j        |dd                     t          j        d|                                          }t          j        d|d d         d          }|                     |                                |           |                    |dd                     |                     |                                |           d S )Nrrrrtttr      r   r&   T)r   r&   update_after_digest)r   r   r   r'   r/   r0   r(   r   )r   msgr3   dig1dig2s        r!   test_update_after_digestz#KeccakTest.test_update_after_digestx   s    iLL J3S!W555xxzz)QXs122w777zc444;;== J3S!W$OOOT*** 	
QRRT*****r#   N)__name__
__module____qualname__r"   r+   r4   r:   r=   rB   rF   rO    r#   r!   r   r   *   s        > > > + + +C C C(- - -: : :? ? ?
? 
? 
?+ + + + +r#   r   c                       e Zd ZdS )KeccakVectorsN)rP   rQ   rR   rS   r#   r!   rU   rU      s        Dr#   rU   )Hashr   zShortMsgKAT_224.txtzShort Messages KAT 224lenc                      t          |           S Nintxs    r!   <lambda>r^          #a&& r#   zLongMsgKAT_224.txtzLong Messages KAT 224c                      t          |           S rY   rZ   r\   s    r!   r^   r^      r_   r#    c                     t          j        d|          }|                     |                                |           d S )Nr   rJ   r   r   r   r'   r   r&   resultr   s       r!   new_testrf      :    zc555/////r#   ztest_224_%dzShortMsgKAT_256.txtzShort Messages KAT 256c                      t          |           S rY   rZ   r\   s    r!   r^   r^          CFF r#   zLongMsgKAT_256.txtzLong Messages KAT 256c                      t          |           S rY   rZ   r\   s    r!   r^   r^      ri   r#   c                     t          j        d|          }|                     |                                |           d S )Nr   rJ   rc   rd   s       r!   rf   rf      rg   r#   ztest_256_%dzShortMsgKAT_384.txtzShort Messages KAT 384c                      t          |           S rY   rZ   r\   s    r!   r^   r^      r_   r#   zLongMsgKAT_384.txtzLong Messages KAT 384c                      t          |           S rY   rZ   r\   s    r!   r^   r^      r_   r#   c                     t          j        d|          }|                     |                                |           d S )Nr   rJ   rc   rd   s       r!   rf   rf      rg   r#   ztest_384_%dzShortMsgKAT_512.txtzShort Messages KAT 512c                      t          |           S rY   rZ   r\   s    r!   r^   r^      r_   r#   zLongMsgKAT_512.txtzLong Messages KAT 512c                      t          |           S rY   rZ   r\   s    r!   r^   r^      r_   r#   c                     t          j        d|          }|                     |                                |           d S )Nr   rJ   rc   rd   s       r!   rf   rf      rg   r#   ztest_512_%dc                 f    g }|t          t                    z  }|t          t                    z  }|S rY   )r   r   rU   )configtestss     r!   	get_testsru      s0    E	_Z(((E	_]+++ELr#   __main__c                  B    t          j        t                                S rY   )unittest	TestSuiteru   rS   r#   r!   r^   r^      s    H&y{{33 r#   suite)defaultTest)#__doc__rx   binasciir   r   Cryptodome.SelfTest.loaderr   Cryptodome.SelfTest.st_commonr   Cryptodome.Hashr   Cryptodome.Util.py3compatr   r	   r
   TestCaser   rU   test_vectors_224	enumerateidxtvrW   r&   rL   mdrf   setattrtest_vectors_256test_vectors_384test_vectors_512ru   rP   rz   mainrS   r#   r!   <module>r      s%  > 1 0  ' ' ' ' ' ' ' ' 8 8 8 8 8 8 9 9 9 9 9 9 " " " " " " 6 6 6 6 6 6 6 6 6 6]+ ]+ ]+ ]+ ]+" ]+ ]+ ]+@	 	 	 	 	H% 	 	 	 &%&8 5 8!&(8(8 9; ; A ?A 
 %%&8 4 7!&(8(8 9; ; A ?AA 
 y)** 
: 
:GC	v{{quuwrv  0 0 0 0 GM=3.9999 &%&8 5 8"'*:*: <? ? E CE 
 %%&8 4 7"'*:*: <? ? E CEE 
 y)** 
: 
:GC	v{{quuwrv  0 0 0 0 GM=3.9999
 &%&8 5 8!&(8(8 9; ; A ?A 
 %%&8 4 7!&(8(8 9; ; A ?AA 
 y)** 
: 
:GC	v{{quuwrv  0 0 0 0 GM=3.9999 &%&8 5 8!&(8(8 9; ; A ?A 
 %%&8 4 7!&(8(8 9; ; A ?AA 
 y)** 
: 
:GC	v{{quuwrv  0 0 0 0 GM=3.9999      zOOO33EHMg&&&&&& r#   