gh ddlZddlmZddlmZddlmZddlmZddl m Z m Z m Z ddl mZGdd ejZGd d ejZGd d ejZGddejZGddejZGddejZGddejZedddddddpgZeD]-ZejejejfdZeedejze.Gdd ejZedd!d"d#d$d%dpgZeD]-Zejejejfd&Zeedejze.Gd'd(ejZ edd)d*d+d,d-dpgZeD]-Zejejejfd.Zee dejze.Gd/d0ejZ!edd1d2d3d4d5dpgZeD]-Zejejejfd6Zee!dejze.Gd7d8ejZ"edd9d:d;d<d=dpgZeD]-Zejejejfd>Zee"dejze.Gd?d@ejZ#GdAdBejZ$GdCdDejZ%GdEdFejZ&GdGdHejZ'GdIdJejZ(GdKdLejZ)GdMdNejZ*GdOdPejZ+GdQdRejZ,ifdSZ-e.dTkrdUZ/ej0dVWdSdS)XN) unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)IntegerceZdZdZdZdS) TestEccPointctjdj}tjdj} ||zJ#t$r}dt |vsJYd}~nd}~wwxYw ||z }J#t$r}dt |vsJYd}~nd}~wwxYwGdd}|||k|||kdS)NP-256curveP-384Fznot on the same curveceZdZdS)+TestEccPoint.test_mix..OtherKeyTypeN)__name__ __module__ __qualname__/builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/PublicKey/test_ECC_NIST.py OtherKeyTyper>s Drr)rgeneratepointQ ValueErrorstr assertFalse assertTrue)selfp1p2ers rtest_mixzTestEccPoint.test_mix-sH \ ( ( ( / \ ( ( ( / 5 GG 5 5 5 5*c!ff444444444 5 5 "HB 5 5 5 5*c!ff444444444 5         ||~~-... llnn,-----s-= A$AA$(A// B9BBc|tjdddd}|t|ddS)Nrl} &_ni9 ]}!5$7P%^-&l- k%j&*/n;[jH**7 i/v{-l] W][@iMmlQ;i?XU,p)rdpoint_xpoint_yaEccKey(curve='NIST P-256', point_x=20573031766139722500939782666697015100983491952082159880539639074939225934381, point_y=108863130203210779921520632367477406025152638284581252625277850513266505911389, d=75467964919405407085864614198393977741148485328036093939970922195112333446269))r construct assertEqualrepr)r!r"s r test_reprzTestEccPoint.test_reprDs] ]j#p#qsss b$@ A A A A ArN)rrrr%r-rrrr r +s7....AAAAArr ceZdZdZedddZedddZdZd Zd Z d Z d Z d Z dZ dZdZdS)TestEccPoint_NIST_P192ztTests defined in section 4.1 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl ,/}H5iH \D>GE l ;_ !3o3nk3> 6@I%p192rl S.7lpPa7ng>=}Tb"l y5R]2vNA>RmKwYfe% !dctdd}||j|||jdSNrrsetpointSr+r!pointWs rtest_setzTestEccPoint_NIST_P192.test_setYA!Q 4; -----rc|j}|||j||j|||j||j|jdSNr5copyr+r4pointTassertNotEqualr6s r test_copyz TestEccPoint_NIST_P192.test_copy^y!!## --- 4; --- DK55555rc|j }|j|z}|||jdSr;r5r+point_at_infinityr!negSsums r test_negatez"TestEccPoint_NIST_P192.test_negateeA |kD  dk;;==>>>>>rcd}d}|j|jz}||j|||j||}|j|z}|||j||jz}|||j||z}|||dSNl r+xyrDr!pointRxpointRypointRpais r test_additionz$TestEccPoint_NIST_P192.test_additionjsDDt{* 7+++ 7+++&&((s" ---t{" ---s %%%%%rc*d}d}|j}||jz }||j|||j||}|j}||z }|||j|}||jz }|||j|}||z }|||dSrKr5r=r>r+rMrNrDrOs rtest_inplace_additionz,TestEccPoint_NIST_P192.test_inplace_additions DD!!##$+ 7+++ 7+++&&((!!###  ---$+ ---#  %%%%%rc*d}d}|j}|||j|||j||j}|}|||||j}||z }||j|||j|dS)Nl bi~hIR wYTSD{1.- l %Y^-<6!N qpr5r=doubler+rMrNrDrOs r test_doublingz$TestEccPoint_NIST_P192.test_doublingsDD!!##  7+++ 7+++k++--  %%%!!##& 7+++ 7+++++rc\d}d}d}j|z}|j||j|j}jdz}||t fd|jz}|j||j|t|jz}|j||j|dS)N tlkdcH(L j] u5Qx l 1m~KT4IwxIG-i!wl {5syq- BKBiorcjdzSNr5r!srz=TestEccPoint_NIST_P192.test_scalar_multiply..dkB.>rr5r+rMrNrD assertRaisesrr r!r'rPrQrRrSs` rtest_scalar_multiplyz+TestEccPoint_NIST_P192.test_scalar_multiplys* >DDq 7+++ 7+++k++--q %%% *&>&>&>&>???T[ 7+++ 7+++dk) 7+++ 7+++++rcd}d}d}d}|j|z|j|zz}||j|||j|dS)Nr]l rr 6O^ho3&gaOqK l [oge?/ or6uc;'{l D6vMc'~vLz 6bHer5r>r+rMrNr!r'r$rPrQrRs rtest_joint_scalar_multiplyz1TestEccPoint_NIST_P192.test_joint_scalar_multiplysb > >DDq4;?2 7+++ 7+++++rc||jd||jddS)Nr+r5 size_in_bits size_in_bytesrbs r test_sizesz!TestEccPoint_NIST_P192.test_sizesP 1133S999 2244b99999rN)rrr__doc__rr5r>r8r@rHrTrWr[rhrlrsrrrr/r/Ls~~ XBBF XBBF ... 666??? &&&,&&&4,,,*,,,4,,,:::::rr/ceZdZdZedddZedddZdZd Zd Z d Z d Z d Z dZ dZdZdS)TestEccPoint_NIST_P224ztTests defined in section 4.2 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl[;!4E7<_1*vK6N9!TY:)Pl"?Iq.pGA26', X-p/i;p224rlm=Mp@2i#M#YB/#nX\jd-l4 i"nQ)N}:{ hk-xBISIQ 1ctdd}||j|||jdSr2r3r6s rr8zTestEccPoint_NIST_P224.test_setr9rc|j}|||j||j|||j||j|jdSr;r<r6s rr@z TestEccPoint_NIST_P224.test_copyrArc|j }|j|z}|||jdSr;rCrEs rrHz"TestEccPoint_NIST_P224.test_negaterIrcd}d}|j|jz}||j|||j||}|j|z}|||j||jz}|||j||z}|||dSNl}Q+|y%w<{ Vu{adlpZv8)_z-hK G^ 6gyO9rLrOs rrTz$TestEccPoint_NIST_P224.test_additionsLLt{* 7+++ 7+++&&((s" ---t{" ---s %%%%%rc*d}d}|j}||jz }||j|||j||}|j}||z }|||j|}||jz }|||j|}||z }|||dSr}rVrOs rrWz,TestEccPoint_NIST_P224.test_inplace_addition s LL!!##$+ 7+++ 7+++&&((!!###  ---$+ ---#  %%%%%rc*d}d}|j}|||j|||j||j}|}|||||j}||z }||j|||j|dS)Nl_xxRh>7ZPJIw}-r*l}]o`}M H^>A0Z]Sv>L1|+rYrOs rr[z$TestEccPoint_NIST_P224.test_doubling&sLL!!##  7+++ 7+++k++--  %%%!!##& 7+++ 7+++++rc\d}d}d}j|z}|j||j|j}jdz}||t fd|jz}|j||j|t|jz}|j||j|dS)N;WU 'uoZw]o]em82~P)l<N0VmoLBm_J+'"/F*iKl%lmG[nWh8z{hbI U_OxQB)JrcjdzSr_rarbsrrcz=TestEccPoint_NIST_P224.test_scalar_multiply..Jrdrrergs` rrhz+TestEccPoint_NIST_P224.test_scalar_multiply;s* FLLq 7+++ 7+++k++--q %%% *&>&>&>&>???T[ 7+++ 7+++dk) 7+++ 7+++++rcd}d}d}d}|j|z|j|zz}||j|||j|dS)Nrl6W]UDwyptq>3dd|?)5l>HEK5\ 5F2~?jTm{ +E6l1(^VKUC?++'*X:pC rjrks rtest_joing_scalar_multiplyz1TestEccPoint_NIST_P224.test_joing_scalar_multiplyUsb F FLLq4;?2 7+++ 7+++++rc||jd||jddS)Nrprbs rrsz!TestEccPoint_NIST_P224.test_sizes_rtrNrrrrurr5r>r8r@rHrTrWr[rhrrsrrrrwrws~~ XJJF XJJF ... 666??? &&&,&&&4,,,*,,,4,,,:::::rrwcxeZdZdZeddZeddZdZdZdZ d Z d Z d Z d Z d ZdZdS)TestEccPoint_NIST_P256ztTests defined in section 4.3 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl,; zQCl:a*N1x066OPKFQlATU*-sX)>~|N\}T9%Dbu4urcjdzSr_rarbsrrcz=TestEccPoint_NIST_P256.test_scalar_multiply..rdrrergs` rrhz+TestEccPoint_NIST_P256.test_scalar_multiplys* NTTq 7+++ 7+++k++--q %%% *&>&>&>&>???T[ 7+++ 7+++dk) 7+++ 7+++++rcd}d}d}d}|j|z|j|zz}||j|||j|dS)NrlT:XuMKt^5~{"/T3G1SlvbaB>Y5OgEI# d3ZgXluR`/. 5ES6p* Prrjrks rrz1TestEccPoint_NIST_P256.test_joing_scalar_multiplysb N NTTq4;?2 7+++ 7+++++rc||jd||jddS)N rprbs rrsz!TestEccPoint_NIST_P256.test_sizesrtrNrrrrrrds~~ XRRTTFXRRTTF... 666??? &&&,&&&4,,,*,,,4,,,:::::rrc|eZdZdZedddZedddZdZdZd Z d Z d Z d Z d Z dZdZdS)TestEccPoint_NIST_P384ztTests defined in section 4.4 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdflK:}@sMLUlP}&zIy$GY9Q%?pa(Fv|EO{ctddd}||j|||jdS)Nrrr3r6s rr8zTestEccPoint_NIST_P384.test_setsE!Q'' 4; -----rc|j}|||j||j|||j||j|jdSr;r<r6s rr@z TestEccPoint_NIST_P384.test_copyrArc|j }|j|z}|||jdSr;rCrEs rrHz"TestEccPoint_NIST_P384.test_negaterIrcd}d}|j|jz}||j|||j||}|j|z}|||j||jz}|||j||z}|||dS)Nl^\mLH\%sz. _QHp)wB '2h\|Sz9Y07s\\%l$ rQ4 1ml w{g~OMwr6bLLU;8*$0xrs,rLrOs rrTz$TestEccPoint_NIST_P384.test_addition sttt{* 7+++ 7+++&&((s" ---t{" ---s %%%%%rc*d}d}|j}||jz }||j|||j||}|j}||z }|||j|}||jz }|||j|}||z }|||dSrrVrOs r_test_inplace_additionz-TestEccPoint_NIST_P384._test_inplace_addition"rrc*d}d}|j}|||j|||j||j}|}|||||j}||z }||j|||j|dS)NlLP eroBr0_nCYw~s7xI|Z:Ze*X!Tl]e^A|\" Rn0WWCs(h} c5JBNnN=.rYrOs rr[z$TestEccPoint_NIST_P384.test_doubling<stt!!##  7+++ 7+++k++--  %%%!!##& 7+++ 7+++++rcBd}d}d}j|z}|j||j|j}jdz}||t fddS)N4.v0Z:z;ODK#Gv)Z5mXCDs:frkIlR@dV]9"O/'5r}]~AYwHoY4-?~wlf9;Y?5.BieXcXtqMDb7K6X}1 }XrcjdzSr_rarbsrrcz=TestEccPoint_NIST_P384.test_scalar_multiply..`rdrr5r+rMrNrDrfrrgs` rrhz+TestEccPoint_NIST_P384.test_scalar_multiplyQs nttq 7+++ 7+++k++--q %%% *&>&>&>&>?????rcd}d}d}d}|j|z|j|zz}||j|||j|dS)Nrl]8|$W!&%TxFgqeYTKeM80,YO_ltdvO*;q/ $L]0 }pnr8r@rHrTrr[rhrrsrrrrrs~~ XrrF XrrF ... 666??? &&&,&&&4,,,*@@@",,,:::::rrc|eZdZdZedddZedddZdZdZd Z d Z d Z d Z d Z dZdZdS)TestEccPoint_NIST_P521ztTests defined in section 4.5 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl#A5;LK5N}W,* n<UP% hA=Cb?iOtiL 1!@vlv' Wl##5kS7?I]*[nnkYi[7. d 9MT3X=TP5_ Icc np521l#GJo7$=?>D^`bXkNo tG`xw-dg!;I7 >S{)wh\.,#l#cae.tDffI*"a%A&4h#Ww5%D2>n8vpctdd}||j|||jdSr2r3r6s rr8zTestEccPoint_NIST_P521.test_set~r9rc|j}|||j||j|||j||j|jdSr;r<r6s rr@z TestEccPoint_NIST_P521.test_copyrArc|j }|j|z}|||jdSr;rCrEs rrHz"TestEccPoint_NIST_P521.test_negaterIrcd}d}|j|jz}||j|||j||}|j|z}|||j||jz}|||j||z}|||dSNl#Y[V=xCmuOFl*sg Np)giD>u{9gh0!cK-Op- ^Nl#U,R&9/ @a}#>;cd{cl@E' 98kh~a7 ?!-(O+SrLrOs rrTz$TestEccPoint_NIST_P521.test_additions]]t{* 7+++ 7+++&&((s" ---t{" ---s %%%%%rc*d}d}|j}||jz }||j|||j||}|j}||z }|||j|}||jz }|||j|}||z }|||dSrrVrOs rrWz,TestEccPoint_NIST_P521.test_inplace_additions]]!!##$+ 7+++ 7+++&&((!!###  ---$+ ---#  %%%%%rc*d}d}|j}|||j|||j||j}|}|||||j}||z }||j|||j|dS)Nl#k'.rdrrrgs` rrhz+TestEccPoint_NIST_P521.test_scalar_multiplys W]]q 7+++ 7+++k++--q %%% *&>&>&>&>?????rcd}d}d}d}|j|z}||j|zz }||j|||j|dS)Nrl#|TB)I%_ #wUV6C9c1z7bnl<#qI"fu#0 Xajpx8=nMl#=etEK9JBadZYx ./jVa@3hMhA]_`s}J+dptl#XM`Wi&GgwH"!e+oeG$,oQ Tk9P>@5{U':c0'=NDH?rjrks rrz1TestEccPoint_NIST_P521.test_joing_scalar_multiplyss W W]]q$+/! 7+++ 7+++++rc||jd||jddS)Ni Brprbs rrsz!TestEccPoint_NIST_P521.test_sizesrtrNrrrrrrqs~~ X[[F X[[F ... 666??? &&&,&&&4,,,*@@@" , , ,:::::rrcPeZdZdZedZeejejdZ dS)TestEccPoint_PAI_P1929Test vectors from http://point-at-infinity.org/ecc/nisttvr0N rrrrurrrGxGypointGrrrrr4CC FOE Xeh& 1 1FFFrr) PublicKeyrzpoint-at-infinity.org-P192.txtz&P-192 tests from point-at-infinity.orgc t|Sr;intks rrcrc CFFrc"t|dSNrrMs rrcrcC2JJrc"t|dSrrrNs rrcrcrr)rrMrNc|j|z}||j|||j|dSr;rr+rMrNr!scalarrMrNresults rnew_testrDv% 1%%% 1%%%%%rztest_%dcPeZdZdZedZeejejdZ dS)TestEccPoint_PAI_P224rrxNrrrrrr rrrzpoint-at-infinity.org-P224.txtz&P-224 tests from point-at-infinity.orgc t|Sr;rrs rrcrcrrc"t|dSrrrs rrcrcrrc"t|dSrrrs rrcrcrrc|j|z}||j|||j|dSr;rrs rrrrrcPeZdZdZedZeejejdZ dS)TestEccPoint_PAI_P256rp256Nrrrrrrrrrzpoint-at-infinity.org-P256.txtz&P-256 tests from point-at-infinity.orgc t|Sr;rrs rrcrc)rrc"t|dSrrrs rrcrc*rrc"t|dSrrrs rrcrc+rrc|j|z}||j|||j|dSr;rrs rrr-rrcPeZdZdZedZeejejdZ dS)TestEccPoint_PAI_P384rrNrrrrrr4rrrzpoint-at-infinity.org-P384.txtz&P-384 tests from point-at-infinity.orgc t|Sr;rrs rrcrc>rrc"t|dSrrrs rrcrc?rrc"t|dSrrrs rrcrc@rrc|j|z}||j|||j|dSr;rrs rrrBrrcPeZdZdZedZeejejdZ dS)TestEccPoint_PAI_P521rrNrrrrrrIrrrzpoint-at-infinity.org-P521.txtz&P-521 tests from point-at-infinity.orgc t|Sr;rrs rrcrcSrrc"t|dSrrrs rrcrcTrrc"t|dSrrrs rrcrcUrrc|j|z}||j|||j|dSr;rrs rrrWrrc8eZdZdZdZdZdZdZdZdZ dS) TestEccKey_P192ctdd}||jd||||jjtdj||jj tdj ttdjtdj d}tdd|}||jd||||j|tdd}tdd}dS) NP-192rr'r0rrr'point secp192r1 prime192v1 r r+r'r has_privaterrMrrrNrrr!keyrs rtest_private_keyz TestEccKey_P192.test_private_key`67a((( """ ))*** wv'9::: wv'9:::+WV_-?wOOO7au555 """ ))*** U+++;!,,,<1---rcttdjtdjd}t d|}||||j|dS)Nr0rrrr rrrrr rrr+rr!rrs rtest_public_keyzTestEccKey_P192.test_public_keyrr+WV_-?wOOO7%000 **+++ U+++++rctdd}|}||||j|jdS)Nrrr public_keyrrr+rr!priv_keypub_keys rtest_public_key_derivedz'TestEccKey_P192.test_public_key_derivedye1---%%'' ,,../// '.99999rc>|tddS)Nc$tddS)NzP-193rrr rrrrcz4TestEccKey_P192.test_invalid_curve..f7a.H.H.Hrrfrrbs rtest_invalid_curvez"TestEccKey_P192.test_invalid_curve" *&H&HIIIIIrcv|td|tddS)Nc$tddS)Nrrrrrrrrcz0TestEccKey_P192.test_invalid_d..rrcDtdtdjS)Nrr0rr rorderrrrrcz0TestEccKey_P192.test_invalid_d..$f77>v7L/N/N/Nrrrbs rtest_invalid_dzTestEccKey_P192.test_invalid_dQ *&H&HIII *'N'N O O O O Orctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nrrr'rrr*r r+r?r! private_key private_key2 private_key3r  public_key2 public_key3s r test_equalityzTestEccKey_P192.test_equalitymaw777 }q888 }q888  ++-- "--// "--//  l333 K666 [111 J 444 J 44444rctjd}|dt|||jd||jddS)Nr0rzcurve='NIST P-192'z NIST P-192rrassertInr,r+rr r!rs rtest_name_consistencyz%TestEccKey_P192.test_name_consistencypl((( *DII666 L111 ))/>>>>>rN rrrrrrrrr)r/rrrrr^...$,,,:::JJJOOO 555$?????rrc8eZdZdZdZdZdZdZdZdZ dS) TestEccKey_P224ctdd}||jd||||jjtdj||jj tdj ttdjtdj d}tdd|}||jd||||j|tdd}tdd}dS) NP-224rrrxrr secp224r1 prime224v1rrs rrz TestEccKey_P224.test_private_keyrrcttdjtdjd}t d|}||||j|dS)Nrxr6rrrrs rrzTestEccKey_P224.test_public_keyrrctdd}|}||||j|jdS)Nr6rrr r s rrz'TestEccKey_P224.test_public_key_derivedrrc>|tddS)Nc$tddS)NzP-225rrrrrrrcz4TestEccKey_P224.test_invalid_curve..rrrrbs rrz"TestEccKey_P224.test_invalid_curverrcv|td|tddS)Nc$tddS)Nr6rrrrrrrcz0TestEccKey_P224.test_invalid_d..rrcDtdtdjS)Nr6rxrrrrrrcz0TestEccKey_P224.test_invalid_d..rrrrbs rrzTestEccKey_P224.test_invalid_drrctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nrr6r r!r"r#s rr)zTestEccKey_P224.test_equalityr*rctjd}|dt|||jd||jddS)Nrxrzcurve='NIST P-224'z NIST P-224r,r.s rr/z%TestEccKey_P224.test_name_consistencyr0rNr1rrrr4r4r2rr4c8eZdZdZdZdZdZdZdZdZ dS) TestEccKey_P256c4tdd}||jd||||jjtdj||jj tdj ttdjtdj }tdd|}||jd||||j|tdd}tdd}| ttdd dS) Nrrrrr secp256r1 prime256v1s HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)rseed)r r+r'r rrrMrrrNrrrfrrs rrz TestEccKey_P256.test_private_keysR7a((( """ ))*** wv'9::: wv'9:::+WV_-?@@7au555 """ ))*** U+++;!,,,<1--- *fFIIIIIrc ttdjtdj}t d|}||||j|dS)Nrrrrrs rrzTestEccKey_P256.test_public_keysm+WV_-?@@7%000 **+++ U+++++rctdd}|}||||j|jdS)Nrrrr r s rrz'TestEccKey_P256.test_public_key_derivedrrc>|tddS)Nc$tddS)NzP-257rrrrrrrcz4TestEccKey_P256.test_invalid_curve.. rrrrbs rrz"TestEccKey_P256.test_invalid_curve rrcv|td|tddS)Nc$tddS)Nrrrrrrrrcz0TestEccKey_P256.test_invalid_d.. rrcDtdtdjS)Nrrrrrrrrcz0TestEccKey_P256.test_invalid_d..sf7gfoF[.\.\.\rrrbs rrzTestEccKey_P256.test_invalid_d s< *&H&HIII *&\&\]]]]]rctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nrrr r!r"r#s rr)zTestEccKey_P256.test_equalityr*rctjd}|dt|||jd||jddS)Nrrzcurve='NIST P-256'z NIST P-256r,r.s rr/z%TestEccKey_P256.test_name_consistency"r0rNr1rrrrCrCsJJJ*,,,:::JJJ^^^555$?????rrCc8eZdZdZdZdZdZdZdZdZ dS) TestEccKey_P384ctd}tdd}||jd||||jj|j||jj |j t|j|j d}tdd|}||jd||||j|tdd}tdd}tdd}dS)Nrrrrr secp384r1 prime384v1 rr r+r'r rrrMrrNrr)r!rrrs rrz TestEccKey_P384.test_private_key+:v7a((( """ ))*** tw/// tw///$'6227au555 """ ))*** U+++6Q''';!,,,<1---rctd}t|j|jd}t d|}||||j|dS)Nrrr rrrrr rrr+r)r!rrrs rrzTestEccKey_P384.test_public_key@nv$'6227%000 **+++ U+++++rctdd}|}||||j|jdS)Nrrrr r s rrz'TestEccKey_P384.test_public_key_derivedHrrc>|tddS)Nc$tddS)NzP-385rrrrrrrcz4TestEccKey_P384.test_invalid_curve..Prrrrbs rrz"TestEccKey_P384.test_invalid_curveOrrcv|td|tddS)Nc$tddS)Nrrrrrrrrcz0TestEccKey_P384.test_invalid_d..SrrcDtdtdjS)Nrrrrrrrrcz0TestEccKey_P384.test_invalid_d..Trrrrbs rrzTestEccKey_P384.test_invalid_dRrrctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nrrr r!r"r#s rr)zTestEccKey_P384.test_equalityWr*rctjd}|dt|||jd||jddS)Nrrzcurve='NIST P-384'z NIST P-384r,r.s rr/z%TestEccKey_P384.test_name_consistencyir0rNr1rrrrRrR)...*,,,:::JJJOOO 555$?????rrRc8eZdZdZdZdZdZdZdZdZ dS) TestEccKey_P521ctd}tdd}||jd||||jj|j||jj |j t|j|j d}tdd|}||jd||||j|tdd}tdd}tdd}dS)NrP-521rrr secp521r1 prime521v1rV)r!rrrs rrz TestEccKey_P521.test_private_keyrrWrctd}t|j|jd}t d|}||||j|dS)NrrrrY)r!rrrs rrzTestEccKey_P521.test_public_keyrZrctdd}|}||||j|jdS)Nrgrrr r s rrz'TestEccKey_P521.test_public_key_derivedrrc>|tddS)Nc$tddS)NzP-522rrrrrrrcz4TestEccKey_P521.test_invalid_curve..rrrrbs rrz"TestEccKey_P521.test_invalid_curverrcv|td|tddS)Nc$tddS)Nrgrrrrrrrcz0TestEccKey_P521.test_invalid_d..rrcDtdtdjS)Nrgrrrrrrrcz0TestEccKey_P521.test_invalid_d..rrrrbs rrzTestEccKey_P521.test_invalid_drrctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nrrgr r!r"r#s rr)zTestEccKey_P521.test_equalityr*rctjd}|dt|||jd||jddS)Nrrzcurve='NIST P-521'z NIST P-521r,r.s rr/z%TestEccKey_P521.test_name_consistencyr0rNr1rrrrereprcrrec eZdZdZdZdZdS)TestEccModule_P192cxtjd}||||jt tdjtdj d|j zdtjdtjddS)Nrrr0rr rrr rr+rrrrrr'r.s r test_generatez TestEccModule_P192.test_generatel))) ))*** Xgfo.@.5fo.@.5&7&79<&?/5 6 6 6 ;'''' <((((((rcltjdd}||||jt djtjdt djt dj }| |||jt djtjddtjddtjdddS)Nrrrr0rr(r)rr rr*r rr+rrGrrrr.s rtest_constructz!TestEccModule_P192.test_constructm'Q/// ))*** WV_%6777m'76?3E$+FO$6888 **+++ WV_%6777 Fa(((( K1---- LA......rc tdd}ttdjtdj}|jt t jfddi||jt t jfddd|dS) N r!r(r)r0rrrdictrrrrfrrr*r!coordcoordGs rtest_negative_constructz*TestEccModule_P192.test_negative_constructR+++gfo0'&/:LMMM*cmLL7LeLLL*cmR7aRR6RRRRRrNrrrrwr}rrrrrtrtF ) ) )/// SSSSSrrtc eZdZdZdZdZdS)TestEccModule_P224cxtjd}||||jt tdjtdj d|j zdtjdtjddS)Nr6rrxr7r8rvr.s rrwz TestEccModule_P224.test_generaterxrcltjdd}||||jt djtjdt djt dj }| |||jt djtjddtjddtjdddS)Nr6rrrxrzr7r8r{r.s rr}z!TestEccModule_P224.test_constructr~rc tdd}ttdjtdj}|jt t jfddi||jt t jfddd|dS) Nrr!rrxrr6rrrrs rrz*TestEccModule_P224.test_negative_constructrrNrrrrrrrrrc eZdZdZdZdZdS)TestEccModule_P256cvtjd}||||jt tdjtdj |j zdtjdtjddS)NrrrrErFrvr.s rrwz TestEccModule_P256.test_generatesl))) ))*** Xgfo.@.5fo.@&B&BDGE&J.4 6 6 6 ;'''' <((((((rcltjdd}||||jt djtjdt djt dj }| |||jt djtjddtjddtjdddS)NrrrrrzrErFr{r.s rr}z!TestEccModule_P256.test_constructr~rc tdd}ttdjtdj}|jt t jfddi||jt t jfddd|dS) Nrr!rrrrrrrrs rrz*TestEccModule_P256.test_negative_construct#rrNrrrrrrsF ) ) )/// SSSSSrrc eZdZdZdZdZdS)TestEccModule_P384cdtd}tjd}||||jt|j|j d|j ztjdtjddS)NrrrrTrU rrrr rr+rrrrr'r!rrs rrwz TestEccModule_P384.test_generate-l))) ))*** Xeh&%I%ICE%QRRR ;'''' <((((((rcDtd}tjdd}||||jtdjtjd|j|j }| |||j|jtjddtjddtjdddS)NrrrrrzrTrU rrr*r rr+rr|rrrrs rr}z!TestEccModule_P384.test_construct8m'Q/// ))*** WV_%6777m'58UXNNN **+++ UW--- Fa(((( K1---- LA......rc tdd}ttdjtdj}|jt t jfddi||jt t jfddd|dS) Nrr!rrrrrrrrs rrz*TestEccModule_P384.test_negative_constructHrrNrrrrrr+F ) ) )/// SSSSSrrc eZdZdZdZdZdS)TestEccModule_P521cdtd}tjd}||||jt|j|j d|j ztjdtjddS)Nrrgrrhrirrs rrwz TestEccModule_P521.test_generateRrrcDtd}tjdd}||||jtdjtjd|j|j }| |||j|jtjddtjddtjdddS)Nrrgrrrzrhrirrs rr}z!TestEccModule_P521.test_construct]rrc tdd}ttdjtdj}|jt t jfddi||jt t jfddd|dS) Nrr!rrrrgrrrrs rrz*TestEccModule_P521.test_negative_constructmrrNrrrrrrPrrrcg}|ttz }|ttz }|ttz }|ttz }|tt z }|tt z }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|tt z }|tt"z }|tt$z }|tt&z }|tt(z }|tt*z }|Sr;)rr r/rwrrrrrrrrrr4rCrRrertrrrr)configtestss r get_testsrus E _\ * **E _3 4 44E _3 4 44E _3 4 44E _3 4 44E _3 4 44E _2 3 33E _2 3 33E _2 3 33E _2 3 33E _2 3 33E __ - --E __ - --E __ - --E __ - --E __ - --E _/ 0 00E _/ 0 00E _/ 0 00E _/ 0 00E _/ 0 00E Lr__main__cBtjtSr;)unittest TestSuiterrrrrcrcsH&y{{33rsuite) defaultTest)1rbinasciirCrypto.SelfTest.st_commonrCrypto.SelfTest.loaderrCrypto.PublicKeyrCrypto.PublicKey.ECCrrr Crypto.Math.Numbersr TestCaser r/rwrrrrtv_paitvrrMrNrsetattrcountrrrrrr4rCrRrertrrrrrrrmainrrrrs!>555555444444 ::::::::::''''''AAAAA8$AAABI:I:I:I:I:X.I:I:I:XI:I:I:I:I:X.I:I:I:XG:G:G:G:G:X.G:G:G:T@:@:@:@:@:X.@:@:@:FA:A:A:A:A:X.A:A:A:H22222H-222  /4<**....00 1 1 7 57  CCB dbdbd&&&& G !9rx#7BBBB22222H-222  /4<**....00 1 1 7 57  CCB dbdbd&&&& G !9rx#7BBBB22222H-222  /4<**....00 1 1 7 57  CCB dbdbd&&&& G !9rx#7BBBB22222H-222  /4<**....00 1 1 7 57  CCB dbdbd&&&& G !9rx#7BBBB22222H-222  /4<**....00 1 1 7 57  CCB dbdbd&&&& G !9rx#7BBBB@?@?@?@?@?h'@?@?@?F@?@?@?@?@?h'@?@?@?FB?B?B?B?B?h'B?B?B?JD?D?D?D?D?h'D?D?D?ND?D?D?D?D?h'D?D?D?N$S$S$S$S$S*$S$S$SN$S$S$S$S$S*$S$S$SN#S#S#S#S#S*#S#S#SL"S"S"S"S"S*"S"S"SJ"S"S"S"S"S*"S"S"SJ4 z 3 3EHMg&&&&&&r