o
    5h"                     @   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pg Zeedddddd ipg 7 ZeeD ]#\ZZejdkredZneejZeejfddZeed e e qedd!d"dd#d ipg Zeedd$d%dd&d ipg 7 ZeeD ]#\ZZejdkredZneejZeejfd'dZeed(e e qe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 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 ]}t j|d}| |j| | }| |j| q#d S )N)           digest_bits   )       0   @   digest_bytes)r   newassertEqualdigest_size)selfr   hobjhobj2r    r   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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   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   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   Crypto.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   `



















