o
    5ÎhP1  ã                   @   sŠ   d Z dZddlZddlZddlmZ ddlT ddlZddlmZm	Z	m
Z
 G dd„ dejƒZi fd	d
„ZedkrCdd„ Zejdd dS dS )z(Self-test suite for Crypto.PublicKey.RSAz$Id$é    N)ÚPicklingError)Ú*)Úlist_test_casesÚa2b_hexÚb2a_hexc                   @   sà   e Zd ZdZdZdZdZdZdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6S )7ÚRSATestaÅ  
           eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2
        ca 82 31 0b 26 dc d8 7d 5c 68 f1 ee a8 f5 52 67
        c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c0 46 26 f5 af
        f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db
        4c dc fe 4f f4 77 28 b4 a1 b7 c1 36 2b aa d2 9a
        b4 8d 28 69 d5 02 41 21 43 58 11 59 1b e3 92 f9
        82 fb 3e 87 d0 95 ae b4 04 48 db 97 2f 3a c1 4f
        7b c2 75 19 52 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d
    aÅ  
        12 53 e0 4d c0 a5 39 7b b4 4a 7a b8 7e 9b f2 a0
        39 a3 3d 1e 99 6f c8 2a 94 cc d3 00 74 c9 5d f7
        63 72 20 17 06 9e 52 68 da 5d 1c 0b 4f 87 2c f6
        53 c1 1d f8 23 14 a6 79 68 df ea e2 8d ef 04 bb
        6d 84 b1 c3 1d 65 4a 19 70 e5 78 3b d6 eb 96 a0
        24 c2 ca 2f 4a 90 fe 9f 2e f5 c9 c1 40 e5 bb 48
        da 95 36 ad 87 00 c8 4f c9 13 0a de a7 4e 55 8d
        51 a7 4d df 85 d8 b5 0d e9 68 38 d6 06 3e 09 55
    aÅ  
        bb f8 2f 09 06 82 ce 9c 23 38 ac 2b 9d a8 71 f7
        36 8d 07 ee d4 10 43 a4 40 d6 b6 f0 74 54 f5 1f
        b8 df ba af 03 5c 02 ab 61 ea 48 ce eb 6f cd 48
        76 ed 52 0d 60 e1 ec 46 19 71 9d 8a 5b 8b 80 7f
        af b8 e0 a3 df c7 37 72 3e e6 b4 b7 d9 3a 25 84
        ee 6a 64 9d 06 09 53 74 88 34 b2 45 45 98 39 4e
        e0 aa b1 2d 7b 61 a5 1f 52 7a 9a 41 f6 c1 68 7f
        e2 53 72 98 ca 2a 8f 59 46 f8 e5 fd 09 1d bd cb
    é   zå
        c9 7f b1 f0 27 f4 53 f6 34 12 33 ea aa d1 d9 35
        3f 6c 42 d0 88 66 b1 d0 5a 0f 20 35 02 8b 9d 86
        98 40 b4 16 66 b4 2e 92 ea 0d a3 b4 32 04 b5 cf
        ce 33 52 52 4d 04 16 a5 a4 41 e7 00 af 46 15 03
    c                 C   sŽ   ddl ma ddlma ddlmam} tt| jƒƒ| _	tt| j
ƒƒ| _| j	| j | _|| j| jd | jd  ƒ| _|| j| jƒ| _t| _d S )Nr   )ÚRSA)ÚRandom)Úbytes_to_longÚinverseé   )ÚCrypto.PublicKeyr	   ÚCryptor
   ÚCrypto.Util.numberr   r   r   ÚmodulusÚnÚprime_factorÚpÚqÚeÚdÚuÚrsa)Úselfr   © r   úv/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/PublicKey/test_RSA.pyÚsetUpY   s   
zRSATest.setUpc                 C   s@   | j  d¡}|  |¡ |  |¡ | ¡ }|  |¡ |  |¡ dS )z7RSA (default implementation) generated key (1 argument)é   N)r   ÚgenerateÚ_check_private_keyÚ_exercise_primitiveÚ
public_keyÚ_check_public_keyÚ_exercise_public_primitive©r   ÚrsaObjÚpubr   r   r   Útest_generate_1argh   s   


zRSATest.test_generate_1argc                 C   sH   | j  dt ¡ j¡}|  |¡ |  |¡ | ¡ }|  |¡ |  	|¡ dS )z8RSA (default implementation) generated key (2 arguments)r   N)
r   r   r
   ÚnewÚreadr    r!   r"   r#   r$   r%   r   r   r   Útest_generate_2argq   s   


zRSATest.test_generate_2argc                 C   sZ   | j jdt ¡ jdd}|  |¡ |  |¡ | ¡ }|  |¡ |  	|¡ |  
d|j¡ d S )Nr   i  )r   )r   r   r
   r)   r*   r    r!   r"   r#   r$   ÚassertEqualr   r%   r   r   r   Útest_generate_3argsz   s   



zRSATest.test_generate_3argsc                 C   s,   | j  | j| jf¡}|  |¡ |  |¡ dS )z6RSA (default implementation) constructed key (2-tuple)N)r   Ú	constructr   r   r#   Ú_check_encryption©r   r'   r   r   r   Útest_construct_2tupleƒ   s   
zRSATest.test_construct_2tuplec                 C   s0   | j  | j| j| jf¡}|  |¡ |  |¡ dS )z6RSA (default implementation) constructed key (3-tuple)N)r   r.   r   r   r   r/   Ú_check_decryption©r   r&   r   r   r   Útest_construct_3tuple‰   s   
zRSATest.test_construct_3tuplec                 C   s4   | j  | j| j| j| jf¡}|  |¡ |  |¡ dS )z6RSA (default implementation) constructed key (4-tuple)N)r   r.   r   r   r   r   r/   r2   r3   r   r   r   Útest_construct_4tuple   s   
zRSATest.test_construct_4tuplec                 C   sB   | j  | j| j| j| j| jf¡}|  |¡ |  |¡ |  	|¡ dS )z6RSA (default implementation) constructed key (5-tuple)N)
r   r.   r   r   r   r   r   r    r/   r2   r3   r   r   r   Útest_construct_5tuple•   s    

zRSATest.test_construct_5tuplec                 C   sF   | j  | j| j| j| j| j| jf¡}|  |¡ |  	|¡ |  
|¡ dS )z6RSA (default implementation) constructed key (6-tuple)N)r   r.   r   r   r   r   r   r   r    r/   r2   r3   r   r   r   Útest_construct_6tupleœ   s   $

zRSATest.test_construct_6tuplec                 C   sB   | j df}|  t| jj|¡ | j d | jf}|  t| jj|¡ d S ©Nr   )r   ÚassertRaisesÚ
ValueErrorr   r.   r   ©r   Útupr   r   r   Útest_construct_bad_key2£   s   
zRSATest.test_construct_bad_key2c                 C   s*   | j | j| jd f}|  t| jj|¡ d S r8   )r   r   r   r9   r:   r   r.   r;   r   r   r   Útest_construct_bad_key3«   s   zRSATest.test_construct_bad_key3c                 C   s„   | j | j| j| j| jf}|  t| jj|¡ | j| j | j| j| jf}|  t| jj|¡ | j| j d| j| jf}|  t| jj|¡ d S )Né   )	r   r   r   r   r9   r:   r   r.   r   r;   r   r   r   Útest_construct_bad_key5¯   s   zRSATest.test_construct_bad_key5c                 C   sr   | j | j| j| j| jdf}|  t| jj|¡ ddl	m
} | j | j| j| j| j|| j| jƒf}|  t| jj|¡ d S )Né
   r   )r   )r   r   r   r   r   r9   r:   r   r.   r   r   )r   r<   r   r   r   r   Útest_construct_bad_key6¹   s
   $zRSATest.test_construct_bad_key6c                 C   s’   | j  | j| j| jg¡}|  |j| jkp|j| jk¡ |  |j| jkp(|j| jk¡ |  |j|j | jk¡ |  t	| j j| j| j| jd g¡ d S r8   )
r   r.   r   r   r   Ú
assertTruer   r   r9   r:   r3   r   r   r   Útest_factoringÁ   s
   &zRSATest.test_factoringc                 C   s,   | j  | j| j| j| j| jf¡}t|ƒ d S ©N)r   r.   r   r   r   r   r   Úreprr3   r   r   r   Ú	test_reprÉ   s    zRSATest.test_reprc                 C   s    | j  d¡}|  ttj|¡ dS )zRSA keys are unpickabler   N)r   r   r9   r   ÚpickleÚdumps)r   Úrsa_keyr   r   r   Útest_serializationÍ   s   zRSATest.test_serializationc                 C   sv   | j  d¡}|  t|j|j¡ |  t|j|j¡ |  t|j|j¡ |  t|jd¡ |  t|jd¡ |  t|jd¡ d S )Nr   éÿÿÿÿ)r   r   r9   r:   Ú_decryptr   Ú_decrypt_to_bytesÚ_encrypt)r   Úrsa_objr   r   r   Útest_raw_rsa_boundaryÓ   s   zRSATest.test_raw_rsa_boundaryc                 C   s8   | j  | j| jf¡}|  | ¡ d¡ |  | ¡ d¡ d S )Nr   é€   )r   r.   r   r   r,   Úsize_in_bitsÚsize_in_bytesr0   r   r   r   Ú	test_sizeà   s   zRSATest.test_sizec                 C   sø   ddl m} |  d| ¡ ¡ |  |j|j|j ¡ t||jd ƒ |jd ¡ƒ}|  d|j	|j
 | ¡ |  d|j|j |j ¡ |  d|jdk¡ |  d|jdk¡ |  d|j
dk¡ |  d|j	dk¡ |  |j|j¡ |  d|j|j |j ¡ d S )Nr   )ÚIntegerr   )ÚCrypto.Math.NumbersrV   r,   Úhas_privater   r   r   ÚintÚlcmr   r   r   ÚinvpÚinvq)r   r&   rV   rZ   r   r   r   r    å   s   zRSATest._check_private_keyc                 C   s  t | jƒ}|  d| ¡ ¡ |  |j|j¡ |  |j|j¡ |  dt|dƒ¡ |  dt|dƒ¡ |  dt|dƒ¡ |  dt|dƒ¡ |  d|jdk¡ |  t|j	t
|ƒ¡ |  t|jt
|ƒ¡ |  | ¡ | ¡ kd¡ |  | ¡ | ¡ kd¡ |  | ¡ | ¡ ¡ d S )	Nr   r   r   r   r   r   TF)r   Ú
ciphertextr,   rX   r   r   Úhasattrr9   Ú	TypeErrorrM   r   rN   r"   Ú	publickey)r   r&   r]   r   r   r   r#   ø   s$   

ÿ
ÿzRSATest._check_public_keyc                 C   s2   t t| jƒƒ}| |¡}| |¡}|  ||¡ d S rE   )r   r   r]   rM   rO   r,   )r   r&   r]   Ú	plaintextÚnew_ciphertext2r   r   r   r!     s   

zRSATest._exercise_primitivec                 C   s   t | jƒ}| t|ƒ¡}d S rE   )r   ra   rO   r   )r   r&   ra   rb   r   r   r   r$   $  s   
z"RSATest._exercise_public_primitivec                 C   s6   t | jƒ}t | jƒ}| t|ƒ¡}|  t|ƒ|¡ d S rE   )r   ra   r]   rO   r   r,   )r   r&   ra   r]   rb   r   r   r   r/   *  s   

zRSATest._check_encryptionc                 C   s6   t t| jƒƒ}t t| jƒƒ}| |¡}|  ||¡ d S rE   )r   r   ra   r]   rM   r,   )r   r&   ra   r]   Únew_plaintextr   r   r   r2   2  s   
zRSATest._check_decryptionN) Ú__name__Ú
__module__Ú__qualname__ra   r]   r   r   r   r   r(   r+   r-   r1   r4   r5   r6   r7   r=   r>   r@   rB   rD   rG   rK   rQ   rU   r    r#   r!   r$   r/   r2   r   r   r   r   r   %   s<    
			
r   c                 C   s   g }|t tƒ7 }|S rE   )r   r   )ÚconfigÚtestsr   r   r   Ú	get_tests;  s   ri   Ú__main__c                   C   s   t  tƒ ¡S rE   )ÚunittestÚ	TestSuiteri   r   r   r   r   Ú<lambda>A  s    rm   Úsuite)ÚdefaultTest)Ú__doc__Ú__revision__ÚosrH   r   ÚCrypto.Util.py3compatrk   ÚCrypto.SelfTest.st_commonr   r   r   ÚTestCaser   ri   rd   rn   Úmainr   r   r   r   Ú<module>   s      þ