
    ih                        d dl Z d dlmZ d dlmZ d dlmZ  G d de j                        Z G d de j                        Z	 G d	 d
e j                        Z
 G d de j                        Zi fdZedk(  rd Z e j                  d       yy)    N)list_test_cases)load_test_vectors_wycheproof)AESc                   &    e Zd Zg dZd Zd Zd Zy)KW_Tests)) 000102030405060708090A0B0C0D0E0F 00112233445566778899AABBCCDDEEFF01FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5)0000102030405060708090A0B0C0D0E0F1011121314151617r	   096778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D)@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr	   064E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7)r   000112233445566778899AABBCCDDEEFF0001020304050607@031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2)r   r   @A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1)r   @00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0FP28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21c                    | j                   D ]  }|D cg c]  }t        j                  |       c}\  }}}t        j                  |t        j
                        }|j                  |      }| j                  ||       t        j                  |t        j
                        }|j                  |      }| j                  ||        y c c}w N)	tvsbytesfromhexr   newMODE_KWsealassertEqualunseal	selftvxkekptctcipherct2pt2s	            \/var/www/html/dev/engine/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_KW.pytest_rfc3394zKW_Tests.test_rfc3394!   s    (( 
	&B5785==+8KCRWWS#++.F++b/CR%WWS#++.F--#CR%
	&8   Cc                 8   t        j                  dt         j                        }| j                  t              5  |j                  d       d d d        | j                  t              5  |j                  d       d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)N   ----------------    s   88888888888888888)r   r   r   assertRaises
ValueErrorr   )r   r%   s     r(   	test_neg1zKW_Tests.test_neg1.   s{    CKK0z* 	KK	 z* 	#KK	"	# 	#	 		# 	#s   B)BBBc                    t        j                  dt         j                        }t        |j	                  d            }t        j                  dt         j                        }|j                  |       t        j                  dt         j                        }|dxx   dz  cc<   | j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr,   s   7777777777777777r      )r   r   r   	bytearrayr   r   r.   r/   )r   r%   r$   s      r(   	test_neg2zKW_Tests.test_neg28   s    CKK0v{{9-.CKK0bCKK0
1z* 	MM"	 	 	s   :CCN)__name__
__module____qualname__r   r)   r0   r4    r-   r(   r   r   	   s    C*&#r-   r   c                       e Zd Zd Zd Zy)KW_Wycheproofc                 (    t        ddd      | _        y )NCipher
wycheproofzkw_test.jsonzWycheproof tests for KWr   vectorsr   s    r(   setUpzKW_Wycheproof.setUpH   s    34L4B4MOr-   c                    | j                   s| j                  d       | j                   D ]  }| j                  |j                        5  t	        j
                  |j                  t        j                        }	 |j                  |j                         t	        j
                  |j                  t        j                        }	 |j                  |j                        }| j                  ||j                         d d d         y # t        $ r |j                  r Y d d d        w xY w# t        $ r |j                  r Y d d d         w xY w# 1 sw Y   .xY wNzNo test vectors available)testId)r@   skipTestsubTestidr   r   keyr   r   msgr/   validr   r$   r   r   vectorr%   r#   s       r(   test_wycheproofzKW_Wycheproof.test_wycheproofM   s   ||MM56ll 	1FVYY/ 1S[[9KK

+ S[[9vyy1B   VZZ0%1 1	1 " ||1 1
 " ||!1 11 1sT   	/E9D.ED)ED&E%D&&E)E?E
EEE	Nr5   r6   r7   rB   rN   r8   r-   r(   r:   r:   F   s    O
1r-   r:   c                       e Zd ZddgZd Zy)	KWP_Tests)05840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8(c37b7e6492584340bed12207808941155068f738@138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a)rR   466f7250617369 afbeb0f07dfbf5419200f2ccb50bb24fc                    | j                   D ]  }|D cg c]  }t        j                  |       c}\  }}}t        j                  |t        j
                        }|j                  |      }| j                  ||       t        j                  |t        j
                        }|j                  |      }| j                  ||        y c c}w r   )	r   r   r   r   r   MODE_KWPr   r   r   r   s	            r(   test_rfc5649zKWP_Tests.test_rfc5649s   s    (( 
	&B5785==+8KCRWWS#,,/F++b/CR%WWS#,,/F--#CR%
	&8r*   N)r5   r6   r7   r   rY   r8   r-   r(   rQ   rQ   h   s    	M	-	C&r-   rQ   c                       e Zd Zd Zd Zy)KWP_Wycheproofc                 (    t        ddd      | _        y )Nr<   zkwp_test.jsonzWycheproof tests for KWPr?   rA   s    r(   rB   zKWP_Wycheproof.setUp   s    34L4C4NPr-   c                    | j                   s| j                  d       | j                   D ]  }| j                  |j                        5  t	        j
                  |j                  t        j                        }	 |j                  |j                         t	        j
                  |j                  t        j                        }	 |j                  |j                        }| j                  ||j                         d d d         y # t        $ r% |j                  r|j                  s Y d d d        w xY w# t        $ r% |j                  r|j                  s Y d d d        9w xY w# 1 sw Y   GxY wrD   )r@   rF   rG   rH   r   r   rI   rX   r   rJ   r/   rK   warningr   r$   r   rL   s       r(   rN   zKWP_Wycheproof.test_wycheproof   s$   ||MM56ll 	1FVYY/ 1S\\:KK

+ S\\:vyy1B   VZZ0%1 1	1 " ||FNN1 1
 " ||FNN!1 11 1sT   	/E'9D.E'D6E'"D3'E'2D33E'6"E$E'#E$$E''E1	NrO   r8   r-   r(   r[   r[      s    P
1r-   r[   c                     g }|t        t              z  }|t        t              z  }|t        t              z  }|t        t              z  }|S r   )r   r   rQ   r:   r[   )configtestss     r(   	get_testsrb      sH    E	_X&&E	_Y''E	_]++E	_^,,ELr-   __main__c                  <    t        j                  t                     S r   )unittest	TestSuiterb   r8   r-   r(   suiterg      s    !!)+..r-   rg   )defaultTest)re   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.Cipherr   TestCaser   r:   rQ   r[   rb   r5   rg   mainr8   r-   r(   <module>rn      s     5 ? :x   :z1H%% 1D&!! &21X&& 1D   z/HMMg& r-   