
    i04                     f   S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSSS\
4SSSS\
4SSSS\
4SSSS\
4SSSS\
4SSSS\
4SSSS\
4SSSS \
4S!SS"S#\
4S!SS$S%\
4S!SS&S'\
4S!SS(S)\
4S*SS+S,\4S*S-S.S/\4S*S0S1S2\4S*S3S4S5\4S6SS7S8\4S6S-S9S:\4S6S0S;S<\4S6S3S=S>\4/qS? r " S@ SA\R*                  5      r " SB SC\R*                  5      r " SD SE\R*                  5      r " SF SG\R*                  5      r0 4SH jr\SI:X  a  SSKrSJ r\R:                  " SKSL9  gg)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                 Z    [         R                  " [        U 5      S9R                  U5      $ )Ndata)r   newr   read)taglengths     Y/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Hash/test_CMAC.pyget_tag_randomr4      s     <<WS\*//77    c                        \ rS rSrS rS rSrg)TestCMAC   c                    [        SS5      n[        SS5      n[        R                  " X![        S9R	                  5       nS H  n[        S[        U5      U5       Vs/ s H	  oQXUU-    PM     nn[        R                  " U[        S9nU H  nUR                  U5        M     U R                  X7R	                  5       5        M     g	s  snf )
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)	selfr:   r<   ref_macchunk_lengthichunksmacchunks	            r3   test_internal_cachingTestCMAC.test_internal_caching   s     %]C8UB'((33?FFH @L As;/>@> 9:!lN3>  @ ((3#.C

5!  Wjjl3 @@s   Cc                    SnSn[         R                  " X!S S [        S9nUR                  5       nU R	                  [
        UR                  USS  5        [         R                  " X![        S9R                  5       n[         R                  " X!S S [        SS9nU R                  UR                  5       U5        UR                  USS  5        U R                  UR                  5       U5        g )Ns   rrrrttts   4444444444444444   rH   T)r?   update_after_digest)r   r/   r   rI   assertRaises	TypeErrorrL   rM   )rN   r>   r<   hdig1dig2h2s          r3   test_update_after_digest!TestCMAC.test_update_after_digest  s     HHSbq'S1xxz)QXXs12w7xxC0779 XXcr7ctLd+ 			#ab'd+r5    N)__name__
__module____qualname____firstlineno__rU   r`   __static_attributes__rb   r5   r3   r7   r7      s    4&,r5   r7   c                       \ rS rSrS rSrg)ByteArrayTestsi&  c                 F   SnSn[        U5      n[        U5      n[        R                  " X[        S9n[        R                  " X4[        S9nSUS S& SUS S& U R	                  UR                  5       UR                  5       5        [        U5      n[        U5      n[        R                  " U[        S9n[        R                  " U[        S9nUR                  U5        UR                  U5        SUS S& U R	                  UR                  5       UR                  5       5        g )N   0000000000000000    rH      r@   )	bytearrayr   r/   r   rM   rI   rL   )rN   r<   r.   key_badata_bah1r_   s          r3   runTestByteArrayTests.runTest(  s     3D/XXc3/XXf5r
biik2 3D/XXcS)XXcS)
		$
		'biik2r5   rb   Nrc   rd   re   rf   rr   rg   rb   r5   r3   ri   ri   &  s    3r5   ri   c                       \ rS rSrS rSrg)MemoryViewTestsiC  c                    SnSnS nS nX44 GH/  nU" U5      nU" U5      n[         R                  " X[        S9n[         R                  " Xg[        S9n	UR                  (       d
  SUS S& SUS S& U R	                  UR                  5       U	R                  5       5        U" U5      n[         R                  " U[        S9n[         R                  " U[        S9n	UR                  U5        U	R                  U5        UR                  (       d  SUS S& U R	                  UR                  5       U	R                  5       5        GM2     g )Nrk   rl   c                     [        U 5      $ N)
memoryviewr-   s    r3   	get_mv_ro*MemoryViewTests.runTest.<locals>.get_mv_roJ  s    d##r5   c                 *    [        [        U 5      5      $ ry   )rz   rn   r-   s    r3   	get_mv_rw*MemoryViewTests.runTest.<locals>.get_mv_rwM  s    io..r5   rH   rm   r@   )r   r/   r   readonlyrM   rI   rL   )
rN   r<   r.   r{   r~   get_mvkey_mvdata_mvrq   r_   s
             r3   rr   MemoryViewTests.runTestE  s   	$	/ !,F C[FTlG#s3B&S9B##$r
%RYY["))+6 TlG#-B#-BIIdOIIg##%RYY["))+6- -r5   rb   Nrt   rb   r5   r3   rv   rv   C  s    !7r5   rv   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestVectorsWycheproofii  c                 \    [         R                  R                  U 5        Xl        SU l        g )NNone)unittestTestCase__init___wycheproof_warnings_id)rN   wycheproof_warningss     r3   r   TestVectorsWycheproof.__init__k  s#    ""4($7!r5   c                 0    S n[        SSSSU0S9U l        g )Nc                     U S   S-  $ )NtagSize   rb   )groups    r3   
filter_tag/TestVectorsWycheproof.setUp.<locals>.filter_tagr  s    #q((r5   )Hash
wycheproofzaes_cmac_test.jsonzWycheproof CMACtag_size)	group_tag)r   tv)rN   r   s     r3   setUpTestVectorsWycheproof.setUpp  s'    	) //E/C/@:Dj9QSr5   c                     U R                   $ ry   )r   )rN   s    r3   shortDescription&TestVectorsWycheproof.shortDescriptionz  s    xxr5   c                     UR                   (       aE  U R                  (       a3  SS KnUR                  SU R                  < SUR
                  < S35        g g g )Nr   zWycheproof warning: z ())warningr   warningswarnr   comment)rN   r   r   s      r3   r   TestVectorsWycheproof.warn}  s4    ::$33MM488RZZPQ 4:r5   c                    S[        UR                  5      -   U l         [        R                  " UR
                  UR                  [        UR                  S9R                  5       nUR                  (       a-  U R                  X!R                  5        U R                  U5        g g ! [         a4  n[        UR
                  5      S;  a  S[        U5      ;   a   S nAg UeS nAff = f)NzWycheproof MAC creation Test #r?   mac_lenr=          
key length)stridr   r   r/   r<   r>   r   r   rI   
ValueErrorrK   validrM   r1   r   )rN   r   r1   es       r3   test_create_mac%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                    S[        UR                  5      -   U l         [        R                  " UR
                  UR                  [        UR                  S9n UR                  UR                  5        UR                  (       d   eU R                  U5        g ! [         a4  n[        UR
                  5      S;  a  S[        U5      ;   a   S nAg UeS nAff = f! [         a    UR                  (       a   e g f = f)Nz"Wycheproof MAC verification Test #r   r   r   )r   r   r   r   r/   r<   r>   r   r   r   rK   verifyr1   r   r   )rN   r   rS   r   s       r3   test_verify_mac%TestVectorsWycheproof.test_verify_mac  s    7#bee*D	((266266S"++NC
	JJrvv 88O8IIbM  	266{,.<3q63IG	  	 xx<x	 s/   9B C 
C#(CCCC:9C:c                 n    U R                    H%  nU R                  U5        U R                  U5        M'     g ry   )r   r   r   )rN   r   s     r3   rr   TestVectorsWycheproof.runTest  s,    ''B  $  $ r5   )r   r   r   N)rc   rd   re   rf   r   r   r   r   r   r   rr   rg   rb   r5   r3   r   r   i  s'    
SR
"%r5   r   c                    SS K nSSKJn  U R                  S5      n/ n[         H.  n[        U5      n[        US   S9US'   UR                  U5        M0     U" [        SU5      nUR                  [        5       5        UR                  [        [        5      5        UR                  [        5       5        U[        U5      /-  nU$ )Nr   r@   )make_mac_testsr   rX   rH   r   )typescommonr   get	test_datalistdictappendr   ri   r
   r7   rv   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                  >    [         R                  " [        5       5      $ ry   )r   	TestSuiter   rb   r5   r3   <lambda>r     s    H&&y{3r5   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   ri   rv   r   r   rc   r   mainrb   r5   r3   <module>r      s  D +    )  #   % 5 ? 	+
*	 	+**	 	+	 	+ 	+	+ 	+ 	
*'	**'		 	+'		+ 	+'		+
*'	+**(	+	 	+(	+	+ 	+(		 	(	 	(		 	(			 	(
	
(	(		 	(		 	(	qC	L8%,x   %,P3X&& 3:#7h'' #7L;%H-- ;%|  , z3EMMg& r5   