ƺh*ddlmZddlZddlmZddlmZmZddlm Z ddl m Z ddl mZddlmZmZdd lmZd Zd ZGd d ejZGddejZifdZedkrdZejddSdS))print_functionN)RSA)list_test_casesa2b_hex)Random) PKCS1_v1_5)b) bytes_to_long long_to_bytesload_test_vectors_wycheproofc<dD]}||d}|S)z6Remove white spaces, tabs, and new lines from a string)   )replace)tcs /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Cipher/test_pkcs1_15.pyrwsr$s+  IIa   Hctt|}t|dzdkrtdt |S)z=Convert a text string with bytes in hex form to a byte stringz"Even number of characters expected)r rlen ValueErrorr)rcleans rt2br+sC c!ffIIE 5zzA~=>>> 5>>rcNeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) PKCS1_15_Testsc~tjj|_t jd|j|_dS)Ni)rnewreadrngrgeneratekey1024selfs rsetUpzPKCS1_15_Tests.setUp5s+!:<<,"|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-----zTHIS IS PLAINTEXT a3f 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 75aeb 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 n|jD]}tj|d}Gdd}tj||t |d}|t|d}||t |ddS)NrceZdZdZdZdS),PKCS1_15_Tests.testEncrypt1..randGenc"||_d|_dS)Nrdataidx)r)r0s r__init__z5PKCS1_15_Tests.testEncrypt1..randGen.__init__ss,0 +,rc^|j|j|j|z}|xj|z c_|SNr/)r)Nrs r__call__z5PKCS1_15_Tests.testEncrypt1..randGen.__call__vs/$(Idhtxz.A$B $A '(rN)__name__ __module__ __qualname__r2r7rrrandGenr-rs2---)))))rr<)randfuncrr) _testDatar importKeyPKCSr#rencryptr assertEqual)r)testkeyr<ciphercts r testEncrypt1zPKCS1_15_Tests.testEncrypt1ls N;;D!mDG44))))))))"&#DG 8M8M!N!N!N#^^Ad1gJJ77((Sa\\::::!;;rc~d}tj|j}|t|j|dS)Nzv)rAr#r' assertRaisesrrB)r)ptrFs r testEncrypt2zPKCS1_15_Tests.testEncrypt2s8&$,//!!*fnbAAAAArc|jD]}tj|d}t|d}t |d}t j|}||d}|||||dt|z}|||dS)Nrrr) r?rr@r rrAr#decryptrCr)r)rDrE expected_ptrGrFrKs r testVerify1zPKCS1_15_Tests.testVerify1s 2 2mDG,,Qjj a\\#^^B--  [111^^B#k2B2B(BCC  [1111 2 2rctj|j}|t|jdd|t|jddt d}t|}|j|}t|d}| d||ddS)Nzz---zuÿÿÿÿÿÿÿEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEs---) rAr#r'rJrrOr r _encryptr rC)r)rFrKpt_intct_intrGs r testVerify2zPKCS1_15_Tests.testVerify2sXdl++F   j&.*e L L L   j&.*e L L L>??B"2&&F\**622Fvs++B   VV^^B%?%? @ @ @ @ @rctddD]t}||}tj|j}||}||d|z}|||udS)Nrv)ranger%rAr#r'rBrOrC)r)pt_lenrKrFrGpt2s rtestEncryptVerify1z!PKCS1_15_Tests.testEncryptVerify1s <00 * *XXf%%$,//^^B''nnR6)9::  S))))  * *rcxtj|j}d}||}d}|||d}||||||d}||||||d}|||dS)Ns5555555555555555s)rAr#r'rBrOrC)r)rFrKrGsentinelpt_Apt_Bpt_Cs rtest_encrypt_verify_exp_pt_lenz-PKCS1_15_Tests.test_encrypt_verify_exp_pt_lensXdl++FB##B#H>>"h33D   R & & &>>"h33D   Xt , , ,>>"h33D   Xt , , , , ,rcd}tj|j}|t |}|t |dt |z}|||dS)NXERÿ)rAr#r'rB bytearrayrOrrCr)rKrFrGr]s r testByteArrayzPKCS1_15_Tests.testByteArraysoBXdl++F " ..B..2R0@AAC   R % % % % %rcFd}tj|j}|t t |}|t t |dt|z}|||dS)NrirN) rAr#r'rB memoryviewrkrOrrCrls rtestMemoryviewzPKCS1_15_Tests.testMemoryviewsBXdl++F 9R== 9 9::B..IbMM!:!:Gc"gg.filter_rsas>%"899 9r)Cipher wycheproofzWycheproof PKCS#1v1.5 (%s)rsa_key) group_tagr )r)filenamerresults r load_testsz TestVectorsWycheproof.load_testssD : : :..F.6.JX.U9BJ8O000  rc4g|_|j|d|js\|j|d|j|ddSdS)Nzrsa_pkcs1_2048_test.jsonzrsa_pkcs1_3072_test.jsonzrsa_pkcs1_4096_test.json)tvextendrr}r(s rr*zTestVectorsWycheproof.setUps t'ABBCCC$ H GNN4??+EFF G G G GNN4??+EFF G G G G G H Hrc|jSr4)r~r(s rshortDescriptionz&TestVectorsWycheproof.shortDescriptions xrc~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningr|warningswarnr~comment)r)rrs rrzTestVectorsWycheproof.warnsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rrcd|jz|_dtdt|jz}t j|j} ||j |}||kr |j rJdS|j sJ| ||j| |dS#t$r |j rJYdSwxYw)Nz&Wycheproof Decrypt PKCS#1v1.5 Test #%srZr=)rc)idr~maxrmsgrAr#rrOrGvalidrCrr)r)rrcrFrKs r test_decryptz"TestVectorsWycheproof.test_decrypts;beCSCKK000"*%% 99BX~~8##|##xx  RV,,, "    x  <    sB77C CcD|jD]}||dSr4)rr)r)rs rrunTestzTestVectorsWycheproof.runTests4' " "B   b ! ! ! ! " "rN) r8r9r:r2rr*rrrrr;rrrwrws   HHHRRR  """""rrwc|d }|d}g}|ttz }|t||gz }|S)N slow_testsr)getrr!rw)configrrtestss r get_testsr s^ **\222O **%:;; E _^ , ,,E #$7II JJE Lr__main__cBtjtSr4)rz TestSuiterr;rrsuiters!)++...rr) defaultTest) __future__rrzCrypto.PublicKeyrCrypto.SelfTest.st_commonrrCryptor Crypto.CipherrrACrypto.Util.py3compatr Crypto.Util.numberr r Crypto.SelfTest.loaderr rrr{r!rwrr8rmainr;rrrs.&%%%%% >>>>>>>>,,,,,,######;;;;;;;;??????   ]4]4]4]4]4X&]4]4]4@6"6"6"6"6"H-6"6"6"r z///HMg&&&&&&r