o
    Þý°jñM  ã                   @   s  d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ee	e
eeeeeeeeed�ZdZdd„ Zg d	d
edd�df‘d	d
edd�df‘dd
edd�df‘ddeddd�df‘ddedd�df‘ddedd�d f‘d!d"ed#d$d�d%f‘d&d'ed(d�d)f‘d*d'ed+d�d,f‘d-d.ed/d0d�d1f‘d-d2ed3d4d�d5f‘dd
ed6d7�d8f‘dded9d7�d:f‘dded;d7�d<f‘d!d"ed=d7�d>f‘d?d.ed@d7�dAf‘d?dBedCd7�dDf‘ddedEdF�dGf‘ddedHdI�dJf‘ddedKdL�dMf‘dedNƒedOdP�dQf‘edRƒedSƒedTdP�dUf‘ddedVdP�dWf‘d!d"edXdP�dYf‘d*edZƒed[dP�d\f‘d-ed]ƒed^dP�d_f‘d-ed`ƒedadP�dbf‘dceddƒededf�dgf‘dhediƒedjdf�dkf‘dledmƒedndf�dof‘dpeddƒedqdr�dsf‘dtediƒedudr�dvf‘dwedmƒedxdr�dyf‘dzeddƒed{d|�d}f‘d~ediƒedd|�d€f‘d�edmƒed‚d|�dƒf‘d„eddƒed…d†�d‡f‘dˆediƒed‰d†�dŠf‘dtedmƒed‹d†�dŒf‘aG d�dŽ„ dŽejƒZG d�d�„ d�ejƒZG d‘d’„ d’ejƒZG d“d”„ d”ejƒZi fd•d–„Zed—k�r	d˜d™„ Z ej!dšd›� dS dS )œz(Self-test suite for Cryptodome.Hash.HMACé    N)Úhexlify)ÚtostrÚtobytes)ÚHMACÚMD5ÚSHA1ÚSHA256ÚSHA224ÚSHA384ÚSHA512Ú	RIPEMD160ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512)r   r   r   r	   r
   r   r   r   r   r   r   c                 C   s   t tt| ƒƒƒS ©N)r   r   r   )Útext© r   ú•/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/SelfTest/Hash/test_HMAC.pyÚxl-   s   r   Ú 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0bÚ4869205468657265Ú 9294727a3638bb1c13f48ef8158bfc9d)Údefault_hashzdefault-is-MD5)r   zRFC 2202 #1-MD5 (HMAC-MD5)Ú(0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0bÚ(b617318655057264e28bc0b6fb378c8ef146be00)r   zRFC 2202 #1-SHA1 (HMAC-SHA1)Ú4a656665Ú87768617420646f2079612077616e7420666f72206e6f7468696e673fÚ 750c783e6ab0b503eaa86e310a5db738Ú(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79)r   r   zRFC 2202 #2 (HMAC-MD5/SHA1)Ú aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaÚdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÚ 56be34521d144c88dbb8c733f0e8b3f6zRFC 2202 #3-MD5 (HMAC-MD5)Ú(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaÚ(125d7342b9ac11cd91a39af48aa17b4f63f175d3zRFC 2202 #3-SHA1 (HMAC-SHA1)Ú20102030405060708090a0b0c0d0e0f10111213141516171819ÚdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdÚ 697eaf0aca3a3aea3a75164746ffaa79Ú(4c9007f4026250c6bc8414f9bf50c86c2d7235dazRFC 2202 #4 (HMAC-MD5/SHA1)Ú 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0cÚ(546573742057697468205472756e636174696f6eÚ 56461ef2342edc00f9bab995690efd4czRFC 2202 #5-MD5 (HMAC-MD5)Ú(0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0cÚ(4c1a03424b55e07fe7f27be1d58bb9324a9a5a04zRFC 2202 #5-SHA1 (HMAC-SHA1)Ú aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaÚl54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374Ú 6b1ab7fe4bd7bf8f0b62e6ce61b9d0cdÚ(aa4ae5e15272d00e95705637ce8a3b55ed402112zRFC 2202 #6 (HMAC-MD5/SHA1)Ú’54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b657920616e64204c6172676572205468616e204f6e6520426c6f636b2d53697a652044617461Ú 6f630fad67cda0ee1fb1f562db3aa53eÚ(e8e99d0f45237d786d6bbaa7965c7808bbff1a91zRFC 2202 #7 (HMAC-MD5/SHA1)zc
            b0344c61d8db38535ca8afceaf0bf12b
            881dc200c9833da726e9376c2e32cff7
        )r   zRFC 4231 #1 (HMAC-SHA256)zc
            5bdcc146bf60754e6a042426089575c7
            5a003f089d2739839dec58b964ec3843
        zRFC 4231 #2 (HMAC-SHA256)zc
            773ea91e36800e46854db8ebd09181a7
            2959098b3ef8c122d9635514ced565fe
        zRFC 4231 #3 (HMAC-SHA256)zc
            82558a389a443c0ea4cc819899f2083a
            85f0faa3e578f8077a2e3ff46729665b
        zRFC 4231 #4 (HMAC-SHA256)Á  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazc
            60e431591ee0b67f0d8a26aacbf5b77f
            8e0bc6213728c5140546040f0ee37f54
        zRFC 4231 #6 (HMAC-SHA256)Á0  5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2ezc
            9b09ffa71b942fcb27635fbcd5b0e944
            bfdc63644f0713938a7f51535c3a35e2
        zRFC 4231 #7 (HMAC-SHA256)Ú8a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44)r	   z!RFC 4634 8.4 SHA224 (HMAC-SHA224)Ú`af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649)r
   z!RFC 4634 8.4 SHA384 (HMAC-SHA384)Ú€164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737)r   z!RFC 4634 8.4 SHA512 (HMAC-SHA512)zHi ThereÚ(24cb4bd67d20fc1a5d2ed7732dcc39377f0a5668)r   zRFC 2286 #1 (HMAC-RIPEMD)ÚJefezwhat do ya want for nothing?Ú(dda6c0213a485a9e24f4742064a7f033b43c4069zRFC 2286 #2 (HMAC-RIPEMD)Ú(b0b105360de759960ab4f35298e116e295d8e7c1zRFC 2286 #3 (HMAC-RIPEMD)Ú(d5ca862f4d21d5e610e18b4cf1beb97a4365ecf4zRFC 2286 #4 (HMAC-RIPEMD)zTest With TruncationÚ(7619693978f91d90539ae786500ff3d8e0518e39zRFC 2286 #5 (HMAC-RIPEMD)z6Test Using Larger Than Block-Size Key - Hash Key FirstÚ(6466ca07ac5eac29e1bd523e5ada7605b791fd8bzRFC 2286 #6 (HMAC-RIPEMD)zITest Using Larger Than Block-Size Key and Larger Than One Block-Size DataÚ(69ea60798d71616cce5fd0871e23754cd75d5a0azRFC 2286 #7 (HMAC-RIPEMD)Ú8000102030405060708090a0b0c0d0e0f101112131415161718191a1bz"Sample message for keylen<blocklenÚ8332cfd59347fdb8e576e77260be4aba2d6dc53117b3bfb52c6d18c04)r   zNIST CSRC Sample #1 (SHA3-224)Á   000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8fz"Sample message for keylen=blocklenÚ8d8b733bcf66c644a12323d564e24dcf3fc75f231f3b67968359100c7zNIST CSRC Sample #2 (SHA3-224)ÁX  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabz"Sample message for keylen>blocklenÚ8078695eecc227c636ad31d063a15dd05a7e819a66ec6d8de1e193e59zNIST CSRC Sample #3 (SHA3-224)Ú@000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1fÚ@4fe8e202c4f058e8dddc23d8c34e467343e23555e24fc2f025d598f558f67205)r   zNIST CSRC Sample #1 (SHA3-256)Á  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384858687Ú@68b94e2e538a9be4103bebb5aa016d47961d4d1aa906061313b557f8af2c3faazNIST CSRC Sample #2 (SHA3-256)ÁP  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7Ú@9bcf2c238e235c3ce88404e813bd2f3a97185ac6f238c63d6229a00b07974258zNIST CSRC Sample #3 (SHA3-256)Ú`000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2fÚ`d588a3c51f3f2d906e8298c1199aa8ff6296218127f6b38a90b6afe2c5617725bc99987f79b22a557b6520db710b7f42)r   zNIST CSRC Sample #1 (SHA3-384)ÚÐ000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656667Ú`a27d24b592e8c8cbf6d4ce6fc5bf62d8fc98bf2d486640d9eb8099e24047837f5f3bffbe92dcce90b4ed5b1e7e44fa90zNIST CSRC Sample #2 (SHA3-384)Á0  000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091929394959697Ú`e5ae4c739f455279368ebf36d4f5354c95aa184c899d3870e460ebc288ef1f9470053f73f7c6da2a71bcaec38ce7d6aczNIST CSRC Sample #3 (SHA3-384)Ú€000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3fÚ€4efd629d6c71bf86162658f29943b1c308ce27cdfa6db0d9c3ce81763f9cbce5f7ebe9868031db1a8f8eb7b6b95e5c5e3f657a8996c86a2f6527e307f0213196)r   zNIST CSRC Sample #1 (SHA3-512)Ú�000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344454647Ú€544e257ea2a3e5ea19a590e6a24b724ce6327757723fe2751b75bf007d80f6b360744bf1b7a88ea585f9765b47911976d3191cf83c039f5ffab0d29cc9d9b6dazNIST CSRC Sample #2 (SHA3-512)Ú€5f464f5e5b7848e3885e49b2c385f0694985d0e38966242dc4a5fe3fea4b37d46b65ceced5dcf59438dd840bab22269f0ba7febdb9fcf74602a35666b2a32915zNIST CSRC Sample #3 (SHA3-512)c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚHMAC_Module_and_Instance_TestzÆTest the HMAC construction and verify that it does not
    matter if you initialize it with a hash module or
    with an hash instance.

    See https://bugs.launchpad.net/pycrypto/+bug/1209399
    c                 C   s   t j | ¡ || _d| _dS )zTInitialize the test with a dictionary of hash modules
        indexed by their namesÚ N)ÚunittestÚTestCaseÚ__init__ÚhashmodsÚdescription)Úselfr^   r   r   r   r]   £  s   
z&HMAC_Module_and_Instance_Test.__init__c                 C   s   | j S r   )r_   )r`   r   r   r   ÚshortDescription«  s   z.HMAC_Module_and_Instance_Test.shortDescriptionc                 C   sh   d}d}| j  ¡ D ](\}}|d u rq	d| | _t |||¡ ¡ }t ||| ¡ ¡ ¡ }|  ||¡ q	d S )Ns   �‘’“�‘’“�‘’“�‘’“sd                                                                                                       zTest HMAC in combination with )r^   Úitemsr_   r   ÚnewÚdigestÚassertEqual)r`   ÚkeyÚpayloadÚhashnameÚhashmodÚoneÚtwor   r   r   ÚrunTest®  s   
úz%HMAC_Module_and_Instance_Test.runTestN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r]   ra   rl   r   r   r   r   rY   ›  s
    rY   c                   @   ó   e Zd Zdd„ ZdS )Ú	HMAC_Nonec                 C   s8   d}t  |dt¡ ¡ }t  |d t¡ ¡ }|  ||¡ d S )Ns   ó    )r   rc   r   rd   re   )r`   rf   rj   rk   r   r   r   rl   ½  s   zHMAC_None.runTestN©rm   rn   ro   rl   r   r   r   r   rr   »  ó    rr   c                   @   rq   )ÚByteArrayTestsc                 C   s¸   d}d}t |ƒ}t |ƒ}t ||¡}t ||¡}d|d d…< d|d d…< |  | ¡ | ¡ ¡ t |ƒ}t |ƒ}t |¡}t |¡}| |¡ | |¡ d|d d…< |  | ¡ | ¡ ¡ d S )Nó   0000000000000000ó    ó   ÿé   )Ú	bytearrayr   rc   re   rd   Úupdate)r`   rf   ÚdataÚkey_baÚdata_baÚh1Úh2r   r   r   rl   Ç  s"   



zByteArrayTests.runTestNrt   r   r   r   r   rv   Å  ru   rv   c                   @   rq   )ÚMemoryViewTestsc           
      C   sÚ   d}d}dd„ }dd„ }||fD ]Z}||ƒ}||ƒ}t  ||¡}t  ||¡}	|js5d|d d…< d|d d…< |  | ¡ |	 ¡ ¡ ||ƒ}t  |¡}t  |¡}	| |¡ |	 |¡ |js`d|d d…< |  | ¡ |	 ¡ ¡ qd S )	Nrw   rx   c                 S   s   t | ƒS r   )Ú
memoryview©r}   r   r   r   Ú	get_mv_roé  s   z*MemoryViewTests.runTest.<locals>.get_mv_roc                 S   s   t t| ƒƒS r   )rƒ   r{   r„   r   r   r   Ú	get_mv_rwì  s   z*MemoryViewTests.runTest.<locals>.get_mv_rwry   rz   )r   rc   Úreadonlyre   rd   r|   )
r`   rf   r}   r…   r†   Úget_mvÚkey_mvÚdata_mvr€   r�   r   r   r   rl   ä  s,   



êzMemoryViewTests.runTestNrt   r   r   r   r   r‚   â  ru   r‚   c                 C   s®   dd l }ddlm} g }tD ]'}|d  ¡ D ]}t|ƒ}|d | |d< | ttƒ | d�¡ | |¡ qq|t	d|ƒ}| t
tƒ¡ | tƒ ¡ | tƒ ¡ | tƒ ¡ |S )Nr   rz   )Úmake_mac_testsé   )Ú	digestmodr   )ÚtypesÚcommonr‹   Ú	test_dataÚkeysÚlistÚappendÚdictÚglobalsr   rY   Úhash_modulesrr   rv   r‚   )ÚconfigrŽ   r‹   Úexp_test_dataÚrowÚmodnameÚtÚtestsr   r   r   Ú	get_tests  s    ür�   Ú__main__c                   C   s   t  tƒ ¡S r   )r[   Ú	TestSuiter�   r   r   r   r   Ú<lambda>#  s    r    Úsuite)ÚdefaultTest)"rp   r[   Úbinasciir   ÚCryptodome.Util.py3compatr   r   ÚCryptodome.Hashr   r   r   r   r	   r
   r   r   r   r   r   r   r”   r–   r   r   r�   r\   rY   rr   rv   r‚   r�   rm   r¡   Úmainr   r   r   r   Ú<module>   s’  8üýý	ý÷ýñÿüëýä"ýÞ(ÿüØ/ýÑ6ýÊ<ÿûÄDÿú¼Nú²Xú¨búžlú”{ù… ö �ù ü �ì ü �å "ü �Þ )ý �× /ý �Ñ 5ý �Ë ;ý �Å Aý �¿ Gý �¹ Mý �³ Tû �­ [	ô �¦ iò �˜ {û �†  	ô � �þ  ò � �ð  #ú � �Þ  +ö � �Ö  7
ó � �Ê  Hù � �¹  Qø � �°  [	ô � �¦  l 
&
þ