o
    F+ 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))Z 000102030405060708090A0B0C0D0E0F 00112233445566778899AABBCCDDEEFFZ01FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5)0000102030405060708090A0B0C0D0E0F1011121314151617r   Z096778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D)@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr   Z064E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7)r   000112233445566778899AABBCCDDEEFF0001020304050607Z@031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2)r   r	   Z@A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1)r   Z@00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0FZP28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21c                 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   j/home/app/PaddleOCR-VL-test/.venv_paddleocr/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tvZkekptctcipherZct2Z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   r&   r'   )r   r!   r    r   r   r   	test_neg28   s   
"zKW_Tests.test_neg2N)__name__
__module____qualname__r   r"   r(   r+   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ZCipherZ
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)ZtestId)r4   skipTestsubTestidr   r   keyr   r   msgr'   validr   r    r   r   Zvectorr!   r   r   r   r   test_wycheproofM   s4   

zKW_Wycheproof.test_wycheproofNr,   r-   r.   r6   r@   r   r   r   r   r0   F       r0   c                   @   s   e Zd ZddgZdd ZdS )	KWP_Tests)05840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8Z(c37b7e6492584340bed12207808941155068f738Z@138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a)rD   Z466f7250617369Z 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)r,   r-   r.   r   rF   r   r   r   r   rC   h   s
    	rC   c                   @   r/   )KWP_Wycheproofc                 C   r1   )Nr2   zkwp_test.jsonzWycheproof tests for KWPr3   r5   r   r   r   r6      r7   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 r8   )r4   r9   r:   r;   r   r   r<   rE   r   r=   r'   r>   warningr   r    r   r?   r   r   r   r@      s4   

zKWP_Wycheproof.test_wycheproofNrA   r   r   r   r   rG      rB   rG   c                 C   s8   g }|t t7 }|t t7 }|t t7 }|t t7 }|S N)r   r   rC   r0   rG   )configtestsr   r   r   	get_tests   s   rL   __main__c                   C   s   t t S rI   )unittestZ	TestSuiterL   r   r   r   r   suite   s   rO   )ZdefaultTest)rN   ZCrypto.SelfTest.st_commonr   ZCrypto.SelfTest.loaderr   ZCrypto.Cipherr   ZTestCaser   r0   rC   rG   rL   r,   rO   mainr   r   r   r   <module>   s    =""	