o
    i2                     @   s  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	 d	ejZG d
d deZG dd deZG dd dejZedddddd ip\g ZeeD ]#\ZZejdkroedZneejZeejfddZeede e qaedddddd ipg Z ee D ]#\ZZejdkredZneejZeejfddZeede e qi fdd Z!e"d!krddlZd"d Z#ej$d#d$ dS dS )%z5Self-test suite for Crypto.Hash.SHAKE128 and SHAKE256    N)hexlify	unhexlify)load_test_vectors)list_test_cases)SHAKE128SHAKE256)bbchrbordtobytesc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )	SHAKETestc                 C   sn   | j  }| j jtdd}| j  td}| |d|d |d | |d|d d S )N90data
   )shakenewr   updateassertNotEqualreadassertEqual)selfxof1xof2xof3 r   S/home/ubuntu/.local/lib/python3.10/site-packages/Crypto/SelfTest/Hash/test_SHAKE.pytest_new_positive,   s   

zSHAKETest.test_new_positivec                 C   sz   t dd t dd g}| j }||d |d  |d}| j }||d |d   | |d| d S )Nr         i,  r      )r	   r   r   r   r   r   )r   pieceshdigestr   r   r   test_update6   s   


zSHAKETest.test_updatec                 C   s   | j  }| t|jd d S )Nstring)r   r   assertRaises	TypeErrorr   )r   r"   r   r   r   test_update_negative?   s   
zSHAKETest.test_update_negativec                 C   s@   | j  }|d}| t|ttd | t|d d S )NZ   r#   )	r   r   r   
assertTrue
isinstancetyper   r   len)r   r"   r#   r   r   r   test_digestC   s   

zSHAKETest.test_digestc                 C   s:   | j  }|td |d | t|jtd d S )Nrrrrr)   ttt)r   r   r   r   r   r&   r'   )r   macr   r   r   test_update_after_readK   s   

z SHAKETest.test_update_after_readc                 C   sD   | j  }|td | }|d}|d}| || d S )Nr/   r)   )r   r   r   r   copyr   r   )r   r1   mac2x1x2r   r   r   	test_copyQ   s   


zSHAKETest.test_copyN)	__name__
__module____qualname__r   r$   r(   r.   r2   r7   r   r   r   r   r   *   s    
	r   c                   @      e Zd ZeZdS )SHAKE128TestN)r8   r9   r:   r   r   r   r   r   r   r<   Z       r<   c                   @   r;   )SHAKE256TestN)r8   r9   r:   r   r   r   r   r   r   r>   ^   r=   r>   c                   @   s   e Zd ZdS )SHAKEVectorsN)r8   r9   r:   r   r   r   r   r?   b   s    r?   )HashSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r-   c                 C      t | S Nintxr   r   r   <lambda>i       rH    c                 C   *   t j|d}|t|}| || d S Nr   )r   r   r   r-   r   r   r   resulthobjr#   r   r   r   new_testq      rP   ztest_128_%dzShortMsgKAT_SHAKE256.txtzShort Messages KAT SHAKE256c                 C   rB   rC   rD   rF   r   r   r   rH   |   rI   c                 C   rK   rL   )r   r   r   r-   r   rM   r   r   r   rP      rQ   ztest_256_%dc                 C   s,   g }|t t7 }|t t7 }|t t7 }|S rC   )r   r<   r>   r?   )configtestsr   r   r   	get_tests   s
   rT   __main__c                   C   s   t t S rC   )unittest	TestSuiterT   r   r   r   r   rH      s    suite)defaultTest)%__doc__rV   binasciir   r   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   Crypto.Util.py3compatr   r	   r
   r   TestCaser   r<   r>   r?   test_vectors_128	enumerateidxtvr-   r   msgmdrP   setattrtest_vectors_256rT   r8   rX   mainr   r   r   r   <module>   sV   0







