
    ,h*                        d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZ d
 Zd Z G d dej,                        Z G d dej,                        Zi fdZedk(  rd Z ej8                  d       yy)    )print_functionN)RSA)list_test_casesa2b_hex)Random)
PKCS1_v1_5)b)bytes_to_longlong_to_bytesload_test_vectors_wycheproofc                 8    dD ]  }| j                  |d      }  | S )z6Remove white spaces, tabs, and new lines from a string)
	  )replace)tcs     f/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyrwsr   $   s&     IIaH    c                 x    t        t        |             }t        |      dz  dk(  rt        d      t	        |      S )z=Convert a text string with bytes in hex form to a byte string      z"Even number of characters expected)r	   r   len
ValueErrorr   )r   cleans     r   t2br   +   s5    c!fIE
5zA~=>>5>r   c                   L    e Zd Zd ZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)PKCS1_15_Testsc                     t        j                         j                  | _        t	        j
                  d| j                        | _        y )Ni   )r   newreadrngr   generatekey1024selfs    r   setUpzPKCS1_15_Tests.setUp5   s+    !::<,,"||D$((;r   ))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           
      2   | j                   D ]  }t        j                  |d         } G d d      }t        j                  | |t        |d                     }|j                  t        |d               }| j                  |t        |d                 y )Nr   c                       e Zd Zd Zd Zy),PKCS1_15_Tests.testEncrypt1.<locals>.randGenc                      || _         d| _        y )Nr   dataidx)r)   r0   s     r   __init__z5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__init__s   s    ,0	+,r   c                 |    | j                   | j                  | j                  |z    }| xj                  |z  c_        |S Nr/   )r)   Nrs      r   __call__z5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__call__v   s0    $(IIdhhtxxz$B $A'(r   N)__name__
__module____qualname__r2   r7    r   r   randGenr-   r   s    -)r   r<      )randfuncr   r   )		_testDatar   	importKeyPKCSr#   r   encryptr	   assertEqual)r)   testkeyr<   ciphercts         r   testEncrypt1zPKCS1_15_Tests.testEncrypt1l   s~     NN ;D!mmDG4) ) "&#DG8M!N#^^Ad1gJ7((Sa\:!;r   c                     d}t        j                  | j                        }| j                  t        |j
                  |       y )Nzv                                                                                                                      )rA   r#   r'   assertRaisesr   rB   )r)   ptrF   s      r   testEncrypt2zPKCS1_15_Tests.testEncrypt2   s/    &$,,/!!*fnnbAr   c                 `   | j                   D ]  }t        j                  |d         }t        |d         }t	        |d         }t        j                  |      }|j                  |d       }| j                  ||       |j                  |dt        |      z        }| j                  ||        y )Nr   r   r      )
r?   r   r@   r	   r   rA   r#   decryptrC   r   )r)   rD   rE   expected_ptrG   rF   rK   s          r   testVerify1zPKCS1_15_Tests.testVerify1   s     2mmDG,Qja\# ^^B-  [1^^B#k2B(BC  [12r   c                    t        j                  | j                        }| j                  t        |j
                  dd       | j                  t        |j
                  dd       t        d      }t        |      }| j                  j                  |      }t        |d      }| j                  d|j                  |d             y )Nz                                                                                                                               z---z                                                                                                                                 u    ÿÿÿÿÿÿÿ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE   s   ---)rA   r#   r'   rJ   r   rO   r	   r
   _encryptr   rC   )r)   rF   rK   pt_intct_intrG   s         r   testVerify2zPKCS1_15_Tests.testVerify2   s     XXdll+Fj&..*eLj&..*eL >?B"2&F\\**62Fvs+BVV^^B%?@r   c                     t        dd      D ]j  }| j                  |      }t        j                  | j                        }|j                  |      }|j                  |d|z        }| j                  ||       l y )Nr   v      )ranger%   rA   r#   r'   rB   rO   rC   )r)   pt_lenrK   rF   rG   pt2s         r   testEncryptVerify1z!PKCS1_15_Tests.testEncryptVerify1   sm      <0 *XXf%$,,/^^B'nnR6)9:  S)*r   c                 J   t        j                  | j                        }d}|j                  |      }d}|j	                  ||d      }| j                  ||       |j	                  ||d      }| j                  ||       |j	                  ||d      }| j                  ||       y )Ns   5555555555555555s            )rA   r#   r'   rB   rO   rC   )r)   rF   rK   rG   sentinelpt_Apt_Bpt_Cs           r   test_encrypt_verify_exp_pt_lenz-PKCS1_15_Tests.test_encrypt_verify_exp_pt_len   s    XXdll+FB#B#H>>"h3DR&>>"h3DXt,>>"h3DXt,r   c                     d}t        j                  | j                        }|j                  t	        |            }|j                  t	        |      dt        |      z        }| j                  ||       y )N   XER   ÿ)rA   r#   r'   rB   	bytearrayrO   r   rC   r)   rK   rF   rG   r]   s        r   testByteArrayzPKCS1_15_Tests.testByteArray   sX    BXXdll+F	".B..2R0@ACR%r   c                    d}t        j                  | j                        }|j                  t	        t        |                  }|j                  t	        t        |            dt        |      z        }| j                  ||       y )Nri   rN   )	rA   r#   r'   rB   
memoryviewrk   rO   r   rC   rl   s        r   testMemoryviewzPKCS1_15_Tests.testMemoryview   sb    BXXdll+F
9R= 9:B..IbM!:Gc"g<MNCR%r   c                    d}t        j                  | j                        }|j                  |      }| j	                  t        |t                     |j                  |d      }| j	                  t        |t                     y )Ns   XYZs   )rA   r#   r'   rB   
assertTrue
isinstancebytesrO   rl   s        r   test_return_typezPKCS1_15_Tests.test_return_type   s]    BXXdll+F#BOOJr512..[1COOJsE23r   N)r8   r9   r:   r*   r?   rH   rL   rQ   rW   r^   rg   rm   rp   ru   r;   r   r   r!   r!   3   s>    	<*
	X	;&	B	2	A	*	- 	&	&	4r   r!   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestVectorsWycheproofc                 l    t         j                  j                  |        || _        || _        d| _        y )NNone)unittestTestCaser2   _wycheproof_warnings_skip_slow_tests_id)r)   wycheproof_warningsskip_slow_testss      r   r2   zTestVectorsWycheproof.__init__   s-    ""4($7! /r   c                 4    d }t        d|d|z  d|i      }|S )Nc                 2    t        j                  | d         S )NprivateKeyPem)r   
import_key)groups    r   
filter_rsaz4TestVectorsWycheproof.load_tests.<locals>.filter_rsa   s    >>%"899r   )Cipher
wycheproofzWycheproof PKCS#1v1.5 (%s)rsa_key)	group_tagr   )r)   filenamer   results       r   
load_testsz TestVectorsWycheproof.load_tests   s0    	: ..F.6.JX.U9BJ8O0
 r   c                 (   g | _         | j                   j                  | j                  d             | j                  sU| j                   j                  | j                  d             | j                   j                  | j                  d             y y )Nzrsa_pkcs1_2048_test.jsonzrsa_pkcs1_3072_test.jsonzrsa_pkcs1_4096_test.json)tvextendr   r}   r(   s    r   r*   zTestVectorsWycheproof.setUp   se    t'ABC$$GGNN4??+EFGGGNN4??+EFG %r   c                     | j                   S r4   )r~   r(   s    r   shortDescriptionz&TestVectorsWycheproof.shortDescription   s    xxr   c                     |j                   r>| j                  r1dd l}|j                  d| j                  d|j
                  d       y y y )Nr   zWycheproof warning: z ())warningr|   warningswarnr~   comment)r)   r   r   s      r   r   zTestVectorsWycheproof.warn   s4    ::$33MM488RZZPQ 4:r   c                    d|j                   z  | _        dt        dt        |j                              z  }t        j                  |j                        }	 |j                  |j                  |      }||k(  r|j                  r>J |j                  sJ | j                  ||j                         | j                  |       y y # t        $ r |j                  rJ Y y w xY w)Nz&Wycheproof Decrypt PKCS#1v1.5 Test #%srZ   r=   )rc   )idr~   maxr   msgrA   r#   r   rO   rG   validrC   r   r   )r)   r   rc   rF   rK   s        r   test_decryptz"TestVectorsWycheproof.test_decrypt   s    ;beeCSCK00"**%
	9B X~88#xx  RVV,		"	 $	  	 xxx	 s   C CCc                 H    | j                   D ]  }| j                  |        y r4   )r   r   )r)   r   s     r   runTestzTestVectorsWycheproof.runTest  s#    '' 	"Bb!	"r   N)
r8   r9   r:   r2   r   r*   r   r   r   r   r;   r   r   rw   rw      s'    
HR
 "r   rw   c                     | j                  d       }| j                  d      }g }|t        t              z  }|t        ||      gz  }|S )N
slow_testsr   )getr   r!   rw   )configr   r   testss       r   	get_testsr     sR     **\22O **%:;E	_^,,E	#$7IJJELr   __main__c                  <    t        j                  t                     S r4   )rz   	TestSuiter   r;   r   r   suiter     s    !!)+..r   r   )defaultTest)
__future__r   rz   Crypto.PublicKeyr   Crypto.SelfTest.st_commonr   r   Cryptor   Crypto.Cipherr   rA   Crypto.Util.py3compatr	   Crypto.Util.numberr
   r   Crypto.SelfTest.loaderr   r   r   r{   r!   rw   r   r8   r   mainr;   r   r   <module>r      s   . &    >  , # ; ?]4X&& ]4@6"H-- 6"r   z/HMMg& r   