o
    Þý°jF  ã                   @   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ƒp‘g Z ee ƒD ]#\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–i fdd „Z!e"d!krÔddlZd"d„ Z#ej$d#d$� dS 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                   @   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   ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/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 )NéZ   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   ÚCryptodome.SelfTest.loaderr   ÚCryptodome.SelfTest.st_commonr   ÚCryptodome.Hashr   r   ÚCryptodome.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
ýý



ýý


ý