
    9i              
       j   S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJrJrJr   " S S\R                  5      r " S	 S
\5      r " S S\5      r " S S\R                  5      rSSS\4SSS\4SSS\4SSS\4/r\ GH
  u  rrrr\" S\\S S S S.5      =(       d    / r\" \5       H  u  rr\" \S S5      S:X  a	  \" S!5      rO7\" \R>                  5      r\R@                  \ " \R>                  5      S"-  :X  d   e\" \S#S5      S:w  a  \!" S$5      e\" \S%S5      S:X  a	  \" S!5      r"O7\" \RF                  5      r"\RH                  \ " \RF                  5      S"-  :X  d   e\\RJ                  \"\4S& jr&\'" \S'\\4-  \&5        M     GM     0 4S( jr(\)S):X  a  SSKrS* r*\RV                  " S+S,9  gg)-z7Self-test suite for Crypto.Hash.cSHAKE128 and cSHAKE256    N)load_test_vectors)list_test_cases)	cSHAKE128	cSHAKE256SHAKE128SHAKE256)bbchrtobytesc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)
cSHAKETest&   c                     SSK Jn  U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nr   )_left_encodes       s      s    )Crypto.Hash.cSHAKE128r   assertEqual)selfr   s     `/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Hash/test_cSHAKE.pytest_left_encodecSHAKETest.test_left_encode(   sB    6a+6a+6c*O<    c                    SSK Jn  U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S	5        U R                  U" S
S5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        g )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_bytepadcSHAKETest.test_bytepad.   s    2#q)+>?$*,<=%+];&!,.HI'1-/FG(A.0DE)Q/1BC*a02PQr   c                    U R                   R                  5       nU R                   R                  [        S5      S9nU R                   R                  5       R                  [        S5      5      nU R	                  UR                  S5      UR                  S5      5        UR                  S5        U R                  UR                  S5      UR                  S5      5        U R                   R                  5       nUR                  S5      nU R                   R                  [        S5      S9nU R                   R                  [        S5      S9nU R                  XBR                  S5      5        U R	                  XCR                  S5      5        U R                   R                  [        S5      S9nU R                   R                  [        S5      [        S5      S9nU R                   R                  [        S5      S9R                  [        S5      5      nU R	                  UR                  S5      UR                  S5      5        UR                  S5        U R                  UR                  S5      UR                  S5      5        g )N90)data
    )customfoo)r%   r"   )cshakenewr	   updateassertNotEqualreadr   )r   xof1xof2xof3refs        r   test_new_positivecSHAKETest.test_new_positive9   s   {{ {{AdG,{{ ''$0DIIbM499R=9		"2		"6{{ iim{{ae,{{ah/iim,C2/{{ah/{{ahQtW={{ah/66qw?DIIbM499R=9		"2		"6r   c                    [        S5      S-  [        S5      S-  /nU R                  R                  5       nUR                  US   5      R                  US   5        UR	                  S5      nU R                  R                  5       nUR                  US   US   -   5        U R                  UR	                  S5      U5        g )Nr#         i,  r   r   )r
   r'   r(   r)   r+   r   )r   pieceshdigests       r   test_updatecSHAKETest.test_updateS   s    r(S.$r(S.1KKOO	""6!9-KKOO	VAY&'V,r   c                 z    U R                   R                  5       nU R                  [        UR                  S5        g )Nstring)r'   r(   assertRaises	TypeErrorr)   )r   r6   s     r   test_update_negativecSHAKETest.test_update_negative\   s(    KKOO)QXXy9r   c           
          U R                   R                  5       nUR                  S5      nU R                  [	        U[        [        S5      5      5      5        U R                  [        U5      S5        g )NZ   r7   )	r'   r(   r+   
assertTrue
isinstancetyper	   r   len)r   r6   r7   s      r   test_digestcSHAKETest.test_digest`   sQ    KKOO 	
64(+<=>Vb)r   c                     U R                   R                  5       nUR                  [        S5      5        UR	                  S5        U R                  [        UR                  [        S5      5        g )NrrrrrA   ttt)r'   r(   r)   r	   r+   r<   r=   )r   macs     r   test_update_after_read!cSHAKETest.test_update_after_readh   sG    kkoo

1V9)SZZ5:r   c                     [        S5       Hi  nU R                  R                  S5      nU R                  R                  S5      nU R	                  UR                  U5      UR                  U5      5        Mk     g )N@   s   TEST)ranger'   r(   shaker   r+   )r   
digest_lenr,   r-   s       r   
test_shakecSHAKETest.test_shaken   sV    )J;;??7+D::>>'*DTYYz2DIIj4IJ $r    N)__name__
__module____qualname____firstlineno__r   r   r0   r8   r>   rF   rL   rS   __static_attributes__rU   r   r   r   r   &   s,    =	R74-:*;Kr   r   c                       \ rS rSr\r\rSrg)cSHAKE128Testv   rU   N)	rV   rW   rX   rY   r   r'   r   rQ   rZ   rU   r   r   r\   r\   v       FEr   r\   c                       \ rS rSr\r\rSrg)cSHAKE256Test{   rU   N)	rV   rW   rX   rY   r   r'   r   rQ   rZ   rU   r   r   r`   r`   {   r^   r   r`   c                       \ rS rSrSrg)cSHAKEVectors   rU   N)rV   rW   rX   rY   rZ   rU   r   r   rc   rc      s    r   rc   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                     [        U 5      $ Nintxs    r   <lambda>rq      s    s1vr   c                     [        U 5      $ rl   rm   ro   s    r   rq   rq          Ar   c                     [        U 5      $ rl   rm   ro   s    r   rq   rq      rs   r   )rE   nlenslenrE   r$      ru   zUnsupported cSHAKE test vectorrv   c                 x    UR                  XS9nUR                  [        U5      5      nU R                  Xb5        g )N)r"   r%   )r(   r+   rE   r   )r   r"   resultr%   
test_classhobjr7   s          r   new_testr|      s2    >>t>;DYYs6{+FV,r   z
test_%s_%dc                 v    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU$ rl   )r   r\   r`   rc   )configtestss     r   	get_testsr      s9    E	_]++E	_]++E	_]++ELr   __main__c                  >    [         R                  " [        5       5      $ rl   )unittest	TestSuiter   rU   r   r   rq   rq      s    H&&y{3r   suite)defaultTest),__doc__r   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr   Crypto.Hashr   r   r   r   Crypto.Util.py3compatr	   r
   r   TestCaser   r\   r`   rc   vector_filesfiledescrtagrz   test_vectors	enumerateidxtvgetattrr"   msgrE   
ValueErrorr%   srv   mdr|   setattrr   rV   r   mainrU   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%j$%5tU-=.>.>&@A G EG 
 \*R2ua A%R5D266?D66S[]*+*2vq!Q&=>>2vq!Q&rUFRTT]F77c"$$ik)*) $RUU6j 	-
 	|sCj8(C' + %1:   z3EMMg& r   