ƺh=ZddlZddlmZmZddlmZddlmZddlm Z ddl m Z m Z ddl mZmZmZmZmZddlmZdd lmZdd lmZdd lmZd ZGd deZGddejZGddejZGddejZ e ddddddpgZ!e"e!D].\Z#Z$e%e$e&re'e$dre$j(Z)'e'e$dr4ee$j*+Z,e,-e$j.Z/ej0de)e$j1fDZ2e$j3edkr2ee$j3Z4ej-e2e5e$j3e4Z6nej-e2d Z6e/e6e$j7fd!Z8e/e6e$j7fd"Z9e$j:dkre;e d#e#ze8e;e d$e#ze90Gd%d&ejZ<Gd'd(ejZ=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$d0r(ej0d1e)e$j1e$j?fDZ@[ee$j*+Z,e,-e$j.Z/e$j3edkr2ee$j3Z4ej-e@e5e$j3e4ZAnej-e@d ZAe/eAe$j7fd2ZBe;e=d3e#zeB Gd4d5ejZCGd6d7ejZDd8ZEGd9d:ejZFifd;ZGeHd?dSdS)@N)bbchr bytes_to_long)strxor)list_test_cases)load_test_vectorsload_test_vectors_wycheproof)SHA1SHA224SHA256SHA384SHA512)RSA)pss) PKCS1_PSSMGF1c^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_pss.pyload_hash_by_namer/s% ny0'))VXXw O OOceZdZdZdZdS)PRNGc"||_d|_dS)Nrstreamidx)selfr"s r__init__z PRNG.__init__5s rc^|j|j|j|z}|xj|z c_|SNr!)r$rnd_sizeresults r__call__z PRNG.__call__9s1TXdh&99: H rN)__name__ __module__ __qualname__r%r*rrrr3s2rrc,eZdZdZdZdZdZdZdZdS) PSS_Testss-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAsvI34FgiTK8+txBvmooNGpNwk23YTU51dwNZi5yha3W4lA/Q vcZrDalkmD7ekWQwnduxVKa6pRSI13KBgeUOIqJoGXSWhntEtY3FEwvWOHW5AE7Q jUzTzCiYT6TVaCcpa/7YLai+p6ai2g5f5Zfh4jSawa9uYeuggFygQq4IVW796MgV yqxYMM/arEj+/sKz3Viua9Rp9fFosertCYCX4DUTgW0mX9bwEnEOgjSI3pLOPXz1 8vx+DRZS5wMCmwCUa0sKonLn3cAUPq+sGix7+eo7T0Z12MU8ud7IYVX/75r3cXiF PaYE2q8Le0kgOApIXbb+x74x0rNgyIh1yGygkwIDAQABAoIBABz4t1A0pLT6qHI2 EIOaNz3mwhK0dZEqkz0GB1Dhtoax5ATgvKCFB98J3lYB08IBURe1snOsnMpOVUtg aBRSM+QqnCUG6bnzKjAkuFP5liDE+oNQv1YpKp9CsUovuzdmI8Au3ewihl+ZTIN2 UVNYMEOR1b5m+z2SSwWNOYsiJwpBrT7zkpdlDyjat7FiiPhMMIMXjhQFVxURMIcB jUBtPzGvV/PG90cVDWi1wRGeeP1dDqti/jsnvykQ15KW1MqGrpeNKRmDdTy/Ucl1 WIoYklKw3U456lgZ/rDTDB818+Tlnk35z4yF7d5ANPM8CKfqOPcnO1BCKVFzf4eq 54wvUtkCgYEA1Zv2lp06l7rXMsvNtyYQjbFChezRDRnPwZmN4NCdRtTgGG1G0Ryd Yz6WWoPGqZp0b4LAaaHd3W2GTcpXF8WXMKfMX1W+tMAxMozfsXRKMcHoypwuS5wT fJRXJCG4pvd57AB0iVUEJW2we+uGKU5Zxcx//id2nXGCpoRyViIplQsCgYEA1nVC eHupHChht0Fh4N09cGqZHZzuwXjOUMzR3Vsfz+4WzVS3NvIgN4g5YgmQFOeKwo5y iRq5yvubcNdFvf85eHWClg0zPAyxJCVUWigCrrOanGEhJo6re4idJvNVzu4Ucg0v 6B3SJ1HsCda+ZSNz24bSyqRep8A+RoAaoVSFx5kCgYEAn3RvXPs9s+obnqWYiPF3 Re5etE6Vt2vfNKwFxx6zaR6bsmBQjuUHcABWiHb6I71S0bMPI0tbrWGG8ibrYKl1 NTLtUvVVCOS3VP7oNTWT9RTFTAnOXU7DFSo+6o/poWn3r36ff6zhDXeWWMr2OXtt dEQ1/2lCGEGVv+v61eVmmQUCgYABFHITPTwqwiFL1O5zPWnzyPWgaovhOYSAb6eW 38CXQXGn8wdBJZL39J2lWrr4//l45VK6UgIhfYbY2JynSkO10ZGow8RARygVMILu OUlaK9lZdDvAf/NpGdUAvzTtZ9F+iYZ2OsA2JnlzyzsGM1l//3vMPWukmJk3ral0 qoJJ8QKBgGRG3eVHnIegBbFVuMDp2NTcfuSuDVUQ1fGAwtPiFa8u81IodJnMk2pq iXu2+0ytNA/M+SVrAnE2AgIzcaJbtr0p2srkuVM7KMWnG1vWFNjtXN8fAhf/joOv D+NmPL/N4uE57e40tbiU/H7KdyZaDt+5QiTmdhuyAe6CBjKsF2jy -----END RSA PRIVATE KEY-----sAAAs[c5ذ!Dݹ`P>X5ݎʼnP+ɯPL5k{=_R}b5Y~}l1-Vlk/o5Q$ =ABPG"~jqkbsbm(`F.)/_Sv/DT:s>>>>rctj|j}tj|j}t j|d}t|j}| t|j ||dS)Ni salt_bytesr=rAs rtest_negative_2zPSS_Tests.test_negative_2RsinT\** Jtx 734000!! *hoq#>>>>>rN) r+r,r-r3r4r6r:rBrFr.rrr0r0?sVvG C v C%%% ????????rr0c&eZdZdZdZdZdZdS)FIPS_PKCS1_Verify_TestscdS)NzFIPS PKCS1 Tests (Verify)r.r$s rshortDescriptionz(FIPS_PKCS1_Verify_Tests.shortDescription\s**rct|}||}tj|t||}|||dSNrE rand_func)rrrlenr5 r$hashmodmessage public_keysalt signatureprnghashedr9s rverify_positivez'FIPS_PKCS1_Verify_Tests.verify_positive_sTDzzW%%7:#d))tLLL *****rct|}||}tj|t||}|t |j||dSrM)rrrrPr?r@r5rQs rverify_negativez'FIPS_PKCS1_Verify_Tests.verify_negativees\DzzW%%7:#d))tLLL *hovyIIIIIrctjd}tj|}||ddS)NF)rgeneraterTrr assertEqualcan_sign)r$test_public_keyr9s r test_can_signz%FIPS_PKCS1_Verify_Tests.test_can_signksT,t,,77997?++ **,,e44444rN)r+r,r-rKrYr[rbr.rrrHrHZsS++++++ JJJ 55555rrHceZdZdS)FIPS_PKCS1_Verify_Tests_KATNr+r,r-r.rrrdrdqDrrd) Signaturez PKCS1-PSSzSigVerPSS_186-3.rspzSignature Verification 186-3c|Sr'r.xs rrkxsrc|Sr'r.ris rrkrkysr)shaalgr)npc,g|]}t|Sr.r.0rjs r rss JJJQ a 0 0JJJrrNrDc2|||dSr')r5r$hash_objr9rVs r positive_testrxs),,,,,rcJ|t|j||dSr')r?r@r5rvs r negative_testrzs$ *hoxKKKKKrztest_positive_%dztest_negative_%dceZdZdZdZdS)FIPS_PKCS1_Sign_TestscdS)NzFIPS PKCS1 Tests (Sign)r.rJs rrKz&FIPS_PKCS1_Sign_Tests.shortDescriptions((rctjd}tj|}||ddS)Nr]T)rr^rrr_r`)r$test_private_keysigners rrbz#FIPS_PKCS1_Sign_Tests.test_can_signsH<--)** **D11111rN)r+r,r-rKrbr.rrr|r|s2)))22222rr|ceZdZdS)FIPS_PKCS1_Sign_Tests_KATNrer.rrrrrfrrzSigGenPSS_186-2.txtzSignature Generation 186-2rmc|Sr'r.ris rrkrkQrzSigGenPSS_186-3.txtzSignature Generation 186-3c|Sr'r.ris rrkrkrrec,g|]}t|Sr.rrqs rrsrss $U$U$U!]1%5%5$U$U$Urc\||}|||dSr')signr_)r$rwrr)rVs rnew_testrs/KK))  F+++++rztest_%dceZdZdZdZdZdS)PKCS1_Legacy_Module_TestszVerify that the legacy module Crypto.Signature.PKCS1_PSS 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_PSSr.rJs rrKz*PKCS1_Legacy_Module_Tests.shortDescriptions77rc tjd}tjt d}t j||}t j|}|| ||dt|tdt|z}|| ||ddS)Nr]TestTF) rr^r rrrrrTr_r5rrrP)r$r7rXgood_signaturer9 bad_signatures rrunTestz!PKCS1_Legacy_Module_Tests.runTestsl4  !F))$$"s++0088=!1!122 @@$GGG~tAww^9L9L/LMM  ??GGGGGrN)r+r,r-__doc__rKrr.rrrrsC@@888 H H H H HrrceZdZdZdZdS)PKCS1_All_Hashes_TestscdS)Nz8Test PKCS#1 PSS signature in combination with all hashesr.rJs rrKz'PKCS1_All_Hashes_Tests.shortDescriptionsIIrctjd}tj|}d}|D]F}t |t d}||Gddlm}m }dD];}||t d} || .filter_rsas>%/22 2rc,t|dS)Nsha)rrs r filter_shaz6TestVectorsPSSWycheproof.add_tests..filter_shas"5<00 0rcB|d}|dvrtd|zdS)Ntype)RsassaPssVerifyzUnknown type name )r@)r type_names r filter_typez7TestVectorsPSSWycheproof.add_tests..filter_types3f I 555 !5 !ABBB65rc|dS)NsLenr.rs r filter_slenz7TestVectorsPSSWycheproof.add_tests..filter_slen#s = rcv|d}|dvrtd|zt|d}|fd}|S)Nmgfrz Unknown MGF mgfShac$t|||Sr'r)rjymhs rrzCTestVectorsPSSWycheproof.add_tests..filter_mgf..mgf,sAq"~~%r)r@r)rr mgf1_hashs r filter_mgfz6TestVectorsPSSWycheproof.add_tests..filter_mgf&sX,C*$$ #!5666'h88I& & & & &Jr)rg wycheproofzWycheproof PSS signature (%s))r7rrrr) group_tag)r )r$filenamerrrrrr)s r add_testsz"TestVectorsPSSWycheproof.add_testss 3 3 3 1 1 1 C C C  ! ! !   ..I.6.MPX.X@JHRAL@JAL 9N9NOOO rcg|_|d|d|d|d|d|d|d|d|d dS) Nz#rsa_pss_2048_sha1_mgf1_20_test.jsonz$rsa_pss_2048_sha256_mgf1_0_test.jsonz%rsa_pss_2048_sha256_mgf1_32_test.jsonz)rsa_pss_2048_sha512_256_mgf1_28_test.jsonz)rsa_pss_2048_sha512_256_mgf1_32_test.jsonz%rsa_pss_3072_sha256_mgf1_32_test.jsonz%rsa_pss_4096_sha256_mgf1_32_test.jsonz%rsa_pss_4096_sha512_mgf1_32_test.jsonzrsa_pss_misc_test.json)tvrrJs rsetUpzTestVectorsPSSWycheproof.setUp;s <=== =>>> >??? BCCC BCCC >??? >??? >??? /00000rc|jSr')rrJs rrKz)TestVectorsPSSWycheproof.shortDescriptionGs xrc~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningrwarningswarnrcomment)r$rrs rrzTestVectorsPSSWycheproof.warnJsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rrcd|j|jfz|_|j|j}t j|j|j|j } | ||j }|j sJ| |dS#t$r!}|jrYd}~dS|j rJYd}~dSd}~wwxYw)Nz Wycheproof RSA PSS Test #%d (%s)) mask_funcrE)idrrrrr4rr7rrr5sigvalidrr@r)r$r hashed_msgrrVrs r test_verifyz$TestVectorsPSSWycheproof.test_verifyOs5 8KK^''// 26bgFFF  j"&99I 8OO8 IIbMMMMM    z x  <       sB C"B>/ B>>CcD|jD]}||dSr')rr)r$rs rrz TestVectorsPSSWycheproof.runTest^s4' ! !B   R  ! !rN) r+r,r-r%rrrKrrrr.rrrrs ###J 1 1 1RRR   !!!!!rrc|d}g}|ttz }|ttz }|ttz }|tt z }|tt z }|dr.|ttz }|ttz }|t|gz }|S)Nr slow_tests) getrr0rHr|rrrdrr)configrtestss r get_testsrcs **%:;; E _Y ' ''E _4 5 55E _2 3 33E _6 7 77E _3 4 44E zz,< !<=== !:;;; &':;; <rs>)))))))),,,,,,%%%%%%555555RRRRRRRR<<<<<<<<<<<<<< &&&&&&%%%%%%PPP     6   ?????!???655555h/555.     ("3   ('(B,A,J7B{6Ak-C-CDDJHJ .//XXIE2z"cwr3$wr3##BIOO$5$566Krv&&HJJ7BD/JJJKKJ zQQvYYtBJ37:##bj//TRRR37:!444%-BD----&.BDLLLL yC+-?%-GWWWW+-?%-GWWWW22222H-222      1   &%&@(=(D)1;;(?AAGEG &&'A(=(D)1;;(?AAGEGG ,--DDIE2z"cwr3$wr3#cm$U$Urt?T$U$U$UVV ##BIOO$5$566Krv&&H zQQvYYtBJRZDQQQ333 (,,,, G %y5'8(CCCCHHHHH 1HHH*"""""X."""4(Q!Q!Q!Q!Q!x0Q!Q!Q!h& z///HMg&&&&&&r