U
    ÈZjk  ã                   @   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 ]F\ZZejdkrÞedƒZn
eejƒZeejfdd„Zeede eƒ qÂe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�r¬ddlZd"d„ Z#ej$d#d$� 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                   @   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   úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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 )NéZ   r   )	r   r   r   Z
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   r/   V   s   r/   c                   @   s   e Zd ZdS )ÚSHAKEVectorsN)r+   r,   r-   r   r   r   r   r0   Z   s   r0   )ZHashZSHA3zShortMsgKAT_SHAKE128.txtzShort Messages KAT SHAKE128r'   c                 C   s   t | ƒS ©N©Úint©Úxr   r   r   Ú<lambda>a   ó    r6   Ú 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 r1   r2   r4   r   r   r   r6   t   r7   c                 C   s*   t j|d�}| t|ƒ¡}|  ||¡ d S r9   )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 r1   )r   r.   r/   r0   )ÚconfigZtestsr   r   r   Ú	get_tests„   s
    r>   Ú__main__c                   C   s   t  tƒ ¡S r1   )ÚunittestZ	TestSuiter>   r   r   r   r   r6   Ž   r7   Úsuite)ZdefaultTest)%Ú__doc__r@   Úbinasciir   r   ZCrypto.SelfTest.loaderr   ZCrypto.SelfTest.st_commonr   ZCrypto.Hashr   r   ZCrypto.Util.py3compatr   r	   r
   r   ZTestCaser   r.   r/   r0   Ztest_vectors_128Ú	enumerateÚidxÚtvr'   r   ÚmsgÚmdr<   ÚsetattrZtest_vectors_256r>   r+   rA   Úmainr   r   r   r   Ú<module>   sR   (
ýý



ýý


