
    1xhF                        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          pg 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 ]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"dk    rddlZd Z# ej$        d !           dS dS )"z9Self-test suite for Cryptodome.Hash.SHAKE128 and SHAKE256    N)hexlify	unhexlify)load_test_vectors)list_test_cases)SHAKE128SHAKE256)bbchrbordtobytesc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	SHAKETestc                    | j                                         }| j                             t          d                    }| j                                                             t          d                    }|                     |                    d          |                    d                     |                    d           |                     |                    d          |                    d                     d S )N90data
   )shakenewr	   updateassertNotEqualreadassertEqual)selfxof1xof2xof3s       _/home/visionen/capture/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Hash/test_SHAKE.pytest_new_positivezSHAKETest.test_new_positive,   s    z~~z~~1T77~++z~~&&qww//DIIbMM499R==999		"2		"66666    c                    t          d          dz  t          d          dz  g}| j                                        }|                    |d                                       |d                    |                    d          }| j                                        }|                    |d         |d         z              |                     |                    d          |           d S )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JNN	""6!9---JNN	VAY&'''V,,,,,r    c                 z    | j                                         }|                     t          |j        d           d S )Nstring)r   r   assertRaises	TypeErrorr   )r   r&   s     r   test_update_negativezSHAKETest.test_update_negative?   s3    JNN)QXy99999r    c           
      "   | j                                         }|                    d          }|                     t	          |t          t          d                                         |                     t          |          d           d S )NZ   r'   )	r   r   r   
assertTrue
isinstancetyper	   r   len)r   r&   r'   s      r   test_digestzSHAKETest.test_digestC   sp    JNN 	
64(+<+<==>>>Vb)))))r    c                    | j                                         }|                    t          d                     |                    d           |                     t          |j        t          d                     d S )Nrrrrr/   ttt)r   r   r   r	   r   r+   r,   )r   macs     r   test_update_after_readz SHAKETest.test_update_after_readK   s`    jnn

1V99)SZ5:::::r    c                 $   | j                                         }|                    t          d                     |                                }|                    d          }|                    d          }|                     ||           d S )Nr6   r/   )r   r   r   r	   copyr   r   )r   r8   mac2x1x2s        r   	test_copyzSHAKETest.test_copyQ   sr    jnn

1V99xxzzXXb\\YYr]]R     r    N)	__name__
__module____qualname__r   r(   r-   r4   r9   r?    r    r   r   r   *   sn        7 7 7- - -: : :* * *; ; ;! ! ! ! !r    r   c                       e Zd ZeZdS )SHAKE128TestN)r@   rA   rB   r   r   rC   r    r   rE   rE   Z           r    rE   c                       e Zd ZeZdS )SHAKE256TestN)r@   rA   rB   r   r   rC   r    r   rH   rH   ^   rF   r    rH   c                       e Zd ZdS )SHAKEVectorsN)r@   rA   rB   rC   r    r   rJ   rJ   b   s        Dr    rJ   )HashSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r3   c                      t          |           S Nintxs    r   <lambda>rS   i       3q66 r     c                     t          j        |          }|                    t          |                    }|                     ||           d S Nr   )r   r   r   r3   r   r   r   resulthobjr'   s        r   new_testr[   q   G    |&&&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        |          }|                    t          |                    }|                     ||           d S rW   )r   r   r   r3   r   rX   s        r   r[   r[      r\   r    ztest_256_%dc                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S rN   )r   rE   rH   rJ   )configtestss     r   	get_testsrb      sB    E	_\***E	_\***E	_\***ELr    __main__c                  B    t          j        t                                S rN   )unittest	TestSuiterb   rC   r    r   rS   rS      s    H&y{{33 r    suite)defaultTest)%__doc__re   binasciir   r   Cryptodome.SelfTest.loaderr   Cryptodome.SelfTest.st_commonr   Cryptodome.Hashr   r   Cryptodome.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  > @ ?  ' ' ' ' ' ' ' ' 8 8 8 8 8 8 9 9 9 9 9 9 . . . . . . . . < < < < < < < < < < < <-! -! -! -! -!! -! -! -!`    9       9   	 	 	 	 	8$ 	 	 	 %$%59<!&)9)9;> > D BD 
 y)** 9 9GC	v{{quuwrv  ) ) ) )
 GL-#-x8888 %$%59<!&)9)9;> > D BD 
 y)** 9 9GC	v{{quuwrv  ) ) ) )
 GL-#-x8888      zOOO33EHMg&&&&&& r    