
    ,h04                     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:                  dKL       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 #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                 ^    t        j                  t        |             j                  |      S )Ndata)r   newr   read)taglengths     `/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Hash/test_CMAC.pyget_tag_randomr4      s     <<WS\*//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UB'((3K3?FFH @ 	4L As;/>@k!AlN3 @F @ ((3#.C "

5!"Wcjjl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     HHS#bq'S1xxz)QXXs12w7xxSC0779 XXc3r7ctLd+ 			#ab'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/XXc43/XXfg5r
biik2 3D/XXcS)XXcS)
		$
		'biik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   	$	/ !), 	7F C[FTlG#ts3B&'S9B##$r
%RYY["))+6 TlG#-B#-BIIdOIIg##%RYY["))+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/@:Dj9QSr5   c                     | j                   S rs   )r   )rM   s    r3   shortDescriptionz&TestVectorsWycheproof.shortDescriptionz  s    xx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MM488RZZ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    3c"%%j@	((266266S"++NUUWC
 88S"&&)IIbM 	  	266{,.<3q63I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#bee*D	((266266S"++NC
	JJrvv 88OIIbM  	266{,.<3q63IG	  	 xx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	LL!"	LL*+	LL"#	$%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3X&& 3:#7h'' #7L;%H-- ;%|  , z3EHMMg& r5   