U
    ÈZj¹"  ã                   @   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ƒp�g Zeedddddd„ iƒp¬g 7 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ddddd„ iƒ�p8g 7 ZeeƒD ]J\ZZejdk�rbedƒZn
eejƒZeejfdd„Zeed e eƒ �qDe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 ]J\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ƒ�pXg 7 ZeeƒD ]J\ZZejdk�r‚edƒZn
eejƒZeejfd/d„Zeed0e eƒ �qdi fd1d2„Ze d3k�râddlZd4d„ Z!ej"d5d6� dS )7z&Self-test suite for Crypto.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 ]4}t j|d�}|  |j|¡ | ¡ }|  |j|¡ qFd S )N)éà   é   é€  é   ©Údigest_bitsé   )é   é    é0   é@   ©Údigest_bytes)r   ÚnewÚassertEqualÚdigest_size)Úselfr   ÚhobjZhobj2r   © r   úc/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/Crypto/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   Zdigest1Z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   r4   r5   r6   )r   Úmacr"   r8   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 )NZrrrrtttr   é   ©r   r!   T)r   r!   Zupdate_after_digest)r   r   r   r"   r'   r(   r#   r   )r   Úmsgr+   Zdig1Zdig2r   r   r   Útest_update_after_digestx   s    z#KeccakTest.test_update_after_digestN)Ú__name__Ú
__module__Ú__qualname__r   r$   r,   r1   r3   r7   r:   r>   r   r   r   r   r
   *   s   		r
   c                   @   s   e Zd ZdS )ÚKeccakVectorsN)r?   r@   rA   r   r   r   r   rB   Š   s   rB   )ZHashr   zShortMsgKAT_224.txtzShort Messages KAT 224Úlenc                 C   s   t | ƒS ©N©Úint©Úxr   r   r   Ú<lambda>“   ó    rI   zLongMsgKAT_224.txtzLong Messages KAT 224c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   ˜   rJ   Ú c                 C   s"   t jd|d�}|  | ¡ |¡ d S )Nr   r<   ©r   r   r   r"   ©r   r!   Úresultr   r   r   r   Únew_test    s    rO   ztest_224_%dzShortMsgKAT_256.txtzShort Messages KAT 256c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   «   rJ   zLongMsgKAT_256.txtzLong Messages KAT 256c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   °   rJ   c                 C   s"   t jd|d�}|  | ¡ |¡ d S )Nr   r<   rL   rM   r   r   r   rO   ¸   s    ztest_256_%dzShortMsgKAT_384.txtzShort Messages KAT 384c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   Ä   rJ   zLongMsgKAT_384.txtzLong Messages KAT 384c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   É   rJ   c                 C   s"   t jd|d�}|  | ¡ |¡ d S )Nr   r<   rL   rM   r   r   r   rO   Ñ   s    ztest_384_%dzShortMsgKAT_512.txtzShort Messages KAT 512c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   Ü   rJ   zLongMsgKAT_512.txtzLong Messages KAT 512c                 C   s   t | ƒS rD   rE   rG   r   r   r   rI   á   rJ   c                 C   s"   t jd|d�}|  | ¡ |¡ d S )Nr   r<   rL   rM   r   r   r   rO   é   s    ztest_512_%dc                 C   s    g }|t tƒ7 }|t tƒ7 }|S rD   )r   r
   rB   )ÚconfigZtestsr   r   r   Ú	get_testsð   s    rQ   Ú__main__c                   C   s   t  tƒ ¡S rD   )ÚunittestZ	TestSuiterQ   r   r   r   r   rI   ù   rJ   Úsuite)ZdefaultTest)#Ú__doc__rS   Úbinasciir   r   ZCrypto.SelfTest.loaderr   ZCrypto.SelfTest.st_commonr   ZCrypto.Hashr   ZCrypto.Util.py3compatr   r   r	   ZTestCaser
   rB   Ztest_vectors_224Ú	enumerateÚidxÚtvrC   r!   r=   ÚmdrO   ÚsetattrZtest_vectors_256Ztest_vectors_384Ztest_vectors_512rQ   r?   rT   Úmainr   r   r   r   Ú<module>   sº   `
ýý
ýý



ýý
ýý


ýý
ýý


ýý
ýý


