+
    '(jn                     *   ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHt ^ RIHt  ! R R	] P                  4      t ! R
 R] P                  4      t ! R R] P                  4      t ! R R] P                  4      t ! R R] P                  4      t ! R R] P                  4      t ! R R] P                  4      t]! RYRRRR RR RR /4      ;'       g    . t] FD  t]P2                  ]P4                  ]P6                  3R lt]! ]R]P<                  ,          ]4       KF  	   ! R  R!] P                  4      t]! RYR"R#RR$ RR% RR& /4      ;'       g    . t] FD  t]P2                  ]P4                  ]P6                  3R' lt]! ]R]P<                  ,          ]4       KF  	   ! R( R)] P                  4      t ]! RYR*R+RR, RR- RR. /4      ;'       g    . t] FD  t]P2                  ]P4                  ]P6                  3R/ lt]! ] R]P<                  ,          ]4       KF  	   ! R0 R1] P                  4      t!]! RYR2R3RR4 RR5 RR6 /4      ;'       g    . t] FD  t]P2                  ]P4                  ]P6                  3R7 lt]! ]!R]P<                  ,          ]4       KF  	   ! R8 R9] P                  4      t"]! RYR:R;RR< RR= RR> /4      ;'       g    . t] FD  t]P2                  ]P4                  ]P6                  3R? lt]! ]"R]P<                  ,          ]4       KF  	   ! R@ RA] P                  4      t# ! RB RC] P                  4      t$ ! RD RE] P                  4      t% ! RF RG] P                  4      t& ! RH RI] P                  4      t' ! RJ RK] P                  4      t( ! RL RM] P                  4      t) ! RN RO] P                  4      t* ! RP RQ] P                  4      t+ ! RR RS] P                  4      t,/ 3RT lt-].RU8X  d   RV t/] P`                  ! RWRX7       R# R# )Z    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integerc                   ,   a  ] tR t^+t o R tR tRtV tR# )TestEccPointc                   \         P                  ! R R7      P                  p\         P                  ! RR7      P                  p W,            Q h  \         d   pR\	        T4      9   g   Q h Rp?MRp?ii ; i Y,          pQ h  \         d   pR\	        T4      9   g   Q h Rp?MRp?ii ; i ! R R4      pT P                  Y! 4       8H  4       T P                  Y! 4       8g  4       R# )P-256curveP-384znot on the same curveNc                       ] tR t^>tRtR# )+TestEccPoint.test_mix.<locals>.OtherKeyType N)__name__
__module____qualname____firstlineno____static_attributes__r       \/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/PublicKey/test_ECC_NIST.pyOtherKeyTyper   >   s    r   r   )r   generatepointQ
ValueErrorstrassertFalse
assertTrue)selfp1p2er   s   &    r   test_mixTestEccPoint.test_mix-   s    \\(//\\(//	5G5 	5*c!f444	5	5HB5 	5*c!f444	5	 	 	|~-.ln,-s0   
A A5A00A59
B B*B%%B*c                p    \         P                  ! R RRRR7      pV P                  \        V4      R4       R# )r   l   }	&_n i9]}!5$7P%^-& l   -
k%j&*/n;[jH**7 
i/v{-l   ]W][@iMmlQ;i?XU,p )r   dpoint_xpoint_ya  EccKey(curve='NIST P-256', point_x=20573031766139722500939782666697015100983491952082159880539639074939225934381, point_y=108863130203210779921520632367477406025152638284581252625277850513266505911389, d=75467964919405407085864614198393977741148485328036093939970922195112333446269)N)r   	constructassertEqualrepr)r#   r$   s   & r   	test_reprTestEccPoint.test_reprD   s9    ]]j#p#qs 	b  $@  	Ar   r   N)r   r   r   r   r'   r0   r   __classdictcell____classdict__s   @r   r   r   +   s     ..A Ar   r   c                      a  ] tR t^Lt o Rt]! RRRR7      t]! RRRR7      tR tR	 t	R
 t
R tR tR tR tR tR tR tRtV tR# )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   ,/}H 5iH\D>GEl   ;_!3o3nk3>
6@I%p192r   l   S.7lpPa7ng>=}Tb"l   y5R]2vNA>RmKwYfe% !dc                R    V P                  V P                  P                  R 4       R# )
NIST P-192Nr.   pointSr   r#   s   &r   test_curve_attribute+TestEccPoint_NIST_P192.test_curve_attributeY       **L9r   c                    \        ^ ^ 4      pVP                  V P                  4       V P                  WP                  4       R# r   Nr   setr;   r.   r#   pointWs   & r   test_setTestEccPoint_NIST_P192.test_set\   /    !Q

4;;-r   c                (   V P                   P                  4       pV P                  WP                   4       VP                  V P                  4       V P                  WP                  4       V P                  V P                   V P                  4       R # Nr;   copyr.   rC   pointTassertNotEqualrD   s   & r   	test_copy TestEccPoint_NIST_P192.test_copya   `    !!#-

4;;-DKK5r   c                    V P                   ) pV P                   V,           pV P                  W P                   P                  4       4       R # rJ   r;   r.   point_at_infinityr#   negSsums   &  r   test_negate"TestEccPoint_NIST_P192.test_negateh   6    |kkD kk;;=>r   c                   R pRpV P                   V P                  ,           pV P                  VP                  V4       V P                  VP                  V4       VP                  4       pV P                   V,           pV P                  W0P                   4       W@P                   ,           pV P                  W0P                   4       WD,           pV P                  W44       R# l   <Sb!tX?w|xh\7% l   K*m/_JSl(U[yq;}Nr;   rM   r.   xyrT   r#   pointRxpointRypointRpais   &    r   test_addition$TestEccPoint_NIST_P192.test_additionm   s    DDt{{*7+7+&&( s"- {{"- %r   c                <   R pRpV P                   P                  4       pW0P                  ,          pV P                  VP                  V4       V P                  VP
                  V4       VP                  4       pV P                   P                  4       pW4,          pV P                  W0P                   4       VP                  4       pW0P                   ,          pV P                  W0P                   4       VP                  4       pW4,          pV P                  W44       R# r\   r;   rL   rM   r.   r^   r_   rT   r`   s   &    r   test_inplace_addition,TestEccPoint_NIST_P192.test_inplace_addition   s    DD!!#++7+7+&&( !!#- ++- %r   c                   R pRpV P                   P                  4       pVP                  4        V P                  VP                  V4       V P                  VP
                  V4       V P                   P                  4       pVP                  4       pVP                  4        V P                  W44       V P                   P                  4       pW3,          pV P                  VP                  V4       V P                  VP
                  V4       R# )l   bi~hIR wYTSD{1.-l   	%Y^-<6!N	qp Nr;   rL   doubler.   r^   r_   rT   r`   s   &    r   test_doubling$TestEccPoint_NIST_P192.test_doubling   s    DD!!#7+7+ kk++-% !!#7+7+r   c                  a  R pRpRpS P                   V,          pS P                  VP                  V4       S P                  VP                  V4       S P                   P	                  4       pS P                   ^ ,          pS P                  WE4       S P                  \        V 3R l4       VS P                   ,          pS P                  VP                  V4       S P                  VP                  V4       \        V4      S P                   ,          pS P                  VP                  V4       S P                  VP                  V4       R# )   tlkdcH(Lj]u5Qx
l   1m~KT4IwxIG-i!wl   {5syq-BKBioc                  *   < S P                   R,          #    r;   r<   s   r   <lambda>=TestEccPoint_NIST_P192.test_scalar_multiply.<locals>.<lambda>       dkkB.>r   Nr;   r.   r^   r_   rT   assertRaisesr   r
   r#   r*   ra   rb   rc   rd   s   f     r   test_scalar_multiply+TestEccPoint_NIST_P192.test_scalar_multiply   s    >DDq7+7+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                    R pRpRpRpV P                   V,          V P                  V,          ,           pV P                  VP                  V4       V P                  VP                  V4       R# )rq   l   rr6O^ho3&gaOqKl   [oge?/ or6uc;'{ l   D6vMc'~vLz6bHeNr;   rM   r.   r^   r_   r#   r*   r&   ra   rb   rc   s   &     r   test_joint_scalar_multiply1TestEccPoint_NIST_P192.test_joint_scalar_multiply   sX    >>DDq4;;?27+7+r   c                    V P                  V P                  P                  4       ^4       V P                  V P                  P                  4       ^4       R# )   Nr.   r;   size_in_bitssize_in_bytesr<   s   &r   
test_sizes!TestEccPoint_NIST_P192.test_sizes   <    113S9224b9r   r   N)r   r   r   r   __doc__r   r;   rM   r=   rF   rO   rX   re   ri   rn   r}   r   r   r   r2   r3   s   @r   r6   r6   L   sg     ~BBF
 BBF
:.
6?
&,&4,*,4,: :r   r6   c                      a  ] tR t^t o Rt]! RRRR7      t]! RRRR7      tR tR	 t	R
 t
R tR tR tR tR tR tR tRtV tR# )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*vK6N9!TY:)Pl   "?Iq.pGA26', X-p/i;p224r   l   m=Mp@2i#M#Y B/#nX\jd-l   4i"nQ)N}:{	hk-xBISIQ
1c                R    V P                  V P                  P                  R 4       R# )
NIST P-224Nr:   r<   s   &r   r=   +TestEccPoint_NIST_P224.test_curve_attribute   r?   r   c                    \        ^ ^ 4      pVP                  V P                  4       V P                  WP                  4       R# rA   rB   rD   s   & r   rF   TestEccPoint_NIST_P224.test_set   rH   r   c                (   V P                   P                  4       pV P                  WP                   4       VP                  V P                  4       V P                  WP                  4       V P                  V P                   V P                  4       R # rJ   rK   rD   s   & r   rO    TestEccPoint_NIST_P224.test_copy   rQ   r   c                    V P                   ) pV P                   V,           pV P                  W P                   P                  4       4       R # rJ   rS   rU   s   &  r   rX   "TestEccPoint_NIST_P224.test_negate   rZ   r   c                   R pRpV P                   V P                  ,           pV P                  VP                  V4       V P                  VP                  V4       VP                  4       pV P                   V,           pV P                  W0P                   4       W@P                   ,           pV P                  W0P                   4       WD,           pV P                  W44       R# l   }Q+|y%w<{ Vu{adl   pZv8)_z-hK	G^6gyO9Nr]   r`   s   &    r   re   $TestEccPoint_NIST_P224.test_addition   s    LLt{{*7+7+&&( s"- {{"- %r   c                <   R pRpV P                   P                  4       pW0P                  ,          pV P                  VP                  V4       V P                  VP
                  V4       VP                  4       pV P                   P                  4       pW4,          pV P                  W0P                   4       VP                  4       pW0P                   ,          pV P                  W0P                   4       VP                  4       pW4,          pV P                  W44       R# r   rh   r`   s   &    r   ri   ,TestEccPoint_NIST_P224.test_inplace_addition  s    LL!!#++7+7+&&( !!#- ++- %r   c                   R pRpV P                   P                  4       pVP                  4        V P                  VP                  V4       V P                  VP
                  V4       V P                   P                  4       pVP                  4       pVP                  4        V P                  W44       V P                   P                  4       pW3,          pV P                  VP                  V4       V P                  VP
                  V4       R# )l   _xxRh>7ZPJIw}-r*l   }]o`}MH^>A0Z]Sv>L1|+Nrl   r`   s   &    r   rn   $TestEccPoint_NIST_P224.test_doubling,  s    LL!!#7+7+ kk++-% !!#7+7+r   c                  a  R pRpRpS P                   V,          pS P                  VP                  V4       S P                  VP                  V4       S P                   P	                  4       pS P                   ^ ,          pS P                  WE4       S P                  \        V 3R l4       VS P                   ,          pS P                  VP                  V4       S P                  VP                  V4       \        V4      S P                   ,          pS P                  VP                  V4       S P                  VP                  V4       R# )   ;WU'uoZw]o]em82~P)l   <N0VmoLBm_J+'"/F*iKl%l   mG[nWh8z{hbIU_OxQB)Jc                  *   < S P                   R,          # rs   rv   r<   s   r   rw   =TestEccPoint_NIST_P224.test_scalar_multiply.<locals>.<lambda>P  ry   r   Nrz   r|   s   f     r   r}   +TestEccPoint_NIST_P224.test_scalar_multiplyA  s    FLLq7+7+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                    R pRpRpRpV P                   V,          V P                  V,          ,           pV P                  VP                  V4       V P                  VP                  V4       R# )r   l   6W]UDwyptq>3dd|?)5l   >HEK5\
5F2~?jTm{+E6l   1(^VKUC?++'*X:pCNr   r   s   &     r   test_joing_scalar_multiply1TestEccPoint_NIST_P224.test_joing_scalar_multiply[  sX    FFLLq4;;?27+7+r   c                    V P                  V P                  P                  4       ^4       V P                  V P                  P                  4       ^4       R# )   Nr   r<   s   &r   r   !TestEccPoint_NIST_P224.test_sizese  r   r   r   Nr   r   r   r   r   r   r;   rM   r=   rF   rO   rX   re   ri   rn   r}   r   r   r   r2   r3   s   @r   r   r      sg     ~JJF
 JJF
:.
6?
&,&4,*,4,: :r   r   c                      a  ] tR tRt o Rt]! RR4      t]! RR4      tR tR t	R	 t
R
 tR tR tR tR tR tR tRtV tR# )TestEccPoint_NIST_P256ij  ztTests 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*N<xn.h&#/_"$^ l   V"`,1kWypYLG+-pJ|?W@ l   kkdg\[W9r*9.B,LI5/f:hcXUl   Cdc'2gs1E+.-'a!Tc                R    V P                  V P                  P                  R 4       R# )
NIST P-256Nr:   r<   s   &r   r=   +TestEccPoint_NIST_P256.test_curve_attributeu  r?   r   c                    \        ^ ^ 4      pVP                  V P                  4       V P                  WP                  4       R# rA   rB   rD   s   & r   rF   TestEccPoint_NIST_P256.test_setx  rH   r   c                (   V P                   P                  4       pV P                  WP                   4       VP                  V P                  4       V P                  WP                  4       V P                  V P                   V P                  4       R # rJ   rK   rD   s   & r   rO    TestEccPoint_NIST_P256.test_copy}  rQ   r   c                    V P                   ) pV P                   V,           pV P                  W P                   P                  4       4       R # rJ   rS   rU   s   &  r   rX   "TestEccPoint_NIST_P256.test_negate  rZ   r   c                   R pRpV P                   V P                  ,           pV P                  VP                  V4       V P                  VP                  V4       VP                  4       pV P                   V,           pV P                  W0P                   4       W@P                   ,           pV P                  W0P                   4       WD,           pV P                  W44       R# l   ~(iM)E=kdHpit3&EpmRrl   dBhE@	hFTVL.E$udK].X Nr]   r`   s   &    r   re   $TestEccPoint_NIST_P256.test_addition  s    TTt{{*7+7+&&( s"- {{"- %r   c                <   R pRpV P                   P                  4       pW0P                  ,          pV P                  VP                  V4       V P                  VP
                  V4       VP                  4       pV P                   P                  4       pW4,          pV P                  W0P                   4       VP                  4       pW0P                   ,          pV P                  W0P                   4       VP                  4       pW4,          pV P                  W44       R# r   rh   r`   s   &    r   ri   ,TestEccPoint_NIST_P256.test_inplace_addition      TT!!#++7+7+&&( !!#- ++- %r   c                   R pRpV P                   P                  4       pVP                  4        V P                  VP                  V4       V P                  VP
                  V4       V P                   P                  4       pVP                  4       pVP                  4        V P                  W44       V P                   P                  4       pW3,          pV P                  VP                  V4       V P                  VP
                  V4       R# )l   '6?0T.<63GwG:]Hsivl   P6e#` {yO8^g^ w{9lJ@z Nrl   r`   s   &    r   rn   $TestEccPoint_NIST_P256.test_doubling  s    TT!!#7+7+ kk++-% !!#7+7+r   c                  a  R pRpRpS P                   V,          pS P                  VP                  V4       S P                  VP                  V4       S P                   P	                  4       pS P                   ^ ,          pS P                  WE4       S P                  \        V 3R l4       VS P                   ,          pS P                  VP                  V4       S P                  VP                  V4       \        V4      S P                   ,          pS P                  VP                  V4       S P                  VP                  V4       R# )   _,)N$chKf-5lk<Xk#E l   ? nDf>1x066OPKFQl   ATU*-sX)>~|N\}T9%Dbu4uc                  *   < S P                   R,          # rs   rv   r<   s   r   rw   =TestEccPoint_NIST_P256.test_scalar_multiply.<locals>.<lambda>  ry   r   Nrz   r|   s   f     r   r}   +TestEccPoint_NIST_P256.test_scalar_multiply  s    NTTq7+7+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                    R pRpRpRpV P                   V,          V P                  V,          ,           pV P                  VP                  V4       V P                  VP                  V4       R# )r   l   T:XuMKt^5~{"/T3G1S l   vbaB>Y5OgEI# d3ZgX l   uR`/.5ES6p* Pr Nr   r   s   &     r   r   1TestEccPoint_NIST_P256.test_joing_scalar_multiply  sX    NNTTq4;;?27+7+r   c                    V P                  V P                  P                  4       R 4       V P                  V P                  P                  4       ^ 4       R# )   Nr   r<   s   &r   r   !TestEccPoint_NIST_P256.test_sizes  r   r   r   Nr   r3   s   @r   r   r   j  sc     ~RRTF RRTF:.
6?
&,&4,*,4,: :r   r   c                      a  ] tR tRt o Rt]! RRR4      t]! RRR4      tR tR	 t	R
 t
R tR tR tR tR tR tR tRtV tR# )TestEccPoint_NIST_P384i  ztTests defined in section 4.4 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl   K<L3YUH[Am]8$_-'DM./8;V~Ho\"l   E^PjWvM0M7bKL84\mn&J

"[!66p#y|@z~W~ p384l   Q'"f4OcE-XJ9ija>:}@sMLUl   P}&zIy$GY9Q%?pa(Fv|EO{ c                R    V P                  V P                  P                  R 4       R# )
NIST P-384Nr:   r<   s   &r   r=   +TestEccPoint_NIST_P384.test_curve_attribute  r?   r   c                    \        ^ ^ R4      pVP                  V P                  4       V P                  WP                  4       R# )r   r   NrB   rD   s   & r   rF   TestEccPoint_NIST_P384.test_set  s2    !Q'

4;;-r   c                (   V P                   P                  4       pV P                  WP                   4       VP                  V P                  4       V P                  WP                  4       V P                  V P                   V P                  4       R # rJ   rK   rD   s   & r   rO    TestEccPoint_NIST_P384.test_copy  rQ   r   c                    V P                   ) pV P                   V,           pV P                  W P                   P                  4       4       R # rJ   rS   rU   s   &  r   rX   "TestEccPoint_NIST_P384.test_negate  rZ   r   c                   R pRpV P                   V P                  ,           pV P                  VP                  V4       V P                  VP                  V4       VP                  4       pV P                   V,           pV P                  W0P                   4       W@P                   ,           pV P                  W0P                   4       WD,           pV P                  W44       R# )l   ^\mLH\%sz.	_QHp)wB'2h\|Sz9Y07s\\% l   $	rQ4 1ml w{g~OM wr6bLLU;8*$0xrs, Nr]   r`   s   &    r   re   $TestEccPoint_NIST_P384.test_addition  s    ttt{{*7+7+&&( s"- {{"- %r   c                <   R pRpV P                   P                  4       pW0P                  ,          pV P                  VP                  V4       V P                  VP
                  V4       VP                  4       pV P                   P                  4       pW4,          pV P                  W0P                   4       VP                  4       pW0P                   ,          pV P                  W0P                   4       VP                  4       pW4,          pV P                  W44       R# r   rh   r`   s   &    r   _test_inplace_addition-TestEccPoint_NIST_P384._test_inplace_addition.  r   r   c                   R pRpV P                   P                  4       pVP                  4        V P                  VP                  V4       V P                  VP
                  V4       V P                   P                  4       pVP                  4       pVP                  4        V P                  W44       V P                   P                  4       pW3,          pV P                  VP                  V4       V P                  VP
                  V4       R# )l   LPeroBr0_nCYw~s7xI|Z:Ze*X!T l   ]e^A|\"Rn0WWCs(h}	c5JBNnN=.Nrl   r`   s   &    r   rn   $TestEccPoint_NIST_P384.test_doublingH  s    tt!!#7+7+ kk++-% !!#7+7+r   c                Z  a  R pRpRpS P                   V,          pS P                  VP                  V4       S P                  VP                  V4       S P                   P	                  4       pS P                   ^ ,          pS P                  WE4       S P                  \        V 3R l4       R# )   4.v0Z:z;ODK#Gv)Z5mXCDs:frkIl   R@dV]9"O/'5r}]~AYwHoY4-?~wl   f9;Y?5.BieXcXtqMDb7K6X}1 }Xc                  *   < S P                   R,          # rs   rv   r<   s   r   rw   =TestEccPoint_NIST_P384.test_scalar_multiply.<locals>.<lambda>l  ry   r   Nr;   r.   r^   r_   rT   r{   r   r|   s   f     r   r}   +TestEccPoint_NIST_P384.test_scalar_multiply]  s    nttq7+7+ kk++-q% 	*&>?r   c                    R pRpRpRpV P                   V,          V P                  V,          ,           pV P                  VP                  V4       V P                  VP                  V4       R# )r   l   ]8|$W!&%TxFgqeYTKeM80,YO_l   tdvO*;q/$L]0	}pn<x&"FFe5hYE~"l   q!jB%~^Y7yK\+5{SWxFJR1DwJA6g)4 Nr   r   s   &     r   r   1TestEccPoint_NIST_P384.test_joing_scalar_multiplyn  sX    nnttq4;;?27+7+r   c                    V P                  V P                  P                  4       R 4       V P                  V P                  P                  4       ^04       R# )i  Nr   r<   s   &r   r   !TestEccPoint_NIST_P384.test_sizesx  r   r   r   N)r   r   r   r   r   r   r;   rM   r=   rF   rO   rX   re   r   rn   r}   r   r   r   r2   r3   s   @r   r   r     sh     ~rrF
 rrF
:.
6?
&,&4,*@",: :r   r   c                      a  ] tR tRt o Rt]! RRR4      t]! RRR4      tR tR	 t	R
 t
R tR tR tR tR tR tR tRtV tR# )TestEccPoint_NIST_P521i}  ztTests defined in section 4.5 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl#   A5;LK5N}W,*n<UP%hA=Cb?iOtiL1!@vlv'Wl#   #5kS7?I]*[nnkYi[7.	 d9MT3X=TP5_Icc	np521l#   GJo7 $=?>D^`bXkNo	tG`xw-dg!;I7>S{) wh\.,#l#   cae.tDffI*"a%A&4h#Ww5%D2>n<!}6@fNvF$>8vpc                R    V P                  V P                  P                  R 4       R# )
NIST P-521Nr:   r<   s   &r   r=   +TestEccPoint_NIST_P521.test_curve_attribute  r?   r   c                    \        ^ ^ 4      pVP                  V P                  4       V P                  WP                  4       R# rA   rB   rD   s   & r   rF   TestEccPoint_NIST_P521.test_set  rH   r   c                (   V P                   P                  4       pV P                  WP                   4       VP                  V P                  4       V P                  WP                  4       V P                  V P                   V P                  4       R # rJ   rK   rD   s   & r   rO    TestEccPoint_NIST_P521.test_copy  rQ   r   c                    V P                   ) pV P                   V,           pV P                  W P                   P                  4       4       R # rJ   rS   rU   s   &  r   rX   "TestEccPoint_NIST_P521.test_negate  rZ   r   c                   R pRpV P                   V P                  ,           pV P                  VP                  V4       V P                  VP                  V4       VP                  4       pV P                   V,           pV P                  W0P                   4       W@P                   ,           pV P                  W0P                   4       WD,           pV P                  W44       R# l#   Y[V=xCmuOFl*sg	Np)giD>u{9gh0!cK-Op-^Nl#   U,R&9/@a}#>;cd{cl@E'98kh~a7?!-(O+SNr]   r`   s   &    r   re   $TestEccPoint_NIST_P521.test_addition  s     ] ]t{{*7+7+&&( s"- {{"- %r   c                <   R pRpV P                   P                  4       pW0P                  ,          pV P                  VP                  V4       V P                  VP
                  V4       VP                  4       pV P                   P                  4       pW4,          pV P                  W0P                   4       VP                  4       pW0P                   ,          pV P                  W0P                   4       VP                  4       pW4,          pV P                  W44       R# r   rh   r`   s   &    r   ri   ,TestEccPoint_NIST_P521.test_inplace_addition  s     ] ]!!#++7+7+&&( !!#- ++- %r   c                   R pRpV P                   P                  4       pVP                  4        V P                  VP                  V4       V P                  VP
                  V4       V P                   P                  4       pVP                  4       pVP                  4        V P                  W44       V P                   P                  4       pW3,          pV P                  VP                  V4       V P                  VP
                  V4       R# )l#   k'<J cmtW9T@%T$SD!kdlPgciSW_%3byF`($/rl#   C5APS?( w8OoXx
e\**L3tX@7N&xrZ7}r.8QIaNrl   r`   s   &    r   rn   $TestEccPoint_NIST_P521.test_doubling  s     ] ]!!#7+7+ kk++-% !!#7+7+r   c                Z  a  R pRpRpS P                   V,          pS P                  VP                  V4       S P                  VP                  V4       S P                   P	                  4       pS P                   ^ ,          pS P                  WE4       S P                  \        V 3R l4       R# )#   \??7gf@YKjrR)P6_r	[<lSfPL3ZM
TUU3TM|K\xl#   QUx2?z=[nWq0 6&7mnktztX;Ia^Rm<9-Te	bFl#   [}5]v3nLIYjzQ`:Gk`O<Y[w `5Q**e7U5qc                  *   < S P                   R,          # rs   rv   r<   s   r   rw   =TestEccPoint_NIST_P521.test_scalar_multiply.<locals>.<lambda>  ry   r   Nr   r|   s   f     r   r}   +TestEccPoint_NIST_P521.test_scalar_multiply  s     W ] ]q7+7+ kk++-q% 	*&>?r   c                    R pRpRpRpV P                   V,          pWPP                  V,          ,          pV P                  VP                  V4       V P                  VP                  V4       R# )r   l#   |TB)I%_
#wUV6C9c  1z7bnl<#qI"fu#0	Xajpx8=nMl#   =etEK9JBadZYx
./jVa@3hMhA]_`s}J+dptl#   XM`Wi&GgwH"!e+oeG$,oQ Tk9P>@5{U':c0'=NDH? Nr   r   s   &     r   r   1TestEccPoint_NIST_P521.test_joing_scalar_multiply  sg     W W ] ]q++/!7+7+r   c                    V P                  V P                  P                  4       R 4       V P                  V P                  P                  4       ^B4       R# )i	  Nr   r<   s   &r   r   !TestEccPoint_NIST_P521.test_sizes  r   r   r   Nr   r3   s   @r   r   r   }  st     ~ [ [F
  [ [F
:.
6?
&,&4,*@"	,: :r   r   c                   h    ] tR tRtRt]R,          t]! ]P                  ]P                  R4      t
RtR# )TestEccPoint_PAI_P192i  9Test vectors from http://point-at-infinity.org/ecc/nisttvr7   r   Nr   r   r   r   r   r   r   r   GxGypointGr   r   r   r   r  r    $    CFOEehh&1Fr   r  zpoint-at-infinity.org-P192.txtz&P-192 tests from point-at-infinity.orgkc                     \        V 4      # rJ   intr
  s   &r   rw   rw         CFr   r^   c                     \        V ^4      #    r  r^   s   &r   rw   rw     
    C2Jr   r_   c                     \        V ^4      # r  r  r_   s   &r   rw   rw     r  r   c                     V P                   V,          pV P                  VP                  V4       V P                  VP                  V4       R # rJ   r  r.   r^   r_   r#   scalarr^   r_   results   &&&& r   new_testr    8    v%1%1%r   ztest_%dc                   h    ] tR tRtRt]R,          t]! ]P                  ]P                  R4      t
RtR# )TestEccPoint_PAI_P224i  r  r   r   Nr  r   r   r   r  r    r	  r   r  zpoint-at-infinity.org-P224.txtz&P-224 tests from point-at-infinity.orgc                     \        V 4      # rJ   r  r  s   &r   rw   rw   #  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   $  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   %  r  r   c                     V P                   V,          pV P                  VP                  V4       V P                  VP                  V4       R # rJ   r  r  s   &&&& r   r  r  '  r  r   c                   h    ] tR tRtRt]R,          t]! ]P                  ]P                  R4      t
RtR# )TestEccPoint_PAI_P256i.  r  p256r   Nr  r   r   r   r%  r%  .  r	  r   r%  zpoint-at-infinity.org-P256.txtz&P-256 tests from point-at-infinity.orgc                     \        V 4      # rJ   r  r  s   &r   rw   rw   8  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   9  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   :  r  r   c                     V P                   V,          pV P                  VP                  V4       V P                  VP                  V4       R # rJ   r  r  s   &&&& r   r  r  <  r  r   c                   h    ] tR tRtRt]R,          t]! ]P                  ]P                  R4      t
RtR# )TestEccPoint_PAI_P384iC  r  r   r   Nr  r   r   r   r,  r,  C  r	  r   r,  zpoint-at-infinity.org-P384.txtz&P-384 tests from point-at-infinity.orgc                     \        V 4      # rJ   r  r  s   &r   rw   rw   M  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   N  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   O  r  r   c                     V P                   V,          pV P                  VP                  V4       V P                  VP                  V4       R # rJ   r  r  s   &&&& r   r  r  Q  r  r   c                   h    ] tR tRtRt]R,          t]! ]P                  ]P                  R4      t
RtR# )TestEccPoint_PAI_P521iX  r  r   r   Nr  r   r   r   r2  r2  X  r	  r   r2  zpoint-at-infinity.org-P521.txtz&P-521 tests from point-at-infinity.orgc                     \        V 4      # rJ   r  r  s   &r   rw   rw   b  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   c  r  r   c                     \        V ^4      # r  r  r  s   &r   rw   rw   d  r  r   c                     V P                   V,          pV P                  VP                  V4       V P                  VP                  V4       R # rJ   r  r  s   &&&& r   r  r  f  r  r   c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestEccKey_P192im  c                   \        R ^R7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  P                  \        R,          P                  4       V P                  VP
                  P                  \        R,          P                  4       \        \        R,          P                  \        R,          P                  R R7      p\        R ^VR7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  V4       \        R^R7      p\        R^R7      pR# )P-192r   r*   r7   r   r   r*   point	secp192r1
prime192v1Nr	   r.   r*   r"   has_privater   r^   r   r  r_   r  r   r#   keyr=  s   &  r   test_private_key TestEccKey_P192.test_private_keyo      7a(")*wv'9'9:wv'9'9:++WV_-?-?wO7au5")*U+ ;!,<1-r   c                   \        \        R ,          P                  \        R ,          P                  RR7      p\	        RVR7      pV P                  VP                  4       4       V P                  VP                  V4       R# )r7   r:  r   r   r=  N	r   r   r  r  r	   r!   rA  r.   r   r#   r=  rC  s   &  r   test_public_keyTestEccKey_P192.test_public_key  Y    ++WV_-?-?wO7%0*+U+r   c                    \        R ^R7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r:  r;  Nr	   
public_keyr!   rA  r.   r   r#   priv_keypub_keys   &  r   test_public_key_derived'TestEccKey_P192.test_public_key_derived  K    1-%%',,./'..9r   c                4    V P                  \        R  4       R# )c                      \        R ^R7      # )zP-193r;  r	   r   r   r   rw   4TestEccKey_P192.test_invalid_curve.<locals>.<lambda>      f7a.Hr   Nr{   r   r<   s   &r   test_invalid_curve"TestEccKey_P192.test_invalid_curve      *&HIr   c                b    V P                  \        R  4       V P                  \        R 4       R# )c                      \        R ^ R7      # )r:  r;  rY  r   r   r   rw   0TestEccKey_P192.test_invalid_d.<locals>.<lambda>  r[  r   c                  F    \        R \        R,          P                  R7      # )r:  r7   r;  r	   r   orderr   r   r   rw   rb        f77>v7L7L/Nr   Nr\  r<   s   &r   test_invalid_dTestEccKey_P192.test_invalid_d  *    *&HI* 'N 	Or   c                   \         P                  ! ^RR7      p\         P                  ! ^RR7      p\         P                  ! ^RR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )   r:  r*   r   Nr   r-   rP  r.   rN   r#   private_keyprivate_key2private_key3rP  public_key2public_key3s   &      r   test_equalityTestEccKey_P192.test_equality      mmaw7}}q8}}q8 ++-
"--/"--/3K61J4J4r   c                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r7   r   zcurve='NIST P-192'r9   Nr   r   assertInr/   r.   r   rP  r#   rC  s   & r   test_name_consistency%TestEccKey_P192.test_name_consistency  T    ll(*DI6L1)//>r   r   Nr   r   r   r   rD  rK  rT  r]  rg  rt  r{  r   r2   r3   s   @r   r8  r8  m  /     .$,:JO
5$? ?r   r8  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestEccKey_P224i  c                   \        R ^R7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  P                  \        R,          P                  4       V P                  VP
                  P                  \        R,          P                  4       \        \        R,          P                  \        R,          P                  R R7      p\        R ^VR7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  V4       \        R^R7      p\        R^R7      pR# )P-224r;  r   r   r<  	secp224r1
prime224v1Nr@  rB  s   &  r   rD   TestEccKey_P224.test_private_key  rF  r   c                   \        \        R ,          P                  \        R ,          P                  RR7      p\	        RVR7      pV P                  VP                  4       4       V P                  VP                  V4       R# )r   r  r   rH  NrI  rJ  s   &  r   rK  TestEccKey_P224.test_public_key  rM  r   c                    \        R ^R7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r  r;  NrO  rQ  s   &  r   rT  'TestEccKey_P224.test_public_key_derived  rV  r   c                4    V P                  \        R  4       R# )c                      \        R ^R7      # )zP-225r;  rY  r   r   r   rw   4TestEccKey_P224.test_invalid_curve.<locals>.<lambda>  r[  r   Nr\  r<   s   &r   r]  "TestEccKey_P224.test_invalid_curve  r_  r   c                b    V P                  \        R  4       V P                  \        R 4       R# )c                      \        R ^ R7      # )r  r;  rY  r   r   r   rw   0TestEccKey_P224.test_invalid_d.<locals>.<lambda>  r[  r   c                  F    \        R \        R,          P                  R7      # )r  r   r;  rd  r   r   r   rw   r    rf  r   Nr\  r<   s   &r   rg  TestEccKey_P224.test_invalid_d  ri  r   c                   \         P                  ! ^RR7      p\         P                  ! ^RR7      p\         P                  ! ^RR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )rk  r  rl  Nrm  rn  s   &      r   rt  TestEccKey_P224.test_equality  rv  r   c                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r   r   zcurve='NIST P-224'r   Nrx  rz  s   & r   r{  %TestEccKey_P224.test_name_consistency  r}  r   r   Nr~  r3   s   @r   r  r    r  r   r  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestEccKey_P256i  c                &   \        R ^R7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  P                  \        R,          P                  4       V P                  VP
                  P                  \        R,          P                  4       \        \        R,          P                  \        R,          P                  4      p\        R ^VR7      pV P                  VP                  ^4       V P                  VP	                  4       4       V P                  VP
                  V4       \        R^R7      p\        R^R7      pV P                  \        \         RRR7       R# )	r   r;  r&  r<  	secp256r1
prime256v1)r   seedNs    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r	   r.   r*   r"   rA  r   r^   r   r  r_   r  r   r{   r   rB  s   &  r   rD   TestEccKey_P256.test_private_key  s   7a(")*wv'9'9:wv'9'9:++WV_-?-?@7au5")*U+ ;!,<1- 	*fFIr   c                   \        \        R ,          P                  \        R ,          P                  4      p\	        RVR7      pV P                  VP                  4       4       V P                  VP                  V4       R# )r&  r   rH  NrI  rJ  s   &  r   rK  TestEccKey_P256.test_public_key
  sW    ++WV_-?-?@7%0*+U+r   c                    \        R ^R7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r   r;  NrO  rQ  s   &  r   rT  'TestEccKey_P256.test_public_key_derived  rV  r   c                4    V P                  \        R  4       R# )c                      \        R ^R7      # )zP-257r;  rY  r   r   r   rw   4TestEccKey_P256.test_invalid_curve.<locals>.<lambda>  r[  r   Nr\  r<   s   &r   r]  "TestEccKey_P256.test_invalid_curve  r_  r   c                b    V P                  \        R  4       V P                  \        R 4       R# )c                      \        R ^ R7      # )r   r;  rY  r   r   r   rw   0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  r[  r   c                  F    \        R \        R,          P                  R7      # )r   r&  r;  rd  r   r   r   rw   r    s    f7gfoF[F[.\r   Nr\  r<   s   &r   rg  TestEccKey_P256.test_invalid_d  s$    *&HI*&\]r   c                   \         P                  ! ^RR7      p\         P                  ! ^RR7      p\         P                  ! ^RR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )rk  r   rl  Nrm  rn  s   &      r   rt  TestEccKey_P256.test_equality  rv  r   c                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r&  r   zcurve='NIST P-256'r   Nrx  rz  s   & r   r{  %TestEccKey_P256.test_name_consistency1  r}  r   r   Nr~  r3   s   @r   r  r    s0     J*,:J^5$? ?r   r  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestEccKey_P384i8  c                   \         R ,          p\        R^R7      pV P                  VP                  ^4       V P	                  VP                  4       4       V P                  VP                  P                  VP                  4       V P                  VP                  P                  VP                  4       \        VP                  VP                  R 4      p\        R^VR7      pV P                  VP                  ^4       V P	                  VP                  4       4       V P                  VP                  V4       \        R ^R7      p\        R^R7      p\        R^R7      pR# )r   r   r;  r<  	secp384r1
prime384v1Nr   r	   r.   r*   r"   rA  r   r^   r  r_   r  r   )r#   r   rC  r=  s   &   r   rD   TestEccKey_P384.test_private_key:      v7a(")*tww/tww/$''627au5")*U+ 6Q';!,<1-r   c                    \         R ,          p\        VP                  VP                  R 4      p\	        RVR7      pV P                  VP                  4       4       V P                  VP                  V4       R# )r   r   rH  N	r   r   r  r  r	   r!   rA  r.   r   )r#   r   r=  rC  s   &   r   rK  TestEccKey_P384.test_public_keyO  V    v$''627%0*+U+r   c                    \        R ^R7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r   r;  NrO  rQ  s   &  r   rT  'TestEccKey_P384.test_public_key_derivedW  rV  r   c                4    V P                  \        R  4       R# )c                      \        R ^R7      # )zP-385r;  rY  r   r   r   rw   4TestEccKey_P384.test_invalid_curve.<locals>.<lambda>_  r[  r   Nr\  r<   s   &r   r]  "TestEccKey_P384.test_invalid_curve^  r_  r   c                b    V P                  \        R  4       V P                  \        R 4       R# )c                      \        R ^ R7      # )r   r;  rY  r   r   r   rw   0TestEccKey_P384.test_invalid_d.<locals>.<lambda>b  r[  r   c                  F    \        R \        R,          P                  R7      # )r   r   r;  rd  r   r   r   rw   r  c  rf  r   Nr\  r<   s   &r   rg  TestEccKey_P384.test_invalid_da  ri  r   c                   \         P                  ! ^RR7      p\         P                  ! ^RR7      p\         P                  ! ^RR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )rk  r   rl  Nrm  rn  s   &      r   rt  TestEccKey_P384.test_equalityf  rv  r   c                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r   r   zcurve='NIST P-384'r   Nrx  rz  s   & r   r{  %TestEccKey_P384.test_name_consistencyx  r}  r   r   Nr~  r3   s   @r   r  r  8  /     .*,:JO
5$? ?r   r  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestEccKey_P521i  c                   \         R ,          p\        R^R7      pV P                  VP                  ^4       V P	                  VP                  4       4       V P                  VP                  P                  VP                  4       V P                  VP                  P                  VP                  4       \        VP                  VP                  R 4      p\        R^VR7      pV P                  VP                  ^4       V P	                  VP                  4       4       V P                  VP                  V4       \        R ^R7      p\        R^R7      p\        R^R7      pR# )r   P-521r;  r<  	secp521r1
prime521v1Nr  )r#   r   rC  r=  s   &   r   rD   TestEccKey_P521.test_private_key  r  r   c                    \         R ,          p\        VP                  VP                  R 4      p\	        RVR7      pV P                  VP                  4       4       V P                  VP                  V4       R# )r   r   rH  Nr  )r#   r   r=  rC  s   &   r   rK  TestEccKey_P521.test_public_key  r  r   c                    \        R ^R7      pVP                  4       pV P                  VP                  4       4       V P	                  VP
                  VP
                  4       R# )r  r;  NrO  rQ  s   &  r   rT  'TestEccKey_P521.test_public_key_derived  rV  r   c                4    V P                  \        R  4       R# )c                      \        R ^R7      # )zP-522r;  rY  r   r   r   rw   4TestEccKey_P521.test_invalid_curve.<locals>.<lambda>  r[  r   Nr\  r<   s   &r   r]  "TestEccKey_P521.test_invalid_curve  r_  r   c                b    V P                  \        R  4       V P                  \        R 4       R# )c                      \        R ^ R7      # )r  r;  rY  r   r   r   rw   0TestEccKey_P521.test_invalid_d.<locals>.<lambda>  r[  r   c                  F    \        R \        R,          P                  R7      # )r  r   r;  rd  r   r   r   rw   r    rf  r   Nr\  r<   s   &r   rg  TestEccKey_P521.test_invalid_d  ri  r   c                   \         P                  ! ^RR7      p\         P                  ! ^RR7      p\         P                  ! ^RR7      pVP                  4       pVP                  4       pVP                  4       pV P                  W4       V P	                  W4       V P                  WE4       V P	                  WF4       V P	                  WA4       R# )rk  r  rl  Nrm  rn  s   &      r   rt  TestEccKey_P521.test_equality  rv  r   c                    \         P                  ! R R7      pV P                  R\        V4      4       V P	                  VP
                  R4       V P	                  VP                  4       P
                  R4       R# )r   r   zcurve='NIST P-521'r   Nrx  rz  s   & r   r{  %TestEccKey_P521.test_name_consistency  r}  r   r   Nr~  r3   s   @r   r  r    r  r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestEccModule_P192i  c                   \         P                  ! R R7      pV P                  VP                  4       4       V P	                  VP
                  \        \        R,          P                  \        R,          P                  R 4      VP                  ,          R4       \         P                  ! RR7       \         P                  ! RR7       R# )r:  r   r7   r>  r?  Nr   r   r"   rA  r.   r   r   r   r  r  r*   rz  s   & r   test_generate TestEccModule_P192.test_generate      ll))*Xgfo.@.@.5fo.@.@.5&79<&? /5	6 	;'<(r   c                   \         P                  ! R ^R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R \        R,          P                  \        R,          P                  R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R^R7       \         P                  ! R^R7       \         P                  ! R^R7       R# )r:  r;  r7   r   r+   r,   r>  r?  Nr   r-   r"   rA  r.   r   r   Gr  r  r!   rz  s   & r   test_construct!TestEccModule_P192.test_construct      mm'Q/)*WV_%6%67mm'76?3E3E$+FO$6$68*+WV_%6%67 	Fa(K1-LA.r   c                2   \        ^
^R7      p\        \        R,          P                  \        R,          P                  R7      pV P                  ! \
        \        P                  3RR/VB  V P                  ! \
        \        P                  3RRR^/VB  R# )
   r+   r,   r7   r   r:  r*   Ndictr   r  r  r{   r   r   r-   r#   coordcoordGs   &  r   test_negative_construct*TestEccModule_P192.test_negative_construct  o    R+gfo00'&/:L:LM*cmmL7LeL*cmmR7RaR6Rr   r   N	r   r   r   r   r  r  r  r   r2   r3   s   @r   r  r         )/ S Sr   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestEccModule_P224i  c                   \         P                  ! R R7      pV P                  VP                  4       4       V P	                  VP
                  \        \        R,          P                  \        R,          P                  R 4      VP                  ,          R4       \         P                  ! RR7       \         P                  ! RR7       R# )r  r   r   r  r  Nr  rz  s   & r   r   TestEccModule_P224.test_generate  r  r   c                   \         P                  ! R ^R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R \        R,          P                  \        R,          P                  R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R^R7       \         P                  ! R^R7       \         P                  ! R^R7       R# )r  r;  r   r  r  r  Nr  rz  s   & r   r  !TestEccModule_P224.test_construct  r  r   c                2   \        ^
^R7      p\        \        R,          P                  \        R,          P                  R7      pV P                  ! \
        \        P                  3RR/VB  V P                  ! \
        \        P                  3RRR^/VB  R# )r  r  r   r   r  r*   Nr  r  s   &  r   r  *TestEccModule_P224.test_negative_construct  r  r   r   Nr  r3   s   @r   r   r     r  r   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestEccModule_P256i  c                   \         P                  ! R R7      pV P                  VP                  4       4       V P	                  VP
                  \        \        R,          P                  \        R,          P                  4      VP                  ,          R4       \         P                  ! RR7       \         P                  ! RR7       R# )r   r   r&  r  r  Nr  rz  s   & r   r   TestEccModule_P256.test_generate  s    ll))*Xgfo.@.@.5fo.@.@&BDGEE&J.4	6
 	;'<(r   c                   \         P                  ! R ^R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R \        R,          P                  \        R,          P                  R7      pV P                  VP                  4       4       V P	                  VP
                  \        R,          P                  4       \         P                  ! R^R7       \         P                  ! R^R7       \         P                  ! R^R7       R# )r   r;  r&  r  r  r  Nr  rz  s   & r   r  !TestEccModule_P256.test_construct"  r  r   c                2   \        ^
^R7      p\        \        R,          P                  \        R,          P                  R7      pV P                  ! \
        \        P                  3RR/VB  V P                  ! \
        \        P                  3RRR^/VB  R# )r  r  r&  r   r   r*   Nr  r  s   &  r   r  *TestEccModule_P256.test_negative_construct2  r  r   r   Nr  r3   s   @r   r  r    s     
)/ S Sr   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestEccModule_P384i:  c                   \         R ,          p\        P                  ! RR7      pV P                  VP	                  4       4       V P                  VP                  \        VP                  VP                  R 4      VP                  ,          4       \        P                  ! RR7       \        P                  ! RR7       R# )r   r   r   r  r  Nr   r   r   r"   rA  r.   r   r   r  r  r*   r#   r   rC  s   &  r   r   TestEccModule_P384.test_generate<  t    ll))*Xehh&%ICEE%QR 	;'<(r   c                d   \         R ,          p\        P                  ! R^R7      pV P                  VP	                  4       4       V P                  VP                  \         R ,          P                  4       \        P                  ! RVP                  VP                  R7      pV P                  VP	                  4       4       V P                  VP                  VP                  4       \        P                  ! R ^R7       \        P                  ! R^R7       \        P                  ! R^R7       R# )r   r   r;  r  r  r  Nr   r   r-   r"   rA  r.   r   r  r  r  r!   r  s   &  r   r  !TestEccModule_P384.test_constructG      mm'Q/)*WV_%6%67mm'588UXXN*+UWW- 	Fa(K1-LA.r   c                2   \        ^
^R7      p\        \        R,          P                  \        R,          P                  R7      pV P                  ! \
        \        P                  3RR/VB  V P                  ! \
        \        P                  3RRR^/VB  R# )r  r  r   r   r   r*   Nr  r  s   &  r   r  *TestEccModule_P384.test_negative_constructW  r  r   r   Nr  r3   s   @r   r  r  :       	)/ S Sr   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TestEccModule_P521i_  c                   \         R ,          p\        P                  ! RR7      pV P                  VP	                  4       4       V P                  VP                  \        VP                  VP                  R 4      VP                  ,          4       \        P                  ! RR7       \        P                  ! RR7       R# )r   r  r   r  r  Nr  r  s   &  r   r   TestEccModule_P521.test_generatea  r  r   c                d   \         R ,          p\        P                  ! R^R7      pV P                  VP	                  4       4       V P                  VP                  \         R ,          P                  4       \        P                  ! RVP                  VP                  R7      pV P                  VP	                  4       4       V P                  VP                  VP                  4       \        P                  ! R ^R7       \        P                  ! R^R7       \        P                  ! R^R7       R# )r   r  r;  r  r  r  Nr  r  s   &  r   r  !TestEccModule_P521.test_constructl  r  r   c                2   \        ^
^R7      p\        \        R,          P                  \        R,          P                  R7      pV P                  ! \
        \        P                  3RR/VB  V P                  ! \
        \        P                  3RRR^/VB  R# )r  r  r   r   r  r*   Nr  r  s   &  r   r  *TestEccModule_P521.test_negative_construct|  r  r   r   Nr  r3   s   @r   r  r  _  r  r   r  c                    . pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \
        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \         4      ,          pV\        \"        4      ,          pV\        \$        4      ,          pV\        \&        4      ,          pV\        \(        4      ,          pV\        \*        4      ,          pV# rJ   )r   r   r6   r   r   r   r   r  r  r%  r,  r2  r8  r  r  r  r  r  r   r  r  r  )configtestss   & r   	get_testsr(    sV   E	_\**E	_344E	_344E	_344E	_344E	_344E	_233E	_233E	_233E	_233E	_233E	__--E	__--E	__--E	__--E	__--E	_/00E	_/00E	_/00E	_/00E	_/00ELr   __main__c                  >    \         P                  ! \        4       4      # rJ   )unittest	TestSuiter(  r   r   r   rw   rw     s    H&&y{3r   suite)defaultTest)	PublicKeyr   )1r+  binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r   r	   Crypto.Math.Numbersr
   TestCaser   r6   r   r   r   r   r  tv_paitvr
  r^   r_   r  setattrcountr  r%  r,  r2  r8  r  r  r  r  r  r   r  r  r  r(  r   r-  mainr   r   r   <module>r<     sU  >   5 4   : : 'A8$$ ABL:X.. L:^L:X.. L:^J:X.. J:ZC:X.. C:LD:X.. D:N2H-- 2 
/4<*..0
1 
7 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7 
7
 57  B ddbddbdd & !9rxx#7B @?h'' @?F@?h'' @?FB?h'' B?JD?h'' D?ND?h'' D?N$S** $SN$S** $SN#S** #SL"S** "SJ"S** "SJ  4 z3EMMg& r   