o
    ]¨Êh®  ã                   @   s¦   d Z ddlZddlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlT dd	„ Zd
d„ ZG dd„ dejƒZi fdd„ZedkrQdd„ Zejdd� dS dS )z$Id$é    N)ÚRSA)Úlist_test_casesÚa2b_hexÚb2a_hex)ÚRandom)Ú
PKCS1_v1_5)Ú*c                 C   s   dD ]}|   |d¡} q| S )z6Remove white spaces, tabs, and new lines from a string)Ú
ú	ú Ú )Úreplace)ÚtÚc© r   úV/var/www/html/env/lib/python3.10/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyÚrws"   s   r   c                 C   s4   t t| ƒƒ}t|ƒd dkrt|ƒ tdƒ‚t|ƒS )z=Convert a text string with bytes in hex form to a byte stringé   é   z"Even number of characters expected)Úbr   ÚlenÚprintÚ
ValueErrorr   )r   Úcleanr   r   r   Út2b(   s
   r   c                   @   s@   e Zd Zdd„ ZdZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚPKCS1_15_Testsc                 C   s    t  ¡ j| _t d| j¡| _d S )Ni   )r   ÚnewÚreadÚrngr   ÚgenerateÚkey1024)Úselfr   r   r   ÚsetUp2   s   zPKCS1_15_Tests.setUp))av  -----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDAiAnvIAOvqVwJTaYzsKnefZftgtXGE2hPJppGsWl78yz9jeXY
W/FxX/gTPURArNhdnhP6n3p2ZaDIBrO2zizbgIXs0IsljTTcr4vnI8fMXzyNUOjA
zP3nzMqZDZK6757XQAobOssMkBFqRWwilT/3DsBhRpl3iMUhF+wvpTSHewIDAQAB
AoGAC4HV/inOrpgTvSab8Wj0riyZgQOZ3U3ZpSlsfR8ra9Ib9Uee3jCYnKscu6Gk
y6zI/cdt8EPJ4PuwAWSNJzbpbVaDvUq25OD+CX8/uRT08yBS4J8TzBitZJTD4lS7
atdTnKT0Wmwk+u8tDbhvMKwnUHdJLcuIsycts9rwJVapUtkCQQDvDpx2JMun0YKG
uUttjmL8oJ3U0m3ZvMdVwBecA0eebZb1l2J5PvI3EJD97eKe91Nsw8T3lwpoN40k
IocSVDklAkEAzi1HLHE6EzVPOe5+Y0kGvrIYRRhncOb72vCvBZvD6wLZpQgqo6c4
d3XHFBBQWA6xcvQb5w+VVEJZzw64y25sHwJBAMYReRl6SzL0qA0wIYrYWrOt8JeQ
8mthulcWHXmqTgC6FEXP9Es5GD7/fuKl4wqLKZgIbH4nqvvGay7xXLCXD/ECQH9a
1JYNMtRen5unSAbIOxRcKkWz92F0LKpm9ZW/S9vFHO+mBcClMGoKJHiuQxLBsLbT
NtEZfSJZAeS2sUtn3/0CQDb2M2zNBTF8LlM0nxmh0k9VGm5TVIyBEMcipmvOgqIs
HKukWBcq9f/UOmS0oEhai/6g+Uf7VHJdWaeO5LzuvwU=
-----END RSA PRIVATE KEY-----zTHIS IS PLAINTEXT
a÷  3f dc fd 3c cd 5c 9b 12  af 65 32 e3 f7 d0 da 36
                8f 8f d9 e3 13 1c 7f c8  b3 f9 c1 08 e4 eb 79 9c
                91 89 1f 96 3b 94 77 61  99 a4 b1 ee 5d e6 17 c9
                5d 0a b5 63 52 0a eb 00  45 38 2a fb b0 71 3d 11
                f7 a1 9e a7 69 b3 af 61  c0 bb 04 5b 5d 4b 27 44
                1f 5b 97 89 ba 6a 08 95  ee 4f a2 eb 56 64 e5 0f
                da 7c f9 9a 61 61 06 62  ed a0 bc 5f aa 6c 31 78
                70 28 1a bb 98 3c e3 6a  60 3c d1 0b 0f 5a f4 75a   eb d7 7d 86 a4 35 23 a3 54 7e 02 0b 42 1d
                61 6c af 67 b8 4e 17 56 80 66 36 04 64 34 26 8a
                47 dd 44 b3 1a b2 17 60 f4 91 2e e2 b5 95 64 cc
                f9 da c8 70 94 54 86 4c ef 5b 08 7d 18 c4 ab 8d
                04 06 33 8f ca 15 5f 52 60 8a a1 0c f5 08 b5 4c
                bb 99 b8 94 25 04 9c e6 01 75 e6 f9 63 7a 65 61
                13 8a a7 47 77 81 ae 0d b8 2c 4d 50 a5c                 C   sn   | j D ]1}t |d ¡}G dd„ dƒ}|t|d ƒƒ|_t |¡}| t|d ƒ¡}|  	|t|d ƒ¡ qd S )Nr   c                   @   s   e Zd Zdd„ Zdd„ ZdS )z,PKCS1_15_Tests.testEncrypt1.<locals>.randGenc                 S   s   || _ d| _d S )Nr   ©ÚdataÚidx)r!   r$   r   r   r   Ú__init__p   s   
z5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__init__c                 S   s"   | j | j|… }|  j|7  _|S ©Nr#   )r!   ÚNÚrr   r   r   Ú__call__s   s   z5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__call__N)Ú__name__Ú
__module__Ú__qualname__r&   r*   r   r   r   r   ÚrandGeno   s    r.   é   r   r   )
Ú	_testDatar   Ú	importKeyr   Ú	_randfuncÚPKCSr   Úencryptr   ÚassertEqual)r!   ÚtestÚkeyr.   ÚcipherÚctr   r   r   ÚtestEncrypt1i   s   
	
ïzPKCS1_15_Tests.testEncrypt1c                 C   s$   d}t  | j¡}|  t|j|¡ d S )Nzv                                                                                                                      )r3   r   r    ÚassertRaisesr   r4   )r!   Úptr8   r   r   r   ÚtestEncrypt2}   s   zPKCS1_15_Tests.testEncrypt2c                 C   sP   | j D ]"}t |d ¡}t |¡}| t|d ƒd¡}|  |t|d ƒ¡ qd S )Nr   r   ú---r   )	r0   r   r1   r3   r   Údecryptr   r5   r   )r!   r6   r7   r8   r<   r   r   r   ÚtestVerify1ƒ   s   

úzPKCS1_15_Tests.testVerify1c                 C   sz   t  | j¡}|  t|jdd¡ |  t|jdd¡ tdƒ}| j |d¡d }tddt|ƒ  ƒ| }|  	d| |d¡¡ d S )Nz                                                                                                                               r>   z�                                                                                                                                 u‡    Ã¿Ã¿Ã¿Ã¿Ã¿Ã¿Ã¿ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEr   ú é€   )
r3   r   r    r;   r   r?   r   r4   r   r5   )r!   r8   r<   r9   r   r   r   ÚtestVerify2Œ   s   zPKCS1_15_Tests.testVerify2c                 C   sL   t ddƒD ]}|  |¡}t | j¡}| |¡}| |d¡}|  ||¡ qd S )Nr   év   r>   )Úranger   r3   r   r    r4   r?   r5   )r!   Úpt_lenr<   r8   r9   Úpt2r   r   r   ÚtestEncryptVerify1š   s   

ûz!PKCS1_15_Tests.testEncryptVerify1N)
r+   r,   r-   r"   r0   r:   r=   r@   rC   rH   r   r   r   r   r   0   s    ,	r   c                 C   s   g }|t tƒ7 }|S r'   )r   r   )ÚconfigÚtestsr   r   r   Ú	get_tests¥   s   rK   Ú__main__c                   C   s   t  tƒ ¡S r'   )ÚunittestÚ	TestSuiterK   r   r   r   r   Ú<lambda>«   s    rO   Úsuite)ÚdefaultTest)Ú__revision__rM   ÚsysÚCrypto.PublicKeyr   ÚCrypto.SelfTest.st_commonr   r   r   ÚCryptor   ÚCrypto.Cipherr   r3   ÚCrypto.Util.py3compatr   r   ÚTestCaser   rK   r+   rP   Úmainr   r   r   r   Ú<module>   s    uþ