ƺh4 $ddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZmZmZmZmZmZmZmZmZdd lmZdd lmZdd lmZdd lmZddlm Z d Z Gddej!Z"Gddej!Z#e dddddddpgZ$e%e$D]\Z&Z'e(e'e)re*e'dre'j+Z,&e e'j-.Z/e/0e'j1Z2ej3de,e'j4fDZ5ej0e5Z6e2e6e'j7fdZ8e2e6e'j7fdZ9e'j:dkre;e#de&ze9e;e#de&ze8Gd d!ej!Z<Gd"d#ej!Z=e dd$d%d&d'ipgZ>e>e dd(d)d&d*ipgz Z>e%e>D]\Z&Z'e(e'e)re*e'dre'j+Z,&e*e'd+r8ej3d,e,e'j4e'j?fDZ@ej0e@ZAje e'j-.Z/e/0e'j1Z2e2eAe'j7fd-ZBe;e=d.e&zeBGd/d0ej!ZCGd1d2ej!ZDGd3d4ej!ZEGd5d6ej!ZFifd7ZGeHd8krd9ZIejJd:;dSdS)<N) unhexlify)bchr bytes_to_long)strxor)list_test_cases)load_test_vectorsload_test_vectors_wycheproof) SHA1SHA224SHA256SHA384SHA512SHA3_384SHA3_224SHA3_256SHA3_512)RSA)pkcs1_15) PKCS1_v1_5)pycryptodome_filenamec^td|zttdgS)Nz Crypto.Hash.new) __import__globalslocals) hash_names /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Signature/test_pkcs1_15.pyload_hash_by_namer3s% ny0'))VXXw O OOceZdZdZdZdS)FIPS_PKCS1_Verify_TestscdS)NzFIPS PKCS1 Tests (Verify)selfs rshortDescriptionz(FIPS_PKCS1_Verify_Tests.shortDescription9s**r ctjd}tj|}||ddS)NF)rgenerate public_keyrr assertEqualcan_sign)r&test_public_keyverifiers r test_can_signz%FIPS_PKCS1_Verify_Tests.test_can_sign<sT,t,,7799<00 **,,e44444r N__name__ __module__ __qualname__r'r0r$r rr"r"7s2+++55555r r"ceZdZdS)FIPS_PKCS1_Verify_Tests_KATNr2r3r4r$r rr6r6BDr r6) Signaturez PKCS1-v1.5zSigVer15_186-3.rspzSignature Verification 186-3c|SNr$xs rr>Iar c t|Sr;)intr<s rr>r>Js Qr c|Sr;r$r<s rr>r>Kr?r )shaalgdresultnc,g|]}t|Sr$r.0r=s r rJWs JJJQ a 0 0JJJr c2|||dSr;)verifyr&hash_objr/ signatures r positive_testrPZs),,,,,r cJ|t|j||dSr;) assertRaises ValueErrorrLrMs r negative_testrT]s$ *hoxKKKKKr fztest_negative_%dztest_positive_%dceZdZdZdZdS)FIPS_PKCS1_Sign_TestscdS)NzFIPS PKCS1 Tests (Sign)r$r%s rr'z&FIPS_PKCS1_Sign_Tests.shortDescriptionhs((r ctjd}tj|}||ddS)Nr)T)rr*rrr,r-)r&test_private_keysigners rr0z#FIPS_PKCS1_Sign_Tests.test_can_signksH<--.// **D11111r Nr1r$r rrWrWfs2)))22222r rWceZdZdS)FIPS_PKCS1_Sign_Tests_KATNr7r$r rr]r]qr8r r]zSigGen15_186-2.txtzSignature Generation 186-2rCc|Sr;r$r<s rr>r>xQr zSigGen15_186-3.txtzSignature Generation 186-3c|Sr;r$r<s rr>r>}r_r ec,g|]}t|Sr$rrHs rrJrJs $U$U$U!]1%5%5$U$U$Ur c\||}|||dSr;)signr,)r&rNr[rErOs rnew_testres/KK))  F+++++r ztest_%dc:eZdZdZdZdZdZeeZdZ dS)PKCS1_15_NoParamszVerify that PKCS#1 v1.5 signatures pass even without NULL parameters in the algorithm identifier (PyCrypto/LP bug #1119552).aP-----BEGIN RSA PRIVATE KEY----- MIIBOwIBAAJBAL8eJ5AKoIsjURpcEoGubZMxLD7+kT+TLr7UkvEtFrRhDDKMtuII q19FrL4pUIMymPMSLBn3hJLe30Dw48GQM4UCAwEAAQJACUSDEp8RTe32ftq8IwG8 Wojl5mAd1wFiIOrZ/Uv8b963WJOJiuQcVN29vxU5+My9GPZ7RA3hrDBEAoHUDPrI OQIhAPIPLz4dphiD9imAkivY31Rc5AfHJiQRA7XixTcjEkojAiEAyh/pJHks/Mlr +rdPNEpotBjfV4M4BkgGAA/ipcmaAjcCIQCHvhwwKVBLzzTscT2HeUdEeBMoiXXK JACAr3sJQJGxIQIgarRp+m1WSKV1MciwMaTOnbU7wxFs9DP1pva76lYBzgUCIQC9 n0CnZCJ6IZYqSt0H5N7+Q+2Ro64nuwV/OSQfM6sBwQ== -----END RSA PRIVATE KEY-----sThis is a test ڀa287a13517f716e72fb14eea8e33a8db4a4643314607e7ca3e3e281893db74013dda8b855fd99f6fecedcb25fcb7a434f35cd0a101f8b19348e0bd7b6f152dfcctjtj|j}t j|j}|||jdSr;) rrr importKeyrsakeyr msgrLrO)r&r/hasheds rrunTestzPKCS1_15_NoParams.runTestsJ< dk : :;;$(##/////r N) r2r3r4__doc__rkrlsig_strrrOrnr$r rrgrgsS<<-F C%G '""I00000r rgceZdZdZdZdZdS)PKCS1_Legacy_Module_TestszVerify that the legacy module Crypto.Signature.PKCS1_v1_5 behaves as expected. The only difference is that the verify() method returns True/False and does not raise exceptions.cdS)Nz'Test legacy Crypto.Signature.PKCS1_v1_5r$r%s rr'z*PKCS1_Legacy_Module_Tests.shortDescriptions88r ctjtj}t jd}t j||}t j|}| | ||dt|tdt|z}| | ||ddS)NTestTF)rrjrgrkr rrrdr+r,rLrrlen)r&keyrmgood_signaturer/ bad_signatures rrnz!PKCS1_Legacy_Module_Tests.runTestsm-455'""#,,11&99>#.."2"233 @@$GGG~tAww^9L9L/LMM  ??GGGGGr N)r2r3r4ror'rnr$r rrrrrsC@@999 H H H H Hr rrceZdZdZdZdS)PKCS1_All_Hashes_TestscdS)Nz8Test PKCS#1v1.5 signature in combination with all hashesr$r%s rr'z'PKCS1_All_Hashes_Tests.shortDescriptionsIIr ctjd}tj|}d}|D]9}t |d}||:ddlm}m}dD].}||d} || /dD].}||d} || /dS) Nr)) MD2MD4MD5 RIPEMD160r r r rrrrrrrur)BLAKE2bBLAKE2s) 0@) digest_bytesdata)rr) rr*rrrrd Crypto.Hashrr) r&rxr[ hash_namesnamermrr hash_sizehashed_bhashed_ss rrnzPKCS1_All_Hashes_Tests.runTestsl4  c""F   D&t,,0099F KK    00000000) " "I{{ {HHH KK ! ! ! !) " "I{{ {HHH KK ! ! ! ! " "r N)r2r3r4r'rnr$r rr|r|s5JJJ"""""r r|c8eZdZdZdZdZdZdZdZdZ dS) TestVectorsWycheproofc`tj|||_d|_dS)NNone)unittestTestCase__init___wycheproof_warnings_id)r&wycheproof_warningss rrzTestVectorsWycheproof.__init__s,""4((($7!r cg|_|d|d|d|d|d|d|d|d|d |d |d |d |d |d|d|d|d|d|d|d|d|ddS)Nzrsa_sig_gen_misc_test.jsonz#rsa_signature_2048_sha224_test.jsonz#rsa_signature_2048_sha256_test.jsonz#rsa_signature_2048_sha384_test.jsonz%rsa_signature_2048_sha3_224_test.jsonz%rsa_signature_2048_sha3_256_test.jsonz%rsa_signature_2048_sha3_384_test.jsonz%rsa_signature_2048_sha3_512_test.jsonz#rsa_signature_2048_sha512_test.jsonz'rsa_signature_2048_sha512_224_test.jsonz'rsa_signature_2048_sha512_256_test.jsonz#rsa_signature_3072_sha256_test.jsonz#rsa_signature_3072_sha384_test.jsonz%rsa_signature_3072_sha3_256_test.jsonz%rsa_signature_3072_sha3_384_test.jsonz%rsa_signature_3072_sha3_512_test.jsonz#rsa_signature_3072_sha512_test.jsonz'rsa_signature_3072_sha512_256_test.jsonz#rsa_signature_4096_sha384_test.jsonz#rsa_signature_4096_sha512_test.jsonz'rsa_signature_4096_sha512_256_test.jsonzrsa_signature_test.json)tv add_testsr%s rsetUpzTestVectorsWycheproof.setUps 3444 <=== <=== <=== >??? >??? >??? >??? <=== @AAA @AAA <=== <=== >??? >??? >??? <=== @AAA <=== <=== @AAA 011111r c Ld}d}d}td|d|z|||d}|S)Nc6tj|dS)NkeyPem)r import_key)groups r filter_rsaz3TestVectorsWycheproof.add_tests..filter_rsas>%/22 2r c|d}|dkrtS|dkrtjdS|dkrtjdS|dkrtS|d krtS|d krtS|d krt S|d krt S|d krtS|dkrtS|dkrtStd|z)NshazSHA-512z SHA-512/224224)truncatez SHA-512/256256zSHA3-512zSHA-384zSHA3-384zSHA-256zSHA3-256zSHA-224zSHA3-224zSHA-1zUnknown hash algorithm: ) rrrrrr rr rr rS)rrs r filter_shaz3TestVectorsWycheproof.add_tests..filter_shase II%% m++z51111m++z51111j((i'' j((i'' j((i'' j((g%%  !;i!GHHHr cB|d}|dvrtd|zdS)Ntype)RsassaPkcs1VerifyRsassaPkcs1GeneratezUnknown type name )rS)r type_names r filter_typez4TestVectorsWycheproof.add_tests..filter_type s4f I LLL !5 !ABBBMLr )r9 wycheproofz$Wycheproof PKCS#1v1.5 signature (%s))rsa_keyhash_modr) group_tag)r )r&filenamerrrrEs rrzTestVectorsWycheproof.add_testssy 3 3 3 I I I6 C C C ..I.6.TW_._DNEOAL9N9NOOO  r c|jSr;)rr%s rr'z&TestVectorsWycheproof.shortDescription-s xr c~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningrwarningswarnrcomment)r&rrs rrzTestVectorsWycheproof.warn0sd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rr c~dt|jz|_|j|j}t j|j} |||j }|j sJ| |dS#t$r!}|j rYd}~dS|j rJYd}~dSd}~wwxYw)NzWycheproof RSA PKCS$#1 Test #)stridr hash_modulerrlrrxrLsigvalidrrSr)r&r hashed_msgr[rOras r test_verifyz!TestVectorsWycheproof.test_verify5s2SZZ?^''// bf%%  j"&99I 8OO8 IIbMMMMM    z x  <       sB B<B7( B77B<cD|jD]}||dSr;)rr)r&rs rrnzTestVectorsWycheproof.runTestDs4' ! !B   R  ! !r N) r2r3r4rrrr'rrrnr$r rrrs 2222+++ZRRR   !!!!!r rc|d}g}|ttz }|ttz }|ttz }|tt z }|tt z }|t|gz }|dr.|ttz }|ttz }|S)Nr slow_tests) getrr"rWrgrrr|rr6r])configrtestss r get_testsrIs **%:;; E _4 5 55E _2 3 33E _. / //E _6 7 77E _3 4 44E $%899 ;;E zz,< !<=== !:;;; Lr __main__cBtjtSr;)r TestSuiterr$r rr>r>[sH&y{{33r suite) defaultTest)KjsonrbinasciirCrypto.Util.py3compatrCrypto.Util.numberrCrypto.Util.strxorrCrypto.SelfTest.st_commonrCrypto.SelfTest.loaderr r rr r r rrrrrrCrypto.PublicKeyrCrypto.SignaturerrCrypto.Util._file_systemrrrr"r6test_vectors_verify enumeratecountr isinstancerhasattrrFmodulusrCupperrrrlrN constructrar+r/srPrTrEsetattrrWr]test_vectors_signrD private_keyr[rergrrr|rrr2rmainr$r rrsK> &&&&&&,,,,,,%%%%%%555555RRRRRRRR7777777777777777777777 %%%%%%''''''::::::%%%%%%PPP55555h/555     ("3   ('(C!5!?,7K'7'7,7K"9"9::@ >@ .//XXIE2z"cwr3$##BIOO$5$566Krv&&HJJ7BD/JJJKKJx|J''H%-BD----&.BDLLLL yC+-?%-GWWWW+-?%-GWWWW22222H-222      1   '&'B(<(D)1;;(?AAGEG &&'B(<(D)1;;(?AAGEGG ,--DDIE2z"cwr3$wr3#cm$U$Urt?T$U$U$UVV k**##BIOO$5$566Krv&&H (,,,, G %y5'8(CCCC00000)000:HHHHH 1HHH*"""""X."""4f!f!f!f!f!H-f!f!f!R" z 3 3EHMg&&&&&&r