B
    _e              	   @   s  d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
 ddl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dddefdddefdddefdddefgZxeD ]\ZZZZedeedd dd dd d pg ZxeeD ]\ZZeed!ddkr*ed"Zn$eejZej e ejd# ksNt!eed$ddkrhe"d%eed&ddkred"Z#n$eej$Z#ej%e ej$d# kst!eej&e#efd'd(Z'e(ed)eef e' qW qW i fd*d+Z)e*d,krddlZd-d Z+ej,d.d/ dS )0z;Self-test suite for Cryptodome.Hash.cSHAKE128 and cSHAKE256    N)load_test_vectors)list_test_cases)	cSHAKE128	cSHAKE256SHAKE128SHAKE256)bbchrtobytesc               @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )
cSHAKETestc             C   s@   ddl m} | |dd | |dd | |dd d S )Nr   )_left_encodes       s      s    )Cryptodome.Hash.cSHAKE128r   assertEqual)selfr    r   c/var/www/html/afkarena_new/venv/lib/python3.7/site-packages/Cryptodome/SelfTest/Hash/test_cSHAKE.pytest_left_encode(   s    zcSHAKETest.test_left_encodec             C   s   ddl m} | |ddd | |ddd | |ddd	 | |d
dd | |ddd | |ddd | |ddd | |ddd d S )Nr   )_bytepad       s        As   A s   AAs   AAs   AAAs   AAA   s   AAAAs   AAAA  s   AAAAAs   AAAAA s   AAAAAAs   AAAAAAs   AAAAAAAs   AAAAAAA   )r   r   r   )r   r   r   r   r   test_bytepad.   s    zcSHAKETest.test_bytepadc             C   sJ  | j  }| j jtdd}| j  td}| |d|d |d | |d|d | j  }|d}| j jtdd}| j jtdd}| ||d | ||d | j jtdd}| j jtdtdd}| j jtddtd}| |d|d |d | |d|d d S )NZ90)data
    )customZfoo)r   r   )cshakenewr   updateZassertNotEqualreadr   )r   xof1xof2Zxof3refr   r   r   test_new_positive9   s$    




zcSHAKETest.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   )r   pieceshdigestr   r   r   test_updateS   s    


zcSHAKETest.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cSHAKETest.test_update_negativec             C   s@   | j  }|d}| t|ttd | t|d d S )NZ   r*   )	r   r   r!   Z
assertTrue
isinstancetyper   r   len)r   r)   r*   r   r   r   test_digest`   s    

zcSHAKETest.test_digestc             C   s:   | j  }|td |d | t|jtd d S )NZrrrrr0   Zttt)r   r   r    r   r!   r-   r.   )r   Zmacr   r   r   test_update_after_readh   s    

z!cSHAKETest.test_update_after_readc             C   sF   x@t dD ]4}| jd}| jd}| |||| q
W d S )N@   s   TEST)ranger   r   shaker   r!   )r   Z
digest_lenr"   r#   r   r   r   
test_shaken   s    zcSHAKETest.test_shakeN)__name__
__module____qualname__r   r   r%   r+   r/   r4   r5   r9   r   r   r   r   r   &   s   	r   c               @   s   e Zd ZeZeZdS )cSHAKE128TestN)r:   r;   r<   r   r   r   r8   r   r   r   r   r=   v   s   r=   c               @   s   e Zd ZeZeZdS )cSHAKE256TestN)r:   r;   r<   r   r   r   r8   r   r   r   r   r>   {   s   r>   c               @   s   e Zd ZdS )cSHAKEVectorsN)r:   r;   r<   r   r   r   r   r?      s   r?   zShortMsgSamples_cSHAKE128.txtzShort Message Samples cSHAKE128Z
128_cshakezShortMsgSamples_cSHAKE256.txtzShort Message Samples cSHAKE256Z
256_cshakezCustomMsgSamples_cSHAKE128.txtz Custom Message Samples cSHAKE128Zcustom_128_cshakezCustomMsgSamples_cSHAKE256.txtz Custom Message Samples cSHAKE256Zcustom_256_cshake)ZHashZSHA3c             C   s   t | S )N)int)xr   r   r   <lambda>   r   rB   c             C   s   t | S )N)r@   )rA   r   r   r   rB      r   c             C   s   t | S )N)r@   )rA   r   r   r   rB      r   )r3   nlenslenr3   r      rC   zUnsupported cSHAKE test vectorrD   c             C   s,   |j ||d}|t|}| || d S )N)r   r   )r   r!   r3   r   )r   r   resultr   
test_classZhobjr*   r   r   r   new_test   s    rH   z
test_%s_%dc             C   s,   g }|t t7 }|t t7 }|t t7 }|S )N)r   r=   r>   r?   )configtestsr   r   r   	get_tests   s
    rK   __main__c               C   s   t t S )N)unittestZ	TestSuiterK   r   r   r   r   rB      r   suite)ZdefaultTest)-__doc__rM   ZCryptodome.SelfTest.loaderr   ZCryptodome.SelfTest.st_commonr   ZCryptodome.Hashr   r   r   r   ZCryptodome.Util.py3compatr   r	   r
   ZTestCaser   r=   r>   r?   Zvector_filesfiledescrtagrG   Ztest_vectors	enumerateidxtvgetattrr   msgr3   AssertionError
ValueErrorr   srD   ZmdrH   setattrrK   r:   rN   mainr   r   r   r   <module>   sH   P







