
    ¿igP4                     Z   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        dKL           dS dS )Mz(Self-test suite for Cryptodome.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 #2P6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411 dfa66747de9ae63030ca32611497c827zRFC 4493 #3ڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710 51f0bebf7e3b9d92fc49741779363cfezRFC 4493 #408e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b 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 1208aa83bf8cbda10620bc1bf19fbb6cd58bc313d4a371ca8b5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                 l    t          j        t          |                                         |          S )Ndata)r   newr   read)taglengths     ^/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Hash/test_CMAC.pyget_tag_randomr4      s)    <WS\\***//777    c                       e Zd Zd Zd ZdS )TestCMACc                    t          dd          t          dd          }t          j        |t                                                    }dD ]fdt          dt                              D             }t          j        |t          	          }|D ]}|                    |           |                     ||                                           d
S )z5Verify that internal caching is implemented correctlydata_to_mac   key   )msg	ciphermod)
            
      r<   (   P   r:   c                 *    g | ]}||z            S  rH   ).0ichunk_lengthr9   s     r3   
<listcomp>z2TestCMAC.test_internal_caching.<locals>.<listcomp>  s9     @ @ @k!AlN"23 @ @ @r5   r   r>   N)	r4   r   r/   r   digestrangelenupdateassertEqual)selfr;   ref_macchunksmacchunkrK   r9   s         @@r3   test_internal_cachingzTestCMAC.test_internal_caching   s    %]C88UB''(3K3???FFHH @ 	4 	4L@ @ @ @ @As;//>>@ @ @F (3#...C " "

5!!!!Wcjjll3333	4 	4r5   c                 P   d}d}t          j        ||d d         t                    }|                                }|                     t
          |j        |dd                     t          j        ||t                                                    }t          j        ||d d         t          d          }|                     |                                |           |                    |dd                     |                     |                                |           d S )Ns   rrrrttts   4444444444444444   rM   T)r>   update_after_digest)r   r/   r   rN   assertRaises	TypeErrorrQ   rR   )rS   r=   r;   hdig1dig2h2s          r3   test_update_after_digestz!TestCMAC.test_update_after_digest  s     HS#bqb'S111xxzz)QXs122w777xSC0007799 Xc3rr7ctLLLd+++ 			#abb'd+++++r5   N)__name__
__module____qualname__rX   rb   rH   r5   r3   r7   r7      s2        4 4 4&, , , , ,r5   r7   c                       e Zd Zd ZdS )ByteArrayTestsc                    d}d}t          |          }t          |          }t          j        ||t                    }t          j        ||t                    }d|d d<   d|d d<   |                     |                                |                                           t          |          }t          |          }t          j        |t                    }t          j        |t                    }|                    |           |                    |           d|d d<   |                     |                                |                                           d S )N   0000000000000000    rM      r?   )	bytearrayr   r/   r   rR   rN   rQ   )rS   r;   r.   key_badata_bah1ra   s          r3   runTestzByteArrayTests.runTest(  s*    3D//Xc43///Xfg555rr
biikk222 3D//XcS)))XcS)))
		$
		'biikk22222r5   Nrc   rd   re   rp   rH   r5   r3   rg   rg   &  s#        3 3 3 3 3r5   rg   c                       e Zd Zd ZdS )MemoryViewTestsc                    d}d}d }d }||fD ]S} ||          } ||          }t          j        ||t                    }t          j        ||t                    }	|j        sd|d d<   d|d d<   |                     |                                |	                                            ||          }t          j        |t                    }t          j        |t                    }	|                    |           |	                    |           |j        sd|d d<   |                     |                                |	                                           Ud S )Nri   rj   c                      t          |           S N)
memoryviewr-   s    r3   	get_mv_roz*MemoryViewTests.runTest.<locals>.get_mv_roJ  s    d###r5   c                 :    t          t          |                     S rv   )rw   rl   r-   s    r3   	get_mv_rwz*MemoryViewTests.runTest.<locals>.get_mv_rwM  s    ioo...r5   rM   rk   r?   )r   r/   r   readonlyrR   rN   rQ   )
rS   r;   r.   rx   rz   get_mvkey_mvdata_mvro   ra   s
             r3   rp   zMemoryViewTests.runTestE  sv   	$ 	$ 	$	/ 	/ 	/ !), 	7 	7F VC[[FfTllG#ts333B&'S999B# &$rr
%RYY[["))++666 fTllG#---B#---BIIdOOOIIg# &%RYY[["))++6666-	7 	7r5   Nrq   rH   r5   r3   rs   rs   C  s#        !7 !7 !7 !7 !7r5   rs   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestVectorsWycheproofc                 `    t           j                            |            || _        d| _        d S )NNone)unittestTestCase__init___wycheproof_warnings_id)rS   wycheproof_warningss     r3   r   zTestVectorsWycheproof.__init__k  s,    ""4((($7!r5   c                 @    d }t          dddd|i          | _        d S )Nc                     | d         dz  S )NtagSize   rH   )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)rS   r   s     r3   setUpzTestVectorsWycheproof.setUpp  sA    	) 	) 	) //E/C/@:Dj9QS S Sr5   c                     | j         S rv   )r   )rS   s    r3   shortDescriptionz&TestVectorsWycheproof.shortDescriptionz  s	    xr5   c                 ~    |j         r3| j        r.dd l}|                    d| j        d|j        d           d S d S d S )Nr   zWycheproof warning: z ())warningr   warningswarnr   comment)rS   r   r   s      r3   r   zTestVectorsWycheproof.warn}  sd    : 	R$3 	ROOOMMM4888RZZZPQQQQQ	R 	R 	R 	Rr5   c                    dt          |j                  z   | _        	 t          j        |j        |j        t          |j                  	                                }nA# t          $ r4}t          |j                  dvrdt          |          v rY d }~d S |d }~ww xY w|j        r2|                     ||j                   |                     |           d S d S )NzWycheproof MAC creation Test #r>   mac_lenr<          
key length)stridr   r   r/   r;   r=   r   r   rN   
ValueErrorrP   validrR   r1   r   )rS   r   r1   es       r3   test_create_macz%TestVectorsWycheproof.test_create_mac  s    3c"%jj@	(2626S"+NNNUUWWCC 	 	 	26{{,..<3q663I3IG	 8 	S"&)))IIbMMMMM	 	s   >A 
B''BBBc                    dt          |j                  z   | _        	 t          j        |j        |j        t          |j                  }nA# t          $ r4}t          |j                  dvrdt          |          v rY d }~d S |d }~ww xY w	 |                    |j                   |j        sJ |                     |           d S # t          $ r |j        rJ Y d S w xY w)Nz"Wycheproof MAC verification Test #r   r   r   )r   r   r   r   r/   r;   r=   r   r   r   rP   verifyr1   r   r   )rS   r   rV   r   s       r3   test_verify_macz%TestVectorsWycheproof.test_verify_mac  s    7#be**D	(2626S"+NNNCC 	 	 	26{{,..<3q663I3IG		JJrv 8OOOIIbMMMMM	  	  	  	 x	 s/   ,A 
B	'BBB	C CCc                 n    | j         D ],}|                     |           |                     |           -d S rv   )r   r   r   )rS   r   s     r3   rp   zTestVectorsWycheproof.runTest  sH    ' 	% 	%B  $$$  $$$$	% 	%r5   N)
rc   rd   re   r   r   r   r   r   r   rp   rH   r5   r3   r   r   i  s          
S S S  R R R
    "% % % % %r5   r   c                    dd l }ddlm} |                     d          }g }t          D ]?}t          |          }t          |d                   |d<   |                    |           @ |t          d|          }|                    t                                 |                    t          t                               |                    t                                 |t          |          gz  }|S )Nr   r?   )make_mac_testsr   rZ   rM   r   )typescommonr   get	test_datalistdictappendr   rg   r
   r7   rs   r   )configr   r   r   params_test_datarowttestss           r3   	get_testsr     s    LLL&&&&&& **%:;;  # #IIad###!""""N4)9::E	LL!!"""	LL**+++	LL""###	$%899;;ELr5   __main__c                  B    t          j        t                                S rv   )r   	TestSuiter   rH   r5   r3   <lambda>r     s    H&y{{33 r5   suite)defaultTest)__doc__jsonr   binasciir   Cryptodome.Util.py3compatr   Cryptodome.Hashr   Cryptodome.Cipherr   r   r   Cryptodome.Util.strxorr	   Cryptodome.SelfTest.st_commonr
   Cryptodome.SelfTest.loaderr   r   r4   r   r7   rg   rs   r   r   rc   r   mainrH   r5   r3   <module>r      s  D / .         - - - - - -             ' ' ' ' ' ' ' ' $ $ $ $ $ $ ) ) ) ) ) ) 9 9 9 9 9 9 C C C C C C 	+
*	 	+**	 	+	 	+ 	+	+ 	+ 	
*'	**'		 	+'		+ 	+'		+
*'	+**(	+	 	+(	+	+ 	+(		 	(	 	(		 	(			 	(
	
(	(		 	(		 	(	qC	L8 8 8%, %, %, %, %,x  %, %, %,P3 3 3 3 3X& 3 3 3:#7 #7 #7 #7 #7h' #7 #7 #7L;% ;% ;% ;% ;%H- ;% ;% ;%|     , zOOO33EHMg&&&&&& r5   