gh%dZddlZddlTddlZddlmZmZmZdZGddej Z Gdd ej Z ifd Z e d krd Zejd dSdS)z(Self-test suite for Crypto.PublicKey.DSAN)*)list_test_casesa2b_hexb2a_hexct|tr'd|St d|S)z,Remove whitespace from a text or byte string) isinstancestrjoinsplitb)ss /builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/PublicKey/test_DSA.py_swsr!sN!C%wwqwwyy!!!uuzz!''))$$$cZeZdZedZedZedZedZedZedZ edZ e e dZ ed Zed Zed Zd Zd ZdZdZdZdZdZdZdZdZdZdZdS)DSATestz19131871 d75b1612 a819f29d 78d1b0d7 346f7aa7 7bb62a85 9bfd6c56 75da9d21 2d3a36ef 1672ef66 0b8c7c25 5cc0ec74 858fba33 f44c0669 9630a76b 030ee333z626d0278 39ea0a13 413163a5 5b4cb500 299d5522 956cefcb 3bff10f3 99ce2c2e 71cb9de5 fa24babf 58e5b795 21925c9c c42e9f6f 464b088c c572af53 e6d78802z8df2a494 492276aa 3d25759b b06869cb eac0d83a fb8d0cf7 cbb8324f 0d7882e5 d0762fc5 b7210eaf c2e9adac 32ab7aac 49693dfb f83724c2 ec0736ee 31c80291z,c773218c 737ec8ee 993b4f2d ed30f48e dace915fz,2070b322 3dba372f de1c0ffc 7b2e3b49 8b260614z,358dad57 1462710f 50e254cf 1a376b2b deaadfbfz,0d516729 8202e49b 4116ac10 4fc3f415 ae52f917abcz,a9993e36 4706816a ba3e2571 7850c26c 9cd0d89dz,8bac1ab6 6410435c b7181f95 b16ab97c 92b341c0z,41e2345f 1f56df24 58f426d1 55b4ba2d b6dcd8c8cJddlmaddlmaddlmam}mat|_dS)Nr)DSA)Random) bytes_to_longinversesize) Crypto.PublicKeyrCryptorCrypto.Util.numberrrrdsa)selfrs rsetUpz DSATest.setUpFsO((((((!!!!!!CCCCCCCCCCrc|jd}|||}||dS)z7DSA (default implementation) generated key (1 argument)N)rgenerate_check_private_key public_key_check_public_keyrdsaObjpubs rtest_generate_1argzDSATest.test_generate_1argNsV""4(( '''!! s#####rc|jdtj}|||}||dS)z8DSA (default implementation) generated key (2 arguments)r"N)rr#rnewreadr$r%r&r's rtest_generate_2argzDSATest.test_generate_2argUsc""4):;; '''!! s#####rcd|j|j|j|jfD\}}}}|j||||f}||dS)z6DSA (default implementation) constructed key (4-tuple)cFg|]}tt|Srr.0params r z1DSATest.test_construct_4tuple..^&ddd% genn55dddrN)ygpqr construct_test_verificationrr8r9r:r;r(s rtest_construct_4tuplezDSATest.test_construct_4tuple\siddDFDFTXTZ\`\bCcddd Aq!##Q1aL11 '''''rcd|j|j|j|j|jfD\}}}}}|j|||||f}||||dS)z6DSA (default implementation) constructed key (5-tuple)cFg|]}tt|Sr1r2r3s rr6z1DSATest.test_construct_5tuple..d&oooU=88ooorN) r8r9r:r;xrr< _test_signingr=)rr8r9r:r;rCr(s rtest_construct_5tuplezDSATest.test_construct_5tuplebsootvtvW[W]_c_egkgmFnoooAq!Q##Q1aO44 6""" '''''rcld|j|j|j|jfD\}}}}|||dz|f}|t |jj|||||dzf}|t |jj||d||f}|t |jj|dS)NcFg|]}tt|Sr1r2r3s rr6z3DSATest.test_construct_bad_key4..jr7r)r8r9r:r; assertRaises ValueErrorrr<)rr8r9r:r;tups rtest_construct_bad_key4zDSATest.test_construct_bad_key4isddDFDFTXTZ\`\bCcddd Aq!!QqS!n *dh&8#>>>!Q!n *dh&8#>>>!Ql *dh&8#>>>>>rc&d|j|j|j|j|jfD\}}}}}|||||dzf}|t |jj||||||dzf}|t |jj|dS)NcFg|]}tt|Sr1r2r3s rr6z3DSATest.test_construct_bad_key5..urBrrH ) r8r9r:r;rCrIrJrr<)rr8r9r:r;rCrKs rtest_construct_bad_key5zDSATest.test_construct_bad_key5tsootvtvW[W]_c_egkgmFnoooAq!Q!Q1Q3 *dh&8#>>>!Q1R4  *dh&8#>>>>>rc|d||d||d||d|j|jk|dt |j|d|jdz |jz||jt|j |j |j|dd|j cxko |jkncdS)NrHr) assertEqual has_privatecan_sign can_encryptr:r;rr8powr9rC)rr(s rr$zDSATest._check_private_key|s. F..00111 FOO--... F..00111 FHvx/000 d68nn--- VX\VX5666 3vx68#D#DEEE A333368333344444rcVtt|j}tt|j}|d||d||d||dt|d|d|j |j k|dt|j |d|j dz |j z| t|j|||||kd|||kd|||dS)NrrHrCrRTF)rrkm_hashrSrTrUrVhasattrr:r;rrI TypeError_signr% publickey)rr(rYrZs rr&zDSATest._check_public_keys '$&// * *wt{3344 F..00111 FOO--... F..00111 GFC00111 FHvx/000 d68nn--- VX\VX5666 )V\61=== **,,0A0A0C0CCDIII **,,0A0A0C0CCEJJJ **,,f.>.>.@.@AAAAArcttt|j}tt|j}tt|j}tt|j}|||\}}|||f||fdSN)rrrYrZrrr]rS)rr(rYrZrarr_outs_outs rrDzDSATest._test_signings '$&// * *wt{3344 '$&// * * '$&// * *fa00 !Q%00000rc~tt|j}tt|j}tt|j}|||||f|||dz||fdS)NrH)rrrZrar assertTrue_verify assertFalse)rr(rZrars rr=zDSATest._test_verificationswt{3344 '$&// * * '$&// * * v1v66777  QF;;<<<<.r7r)r8r9r:r;rr<reprr>s r test_reprzDSATest.test_reprs^ddDFDFTXTZ\`\bCcddd Aq!##Q1aL11 V rN)__name__ __module__ __qualname__rr8r9r:r;rCrY k_inverserr mrZrarr r*r.r?rErLrPr$r&rDr=rkr1rrrr(s 7 8 8A 7 8 8A 7 8 8A  ?@@A  ?@@A  ?@@AGHHI%A TD E EF  ?@@A  ?@@A$$$$$$((( ((( ? ? ???? 5 5 5BBB4111===rrc&eZdZdZdZdZdZdS) DSADomainTestctd}|}td|}||j|j||j|j||j|j|||dS)z1Verify we can generate new keys in a given domainr"domainN)rr#rurSr:r;r9)r dsa_key_1 domain_params dsa_key_2s r test_domain1zDSADomainTest.test_domain1sLL&& !((** LLmL<<  ik222 ik222 ik222 ))++Y-=-=-?-?@@@@@rcddlm}ddlm}|d}|dks|||jkr|d}|d}||z}|d}||zd z}|dkg|||jk|d }d } | d krt|||} |d z }| d k||| fS) NrInteger) Primalityr"P) exact_bitsi`rH) Crypto.Math.Numbersr| Crypto.Mathr} size_in_bitstest_probable_primePROBABLY_PRIMErandomrW) rr|r}r:q1q2r;zhr9s r_get_weak_domainzDSADomainTest._get_weak_domains2//////)))))) GAJJnn$&&)*G*G*J*JiNf*f*f2..B2..BRA(33AA A nn$&&)*G*G*J*JiNf*f*f GAJJ 1ffAq! A FA1ff1ayrc~|}|ttjd|dS);Verify that domain parameters with composite q are rejectedr"rtN)rrIrJrr#)rrws rtest_generate_error_weak_domainz-DSADomainTest.test_generate_error_weak_domains:--//  *clDOOOOOrcddlm}|\}}}t|d|}|t t j||||fdS)rrr{YN)rr|rrWrIrJrr<)rr|r:r;r9r8s r test_construct_error_weak_domainz.DSADomainTest.test_construct_error_weak_domainsd 0/////''))1a B]] *cmaAq\BBBBBrN)rlrmrnryrrrr1rrrrrrs[ A A A,PPPCCCCCrrrcfg}|ttz }|ttz }|Sr`)rrrr)configtestss r get_testsrs0 E _W % %%E _] + ++E Lr__main__cBtjtSr`)unittest TestSuiterr1rrrsH&y{{33rsuite) defaultTest)__doc__osCrypto.Util.py3compatrCrypto.SelfTest.st_commonrrrrTestCaserrrrrlrmainr1rrrs2/. ####GGGGGGGGGG%%%MMMMMhMMM`2C2C2C2C2CH%2C2C2Cj  z 3 3EHMg&&&&&&r