Ë
    (üàgˆ  ã            
       ó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     ú^/var/www/skyplay_api_hub/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Ó0Ð2PÕ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¹  € à�{‰{�‰Ó ˆØ�{‰{�‰¤A d£GˆÓ,ˆØ�{‰{�‰Ó ×'Ñ'¬¨$«Ó0ˆà×Ñ˜DŸI™I b›M¨4¯9©9°R«=Ô9Ø�	‰	�"ŒØ×Ñ˜Ÿ™ 2›¨¯	©	°"«Ô6à�{‰{�‰Ó ˆØ�i‰i˜‹mˆØ�{‰{�‰¤a¨£eˆÓ,ˆØ�{‰{�‰¤a¨£hˆÓ/ˆà×Ñ˜˜dŸi™i¨›mÔ,Ø×Ñ˜C §¡¨2£Ô/à�{‰{�‰¤a¨£hˆÓ/ˆØ�{‰{�‰¤a¨£h´Q°t³WˆÓ=ˆØ�{‰{�‰¤a¨£hˆÓ/×6Ñ6´q¸³wÓ?ˆà×Ñ˜DŸI™I b›M¨4¯9©9°R«=Ô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ˆØ�K‰K�O‰OÓˆØ	�‰�˜‘Ó×"Ñ" 6¨!¡9Ô-Ø—‘˜“ˆØ�K‰K�O‰OÓˆØ	�‰�˜‘˜V A™YÑ&Ô'Ø×Ñ˜Ÿ™ › 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(   € Ø�K‰K�O‰OÓˆØ×Ñœ) Q§X¡X¨yÕ9r   c           
      óê   — | j                   j                  «       }|j                  d«      }| j                  t	        |t        t        d«      «      «      «       | j                  t        |«      d«       y )NéZ   r3   )	r$   r%   r(   Ú
assertTrueÚ
isinstanceÚtyper	   r   Úlen)r   r2   r3   s      r   Útest_digestzcSHAKETest.test_digest`   sQ   € Ø�K‰K�O‰OÓˆØ—‘˜“ˆð 	�‰œ
 6¬4´°(³Ó+<Ó=Ô>Ø×Ñœ˜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   € Ø�k‰k�o‰oÓˆØ�
‰
”1�V“9ÔØ�‰�ŒØ×Ñœ) S§Z¡Z´°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Ø×Ñ˜TŸY™Y zÓ2°D·I±I¸jÓ4IÕJñ	Kr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r-   r4   r9   r@   rE   rK   © r   r   r   r   &   s,   „ ò=ò	Rò7ò4-ò:ò*ò;ó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
   € ´s¸1³v€ 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   € Ø—>‘> t°F�>Ó;ˆDØ—Y‘Yœs 6›{Ó+ˆFØ×Ñ˜V VÕ,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×%Ñ%ô 	ð 1Ð2SÐUaÐclÐmØ0Ð2SÐUaÐclÐmØ1Ð3UÐWjÐluÐvØ1Ð3UÐWjÐluÐvð€ð %1ò DÑ €Dˆ%��já$Ð%5°t¸UÙ-=Ù.>Ù.>ñ&@óAò Gð EGð ñ
 ˜\Ó*ò D‰ˆˆRÙ�2�u˜aÓ  AÒ%Ù�R“5‰Dá˜2Ÿ6™6“?ˆDØ—6‘6™S §¡›[¨™]Ò*Ð+Ð*Ù�2�v˜qÓ! QÒ&ÙÐ=Ó>Ð>Ù�2�v˜qÓ! QÒ&Ù�r“U‰Fá˜RŸT™T“]ˆFØ—7‘7™c "§$¡$›i¨™kÒ)Ð*Ð)à $¨R¯U©U¸6Èjó 	-ñ
 	�˜|¨s°C¨jÑ8¸(ÕCñ'DðDð: ó ð ˆzÒÛÙ3€EØ€H‡M�M˜gÖ&ð r   