Ë
    (üàg04  ã                   óh  — d Z ddlZddlZddlmZ ddlmZ ddlm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 dddde
fdddde
fdddde
fdddde
fdddde
fdddde
fdddde
fdddd e
fd!dd"d#e
fd!dd$d%e
fd!dd&d'e
fd!dd(d)e
fd*dd+d,efd*d-d.d/efd*d0d1d2efd*d3d4d5efd6dd7d8efd6d-d9d:efd6d0d;d<efd6d3d=d>efgad?„ Z G d@„ dAej*                  «      Z G dB„ dCej*                  «      Z G dD„ dEej*                  «      Z G dF„ dGej*                  «      Zi fdH„ZedIk(  rddlZdJ„ Z ej:                  dK¬L«       yy)Mz$Self-test suite for Crypto.Hash.CMACé    N)Ú	unhexlify)Útobytes)ÚCMAC)ÚAESÚDES3)ÚSHAKE128)Ústrxor)Úlist_test_cases)Úload_test_vectors_wycheproofÚ 2b7e151628aed2a6abf7158809cf4f3cÚ Ú bb1d6929e95937287fa37d129b756746zRFC 4493 #1Ú 6bc1bee22e409f96e93d7e117393172aÚ 070a16b46b4d4144f79bdd9dd04a287czRFC 4493 #2ÚP6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411Ú dfa66747de9ae63030ca32611497c827zRFC 4493 #3Ú€6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710Ú 51f0bebf7e3b9d92fc49741779363cfezRFC 4493 #4Ú08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7bÚ d17ddf46adaacde531cac483de7a9367zNIST SP 800 38B D.2 Example 5Ú 9e99a7bf31e710900662f65e617c5184zNIST SP 800 38B D.2 Example 6Ú 8a1de5be2eb31aad089a82e6ee908b0ezNIST SP 800 38B D.2 Example 7Ú a1d5df0eed790f794d77589659f39a11zNIST SP 800 38B D.2 Example 8Ú@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4Ú 028962f61b7bf89efc6b551f4667d983zNIST SP 800 38B D.3 Example 9Ú 28a7023f452e8f82bd4bf28d8c37c35czNIST SP 800 38B D.3 Example 10Ú aaf3d8f1de5640c232f5b169b9c911e6zNIST SP 800 38B D.3 Example 11Ú e1992190549f6ed5696a2c056c315410zNIST SP 800 38B D.3 Example 12Ú08aa83bf8cbda10620bc1bf19fbb6cd58bc313d4a371ca8b5Úb7a688e122ffaf95zNIST SP 800 38B D.4 Example 13Ú6bc1bee22e409f96Ú8e8f293136283797zNIST SP 800 38B D.4 Example 14Ú(6bc1bee22e409f96e93d7e117393172aae2d8a57Ú743ddbe0ce2dc2edzNIST SP 800 38B D.4 Example 15Ú@6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e51Ú33e6b1092400eae5zNIST SP 800 38B D.4 Example 16Ú 4cf15134a2850dd58a3d10ba80570d38Úbd2ebf9a3ba00361zNIST SP 800 38B D.7 Example 17Ú4ff2ab813c53ce83zNIST SP 800 38B D.7 Example 18Ú62dd1b471902bd4ezNIST SP 800 38B D.7 Example 19Ú31b1e431dabc4eb8zNIST SP 800 38B D.7 Example 20c                 ó^   — t        j                  t        | «      ¬«      j                  |«      S )N©Údata)r   Únewr   Úread)ÚtagÚlengths     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_CMAC.pyÚget_tag_randomr4   ú   s    € Ü�<‰<œW S›\Ô*×/Ñ/°Ó7Ð7ó    c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestCMACc                 ó˜  — t        dd«      }t        dd«      }t        j                  ||t        ¬«      j	                  «       }dD ]~  }t        dt        |«      |«      D �cg c]
  }||||z    ‘Œ }}t        j                  |t        ¬«      }|D ]  }|j                  |«       Œ | j                  ||j	                  «       «       Œ€ y	c c}w )
z5Verify that internal caching is implemented correctlyÚdata_to_macé€   Úkeyé   )ÚmsgÚ	ciphermod)
é   é   é   é   é
   é   r<   é(   éP   r:   r   ©r>   N)	r4   r   r/   r   ÚdigestÚrangeÚlenÚupdateÚassertEqual)	Úselfr9   r;   Úref_macÚchunk_lengthÚiÚchunksÚmacÚchunks	            r3   Útest_internal_cachingzTestCMAC.test_internal_caching   sÉ   € ô % ]°CÓ8ˆÜ˜U BÓ'ˆÜ—(‘(˜3 K¼3Ô?×FÑFÓHˆð @ò 	4ˆLô ˜Aœs ;Ó/°Ó>ö@¸�k ! A l¡NÒ3ð @ˆFð @ô —(‘(˜3¬#Ô.ˆCØò "�Ø—
‘
˜5Õ!ð"à×Ñ˜W c§j¡j£lÕ3ñ	4ùò@s   Á Cc                 óî  — d}d}t        j                  ||d d t        ¬«      }|j                  «       }| j	                  t
        |j                  |dd  «       t        j                  ||t        ¬«      j                  «       }t        j                  ||d d t        d¬«      }| j                  |j                  «       |«       |j                  |dd  «       | j                  |j                  «       |«       y )Ns   rrrrttts   4444444444444444é   rG   T)r>   Úupdate_after_digest)r   r/   r   rH   ÚassertRaisesÚ	TypeErrorrK   rL   )rM   r=   r;   ÚhÚdig1Údig2Úh2s          r3   Útest_update_after_digestz!TestCMAC.test_update_after_digest  sÄ   € ØˆØˆô �H‰H�S˜#˜b˜q˜'¬SÔ1ˆØ�x‰x‹zˆØ×Ñœ) Q§X¡X¨s°1°2¨wÔ7Ü�x‰x˜˜S¬CÔ0×7Ñ7Ó9ˆô �X‰X�c˜3˜r ˜7¬cÀtÔLˆØ×Ñ˜Ÿ™› dÔ+ð 	�	‰	�#�a�b�'ÔØ×Ñ˜Ÿ™› dÕ+r5   N)Ú__name__Ú
__module__Ú__qualname__rT   r^   © r5   r3   r7   r7   þ   s   „ ò4ó&,r5   r7   c                   ó   — e Zd Zd„ Zy)ÚByteArrayTestsc                 óZ  — d}d}t        |«      }t        |«      }t        j                  ||t        ¬«      }t        j                  ||t        ¬«      }d|d d d|d d | j	                  |j                  «       |j                  «       «       t        |«      }t        |«      }t        j                  |t        ¬«      }t        j                  |t        ¬«      }|j                  |«       |j                  |«       d|d d | j	                  |j                  «       |j                  «       «       y )Nó   0000000000000000ó    rG   ó   ÿr?   )Ú	bytearrayr   r/   r   rL   rH   rK   )rM   r;   r.   Úkey_baÚdata_baÚh1r]   s          r3   ÚrunTestzByteArrayTests.runTest(  sè   € àˆØˆô ˜3“ˆÜ˜D“/ˆä�X‰X�c˜4¬3Ô/ˆÜ�X‰X�f˜g´Ô5ˆØˆˆr�ˆ
Øˆ��ˆØ×Ñ˜Ÿ™› b§i¡i£kÔ2ô ˜3“ˆÜ˜D“/ˆä�X‰X�c¤SÔ)ˆÜ�X‰X�c¤SÔ)ˆØ
�	‰	�$ŒØ
�	‰	�'ÔØˆ��ˆØ×Ñ˜Ÿ™› b§i¡i£kÕ2r5   N©r_   r`   ra   rm   rb   r5   r3   rd   rd   &  s   „ ó3r5   rd   c                   ó   — e Zd Zd„ Zy)ÚMemoryViewTestsc                 ó„  — d}d}d„ }d„ }||fD �].  } ||«      } ||«      }t        j                  ||t        ¬«      }t        j                  ||t        ¬«      }	|j                  s
d|d d d|d d | j	                  |j                  «       |	j                  «       «        ||«      }t        j                  |t        ¬«      }t        j                  |t        ¬«      }	|j                  |«       |	j                  |«       |j                  sd|d d | j	                  |j                  «       |	j                  «       «       �Œ1 y )Nrf   rg   c                 ó   — t        | «      S ©N)Ú
memoryviewr-   s    r3   Ú	get_mv_roz*MemoryViewTests.runTest.<locals>.get_mv_roJ  s   € Ü˜dÓ#Ð#r5   c                 ó*   — t        t        | «      «      S rs   )rt   ri   r-   s    r3   Ú	get_mv_rwz*MemoryViewTests.runTest.<locals>.get_mv_rwM  s   € Üœi¨›oÓ.Ð.r5   rG   rh   r?   )r   r/   r   ÚreadonlyrL   rH   rK   )
rM   r;   r.   ru   rw   Úget_mvÚkey_mvÚdata_mvrl   r]   s
             r3   rm   zMemoryViewTests.runTestE  s  € àˆØˆò	$ò	/ð ! )Ð,ó 	7ˆFñ ˜C“[ˆFÙ˜T“lˆGä—‘˜#˜t¬sÔ3ˆBÜ—‘˜& '´SÔ9ˆBØ×#Ò#Ø$��r˜�
Ø%�˜˜�Ø×Ñ˜RŸY™Y›[¨"¯)©)«+Ô6ñ ˜T“lˆGä—‘˜#¬Ô-ˆBÜ—‘˜#¬Ô-ˆBØ�I‰I�dŒOØ�I‰I�gÔØ×#Ò#Ø%�˜˜�Ø×Ñ˜RŸY™Y›[¨"¯)©)«+Ö6ñ-	7r5   Nrn   rb   r5   r3   rp   rp   C  s   „ ó!7r5   rp   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestVectorsWycheproofc                 ó^   — t         j                  j                  | «       || _        d| _        y )NÚNone)ÚunittestÚTestCaseÚ__init__Ú_wycheproof_warningsÚ_id)rM   Úwycheproof_warningss     r3   r‚   zTestVectorsWycheproof.__init__k  s%   € Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Øˆ�r5   c                 ó6   — d„ }t        dddd|i¬«      | _        y )Nc                 ó   — | d   dz  S )NÚtagSizeé   rb   )Úgroups    r3   Ú
filter_tagz/TestVectorsWycheproof.setUp.<locals>.filter_tagr  s   € Ø˜Ñ# qÑ(Ð(r5   )ÚHashÚ
wycheproofzaes_cmac_test.jsonzWycheproof CMACÚtag_size)Ú	group_tag)r   Útv)rM   r‹   s     r3   ÚsetUpzTestVectorsWycheproof.setUpp  s'   € ò	)ô /Ð/EØ/CØ/@Ø:DÀjÐ9QôSˆ�r5   c                 ó   — | j                   S rs   )r„   )rM   s    r3   ÚshortDescriptionz&TestVectorsWycheproof.shortDescriptionz  s   € Ø�x‰xˆr5   c                 ó˜   — |j                   r>| j                  r1dd l}|j                  d| j                  ›d|j
                  ›d�«       y y y )Nr   zWycheproof warning: z (ú))Úwarningrƒ   ÚwarningsÚwarnr„   Úcomment)rM   r�   r—   s      r3   r˜   zTestVectorsWycheproof.warn}  s4   € Ø�:Š:˜$×3Ò3ÛØ�MŠM¸4¿8»8ÀRÇZÃZÐPÕQð 4ˆ:r5   c                 ó¾  — dt        |j                  «      z   | _        	 t        j                  |j
                  |j                  t        |j                  ¬«      j                  «       }|j                  r.| j                  ||j                  «       | j                  |«       y y # t        $ r0}t        |j
                  «      dvrdt        |«      v rY d }~y |‚d }~ww xY w)NzWycheproof MAC creation Test #©r>   Úmac_len©r<   é   é    ú
key length)ÚstrÚidr„   r   r/   r;   r=   r   rŽ   rH   Ú
ValueErrorrJ   ÚvalidrL   r1   r˜   )rM   r�   r1   Úes       r3   Útest_create_macz%TestVectorsWycheproof.test_create_mac‚  s¦   € Ø3´c¸"¿%¹%³jÑ@ˆŒð	Ü—(‘(˜2Ÿ6™6 2§6¡6´SÀ"Ç+Á+ÔN×UÑUÓWˆCð
 �8Š8Ø×Ñ˜S "§&¡&Ô)Ø�I‰I�b�Mð øô	 ò 	Ü�2—6‘6‹{ ,Ñ.°<Ä3ÀqÃ6Ñ3IÜØˆGûð	ús   ŸA	B# Â#	CÂ,$CÃCÃCc                 óÞ  — dt        |j                  «      z   | _        	 t        j                  |j
                  |j                  t        |j                  ¬«      }	 |j                  |j                  «       |j                  sJ ‚| j                  |«       y # t        $ r0}t        |j
                  «      dvrdt        |«      v rY d }~y |‚d }~ww xY w# t        $ r |j                  rJ ‚Y y w xY w)Nz"Wycheproof MAC verification Test #r›   r�   r    )r¡   r¢   r„   r   r/   r;   r=   r   rŽ   r£   rJ   Úverifyr1   r¤   r˜   )rM   r�   rR   r¥   s       r3   Útest_verify_macz%TestVectorsWycheproof.test_verify_mac�  s»   € Ø7¼#¸b¿e¹e»*ÑDˆŒð	Ü—(‘(˜2Ÿ6™6 2§6¡6´SÀ"Ç+Á+ÔNˆCð
	Ø�J‰J�r—v‘vÔð —8’8ˆO�8Ø�I‰I�b�Møô ò 	Ü�2—6‘6‹{ ,Ñ.°<Ä3ÀqÃ6Ñ3IÜØˆGûð	ûô ò 	 Ø—x’xÐ�<‘xð	 ús/   Ÿ;B ÁC Â	CÂ$C
ÃC
Ã
CÃC,Ã+C,c                 ój   — | j                   D ]$  }| j                  |«       | j                  |«       Œ& y rs   )r�   r¦   r©   )rM   r�   s     r3   rm   zTestVectorsWycheproof.runTest   s1   € à—'‘'ò 	%ˆBØ× Ñ  Ô$Ø× Ñ  Õ$ñ	%r5   N)
r_   r`   ra   r‚   r‘   r“   r˜   r¦   r©   rm   rb   r5   r3   r}   r}   i  s'   „ òò
SòòRò
òó"%r5   r}   c                 óŒ  — dd l }ddlm} | j                  d«      }g }t        D ]0  }t        |«      }t        |d   ¬«      |d<   |j                  |«       Œ2  |t        d|«      }|j                  t        «       «       |j                  t        t        «      «       |j                  t        «       «       |t        |«      gz  }|S )Nr   r?   )Úmake_mac_testsr…   rV   rG   r   )ÚtypesÚcommonr¬   ÚgetÚ	test_dataÚlistÚdictÚappendr   rd   r
   r7   rp   r}   )Úconfigr­   r¬   r…   Úparams_test_dataÚrowÚtÚtestss           r3   Ú	get_testsr¹   §  s±   € ãÝ&à Ÿ*™*Ð%:Ó;Ðð ÐÜò #ˆÜ�‹IˆÜ˜a ™dÔ#ˆˆ!‰Ø×Ñ Õ"ð#ñ
 œ4 Ð)9Ó:€EØ	‡L�L”Ó!Ô"Ø	‡L�L”¤Ó*Ô+Ø	‡L�L”Ó"Ô#Ø	Ô$Ð%8Ó9Ð;Ñ;€EØ€Lr5   Ú__main__c                  ó<   — t        j                  t        «       «      S rs   )r€   Ú	TestSuiter¹   rb   r5   r3   ú<lambda>r½   ¿  s   € ”H×&Ñ&¤y£{Ó3€ r5   Úsuite)ÚdefaultTest)Ú__doc__Újsonr€   Úbinasciir   ÚCrypto.Util.py3compatr   ÚCrypto.Hashr   ÚCrypto.Cipherr   r   r   ÚCrypto.Util.strxorr	   ÚCrypto.SelfTest.st_commonr
   ÚCrypto.SelfTest.loaderr   r°   r4   r�   r7   rd   rp   r}   r¹   r_   r¾   Úmainrb   r5   r3   ú<module>rÊ      s–  ðñD +ã Û Ý å )å ß #Ý  å %å 5Ý ?ð 	+Ø
Ø*ØØð	ð 	+Ø*Ø*ØØð	ð 	+ð	ð 	+ØØðð 	+ð	+ð 	+ØØðð 	à
Ø*Ø'Øðð	à*Ø*Ø'Øðð	ð	ð 	+Ø'Øðð	ð	+ð 	+Ø'Øð	ð	+à
Ø*Ø'Øðð	+à*Ø*Ø(Øðð	+ð	ð 	+Ø(Øðð	+ð	+ð 	+Ø(Øð	ð	ð 	ØØ(Øðð	ð 	ØØ(Øðð	ð	ð 	Ø(Øð	ð	ð	ð 	Ø(Øð
ð	à
ØØ(Øðð	àØØ(Øðð	ð	ð 	Ø(Øðð	ð	ð 	Ø(Øð	ðqC€	òL8ô%,ˆx× Ñ ô %,ôP3�X×&Ñ&ô 3ô:#7�h×'Ñ'ô #7ôL;%˜H×-Ñ-ô ;%ð| ó ð, ˆzÒÛÙ3€EØ€H‡M�M˜gÖ&ð r5   