o
    Mf                  	   @   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eD ]~\ZZZZedeedd dd dd d pzg ZeeD ]`\ZZeed!ddkred"ZneejZej e ejd# ksJ eed$ddkre!d%eed&ddkred"Z"neej#Z"ej$e ej#d# ksJ eej%e"efd'd(Z&e'ed)eef e& qqbi fd*d+Z(e)d,krddlZd-d Z*ej+d.d/ dS dS )0z7Self-test suite for Crypto.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    )Crypto.Hash.cSHAKE128r   assertEqual)selfr    r   a/var/www/html/humari/django-venv/lib/python3.10/site-packages/Crypto/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 )N90)data
    )customfoo)r   r   )cshakenewr   updateassertNotEqualreadr   )r   xof1xof2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$   
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 )Nrrrrr4   ttt)r    r!   r"   r   r$   r1   r2   )r   macr   r   r   test_update_after_readh   s   

z!cSHAKETest.test_update_after_readc                 C   sB   t dD ]}| jd}| jd}| |||| qd S )N@   s   TEST)ranger    r!   shaker   r$   )r   
digest_lenr%   r&   r   r   r   
test_shaken   s
   zcSHAKETest.test_shakeN)__name__
__module____qualname__r   r   r)   r/   r3   r9   r=   rB   r   r   r   r   r   &   s    	r   c                   @      e Zd ZeZeZdS )cSHAKE128TestN)rC   rD   rE   r   r    r   r@   r   r   r   r   rG   v       rG   c                   @   rF   )cSHAKE256TestN)rC   rD   rE   r   r    r   r@   r   r   r   r   rI   {   rH   rI   c                   @   s   e Zd ZdS )cSHAKEVectorsN)rC   rD   rE   r   r   r   r   rJ      s    rJ   zShortMsgSamples_cSHAKE128.txtzShort Message Samples cSHAKE128
128_cshakezShortMsgSamples_cSHAKE256.txtzShort Message Samples cSHAKE256
256_cshakezCustomMsgSamples_cSHAKE128.txtz Custom Message Samples cSHAKE128custom_128_cshakezCustomMsgSamples_cSHAKE256.txtz Custom Message Samples cSHAKE256custom_256_cshake)HashSHA3c                 C      t | S Nintxr   r   r   <lambda>       rW   c                 C   rQ   rR   rS   rU   r   r   r   rW      rX   c                 C   rQ   rR   rS   rU   r   r   r   rW      rX   )r8   nlenslenr8   r      rY   zUnsupported cSHAKE test vectorrZ   c                 C   s,   |j ||d}|t|}| || d S )N)r   r   )r!   r$   r8   r   )r   r   resultr   
test_classhobjr.   r   r   r   new_test   s   r_   z
test_%s_%dc                 C   s,   g }|t t7 }|t t7 }|t t7 }|S rR   )r   rG   rI   rJ   )configtestsr   r   r   	get_tests   s
   rb   __main__c                   C   s   t t S rR   )unittest	TestSuiterb   r   r   r   r   rW      s    suite)defaultTest),__doc__rd   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   r   r   Crypto.Util.py3compatr   r	   r
   TestCaser   rG   rI   rJ   vector_filesfiledescrtagr]   test_vectors	enumerateidxtvgetattrr   msgr8   
ValueErrorr   srZ   mdr_   setattrrb   rC   rf   mainr   r   r   r   <module>   sX   P







