+
    '(j*                         ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHtHt ^ R	IHt R
 tR t ! R R]P,                  4      t ! R R]P,                  4      t/ 3R lt]R8X  d   R t]P8                  ! RR7       R# R# )    )print_functionN)RSA)list_test_casesa2b_hex)Random)
PKCS1_v1_5)b)bytes_to_longlong_to_bytesload_test_vectors_wycheproofc                <    R F  pV P                  VR4      p K  	  V # )z6Remove white spaces, tabs, and new lines from a string )
	 )replace)tcs   & Y/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyrwsr   $   s!    IIa H    c                    \        \        V 4      4      p\        V4      ^,          ^8X  d   \        R4      h\	        V4      # )z=Convert a text string with bytes in hex form to a byte stringz"Even number of characters expected)r	   r   len
ValueErrorr   )r   cleans   & r   t2br   +   s5    c!fIE
5zA~=>>5>r   c                   `   a  ] tR t^3t o R tRtR tR tR tR t	R t
R tR tR	 tR
 tRtV tR# )PKCS1_15_Testsc                    \         P                  ! 4       P                  V n        \        P
                  ! R V P                  4      V n        R# )i   N)r   newreadrngr   generatekey1024selfs   &r   setUpPKCS1_15_Tests.setUp5   s+    !::<,,"||D$((;r   c           
     Z   V P                    F  p\        P                  ! V^ ,          4      p ! R R4      p\        P                  ! W#! \        V^,          4      4      R7      pVP                  \        V^,          4      4      pV P                  V\        V^,          4      4       K  	  R# )r   c                   ,   a  ] tR t^rt o R tR tRtV tR# ),PKCS1_15_Tests.testEncrypt1.<locals>.randGenc                     Wn         ^ V n        R# )r   Ndataidx)r'   r/   s   &&r   __init__5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__init__s   s    ,0	+,r   c                    V P                   V P                  V P                  V,            pV ;P                  V,          un        V# Nr.   )r'   Nrs   && r   __call__5PKCS1_15_Tests.testEncrypt1.<locals>.randGen.__call__v   s0    $(IIdhhtxxz$B $A'(r   r.   N)__name__
__module____qualname____firstlineno__r1   r7   __static_attributes____classdictcell____classdict__s   @r   randGenr,   r   s     -) )r   rA   )randfuncN)		_testDatar   	importKeyPKCSr!   r   encryptr	   assertEqual)r'   testkeyrA   ciphercts   &     r   testEncrypt1PKCS1_15_Tests.testEncrypt1l   sy     NND!mmDG4) ) "&#DG8M!N#^^Ad1gJ7((Sa\:! +r   c                    Rp\         P                  ! V P                  4      pV P                  \        VP
                  V4       R# ) Nzv                                                                                                                      )rE   r!   r%   assertRaisesr   rF   )r'   ptrJ   s   &  r   testEncrypt2PKCS1_15_Tests.testEncrypt2   s/    &$,,/!!*fnnbAr   c                   V P                    F  p\        P                  ! V^ ,          4      p\        V^,          4      p\	        V^,          4      p\
        P                  ! V4      pVP                  VR4      pV P                  Wc4       VP                  VR\        V4      ,          4      pV P                  Wc4       K  	  R# )r   N   )
rC   r   rD   r	   r   rE   r!   decryptrG   r   )r'   rH   rI   expected_ptrK   rJ   rQ   s   &      r   testVerify1PKCS1_15_Tests.testVerify1   s    mmDG,Qja\# ^^B-  1^^B#k2B(BC  1 'r   c                   \         P                  ! V P                  4      pV P                  \        VP
                  RR4       V P                  \        VP
                  RR4       \        R4      p\        V4      pV P                  P                  V4      p\        V^4      pV P                  RVP                  VR4      4       R# )rO   z---s   ---Nz                                                                                                                               z                                                                                                                                 u    ÿÿÿÿÿÿÿ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE)rE   r!   r%   rP   r   rV   r	   r
   _encryptr   rG   )r'   rJ   rQ   pt_intct_intrK   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                   \        ^ ^v4       Fo  pV P                  V4      p\        P                  ! V P                  4      pVP                  V4      pVP                  VRV,          4      pV P                  W%4       Kq  	  R# )r      N)ranger#   rE   r!   r%   rF   rV   rG   )r'   pt_lenrQ   rJ   rK   pt2s   &     r   testEncryptVerify1!PKCS1_15_Tests.testEncryptVerify1   sf      <0XXf%$,,/^^B'nnR6)9:  ) 1r   c                B   \         P                  ! V P                  4      pRpVP                  V4      pRpVP	                  W4^4      pV P                  W%4       VP	                  W4^4      pV P                  WF4       VP	                  W4^4      pV P                  WG4       R# )   5Ns   5555555555555555s   )rE   r!   r%   rF   rV   rG   )r'   rJ   rQ   rK   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                    R p\         P                  ! V P                  4      pVP                  \	        V4      4      pVP                  \	        V4      R\        V4      ,          4      pV P                  W4       R# )   XER   ÿN)rE   r!   r%   rF   	bytearrayrV   r   rG   r'   rQ   rJ   rK   rd   s   &    r   testByteArrayPKCS1_15_Tests.testByteArray   sV    BXXdll+F	".B..2R0@ACR%r   c                   R p\         P                  ! V P                  4      pVP                  \	        \        V4      4      4      pVP                  \	        \        V4      4      R\        V4      ,          4      pV P                  W4       R# )rp   rU   N)	rE   r!   r%   rF   
memoryviewrr   rV   r   rG   rs   s   &    r   testMemoryviewPKCS1_15_Tests.testMemoryview   s`    BXXdll+F
9R= 9:B..IbM!:Gc"g<MNCR%r   c                   R p\         P                  ! V P                  4      pVP                  V4      pV P	                  \        V\        4      4       VP                  VR4      pV P	                  \        V\        4      4       R# )s   XYZNs   )rE   r!   r%   rF   
assertTrue
isinstancebytesrV   rs   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))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 a5)r9   r:   r;   r<   r(   rC   rL   rR   rX   r^   re   rm   rt   rx   r~   r=   r>   r?   s   @r   r   r   3   sF     	<*
	X	;&	B	2	A	*	- 	&	&	4 	4r   r   c                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
TestVectorsWycheproofc                j    \         P                  P                  V 4       Wn        W n        R V n        R# )NoneN)unittestTestCaser1   _wycheproof_warnings_skip_slow_tests_id)r'   wycheproof_warningsskip_slow_testss   &&&r   r1   TestVectorsWycheproof.__init__   s)    ""4($7! /r   c                <    R  p\        RVRV,          RV/R7      pV# )c                 <    \         P                  ! V R ,          4      # )privateKeyPem)r   
import_key)groups   &r   
filter_rsa4TestVectorsWycheproof.load_tests.<locals>.filter_rsa   s    >>%"899r   zWycheproof PKCS#1v1.5 (%s)rsa_key)	group_tag)Cipher
wycheproofr   )r'   filenamer   results   &&  r   
load_tests TestVectorsWycheproof.load_tests   s0    	: ..F.6.JX.U9BJ8O0
 r   c                8   . V n         V P                   P                  V P                  R 4      4       V P                  '       gW   V P                   P                  V P                  R4      4       V P                   P                  V P                  R4      4       R# R# )zrsa_pkcs1_2048_test.jsonzrsa_pkcs1_3072_test.jsonzrsa_pkcs1_4096_test.jsonN)tvextendr   r   r&   s   &r   r(   TestVectorsWycheproof.setUp   sh    t'ABC$$$GGNN4??+EFGGGNN4??+EFG %r   c                    V P                   # r4   )r   r&   s   &r   shortDescription&TestVectorsWycheproof.shortDescription   s    xxr   c                    VP                   '       dI   V P                  '       d5   ^ RIpVP                  RV P                  : RVP
                  : R24       R# R# R# )r   NzWycheproof warning: z ())warningr   warningswarnr   comment)r'   r   r   s   && r   r   TestVectorsWycheproof.warn   s9    :::$333MM488RZZPQ 4:r   c                   R VP                   ,          V n        R\        ^\        VP                  4      4      ,          p\
        P                  ! VP                  4      p VP                  VP                  VR7      pWB8X  d   VP                  '       d   Q hR# VP                  '       g   Q hV P                  WAP                  4       V P                  V4       R#   \         d    TP                  '       d   Q h R# i ; i)z&Wycheproof Decrypt PKCS#1v1.5 Test #%sra   )ri   N)idr   maxr   msgrE   r!   r   rV   rK   validrG   r   r   )r'   r   ri   rJ   rQ   s   &&   r   test_decrypt"TestVectorsWycheproof.test_decrypt   s    ;beeCSCK00"**%
	9B ~888#|8xxxx  VV,		"  	 xxx<x	 s    C C>8C>=C>c                N    V P                    F  pV P                  V4       K  	  R # r4   )r   r   )r'   r   s   & r   runTestTestVectorsWycheproof.runTest  s    ''Bb! r   )r   r   r   r   N)r9   r:   r;   r<   r1   r   r(   r   r   r   r   r=   r>   r?   s   @r   r   r      s/     
HR
 " "r   r   c                     V P                  R 4      '       * pV P                  R4      p. pV\        \        4      ,          pV\        W!4      .,          pV# )
slow_testsr   )getr   r   r   )configr   r   testss   &   r   	get_testsr     sP     **\22O **%:;E	_^,,E	#$7IJJELr   __main__c                  >    \         P                  ! \        4       4      # r4   )r   	TestSuiter    r   r   suiter     s    !!)+..r   r   )defaultTest)
__future__r   r   Crypto.PublicKeyr   Crypto.SelfTest.st_commonr   r   Cryptor   Crypto.Cipherr   rE   Crypto.Util.py3compatr	   Crypto.Util.numberr
   r   Crypto.SelfTest.loaderr   r   r   r   r   r   r   r9   r   mainr   r   r   <module>r      s~   . &    >  , # ; ?]4X&& ]4@6"H-- 6"r   z/MMg& r   