
    ¿ig              
       Z   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          pg Z ee          D ]\  ZZ eed d          dk    r ed!          Zn. eej                  Zej          e ej                  d"z  k    sJ  eed#d          dk    r e!d$           eed%d          dk    r ed!          Z"n. eej#                  Z"ej$         e ej#                  d"z  k    sJ eej%        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j+        d+,           dS dS )-z;Self-test suite for Cryptodome.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
d	S )

cSHAKETestc                     ddl m} |                      |d          d           |                      |d          d           |                      |d          d           d S )Nr   )_left_encodes       s      s    )Cryptodome.Hash.cSHAKE128r   assertEqual)selfr   s     `/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Hash/test_cSHAKE.pytest_left_encodezcSHAKETest.test_left_encode(   sv    ::::::a+666a+666c**O<<<<<    c                    ddl m} |                      |dd          d           |                      |dd          d           |                      |dd          d	           |                      |d
d          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           |                      |dd          d           d S )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.   s1   666666#q))+>???$**,<===%++];;;&!,,.HIII'1--/FGGG(A..0DEEE)Q//1BCCC*a002PQQQQQr   c                    | j                                         }| j                             t          d                    }| j                                                             t          d                    }|                     |                    d          |                    d                     |                    d           |                     |                    d          |                    d                     | j                                         }|                    d          }| j                             t          d                    }| j                             t          d                    }|                     ||                    d                     |                     ||                    d                     | j                             t          d                    }| j                             t          d          t          d                    }| j                             t          d                                        t          d                    }|                     |                    d          |                    d                     |                    d           |                     |                    d          |                    d                     d S )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"   {  {AdGG,,{  ''$00DIIbMM499R==999		"2		"666{  iimm{aee,,{ahh//diimm,,,C2///{ahh//{ahhQtWW=={ahh//66qww??DIIbMM499R==999		"2		"66666r   c                    t          d          dz  t          d          dz  g}| j                                        }|                    |d                                       |d                    |                    d          }| j                                        }|                    |d         |d         z              |                     |                    d          |           d S )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KOO	""6!9---KOO	VAY&'''V,,,,,r   c                 z    | j                                         }|                     t          |j        d           d S )Nstring)r$   r%   assertRaises	TypeErrorr&   )r   r2   s     r   test_update_negativezcSHAKETest.test_update_negative\   s3    KOO)QXy99999r   c           
      "   | j                                         }|                    d          }|                     t	          |t          t          d                                         |                     t          |          d           d S )NZ   r3   )	r$   r%   r(   
assertTrue
isinstancetyper	   r   len)r   r2   r3   s      r   test_digestzcSHAKETest.test_digest`   sp    KOO 	
64(+<+<==>>>Vb)))))r   c                    | j                                         }|                    t          d                     |                    d           |                     t          |j        t          d                     d S )Nrrrrr;   ttt)r$   r%   r&   r	   r(   r7   r8   )r   macs     r   test_update_after_readz!cSHAKETest.test_update_after_readh   s`    koo

1V99)SZ5:::::r   c                 
   t          d          D ]r}| j                            d          }| j                            d          }|                     |                    |          |                    |                     sd S )N@   s   TEST)ranger$   r%   shaker   r(   )r   
digest_lenr)   r*   s       r   
test_shakezcSHAKETest.test_shaken   s|    )) 	K 	KJ;??7++D:>>'**DTYYz22DIIj4I4IJJJJ	K 	Kr   N)__name__
__module____qualname__r   r   r-   r4   r9   r@   rE   rK    r   r   r   r   &   s        = = =	R 	R 	R7 7 74- - -: : :* * *; ; ;K K K K Kr   r   c                       e Zd ZeZeZdS )cSHAKE128TestN)rL   rM   rN   r   r$   r   rI   rO   r   r   rQ   rQ   v           FEEEr   rQ   c                       e Zd ZeZeZdS )cSHAKE256TestN)rL   rM   rN   r   r$   r   rI   rO   r   r   rT   rT   {   rR   r   rT   c                       e Zd ZdS )cSHAKEVectorsN)rL   rM   rN   rO   r   r   rV   rV      s        Dr   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    s1vv 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                     |                     ||          }|                    t          |                    }|                     ||           d S )N)r   r"   )r%   r(   r?   r   )r   r   resultr"   
test_classhobjr3   s          r   new_testrn      sJ    >>tF>;;DYYs6{{++FVV,,,,,r   z
test_%s_%dc                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S r^   )r   rQ   rT   rV   )configtestss     r   	get_testsrr      sB    E	_]+++E	_]+++E	_]+++ELr   __main__c                  B    t          j        t                                S r^   )unittest	TestSuiterr   rO   r   r   rc   rc      s    H&y{{33 r   suite)defaultTest),__doc__ru   Cryptodome.SelfTest.loaderr   Cryptodome.SelfTest.st_commonr   Cryptodome.Hashr   r   r   r   Cryptodome.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 B A  8 8 8 8 8 8 9 9 9 9 9 9 D D D D D D D D D D D D 6 6 6 6 6 6 6 6 6 6MK MK MK MK MK" MK MK MK`    J   
    J   
	 	 	 	 	H% 	 	 	 12SUaclm02SUaclm13UWjluv13UWjluv %1 D D D%j$$%5tU-=-=.>.>.>.>&@ &@A A G EG 
 9\** D DR72ua  A%%1R55DD726??D6SS[[]****72vq!!Q&&*=>>>72vq!!Q&&QrUUFFWRT]]F7cc"$iik)))) $RU6j 	- 	- 	- 	-
 	|sCj8(CCCC'D,      zOOO33EHMg&&&&&& r   