o
    i                     @   s   d dl Z d dlmZ d dlmZ d dlmZ G dd de jZG dd de jZ	G d	d
 d
e jZ
G dd de jZi fddZedkrPdd Ze jdd dS dS )    N)list_test_cases)load_test_vectors_wycheproof)AESc                   @   s,   e Zd Zg dZdd Zdd Zdd ZdS )	KW_Tests)) 000102030405060708090A0B0C0D0E0F 00112233445566778899AABBCCDDEEFF01FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5)0000102030405060708090A0B0C0D0E0F1011121314151617r   096778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D)@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr   064E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7)r	   000112233445566778899AABBCCDDEEFF0001020304050607@031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2)r   r   @A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1)r   @00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0FP28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21c                 C   l   | j D ]0}dd |D \}}}t|tj}||}| || t|tj}||}| || qd S )Nc                 S      g | ]}t |qS  bytesfromhex.0xr   r   R/home/ubuntu/.local/lib/python3.10/site-packages/Crypto/SelfTest/Cipher/test_KW.py
<listcomp>#       z)KW_Tests.test_rfc3394.<locals>.<listcomp>)tvsr   newMODE_KWsealassertEqualunsealselftvkekptctcipherct2pt2r   r   r   test_rfc3394!      


zKW_Tests.test_rfc3394c                 C   s|   t dt j}| t |d W d    n1 sw   Y  | t |d W d    d S 1 s7w   Y  d S )N   ----------------    s   88888888888888888)r   r   r    assertRaises
ValueErrorr!   )r%   r*   r   r   r   	test_neg1.   s   "zKW_Tests.test_neg1c                 C   s   t dt j}t|d}t dt j}|| t dt j}|d  dN  < | t || W d    d S 1 s?w   Y  d S )Nr/   s   7777777777777777r      )r   r   r    	bytearrayr!   r#   r1   r2   )r%   r*   r)   r   r   r   	test_neg28   s   
"zKW_Tests.test_neg2N)__name__
__module____qualname__r   r-   r3   r6   r   r   r   r   r   	   s
    
r   c                   @      e Zd Zdd Zdd ZdS )KW_Wycheproofc                 C      t ddd| _d S )NCipher
wycheproofzkw_test.jsonzWycheproof tests for KWr   vectorsr%   r   r   r   setUpH      
zKW_Wycheproof.setUpc              
   C   s   | j s| d | j D ]h}| j|jdW t|jtj}z||j	 W n t
y8   |jr0 Y W d    qw t|jtj}z||j}W n t
y\   |jrT Y W d    qw | ||j	 W d    n1 snw   Y  qd S NzNo test vectors available)testId)rA   skipTestsubTestidr   r   keyr    r!   msgr2   validr#   r)   r"   r%   vectorr*   r(   r   r   r   test_wycheproofM   s4   

zKW_Wycheproof.test_wycheproofNr7   r8   r9   rC   rO   r   r   r   r   r;   F       r;   c                   @   s   e Zd ZddgZdd ZdS )	KWP_Tests)05840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8(c37b7e6492584340bed12207808941155068f738@138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a)rS   466f7250617369 afbeb0f07dfbf5419200f2ccb50bb24fc                 C   r   )Nc                 S   r   r   r   r   r   r   r   r   u   r   z*KWP_Tests.test_rfc5649.<locals>.<listcomp>)r   r   r   MODE_KWPr!   r"   r#   r$   r   r   r   test_rfc5649s   r.   zKWP_Tests.test_rfc5649N)r7   r8   r9   r   rY   r   r   r   r   rR   h   s
    	rR   c                   @   r:   )KWP_Wycheproofc                 C   r<   )Nr=   zkwp_test.jsonzWycheproof tests for KWPr@   rB   r   r   r   rC      rD   zKWP_Wycheproof.setUpc              
   C   s   | j s| d | j D ]n}| j|jd] t|jtj}z||j	 W n t
y;   |jr3|js3 Y W d    qw t|jtj}z||j}W n t
yb   |jrZ|jsZ Y W d    qw | ||j	 W d    n1 stw   Y  qd S rE   )rA   rG   rH   rI   r   r   rJ   rX   r!   rK   r2   rL   warningr#   r)   r"   rM   r   r   r   rO      s4   

zKWP_Wycheproof.test_wycheproofNrP   r   r   r   r   rZ      rQ   rZ   c                 C   s8   g }|t t7 }|t t7 }|t t7 }|t t7 }|S N)r   r   rR   r;   rZ   )configtestsr   r   r   	get_tests   s   r_   __main__c                   C   s   t t S r\   )unittest	TestSuiter_   r   r   r   r   suite   s   rc   )defaultTest)ra   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.Cipherr   TestCaser   r;   rR   rZ   r_   r7   rc   mainr   r   r   r   <module>   s    =""	