
    1xh                        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           dS dS )    N)list_test_cases)load_test_vectors_wycheproof)AESc                   (    e Zd Zg dZd Zd Zd ZdS )KW_Tests)) 000102030405060708090A0B0C0D0E0F 00112233445566778899AABBCCDDEEFF01FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5)0000102030405060708090A0B0C0D0E0F1011121314151617r	   096778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D)@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr	   064E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7)r   000112233445566778899AABBCCDDEEFF0001020304050607@031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2)r   r   @A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1)r   @00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0FP28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21c                 b   | j         D ]}d |D             \  }}}t          j        |t          j                  }|                    |          }|                     ||           t          j        |t          j                  }|                    |          }|                     ||           d S )Nc                 B    g | ]}t                               |          S  bytesfromhex.0xs     ^/home/visionen/capture/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/Cipher/test_KW.py
<listcomp>z)KW_Tests.test_rfc3394.<locals>.<listcomp>#   $    8885==++888    )tvsr   newMODE_KWsealassertEqualunsealselftvkekptctcipherct2pt2s           r   test_rfc3394zKW_Tests.test_rfc3394!   s    ( 
	& 
	&B88R888KCRWS#+..F++b//CR%%%WS#+..F--##CR%%%%
	& 
	&r    c                 b   t          j        dt           j                  }|                     t                    5  |                    d           d d d            n# 1 swxY w Y   |                     t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )N   ----------------r    s   88888888888888888)r   r"   r#   assertRaises
ValueErrorr$   )r(   r-   s     r   	test_neg1zKW_Tests.test_neg1.   s   CK00z** 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z** 	# 	#KK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s#   AA #A B$$B(+B(c                    t          j        dt           j                  }t          |                    d                    }t          j        dt           j                  }|                    |           t          j        dt           j                  }|dxx         dz  cc<   |                     t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr2   s   7777777777777777r      )r   r"   r#   	bytearrayr$   r&   r3   r4   )r(   r-   r,   s      r   	test_neg2zKW_Tests.test_neg28   s   CK00v{{9--..CK00bCK00
1z** 	 	MM"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?C""C&)C&N)__name__
__module____qualname__r!   r0   r5   r9   r   r    r   r   r   	   sR          C*& & &# # #    r    r   c                       e Zd Zd Zd ZdS )KW_Wycheproofc                 2    t          ddd          | _        d S )NCipher
wycheproofzkw_test.jsonzWycheproof tests for KWr   vectorsr(   s    r   setUpzKW_Wycheproof.setUpH   s"    34L4B4MO Or    c                 ~   | j         s|                     d           | j         D ]}|                     |j                  5  t	          j        |j        t          j                  }	 |                    |j	                   n## t          $ r |j        r Y d d d            ~w xY wt	          j        |j        t          j                  }	 |                    |j                  }n## t          $ r |j        r Y d d d            w xY w|                     ||j	                   d d d            n# 1 swxY w Y   d S NzNo test vectors available)testId)rD   skipTestsubTestidr   r"   keyr#   r$   msgr4   validr&   r,   r%   r(   vectorr-   r+   s       r   test_wycheproofzKW_Wycheproof.test_wycheproofM   s   | 	7MM5666l 	1 	1FVY// 1 1S[99KK
++++!   | 1 1 1 1 1 1 1

 S[99vy11BB!   | !1 1 1 1 1 1 1
   VZ000%1 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1sZ   %D0(BD0B#D0"B##'D0C&%D0&D8D0DD00D4	7D4	Nr:   r;   r<   rF   rR   r   r    r   r>   r>   F   s5        O O O
1 1 1 1 1r    r>   c                       e Zd ZddgZd ZdS )	KWP_Tests)05840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8(c37b7e6492584340bed12207808941155068f738@138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a)rV   466f7250617369 afbeb0f07dfbf5419200f2ccb50bb24fc                 b   | j         D ]}d |D             \  }}}t          j        |t          j                  }|                    |          }|                     ||           t          j        |t          j                  }|                    |          }|                     ||           d S )Nc                 B    g | ]}t                               |          S r   r   r   s     r   r   z*KWP_Tests.test_rfc5649.<locals>.<listcomp>u   r   r    )r!   r   r"   MODE_KWPr$   r%   r&   r'   s           r   test_rfc5649zKWP_Tests.test_rfc5649s   s    ( 
	& 
	&B88R888KCRWS#,//F++b//CR%%%WS#,//F--##CR%%%%
	& 
	&r    N)r:   r;   r<   r!   r^   r   r    r   rU   rU   h   s5        	M	-	C& & & & &r    rU   c                       e Zd Zd Zd ZdS )KWP_Wycheproofc                 2    t          ddd          | _        d S )Nr@   zkwp_test.jsonzWycheproof tests for KWPrC   rE   s    r   rF   zKWP_Wycheproof.setUp   s"    34L4C4NP Pr    c                    | j         s|                     d           | j         D ]%}|                     |j                  5  t	          j        |j        t          j                  }	 |                    |j	                   n*# t          $ r |j        r|j        s Y d d d            w xY wt	          j        |j        t          j                  }	 |                    |j                  }n*# t          $ r |j        r|j        s Y d d d            w xY w|                     ||j	                   d d d            n# 1 swxY w Y   'd S rH   )rD   rJ   rK   rL   r   r"   rM   r]   r$   rN   r4   rO   warningr&   r,   r%   rP   s       r   rR   zKWP_Wycheproof.test_wycheproof   s   | 	7MM5666l 	1 	1FVY// 1 1S\::KK
++++!   | FN 1 1 1 1 1 1 1

 S\::vy11BB!   | FN !1 1 1 1 1 1 1
   VZ000%1 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1sZ   %D>(BD>B*D>)B**'D>C-,D>-DD>DD>>E	E	NrS   r   r    r   r`   r`      s5        P P P
1 1 1 1 1r    r`   c                     g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|S N)r   r   rU   r>   r`   )configtestss     r   	get_testsrh      sT    E	_X&&&E	_Y'''E	_]+++E	_^,,,ELr    __main__c                  B    t          j        t                                S re   )unittest	TestSuiterh   r   r    r   suiterm      s    !)++...r    rm   )defaultTest)rk   Cryptodome.SelfTest.st_commonr   Cryptodome.SelfTest.loaderr   Cryptodome.Cipherr   TestCaser   r>   rU   r`   rh   r:   rm   mainr   r    r   <module>rt      sS    9 9 9 9 9 9 C C C C C C ! ! ! ! ! !: : : : :x  : : :z1 1 1 1 1H% 1 1 1D& & & & &! & & &21 1 1 1 1X& 1 1 1D      z/ / /HMg&&&&&& r    