Ë
    (üàgÀ*  ã                   ó  — 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     úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyÚrwsr   $   s&   € àò ˆØ�I‰I�a˜Ó‰ðà€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�!‹f‹I€EÜ
ˆ5ƒz�A�~˜ÒÜÐ=Ó>Ð>Ü�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   € Ø$(§I¡I¨d¯h©h°t·x±xÀ±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~   € Ø ŸN™Nò ;�Dä!Ÿm™m¨D°©GÓ4˜÷)ñ )ô "&§¡¨#¹ÄÀDÈÁGÃÓ8MÔ!N˜Ø#Ÿ^™^¬A¨d°1©g«JÓ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/   € à&�ÜŸ™ $§,¡,Ó/�Ø×!Ñ!¤*¨f¯n©n¸bÕ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�Ü—m‘m D¨¡GÓ,�Ü  Q¡›j�Ü˜˜a™“\�ÜŸ™ #›�ð —^‘^ B¨Ó-�Ø× Ñ   [Ô1à—^‘^ B¨´#°kÓ2BÑ(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˜   € ô —X‘X˜dŸl™lÓ+ˆFØ×Ñœj¨&¯.©.¸*ÀeÔLØ×Ñœj¨&¯.©.¸*ÀeÔLô Ð>Ó?ˆBÜ" 2Ó&ˆFØ—\‘\×*Ñ*¨6Ó2ˆFÜ˜v sÓ+ˆBØ×Ñ˜V V§^¡^°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ò *�Ø—X‘X˜fÓ%�ÜŸ™ $§,¡,Ó/�Ø—^‘^ BÓ'�Ø—n‘n R¨°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’   € ä—X‘X˜dŸl™lÓ+ˆFØˆBØ—‘ Ó#ˆBØ#ˆHà—>‘> " h°Ó3ˆDØ×Ñ˜R Ô&à—>‘> " h°Ó3ˆDØ×Ñ˜X tÔ,à—>‘> " h°Ó3ˆDØ×Ñ˜X tÕ,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Ü—X‘X˜dŸl™lÓ+ˆFØ—‘¤	¨"£Ó.ˆBØ—.‘.¤¨2£°¼¸R»Ñ0@ÓAˆCØ×Ñ˜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Ü—X‘X˜dŸl™lÓ+ˆFØ—‘¤
¬9°R«=Ó 9Ó:ˆBØ—.‘.¤¬I°b«MÓ!:¸GÄcÈ"ÃgÑ<MÓNˆCØ×Ñ˜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Ü—X‘X˜dŸl™lÓ+ˆFØ—‘ Ó#ˆBØ�O‰OœJ r¬5Ó1Ô2Ø—.‘.  [Ó1ˆCØ�O‰OœJ s¬EÓ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Ø.JÈXÑ.UØ9BÀJÐ8Oô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Ø×$Ò$Ø�G‰G�N‰N˜4Ÿ?™?Ð+EÓFÔGØ�G‰G�N‰N˜4Ÿ?™?Ð+EÓFÕGð %r   c                 ó   — | j                   S r4   )r~   r(   s    r   ÚshortDescriptionz&TestVectorsWycheproof.shortDescriptionî   s   € Ø�x‰xˆ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ÛØ�MŠM¸4¿8»8ÀRÇZÃZÐ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»   € Ø;¸b¿e¹eÑCˆŒØœS ¤C¨¯©£KÓ0Ñ0ˆÜ—‘˜"Ÿ*™*Ó%ˆð
	Ø—‘ §¡°�Ó9ˆBð �XŠ~ØŸ8š8Ð#�|à—x’x��xØ× Ñ   R§V¡VÔ,Ø—	‘	˜"•ð	 $øô	 ò 	 Ø—x’xÐ�<‘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Ð2€OØ Ÿ*™*Ð%:Ó;Ðà€EØ	Œ_œ^Ó,Ñ,€EØ	Ô#Ð$7¸ÓIÐJÑJ€EØ€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€   ðõ. &ã å  ß >Ý Ý ,Ý #ß ;Ý ?òòô]4�X×&Ñ&ô ]4ô@6"˜H×-Ñ-ô 6"ðr ó ð ˆzÒò/à€H‡M�M˜gÖ&ð r   