o
    `qiˆ  ã                	   @   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s¡J ‚eed$dƒdkr­e!d%ƒ‚eed&dƒdkrºed"ƒZ"neej#ƒZ"ej$e ej#ƒd# ksËJ ‚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rûd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   úg/home/app/PaddleOCR-VL/.venv_paddleocr/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 )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 )NéZ   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 )NZrrrrr0   Zttt)r   r   r    r   r!   r-   r.   )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   Z
digest_lenr"   r#   r   r   r   Ú
test_shaken   s
   ýzcSHAKETest.test_shakeN)Ú__name__Ú
__module__Ú__qualname__r   r   r%   r+   r/   r5   r7   r;   r   r   r   r   r   &   s    	r   c                   @   ó   e Zd ZeZeZdS )ÚcSHAKE128TestN)r<   r=   r>   r   r   r   r:   r   r   r   r   r@   v   ó    r@   c                   @   r?   )ÚcSHAKE256TestN)r<   r=   r>   r   r   r   r:   r   r   r   r   rB   {   rA   rB   c                   @   s   e Zd ZdS )ÚcSHAKEVectorsN)r<   r=   r>   r   r   r   r   rC   €   s    rC   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   ó   t | ƒS ©N©Úint©Úxr   r   r   Ú<lambda>   ó    rJ   c                 C   rD   rE   rF   rH   r   r   r   rJ   Ž   rK   c                 C   rD   rE   rF   rH   r   r   r   rJ      rK   )r4   ÚnlenÚslenr4   r   é   rL   zUnsupported cSHAKE test vectorrM   c                 C   s,   |j ||d}| t|ƒ¡}|  ||¡ d S )N)r   r   )r   r!   r4   r   )r   r   Úresultr   Ú
test_classZhobjr*   r   r   r   Únew_testŸ   s   rQ   z
test_%s_%dc                 C   s,   g }|t tƒ7 }|t tƒ7 }|t tƒ7 }|S rE   )r   r@   rB   rC   )ÚconfigÚtestsr   r   r   Ú	get_tests§   s
   rT   Ú__main__c                   C   s   t  tƒ ¡S rE   )ÚunittestZ	TestSuiterT   r   r   r   r   rJ   ±   s    Úsuite)ZdefaultTest),Ú__doc__rV   ZCrypto.SelfTest.loaderr   ZCrypto.SelfTest.st_commonr   ZCrypto.Hashr   r   r   r   ZCrypto.Util.py3compatr   r	   r
   ZTestCaser   r@   rB   rC   Zvector_filesÚfileÚdescrÚtagrP   Ztest_vectorsÚ	enumerateÚidxÚtvÚgetattrr   Úmsgr4   Ú
ValueErrorr   ÚsrM   ÚmdrQ   ÚsetattrrT   r<   rW   Úmainr   r   r   r   Ú<module>   sX   P



ýþÿý



íý