o
    Þý°jö  ã                   @   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Ú 00112233445566778899AABBCCDDEEFFÚ01FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5)Ú0000102030405060708090A0B0C0D0E0F1011121314151617r   Ú096778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D)Ú@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr   Ú064E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7)r	   Ú000112233445566778899AABBCCDDEEFF0001020304050607Ú@031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2)r   r   Ú@A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1)r   Ú@00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0FÚP28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21c                 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   ú•/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/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   ÚCryptodome.SelfTest.st_commonr   ÚCryptodome.SelfTest.loaderr   ÚCryptodome.Cipherr   ÚTestCaser   r;   rR   rZ   r_   r7   rc   Úmainr   r   r   r   Ú<module>   s    =""	ý