U
    Mf                     @   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pg ZeeD ]F\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 qedddddd ip$g Z ee D ]J\ZZejdkrLedZn
eejZeejfddZeede e q.i fdd Z!e"d!krddlZd"d Z#ej$d#d$ 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                   @   s4   e Z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 )NZ90data
   )shakenewr   updateZassertNotEqualreadassertEqual)selfZxof1Zxof2Zxof3 r   G/tmp/pip-unpacked-wheel-l_0d1exj/Cryptodome/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 )NZrrrrr$   Zttt)r   r   r   r   r   r!   r"   )r   macr   r   r   test_update_after_readK   s    

z SHAKETest.test_update_after_readN)__name__
__module____qualname__r   r   r#   r)   r+   r   r   r   r   r   *   s
   
	r   c                   @   s   e Zd ZeZdS )SHAKE128TestN)r,   r-   r.   r   r   r   r   r   r   r/   R   s   r/   c                   @   s   e Zd ZeZdS )SHAKE256TestN)r,   r-   r.   r   r   r   r   r   r   r0   V   s   r0   c                   @   s   e Zd ZdS )SHAKEVectorsN)r,   r-   r.   r   r   r   r   r1   Z   s   r1   )ZHashZSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r(   c                 C   s   t | S Nintxr   r   r   <lambda>a       r7    c                 C   s*   t j|d}|t|}| || d S Nr   )r   r   r   r(   r   r   r   resultZhobjr   r   r   r   new_testi   s    r=   ztest_128_%dzShortMsgKAT_SHAKE256.txtzShort Messages KAT SHAKE256c                 C   s   t | S r2   r3   r5   r   r   r   r7   t   r8   c                 C   s*   t j|d}|t|}| || d S r:   )r   r   r   r(   r   r;   r   r   r   r=   |   s    ztest_256_%dc                 C   s,   g }|t t7 }|t t7 }|t t7 }|S r2   )r   r/   r0   r1   )configtestsr   r   r   	get_tests   s
    r@   __main__c                   C   s   t t S r2   )unittestZ	TestSuiter@   r   r   r   r   r7      r8   suite)ZdefaultTest)%__doc__rB   binasciir   r   ZCryptodome.SelfTest.loaderr   ZCryptodome.SelfTest.st_commonr   ZCryptodome.Hashr   r   ZCryptodome.Util.py3compatr   r	   r
   r   ZTestCaser   r/   r0   r1   Ztest_vectors_128	enumerateidxtvr(   r   msgZmdr=   setattrZtest_vectors_256r@   r,   rC   mainr   r   r   r   <module>   sR   (







