o
    Þý°jÍ"  ã                   @   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
 ddlmZmZmZ G dd	„ d	ejƒZG d
d„ dejƒZedddddd„ iƒpHg Zeedddddd„ iƒpVg 7 ZeeƒD ]#\ZZejdkrje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ddddd„ iƒpšg 7 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 edd!d"dd#d„ iƒpÐg Zeedd$d%dd&d„ iƒpÞg 7 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äedd)d*dd+d„ iƒ�pg Zeedd,d-dd.d„ iƒ�p$g 7 ZeeƒD ]%\ZZejdk�r9edƒZneejƒZeejfd/d„Zeed0e eƒ �q*i fd1d2„Ze d3k�rkddlZd4d„ Z!ej"d5d6� dS dS )7z*Self-test suite for Cryptodome.Hash.keccaké    N)ÚhexlifyÚ	unhexlify)Úload_test_vectors)Úlist_test_cases)Úkeccak)ÚbÚtobytesÚbchrc                   @   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 )Ú
KeccakTestc                 C   s€   dD ]}t j|d�}|  |j|d ¡ | ¡ }|  |j|d ¡ qdD ]}t j|d�}|  |j|¡ | ¡ }|  |j|¡ q#d S )N)éà   é   é€  é   ©Údigest_bitsé   )é   é    é0   é@   ©Údigest_bytes)r   ÚnewÚassertEqualÚdigest_size)Úselfr   ÚhobjÚhobj2r   © r   ú—/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/SelfTest/Hash/test_keccak.pyÚtest_new_positive,   s   ûzKeccakTest.test_new_positivec                 C   s@   t jtdƒdd� ¡ }t jdd� tdƒ¡ ¡ }|  ||¡ d S )Nõ   Â�r   )Údatar   r   )r   r   r   ÚdigestÚupdater   )r   Údigest1Údigest2r   r   r   Útest_new_positive2<   s   zKeccakTest.test_new_positive2c                 C   sž   |   ttj¡ tjdd�}| j ttjddd� | j ttjdd� | j ttjdd� | j ttjdd� | j ttjdd� | j ttjdd� | j ttjd	d� d S )
Nr   r   r   )r   r   r   r   é   éA   i  )ÚassertRaisesÚ	TypeErrorr   r   Ú
ValueError©r   Úhr   r   r   Útest_new_negativeB   s   
þzKeccakTest.test_new_negativec                 C   sz   t dƒd t dƒd g}tjdd�}| |d ¡ |d ¡ | ¡ }tjdd�}| |d |d  ¡ |  | ¡ |¡ d S )	Né
   éÈ   é   i,  r   r   r   r(   )r	   r   r   r$   r#   r   )r   Úpiecesr.   r#   r   r   r   Útest_updateV   s   zKeccakTest.test_updatec                 C   s    t jdd�}|  t|jd¡ d S )Nr   r   Ústring)r   r   r*   r+   r$   r-   r   r   r   Útest_update_negative_   s   zKeccakTest.test_update_negativec                 C   s@   t jdd�}| ¡ }|  | ¡ |¡ |  t|ttdƒƒƒ¡ d S )Nr   r   r#   )r   r   r#   r   Ú
assertTrueÚ
isinstanceÚtyper   )r   r.   r#   r   r   r   Útest_digestc   s   zKeccakTest.test_digestc                 C   sX   t jdd�}| ¡ }| ¡ }|  t|ƒt|ƒ¡ |  | ¡ |¡ |  t|t	dƒƒ¡ d S )Nr   r   r#   )
r   r   r#   Ú	hexdigestr   r   r   r7   r8   r9   )r   Úmacr#   r;   r   r   r   Útest_hex_digestl   s   zKeccakTest.test_hex_digestc                 C   sž   t dƒ}tjd|d d… d�}| ¡ }|  t|j|dd … ¡ tjd|d� ¡ }tjd|d d… dd�}|  | ¡ |¡ | |dd … ¡ |  | ¡ |¡ d S )NÚrrrrtttr   é   ©r   r"   T)r   r"   Úupdate_after_digest)r   r   r   r#   r*   r+   r$   r   )r   Úmsgr.   Údig1Údig2r   r   r   Útest_update_after_digestx   s   z#KeccakTest.test_update_after_digestN)Ú__name__Ú
__module__Ú__qualname__r    r'   r/   r4   r6   r:   r=   rE   r   r   r   r   r
   *   s    		r
   c                   @   s   e Zd ZdS )ÚKeccakVectorsN)rF   rG   rH   r   r   r   r   rI   Š   s    rI   )ÚHashr   zShortMsgKAT_224.txtzShort Messages KAT 224Úlenc                 C   ó   t | ƒS ©N©Úint©Úxr   r   r   Ú<lambda>“   ó    rR   zLongMsgKAT_224.txtzLong Messages KAT 224c                 C   rL   rM   rN   rP   r   r   r   rR   ˜   rS   Ú c                 C   ó"   t jd|d�}|  | ¡ |¡ d S )Nr   r@   ©r   r   r   r#   ©r   r"   Úresultr   r   r   r   Únew_test    ó   rY   ztest_224_%dzShortMsgKAT_256.txtzShort Messages KAT 256c                 C   rL   rM   rN   rP   r   r   r   rR   «   rS   zLongMsgKAT_256.txtzLong Messages KAT 256c                 C   rL   rM   rN   rP   r   r   r   rR   °   rS   c                 C   rU   )Nr   r@   rV   rW   r   r   r   rY   ¸   rZ   ztest_256_%dzShortMsgKAT_384.txtzShort Messages KAT 384c                 C   rL   rM   rN   rP   r   r   r   rR   Ä   rS   zLongMsgKAT_384.txtzLong Messages KAT 384c                 C   rL   rM   rN   rP   r   r   r   rR   É   rS   c                 C   rU   )Nr   r@   rV   rW   r   r   r   rY   Ñ   rZ   ztest_384_%dzShortMsgKAT_512.txtzShort Messages KAT 512c                 C   rL   rM   rN   rP   r   r   r   rR   Ü   rS   zLongMsgKAT_512.txtzLong Messages KAT 512c                 C   rL   rM   rN   rP   r   r   r   rR   á   rS   c                 C   rU   )Nr   r@   rV   rW   r   r   r   rY   é   rZ   ztest_512_%dc                 C   s    g }|t tƒ7 }|t tƒ7 }|S rM   )r   r
   rI   )ÚconfigÚtestsr   r   r   Ú	get_testsð   s   r]   Ú__main__c                   C   s   t  tƒ ¡S rM   )ÚunittestÚ	TestSuiter]   r   r   r   r   rR   ù   s    Úsuite)ÚdefaultTest)#Ú__doc__r_   Úbinasciir   r   ÚCryptodome.SelfTest.loaderr   ÚCryptodome.SelfTest.st_commonr   ÚCryptodome.Hashr   ÚCryptodome.Util.py3compatr   r   r	   ÚTestCaser
   rI   Útest_vectors_224Ú	enumerateÚidxÚtvrK   r"   rB   ÚmdrY   ÚsetattrÚtest_vectors_256Útest_vectors_384Útest_vectors_512r]   rF   ra   Úmainr   r   r   r   Ú<module>   s¾   `
ýý
ýý



ýý
ýý



ýý
ýý



ýý
ýý


ý