
    i2                        S r SSKrSSKJrJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJrJrJrJr   " S S	\R"                  5      r " S
 S\5      r " S S\5      r " S S\R"                  5      r\" SSSSS 05      =(       d    / r\" \5       HO  u  rr\R4                  S:X  a	  \" S5      rO\" \R8                  5      r\\R:                  4S jr\" \S\-  \5        MQ     \" SSSSS 05      =(       d    / r \" \ 5       HO  u  rr\R4                  S:X  a	  \" S5      rO\" \R8                  5      r\\R:                  4S jr\" \S\-  \5        MQ     0 4S jr!\"S:X  a  SSKrS r#\RH                  " S S!9  gg)"z5Self-test suite for Crypto.Hash.SHAKE128 and SHAKE256    N)hexlify	unhexlify)load_test_vectors)list_test_cases)SHAKE128SHAKE256)bbchrbordtobytesc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
	SHAKETest*   c                    U R                   R                  5       nU R                   R                  [        S5      S9nU R                   R                  5       R                  [        S5      5      nU R	                  UR                  S5      UR                  S5      5        UR                  S5        U R                  UR                  S5      UR                  S5      5        g )N90data
   )shakenewr	   updateassertNotEqualreadassertEqual)selfxof1xof2xof3s       Z/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Hash/test_SHAKE.pytest_new_positiveSHAKETest.test_new_positive,   s    zz~~zz~~1T7~+zz~~&&qw/DIIbM499R=9		"2		"6    c                    [        S5      S-  [        S5      S-  /nU R                  R                  5       nUR                  US   5      R                  US   5        UR	                  S5      nU R                  R                  5       nUR                  US   US   -   5        U R                  UR	                  S5      U5        g )Nr         i,  r      )r
   r   r   r   r   r   )r   pieceshdigests       r   test_updateSHAKETest.test_update6   s    r(S.$r(S.1JJNN	""6!9-JJNN	VAY&'V,r"   c                 z    U R                   R                  5       nU R                  [        UR                  S5        g )Nstring)r   r   assertRaises	TypeErrorr   )r   r(   s     r   test_update_negativeSHAKETest.test_update_negative?   s(    JJNN)QXXy9r"   c           
          U R                   R                  5       nUR                  S5      nU R                  [	        U[        [        S5      5      5      5        U R                  [        U5      S5        g )NZ   r)   )	r   r   r   
assertTrue
isinstancetyper	   r   len)r   r(   r)   s      r   test_digestSHAKETest.test_digestC   sQ    JJNN 	
64(+<=>Vb)r"   c                     U R                   R                  5       nUR                  [        S5      5        UR	                  S5        U R                  [        UR                  [        S5      5        g )Nrrrrr3   ttt)r   r   r   r	   r   r.   r/   )r   macs     r   test_update_after_read SHAKETest.test_update_after_readK   sG    jjnn

1V9)SZZ5:r"   c                     U R                   R                  5       nUR                  [        S5      5        UR	                  5       nUR                  S5      nUR                  S5      nU R                  X45        g )Nr;   r3   )r   r   r   r	   copyr   r   )r   r=   mac2x1x2s        r   	test_copySHAKETest.test_copyQ   sU    jjnn

1V9xxzXXb\YYr] r"    N)__name__
__module____qualname____firstlineno__r    r*   r0   r8   r>   rE   __static_attributes__rG   r"   r   r   r   *   s     7-:*;!r"   r   c                       \ rS rSr\rSrg)SHAKE128Testr3   rG   N)rH   rI   rJ   rK   r   r   rL   rG   r"   r   rN   rN   Z       r"   rN   c                       \ rS rSr\rSrg)SHAKE256Test^   rG   N)rH   rI   rJ   rK   r   r   rL   rG   r"   r   rQ   rQ   ^   rO   r"   rQ   c                       \ rS rSrSrg)SHAKEVectorsb   rG   N)rH   rI   rJ   rK   rL   rG   r"   r   rT   rT   b   s    r"   rT   )HashSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r7   c                     [        U 5      $ Nintxs    r   <lambda>r^   i       3q6r"    c                     [         R                  " US9nUR                  [        U5      5      nU R	                  XB5        g Nr   )r   r   r   r7   r   r   r   resulthobjr)   s        r   new_testrf   q   0    ||&3v;'(r"   ztest_128_%dzShortMsgKAT_SHAKE256.txtzShort Messages KAT SHAKE256c                     [        U 5      $ rY   rZ   r\   s    r   r^   r^   |   r_   r"   c                     [         R                  " US9nUR                  [        U5      5      nU R	                  XB5        g rb   )r   r   r   r7   r   rc   s        r   rf   rf      rg   r"   ztest_256_%dc                 v    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ rY   )r   rN   rQ   rT   )configtestss     r   	get_testsrm      s9    E	_\**E	_\**E	_\**ELr"   __main__c                  >    [         R                  " [        5       5      $ rY   )unittest	TestSuiterm   rG   r"   r   r^   r^      s    H&&y{3r"   suite)defaultTest)%__doc__rp   binasciir   r   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   Crypto.Util.py3compatr	   r
   r   r   TestCaser   rN   rQ   rT   test_vectors_128	enumerateidxtvr7   r   msgmdrf   setattrtest_vectors_256rm   rH   rr   mainrG   r"   r   <module>r      s  > <  ' 4 5 * 8 8-!!! -!`9 9 	8$$ 	 %%59<!&)9;> D BD 
 )*GC	vv{urvv  )
 L-#-x8 + %%59<!&)9;> D BD 
 )*GC	vv{urvv  )
 L-#-x8 +   z3EMMg& r"   