
    #|h2                        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
mZ ddlmZmZ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 eddddd i      xs g Z ee      D ]L  \  ZZej4                  dk(  r	 ed      Zn eej8                        Zeej:                  fdZ eedez  e       N  eddddd i      xs g Z  ee       D ]L  \  ZZej4                  dk(  r	 ed      Zn eej8                        Zeej:                  fdZ eedez  e       N i fdZ!e"dk(  rddlZd Z# ejH                  d !       yy)"z5Self-test suite for Crypto.Hash.SHAKE128 and SHAKE256    N)hexlify	unhexlify)load_test_vectors)list_test_cases)SHAKE128SHAKE256)bbchrbordtobytesc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	SHAKETestc                    | j                   j                         }| j                   j                  t        d            }| j                   j                         j                  t        d            }| j	                  |j                  d      |j                  d             |j                  d       | j                  |j                  d      |j                  d             y )N90data
   )shakenewr	   updateassertNotEqualreadassertEqual)selfxof1xof2xof3s       ^/var/www/html/test/engine/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_SHAKE.pytest_new_positivezSHAKETest.test_new_positive,   s    zz~~zz~~1T7~+zz~~&&qw/DIIbM499R=9		"2		"6    c                    t        d      dz  t        d      dz  g}| j                  j                         }|j                  |d         j                  |d          |j	                  d      }| j                  j                         }|j                  |d   |d   z          | j                  |j	                  d      |       y )Nr         i,  r      )r
   r   r   r   r   r   )r   pieceshdigests       r   test_updatezSHAKETest.test_update6   s    r(S.$r(S.1JJNN	""6!9-JJNN	VAY&'V,r    c                 z    | j                   j                         }| j                  t        |j                  d       y )Nstring)r   r   assertRaises	TypeErrorr   )r   r&   s     r   test_update_negativezSHAKETest.test_update_negative?   s(    JJNN)QXXy9r    c           
          | j                   j                         }|j                  d      }| j                  t	        |t        t        d                         | j                  t        |      d       y )NZ   r'   )	r   r   r   
assertTrue
isinstancetyper	   r   len)r   r&   r'   s      r   test_digestzSHAKETest.test_digestC   sQ    JJNN 	
64(+<=>Vb)r    c                     | j                   j                         }|j                  t        d             |j	                  d       | j                  t        |j                  t        d             y )Nrrrrr/   ttt)r   r   r   r	   r   r+   r,   )r   macs     r   test_update_after_readz SHAKETest.test_update_after_readK   sG    jjnn

1V9)SZZ5:r    c                     | j                   j                         }|j                  t        d             |j	                         }|j                  d      }|j                  d      }| j                  ||       y )Nr6   r/   )r   r   r   r	   copyr   r   )r   r8   mac2x1x2s        r   	test_copyzSHAKETest.test_copyQ   sW    jjnn

1V9xxzXXb\YYr]R r    N)	__name__
__module____qualname__r   r(   r-   r4   r9   r?    r    r   r   r   *   s     7-:*;!r    r   c                       e Zd ZeZy)SHAKE128TestN)r@   rA   rB   r   r   rC   r    r   rE   rE   Z       r    rE   c                       e Zd ZeZy)SHAKE256TestN)r@   rA   rB   r   r   rC   r    r   rH   rH   ^   rF   r    rH   c                       e Zd Zy)SHAKEVectorsN)r@   rA   rB   rC   r    r   rJ   rJ   b   s    r    rJ   )HashSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r3   c                     t        |       S Nintxs    r   <lambda>rS   i   
    3q6 r     c                     t        j                  |      }|j                  t        |            }| j	                  ||       y Nr   )r   r   r   r3   r   r   r   resulthobjr'   s        r   new_testr[   q   2    ||&3v;'(r    ztest_128_%dzShortMsgKAT_SHAKE256.txtzShort Messages KAT SHAKE256c                     t        |       S rN   rO   rQ   s    r   rS   rS   |   rT   r    c                     t        j                  |      }|j                  t        |            }| j	                  ||       y rW   )r   r   r   r3   r   rX   s        r   r[   r[      r\   r    ztest_256_%dc                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S rN   )r   rE   rH   rJ   )configtestss     r   	get_testsrb      s9    E	_\**E	_\**E	_\**ELr    __main__c                  <    t        j                  t                     S rN   )unittest	TestSuiterb   rC   r    r   rS   rS      s    H&&y{3 r    suite)defaultTest)%__doc__re   binasciir   r   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   Crypto.Util.py3compatr	   r
   r   r   TestCaser   rE   rH   rJ   test_vectors_128	enumerateidxtvr3   r   msgmdr[   setattrtest_vectors_256rb   r@   rg   mainrC   r    r   <module>ry      s  > <  ' 4 5 * 8 8-!!! -!`9 9 	8$$ 	 %%59<!&)9;> D BD 
 )* 9GC	vv{urvv  )
 L-#-x89 %%59<!&)9;> D BD 
 )* 9GC	vv{urvv  )
 L-#-x89   z3EHMMg& r    