
    ,h              
       J   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ej                        Z G d	 d
e      Z G d de      Z G 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      xs g Z ee      D ]  \  ZZ eed d      dk(  r	 ed!      Zn6 eej>                        Zej@                   e ej>                        d"z  k(  sJ  eed#d      dk7  r e!d$       eed%d      dk(  r	 ed!      Z"n6 eejF                        Z"ejH                   e ejF                        d"z  k(  sJ eejJ                  e"efd&Z& e'ed'eefz  e&         i fd(Z(e)d)k(  rddlZd* Z* ejV                  d+,       yy)-z7Self-test suite for Crypto.Hash.cSHAKE128 and cSHAKE256    N)load_test_vectors)list_test_cases)	cSHAKE128	cSHAKE256SHAKE128SHAKE256)bbchrtobytesc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)

cSHAKETestc                     ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       y )Nr   )_left_encodes       s      s    )Crypto.Hash.cSHAKE128r   assertEqual)selfr   s     b/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_cSHAKE.pytest_left_encodezcSHAKETest.test_left_encode(   sB    6a+6a+6c*O<    c                    ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |dd      d	       | j                   |d
d      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       y )Nr   )_bytepadr      s        As   A s   AAs   AAs   AAAs   AAA   s   AAAAs   AAAA  s   AAAAAs   AAAAA s   AAAAAAs   AAAAAAs   AAAAAAAs   AAAAAAA   )r   r   r   )r   r   s     r   test_bytepadzcSHAKETest.test_bytepad.   s    2#q)+>?$*,<=%+];&!,.HI'1-/FG(A.0DE)Q/1BC*a02PQr   c                 :   | j                   j                         }| j                   j                  t        d            }| j                   j                         j                  t        d            }| j	                  |j                  d      |j                  d             |j                  d       | j                  |j                  d      |j                  d             | j                   j                         }|j                  d      }| j                   j                  t        d            }| j                   j                  t        d            }| j                  ||j                  d             | j	                  ||j                  d             | j                   j                  t        d            }| j                   j                  t        d      t        d            }| j                   j                  t        d            j                  t        d            }| j	                  |j                  d      |j                  d             |j                  d       | j                  |j                  d      |j                  d             y )N90)data
    )customfoo)r"   r   )cshakenewr	   updateassertNotEqualreadr   )r   xof1xof2xof3refs        r   test_new_positivezcSHAKETest.test_new_positive9   s   {{ {{AdG,{{ ''$0DIIbM499R=9		"2		"6{{ iim{{ae,{{ah/diim,C2/{{ah/{{ahQtW={{ah/66qw?DIIbM499R=9		"2		"6r   c                    t        d      dz  t        d      dz  g}| j                  j                         }|j                  |d         j                  |d          |j	                  d      }| j                  j                         }|j                  |d   |d   z          | j                  |j	                  d      |       y )Nr          i,  r   r   )r
   r$   r%   r&   r(   r   )r   pieceshdigests       r   test_updatezcSHAKETest.test_updateS   s    r(S.$r(S.1KKOO	""6!9-KKOO	VAY&'V,r   c                 z    | j                   j                         }| j                  t        |j                  d       y )Nstring)r$   r%   assertRaises	TypeErrorr&   )r   r2   s     r   test_update_negativezcSHAKETest.test_update_negative\   s(    KKOO)QXXy9r   c           
          | j                   j                         }|j                  d      }| j                  t	        |t        t        d                         | j                  t        |      d       y )NZ   r3   )	r$   r%   r(   
assertTrue
isinstancetyper	   r   len)r   r2   r3   s      r   test_digestzcSHAKETest.test_digest`   sQ    KKOO 	
64(+<=>Vb)r   c                     | j                   j                         }|j                  t        d             |j	                  d       | j                  t        |j                  t        d             y )Nrrrrr;   ttt)r$   r%   r&   r	   r(   r7   r8   )r   macs     r   test_update_after_readz!cSHAKETest.test_update_after_readh   sG    kkoo

1V9)SZZ5:r   c                     t        d      D ]h  }| j                  j                  d      }| j                  j                  d      }| j	                  |j                  |      |j                  |             j y )N@   s   TEST)ranger$   r%   shaker   r(   )r   
digest_lenr)   r*   s       r   
test_shakezcSHAKETest.test_shaken   s]    ) 	KJ;;??7+D::>>'*DTYYz2DIIj4IJ	Kr   N)__name__
__module____qualname__r   r   r-   r4   r9   r@   rE   rK    r   r   r   r   &   s,    =	R74-:*;Kr   r   c                       e Zd ZeZeZy)cSHAKE128TestN)rL   rM   rN   r   r$   r   rI   rO   r   r   rQ   rQ   v       FEr   rQ   c                       e Zd ZeZeZy)cSHAKE256TestN)rL   rM   rN   r   r$   r   rI   rO   r   r   rT   rT   {   rR   r   rT   c                       e Zd Zy)cSHAKEVectorsN)rL   rM   rN   rO   r   r   rV   rV      s    r   rV   zShortMsgSamples_cSHAKE128.txtzShort Message Samples cSHAKE128
128_cshakezShortMsgSamples_cSHAKE256.txtzShort Message Samples cSHAKE256
256_cshakezCustomMsgSamples_cSHAKE128.txtz Custom Message Samples cSHAKE128custom_128_cshakezCustomMsgSamples_cSHAKE256.txtz Custom Message Samples cSHAKE256custom_256_cshake)HashSHA3c                     t        |       S Nintxs    r   <lambda>rc      s
    s1v r   c                     t        |       S r^   r_   ra   s    r   rc   rc      
    A r   c                     t        |       S r^   r_   ra   s    r   rc   rc      re   r   )r?   nlenslenr?   r!      rg   zUnsupported cSHAKE test vectorrh   c                     |j                  ||      }|j                  t        |            }| j                  ||       y )N)r   r"   )r%   r(   r?   r   )r   r   resultr"   
test_classhobjr3   s          r   new_testrn      s6    >>tF>;DYYs6{+FVV,r   z
test_%s_%dc                 v    g }|t        t              z  }|t        t              z  }|t        t              z  }|S r^   )r   rQ   rT   rV   )configtestss     r   	get_testsrr      s9    E	_]++E	_]++E	_]++ELr   __main__c                  <    t        j                  t                     S r^   )unittest	TestSuiterr   rO   r   r   rc   rc      s    H&&y{3 r   suite)defaultTest),__doc__ru   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   r   r   Crypto.Util.py3compatr	   r
   r   TestCaser   rQ   rT   rV   vector_filesfiledescrtagrl   test_vectors	enumerateidxtvgetattrr   msgr?   
ValueErrorr"   srh   mdrn   setattrrr   rL   rw   mainrO   r   r   <module>r      s  6 >  4 5 @ @ 2 2MK"" MK`J 
J 
	H%% 	 12SUaclm02SUaclm13UWjluv13UWjluv %1 D D%j$%5tU-=.>.>&@A G EG 
 \* DR2ua A%R5D266?D66S[]*+2vq!Q&=>>2vq!Q&rUFRTT]F77c"$$ik)* $RUU6j 	-
 	|sCj8(C'DD:   z3EHMMg& r   