
    9i*                        S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S S	KJr  S
 rS r " S S\R,                  5      r " S S\R,                  5      r0 4S jr\S:X  a  S r\R8                  " SS9  gg)    )print_functionN)RSA)list_test_casesa2b_hex)Random)
PKCS1_v1_5)b)bytes_to_longlong_to_bytesload_test_vectors_wycheproofc                 <    S H  nU R                  US5      n M     U $ )z6Remove white spaces, tabs, and new lines from a string)
	  )replace)tcs     d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyrwsr   $   s!    IIa H    c                 z    [        [        U 5      5      n[        U5      S-  S:X  a  [        S5      e[	        U5      $ )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                   T    \ rS rSrS rSrS rS rS rS r	S r
S	 rS
 rS rS rSrg)PKCS1_15_Tests3   c                     [         R                  " 5       R                  U l        [        R
                  " SU R                  5      U l        g )Ni   )r   newreadrngr   generatekey1024selfs    r   setUp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   U R                    H  n[        R                  " US   5      n " S S5      n[        R                  " X#" [        US   5      5      S9nUR                  [        US   5      5      nU R                  U[        US   5      5        M     g )Nr   c                        \ rS rSrS rS rSrg),PKCS1_15_Tests.testEncrypt1.<locals>.randGenr   c                     Xl         SU l        g )Nr   dataidx)r*   r3   s     r   __init__5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__init__s   s    ,0	+,r   c                 |    U R                   U R                  U R                  U-    nU =R                  U-  sl        U$ Nr2   )r*   Nrs      r   __call__5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__call__v   s0    $(IIdhhtxxz$B $A'(r   r2   N)__name__
__module____qualname____firstlineno__r5   r;   __static_attributes__ r   r   randGenr/   r   s    -)r   rC      )randfuncr   r   )		_testDatar   	importKeyPKCSr$   r   encryptr	   assertEqual)r*   testkeyrC   ciphercts         r   testEncrypt1PKCS1_15_Tests.testEncrypt1l   sy     NND!mmDG4) ) "&#DG8M!N#^^Ad1gJ7((Sa\:! +r   c                     Sn[         R                  " U R                  5      nU R                  [        UR
                  U5        g )Nzv                                                                                                                      )rH   r$   r(   assertRaisesr   rI   )r*   ptrM   s      r   testEncrypt2PKCS1_15_Tests.testEncrypt2   s/    &$,,/!!*fnnbAr   c                 d   U R                    H  n[        R                  " US   5      n[        US   5      n[	        US   5      n[
        R                  " U5      nUR                  US 5      nU R                  Xc5        UR                  US[        U5      -  5      nU R                  Xc5        M     g )Nr   r   r      )
rF   r   rG   r	   r   rH   r$   decryptrJ   r   )r*   rK   rL   expected_ptrN   rM   rS   s          r   testVerify1PKCS1_15_Tests.testVerify1   s    mmDG,Qja\# ^^B-  1^^B#k2B(BC  1 'r   c                    [         R                  " U R                  5      nU R                  [        UR
                  SS5        U R                  [        UR
                  SS5        [        S5      n[        U5      nU R                  R                  U5      n[        US5      nU R                  SUR                  US5      5        g )Nz                                                                                                                               z---z                                                                                                                                 u    ÿÿÿÿÿÿÿ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE   s   ---)rH   r$   r(   rR   r   rX   r	   r
   _encryptr   rJ   )r*   rM   rS   pt_intct_intrN   s         r   testVerify2PKCS1_15_Tests.testVerify2   s     XXdll+Fj&..*eLj&..*eL >?B"2&F\\**62Fvs+BVV^^B%?@r   c                     [        SS5       Hk  nU R                  U5      n[        R                  " U R                  5      nUR                  U5      nUR                  USU-  5      nU R                  X%5        Mm     g )Nr   v      )ranger&   rH   r$   r(   rI   rX   rJ   )r*   pt_lenrS   rM   rN   pt2s         r   testEncryptVerify1!PKCS1_15_Tests.testEncryptVerify1   sf      <0XXf%$,,/^^B'nnR6)9:  ) 1r   c                 @   [         R                  " U R                  5      nSnUR                  U5      nSnUR	                  X4S5      nU R                  X%5        UR	                  X4S5      nU R                  XF5        UR	                  X4S5      nU R                  XG5        g )Ns   5555555555555555s            )rH   r$   r(   rI   rX   rJ   )r*   rM   rS   rN   sentinelpt_Apt_Bpt_Cs           r   test_encrypt_verify_exp_pt_len-PKCS1_15_Tests.test_encrypt_verify_exp_pt_len   s    XXdll+FB#B#H>>"3DR&>>"3DX,>>"3DX,r   c                     Sn[         R                  " U R                  5      nUR                  [	        U5      5      nUR                  [	        U5      S[        U5      -  5      nU R                  X5        g )N   XER   ÿ)rH   r$   r(   rI   	bytearrayrX   r   rJ   r*   rS   rM   rN   rh   s        r   testByteArrayPKCS1_15_Tests.testByteArray   sV    BXXdll+F	".B..2R0@ACR%r   c                    Sn[         R                  " U R                  5      nUR                  [	        [        U5      5      5      nUR                  [	        [        U5      5      S[        U5      -  5      nU R                  X5        g )Nrv   rW   )	rH   r$   r(   rI   
memoryviewrx   rX   r   rJ   ry   s        r   testMemoryviewPKCS1_15_Tests.testMemoryview   s`    BXXdll+F
9R= 9:B..IbM!:Gc"g<MNCR%r   c                 
   Sn[         R                  " U R                  5      nUR                  U5      nU R	                  [        U[        5      5        UR                  US5      nU R	                  [        U[        5      5        g )Ns   XYZs   )rH   r$   r(   rI   
assertTrue
isinstancebytesrX   ry   s        r   test_return_typePKCS1_15_Tests.test_return_type   s]    BXXdll+F#BOOJr512..[1COOJsE23r   )r(   r&   N)r=   r>   r?   r@   r+   rF   rO   rT   rZ   ra   ri   rs   rz   r~   r   rA   rB   r   r   r!   r!   3   s>    	<*
	X	;&	B	2	A	*	- 	&	&	4r   r!   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestVectorsWycheproof   c                 h    [         R                  R                  U 5        Xl        X l        SU l        g )NNone)unittestTestCaser5   _wycheproof_warnings_skip_slow_tests_id)r*   wycheproof_warningsskip_slow_testss      r   r5   TestVectorsWycheproof.__init__   s)    ""4($7! /r   c                 .    S n[        SUSU-  SU0S9nU$ )Nc                 4    [         R                  " U S   5      $ )NprivateKeyPem)r   
import_key)groups    r   
filter_rsa4TestVectorsWycheproof.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_tests TestVectorsWycheproof.load_tests   s0    	: ..F.6.JX.U9BJ8O0
 r   c                 2   / U l         U R                   R                  U R                  S5      5        U R                  (       dU  U R                   R                  U R                  S5      5        U R                   R                  U R                  S5      5        g g )Nzrsa_pkcs1_2048_test.jsonzrsa_pkcs1_3072_test.jsonzrsa_pkcs1_4096_test.json)tvextendr   r   r)   s    r   r+   TestVectorsWycheproof.setUp   se    t'ABC$$GGNN4??+EFGGGNN4??+EFG %r   c                     U R                   $ r8   )r   r)   s    r   shortDescription&TestVectorsWycheproof.shortDescription   s    xxr   c                     UR                   (       aE  U R                  (       a3  SS KnUR                  SU R                  < SUR
                  < S35        g g g )Nr   zWycheproof warning: z ())warningr   warningswarnr   comment)r*   r   r   s      r   r   TestVectorsWycheproof.warn   s4    ::$33MM488RZZPQ 4:r   c                    SUR                   -  U l        S[        S[        UR                  5      5      -  n[
        R                  " UR                  5      n UR                  UR                  US9nXB:X  a  UR                  (       a   eg UR                  (       d   eU R                  XAR                  5        U R                  U5        g ! [         a    UR                  (       a   e g f = f)Nz&Wycheproof Decrypt PKCS#1v1.5 Test #%sre   rD   )ro   )idr   maxr   msgrH   r$   r   rX   rN   validrJ   r   r   )r*   r   ro   rM   rS   s        r   test_decrypt"TestVectorsWycheproof.test_decrypt   s    ;beeCSCK00"**%
	9B ~88#|8xxx  VV,		"  	 xx<x	 s   C C+*C+c                 L    U R                    H  nU R                  U5        M     g r8   )r   r   )r*   r   s     r   runTestTestVectorsWycheproof.runTest  s    ''Bb! r   )r   r   r   r   N)r=   r>   r?   r@   r5   r   r+   r   r   r   r   rA   rB   r   r   r   r      s'    
HR
 "r   r   c                     U R                  S5      (       + nU R                  S5      n/ nU[        [        5      -  nU[        X!5      /-  nU$ )N
slow_testsr   )getr   r!   r   )configr   r   testss       r   	get_testsr     sP     **\22O **%:;E	_^,,E	#$7IJJELr   __main__c                  >    [         R                  " [        5       5      $ r8   )r   	TestSuiter   rB   r   r   suiter     s    !!)+..r   r   )defaultTest)
__future__r   r   Crypto.PublicKeyr   Crypto.SelfTest.st_commonr   r   Cryptor   Crypto.Cipherr   rH   Crypto.Util.py3compatr	   Crypto.Util.numberr
   r   Crypto.SelfTest.loaderr   r   r   r   r!   r   r   r=   r   mainrB   r   r   <module>r      s~   . &    >  , # ; ?]4X&& ]4@6"H-- 6"r   z/MMg& r   