
    in              	          S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S SKJr   " S S	\ R                  5      r " S
 S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r\" SSSS S S S.5      =(       d    / r\ H@  r\R2                  \R4                  \R6                  4S jr\" \S\R<                  -  \5        MB      " S S \ R                  5      r\" SS!S"S# S$ S% S.5      =(       d    / r\ H@  r\R2                  \R4                  \R6                  4S& jr\" \S\R<                  -  \5        MB      " S' S(\ R                  5      r \" SS)S*S+ S, S- S.5      =(       d    / r\ H@  r\R2                  \R4                  \R6                  4S. jr\" \ S\R<                  -  \5        MB      " S/ S0\ R                  5      r!\" SS1S2S3 S4 S5 S.5      =(       d    / r\ H@  r\R2                  \R4                  \R6                  4S6 jr\" \!S\R<                  -  \5        MB      " S7 S8\ R                  5      r"\" SS9S:S; S< S= S.5      =(       d    / r\ H@  r\R2                  \R4                  \R6                  4S> jr\" \"S\R<                  -  \5        MB      " S? S@\ R                  5      r# " SA SB\ R                  5      r$ " SC SD\ R                  5      r% " SE SF\ R                  5      r& " SG SH\ R                  5      r' " SI SJ\ R                  5      r( " SK SL\ R                  5      r) " SM SN\ R                  5      r* " SO SP\ R                  5      r+ " SQ SR\ R                  5      r,0 4SS jr-\.ST:X  a  SU r/\ R`                  " SVSW9  gg)X    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integerc                        \ rS rSrS rS rSrg)TestEccPoint+   c                    [         R                  " SS9R                  n[         R                  " SS9R                  n X-      e! [         a  nS[	        U5      ;   d   e S nAOS nAff = f X-  n e! [         a  nS[	        U5      ;   d   e S nAOS nAff = f " S S5      nU R                  X" 5       :H  5        U R                  X" 5       :g  5        g )NP-256curveP-384znot on the same curvec                       \ rS rSrSrg)+TestEccPoint.test_mix.<locals>.OtherKeyType>    N)__name__
__module____qualname____firstlineno____static_attributes__r       b/var/www/html/trading/venv/lib/python3.13/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,-s/   A 
A)A$$A)-A3 3
B=BBc                 h    [         R                  " SSSSS9nU R                  [        U5      S5        g )Nr   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))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)   r2   r   r   r   r   r   r   +   s    ..Ar   r   c                   t    \ rS rSrSr\" SSSS9r\" SSSS9rS	 rS
 r	S r
S rS rS rS rS rS rS rSrg)TestEccPoint_NIST_P192L   ztTests 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                 P    U R                  U R                  R                  S5        g )N
NIST P-192r0   pointSr   r%   s    r   test_curve_attribute+TestEccPoint_NIST_P192.test_curve_attributeY       **L9r   c                     [        SS5      nUR                  U R                  5        U R                  XR                  5        g Nr   r   setr;   r0   r%   pointWs     r   test_setTestEccPoint_NIST_P192.test_set\   /    !Q

4;;-r   c                 &   U R                   R                  5       nU R                  XR                   5        UR                  U R                  5        U R                  XR                  5        U R                  U R                   U R                  5        g Nr;   copyr0   rC   pointTassertNotEqualrD   s     r   	test_copy TestEccPoint_NIST_P192.test_copya   `    !!#-

4;;-DKK5r   c                     U R                   * nU R                   U-   nU R                  X R                   R                  5       5        g rJ   r;   r0   point_at_infinityr%   negSsums      r   test_negate"TestEccPoint_NIST_P192.test_negateh   6    |kkD kk;;=>r   c                    SnSnU R                   U R                  -   nU R                  UR                  U5        U R                  UR                  U5        UR                  5       nU R                   U-   nU R                  X0R                   5        X@R                   -   nU R                  X0R                   5        XD-   nU R                  X45        g Nl   <Sb!tX?w|xh\7% l   K*m/_JSl(U[yq;}r;   rM   r0   xyrT   r%   pointRxpointRypointRpais        r   test_addition$TestEccPoint_NIST_P192.test_additionm   s    DDt{{*7+7+&&( s"- {{"- %r   c                    SnSnU R                   R                  5       nX0R                  -  nU R                  UR                  U5        U R                  UR
                  U5        UR                  5       nU R                   R                  5       nX4-  nU R                  X0R                   5        UR                  5       nX0R                   -  nU R                  X0R                   5        UR                  5       nX4-  nU R                  X45        g r\   r;   rL   rM   r0   r^   r_   rT   r`   s        r   test_inplace_addition,TestEccPoint_NIST_P192.test_inplace_addition   s    DD!!#++7+7+&&( !!#- ++- %r   c                    SnSnU R                   R                  5       nUR                  5         U R                  UR                  U5        U R                  UR
                  U5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X45        U R                   R                  5       nX3-  nU R                  UR                  U5        U R                  UR
                  U5        g )Nl   bi~hIR wYTSD{1.-l   	%Y^-<6!N	qp r;   rL   doubler0   r^   r_   rT   r`   s        r   test_doubling$TestEccPoint_NIST_P192.test_doubling   s    DD!!#7+7+ kk++-% !!#7+7+r   c                 v  ^  SnSnSnT R                   U-  nT R                  UR                  U5        T R                  UR                  U5        T R                   R	                  5       nT R                   S-  nT R                  XE5        T R                  [        U 4S j5        UT R                   -  nT R                  UR                  U5        T R                  UR                  U5        [        U5      T R                   -  nT R                  UR                  U5        T R                  UR                  U5        g )N   tlkdcH(Lj]u5Qx
l   1m~KT4IwxIG-i!wl   {5syq-BKBior   c                  "   > T R                   S-  $ Nr;   r<   s   r   <lambda>=TestEccPoint_NIST_P192.test_scalar_multiply.<locals>.<lambda>       dkkB.>r   r;   r0   r^   r_   rT   assertRaisesr!   r
   r%   r,   ra   rb   rc   rd   s   `     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                     SnSnSnSnU R                   U-  U R                  U-  -   nU R                  UR                  U5        U R                  UR                  U5        g )Nrq   l   rr6O^ho3&gaOqKl   [oge?/ or6uc;'{ l   D6vMc'~vLz6bHer;   rM   r0   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                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )N      r0   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   r   r   r   r5   r5   L   s_    ~BBF
 BBF
:.
6?
&,&4,*,4,:r   r5   c                   t    \ rS rSrSr\" SSSS9r\" SSSS9rS	 rS
 r	S r
S rS rS rS rS rS rS rSrg)TestEccPoint_NIST_P224   ztTests 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                 P    U R                  U R                  R                  S5        g )N
NIST P-224r:   r<   s    r   r=   +TestEccPoint_NIST_P224.test_curve_attribute   r?   r   c                     [        SS5      nUR                  U R                  5        U R                  XR                  5        g rA   rB   rD   s     r   rF   TestEccPoint_NIST_P224.test_set   rH   r   c                 &   U R                   R                  5       nU R                  XR                   5        UR                  U R                  5        U R                  XR                  5        U R                  U R                   U R                  5        g rJ   rK   rD   s     r   rO    TestEccPoint_NIST_P224.test_copy   rQ   r   c                     U R                   * nU R                   U-   nU R                  X R                   R                  5       5        g rJ   rS   rU   s      r   rX   "TestEccPoint_NIST_P224.test_negate   rZ   r   c                    SnSnU R                   U R                  -   nU R                  UR                  U5        U R                  UR                  U5        UR                  5       nU R                   U-   nU R                  X0R                   5        X@R                   -   nU R                  X0R                   5        XD-   nU R                  X45        g Nl   }Q+|y%w<{ Vu{adl   pZv8)_z-hK	G^6gyO9r]   r`   s        r   re   $TestEccPoint_NIST_P224.test_addition   s    LLt{{*7+7+&&( s"- {{"- %r   c                    SnSnU R                   R                  5       nX0R                  -  nU R                  UR                  U5        U R                  UR
                  U5        UR                  5       nU R                   R                  5       nX4-  nU R                  X0R                   5        UR                  5       nX0R                   -  nU R                  X0R                   5        UR                  5       nX4-  nU R                  X45        g r   rh   r`   s        r   ri   ,TestEccPoint_NIST_P224.test_inplace_addition  s    LL!!#++7+7+&&( !!#- ++- %r   c                    SnSnU R                   R                  5       nUR                  5         U R                  UR                  U5        U R                  UR
                  U5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X45        U R                   R                  5       nX3-  nU R                  UR                  U5        U R                  UR
                  U5        g )Nl   _xxRh>7ZPJIw}-r*l   }]o`}MH^>A0Z]Sv>L1|+rl   r`   s        r   rn   $TestEccPoint_NIST_P224.test_doubling,  s    LL!!#7+7+ kk++-% !!#7+7+r   c                 v  ^  SnSnSnT R                   U-  nT R                  UR                  U5        T R                  UR                  U5        T R                   R	                  5       nT R                   S-  nT R                  XE5        T R                  [        U 4S j5        UT R                   -  nT R                  UR                  U5        T R                  UR                  U5        [        U5      T R                   -  nT R                  UR                  U5        T R                  UR                  U5        g )N   ;WU'uoZw]o]em82~P)l   <N0VmoLBm_J+'"/F*iKl%l   mG[nWh8z{hbIU_OxQB)Jr   c                  "   > T R                   S-  $ rs   ru   r<   s   r   rv   =TestEccPoint_NIST_P224.test_scalar_multiply.<locals>.<lambda>P  rx   r   ry   r{   s   `     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                     SnSnSnSnU R                   U-  U R                  U-  -   nU R                  UR                  U5        U R                  UR                  U5        g )Nr   l   6W]UDwyptq>3dd|?)5l   >HEK5\
5F2~?jTm{+E6l   1(^VKUC?++'*X:pCr   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                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )N      r   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   r   r   r   r   r      s_    ~JJF
 JJF
:.
6?
&,&4,*,4,:r   r   c                   x    \ rS rSrSr\" SS5      r\" SS5      rS rS r	S	 r
S
 rS rS rS rS rS rS rSrg)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                 P    U R                  U R                  R                  S5        g )N
NIST P-256r:   r<   s    r   r=   +TestEccPoint_NIST_P256.test_curve_attributeu  r?   r   c                     [        SS5      nUR                  U R                  5        U R                  XR                  5        g rA   rB   rD   s     r   rF   TestEccPoint_NIST_P256.test_setx  rH   r   c                 &   U R                   R                  5       nU R                  XR                   5        UR                  U R                  5        U R                  XR                  5        U R                  U R                   U R                  5        g rJ   rK   rD   s     r   rO    TestEccPoint_NIST_P256.test_copy}  rQ   r   c                     U R                   * nU R                   U-   nU R                  X R                   R                  5       5        g rJ   rS   rU   s      r   rX   "TestEccPoint_NIST_P256.test_negate  rZ   r   c                    SnSnU R                   U R                  -   nU R                  UR                  U5        U R                  UR                  U5        UR                  5       nU R                   U-   nU R                  X0R                   5        X@R                   -   nU R                  X0R                   5        XD-   nU R                  X45        g Nl   ~(iM)E=kdHpit3&EpmRrl   dBhE@	hFTVL.E$udK].X r]   r`   s        r   re   $TestEccPoint_NIST_P256.test_addition  s    TTt{{*7+7+&&( s"- {{"- %r   c                    SnSnU R                   R                  5       nX0R                  -  nU R                  UR                  U5        U R                  UR
                  U5        UR                  5       nU R                   R                  5       nX4-  nU R                  X0R                   5        UR                  5       nX0R                   -  nU R                  X0R                   5        UR                  5       nX4-  nU R                  X45        g r   rh   r`   s        r   ri   ,TestEccPoint_NIST_P256.test_inplace_addition      TT!!#++7+7+&&( !!#- ++- %r   c                    SnSnU R                   R                  5       nUR                  5         U R                  UR                  U5        U R                  UR
                  U5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X45        U R                   R                  5       nX3-  nU R                  UR                  U5        U R                  UR
                  U5        g )Nl   '6?0T.<63GwG:]Hsivl   P6e#` {yO8^g^ w{9lJ@z rl   r`   s        r   rn   $TestEccPoint_NIST_P256.test_doubling  s    TT!!#7+7+ kk++-% !!#7+7+r   c                 v  ^  SnSnSnT R                   U-  nT R                  UR                  U5        T R                  UR                  U5        T R                   R	                  5       nT R                   S-  nT R                  XE5        T R                  [        U 4S j5        UT R                   -  nT R                  UR                  U5        T R                  UR                  U5        [        U5      T R                   -  nT R                  UR                  U5        T R                  UR                  U5        g )N   _,)N$chKf-5lk<Xk#E l   ? nDf>1x066OPKFQl   ATU*-sX)>~|N\}T9%Dbu4ur   c                  "   > T R                   S-  $ rs   ru   r<   s   r   rv   =TestEccPoint_NIST_P256.test_scalar_multiply.<locals>.<lambda>  rx   r   ry   r{   s   `     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                     SnSnSnSnU R                   U-  U R                  U-  -   nU R                  UR                  U5        U R                  UR                  U5        g )Nr   l   T:XuMKt^5~{"/T3G1S l   vbaB>Y5OgEI# d3ZgX l   uR`/.5ES6p* Pr r   r   s         r   r   1TestEccPoint_NIST_P256.test_joing_scalar_multiply  sX    NNTTq4;;?27+7+r   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )N       r   r<   s    r   r   !TestEccPoint_NIST_P256.test_sizes  r   r   r   Nr   r   r   r   r   r   j  s[    ~RRTF RRTF:.
6?
&,&4,*,4,:r   r   c                   |    \ rS rSrSr\" SSS5      r\" SSS5      rS rS	 r	S
 r
S rS rS rS rS rS rS rSrg)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                 P    U R                  U R                  R                  S5        g )N
NIST P-384r:   r<   s    r   r=   +TestEccPoint_NIST_P384.test_curve_attribute  r?   r   c                     [        SSS5      nUR                  U R                  5        U R                  XR                  5        g )Nr   r   rB   rD   s     r   rF   TestEccPoint_NIST_P384.test_set  s2    !Q'

4;;-r   c                 &   U R                   R                  5       nU R                  XR                   5        UR                  U R                  5        U R                  XR                  5        U R                  U R                   U R                  5        g rJ   rK   rD   s     r   rO    TestEccPoint_NIST_P384.test_copy  rQ   r   c                     U R                   * nU R                   U-   nU R                  X R                   R                  5       5        g rJ   rS   rU   s      r   rX   "TestEccPoint_NIST_P384.test_negate  rZ   r   c                    SnSnU R                   U R                  -   nU R                  UR                  U5        U R                  UR                  U5        UR                  5       nU R                   U-   nU R                  X0R                   5        X@R                   -   nU R                  X0R                   5        XD-   nU R                  X45        g )Nl   ^\mLH\%sz.	_QHp)wB'2h\|Sz9Y07s\\% l   $	rQ4 1ml w{g~OM wr6bLLU;8*$0xrs, r]   r`   s        r   re   $TestEccPoint_NIST_P384.test_addition  s    ttt{{*7+7+&&( s"- {{"- %r   c                    SnSnU R                   R                  5       nX0R                  -  nU R                  UR                  U5        U R                  UR
                  U5        UR                  5       nU R                   R                  5       nX4-  nU R                  X0R                   5        UR                  5       nX0R                   -  nU R                  X0R                   5        UR                  5       nX4-  nU R                  X45        g r   rh   r`   s        r   _test_inplace_addition-TestEccPoint_NIST_P384._test_inplace_addition.  r   r   c                    SnSnU R                   R                  5       nUR                  5         U R                  UR                  U5        U R                  UR
                  U5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X45        U R                   R                  5       nX3-  nU R                  UR                  U5        U R                  UR
                  U5        g )Nl   LPeroBr0_nCYw~s7xI|Z:Ze*X!T l   ]e^A|\"Rn0WWCs(h}	c5JBNnN=.rl   r`   s        r   rn   $TestEccPoint_NIST_P384.test_doublingH  s    tt!!#7+7+ kk++-% !!#7+7+r   c                 H  ^  SnSnSnT R                   U-  nT R                  UR                  U5        T R                  UR                  U5        T R                   R	                  5       nT R                   S-  nT R                  XE5        T R                  [        U 4S j5        g )N   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r   c                  "   > T R                   S-  $ rs   ru   r<   s   r   rv   =TestEccPoint_NIST_P384.test_scalar_multiply.<locals>.<lambda>l  rx   r   r;   r0   r^   r_   rT   rz   r!   r{   s   `     r   r|   +TestEccPoint_NIST_P384.test_scalar_multiply]  s    nttq7+7+ kk++-q% 	*&>?r   c                     SnSnSnSnU R                   U-  U R                  U-  -   nU R                  UR                  U5        U R                  UR                  U5        g )Nr   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 r   r   s         r   r   1TestEccPoint_NIST_P384.test_joing_scalar_multiplyn  sX    nnttq4;;?27+7+r   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )Ni  0   r   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   r   r   r   r   r     s`    ~rrF
 rrF
:.
6?
&,&4,*@",:r   r   c                   |    \ rS rSrSr\" SSS5      r\" SSS5      rS rS	 r	S
 r
S rS rS rS rS rS rS rSrg)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                 P    U R                  U R                  R                  S5        g )N
NIST P-521r:   r<   s    r   r=   +TestEccPoint_NIST_P521.test_curve_attribute  r?   r   c                     [        SS5      nUR                  U R                  5        U R                  XR                  5        g rA   rB   rD   s     r   rF   TestEccPoint_NIST_P521.test_set  rH   r   c                 &   U R                   R                  5       nU R                  XR                   5        UR                  U R                  5        U R                  XR                  5        U R                  U R                   U R                  5        g rJ   rK   rD   s     r   rO    TestEccPoint_NIST_P521.test_copy  rQ   r   c                     U R                   * nU R                   U-   nU R                  X R                   R                  5       5        g rJ   rS   rU   s      r   rX   "TestEccPoint_NIST_P521.test_negate  rZ   r   c                    SnSnU R                   U R                  -   nU R                  UR                  U5        U R                  UR                  U5        UR                  5       nU R                   U-   nU R                  X0R                   5        X@R                   -   nU R                  X0R                   5        XD-   nU R                  X45        g Nl#   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r]   r`   s        r   re   $TestEccPoint_NIST_P521.test_addition  s     ] ]t{{*7+7+&&( s"- {{"- %r   c                    SnSnU R                   R                  5       nX0R                  -  nU R                  UR                  U5        U R                  UR
                  U5        UR                  5       nU R                   R                  5       nX4-  nU R                  X0R                   5        UR                  5       nX0R                   -  nU R                  X0R                   5        UR                  5       nX4-  nU R                  X45        g r   rh   r`   s        r   ri   ,TestEccPoint_NIST_P521.test_inplace_addition  s     ] ]!!#++7+7+&&( !!#- ++- %r   c                    SnSnU R                   R                  5       nUR                  5         U R                  UR                  U5        U R                  UR
                  U5        U R                   R                  5       nUR                  5       nUR                  5         U R                  X45        U R                   R                  5       nX3-  nU R                  UR                  U5        U R                  UR
                  U5        g )Nl#   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rl   r`   s        r   rn   $TestEccPoint_NIST_P521.test_doubling  s     ] ]!!#7+7+ kk++-% !!#7+7+r   c                 H  ^  SnSnSnT R                   U-  nT R                  UR                  U5        T R                  UR                  U5        T R                   R	                  5       nT R                   S-  nT R                  XE5        T R                  [        U 4S j5        g )N#   \??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r   c                  "   > T R                   S-  $ rs   ru   r<   s   r   rv   =TestEccPoint_NIST_P521.test_scalar_multiply.<locals>.<lambda>  rx   r   r   r{   s   `     r   r|   +TestEccPoint_NIST_P521.test_scalar_multiply  s     W ] ]q7+7+ kk++-q% 	*&>?r   c                     SnSnSnSnU R                   U-  nXPR                  U-  -  nU R                  UR                  U5        U R                  UR                  U5        g )Nr   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? r   r   s         r   r   1TestEccPoint_NIST_P521.test_joing_scalar_multiply  sg     W W ] ]q++/!7+7+r   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       S5        g )Ni	  B   r   r<   s    r   r   !TestEccPoint_NIST_P521.test_sizes  r   r   r   Nr   r   r   r   r   r   }  sl    ~ [ [F
  [ [F
:.
6?
&,&4,*@"	,:r   r   c                   ^    \ rS rSrSr\S   r\" \R                  \R                  S5      r
Srg)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  )	PublicKeyr   zpoint-at-infinity.org-P192.txtz&P-192 tests from point-at-infinity.orgc                     [        U 5      $ rJ   intks    r   rv   rv         CFr   c                     [        U S5      $ N   r  r^   s    r   rv   rv     
    C2Jr   c                     [        U S5      $ r  r  r_   s    r   rv   rv     r  r   )r  r^   r_   c                     U R                   U-  nU R                  UR                  U5        U R                  UR                  U5        g rJ   r  r0   r^   r_   r%   scalarr^   r_   results        r   new_testr"    8    v%1%1%r   ztest_%dc                   ^    \ rS rSrSr\S   r\" \R                  \R                  S5      r
Srg)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                     [        U 5      $ rJ   r  r  s    r   rv   rv   #  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   $  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   %  r  r   c                     U R                   U-  nU R                  UR                  U5        U R                  UR                  U5        g rJ   r  r  s        r   r"  r"  '  r#  r   c                   ^    \ rS rSrSr\S   r\" \R                  \R                  S5      r
Srg)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                     [        U 5      $ rJ   r  r  s    r   rv   rv   8  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   9  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   :  r  r   c                     U R                   U-  nU R                  UR                  U5        U R                  UR                  U5        g rJ   r  r  s        r   r"  r"  <  r#  r   c                   ^    \ rS rSrSr\S   r\" \R                  \R                  S5      r
Srg)TestEccPoint_PAI_P384iC  r	  r   r   Nr
  r   r   r   r2  r2  C  r  r   r2  zpoint-at-infinity.org-P384.txtz&P-384 tests from point-at-infinity.orgc                     [        U 5      $ rJ   r  r  s    r   rv   rv   M  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   N  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   O  r  r   c                     U R                   U-  nU R                  UR                  U5        U R                  UR                  U5        g rJ   r  r  s        r   r"  r"  Q  r#  r   c                   ^    \ rS rSrSr\S   r\" \R                  \R                  S5      r
Srg)TestEccPoint_PAI_P521iX  r	  r   r   Nr
  r   r   r   r8  r8  X  r  r   r8  zpoint-at-infinity.org-P521.txtz&P-521 tests from point-at-infinity.orgc                     [        U 5      $ rJ   r  r  s    r   rv   rv   b  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   c  r  r   c                     [        U S5      $ r  r  r  s    r   rv   rv   d  r  r   c                     U R                   U-  nU R                  UR                  U5        U R                  UR                  U5        g rJ   r  r  s        r   r"  r"  f  r#  r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestEccKey_P192im  c                    [        SSS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  R                  [        S   R                  5        U R                  UR
                  R                  [        S   R                  5        [        [        S   R                  [        S   R                  SS9n[        SSUS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  U5        [        SSS9n[        SSS9ng )	NP-192   r   r,   r7   r   r   r,   point	secp192r1
prime192v1r	   r0   r,   r$   has_privater    r^   r   r  r_   r  r   r%   keyrD  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                     [        [        S   R                  [        S   R                  SS9n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr7   r@  r   r   rD  	r   r   r  r  r	   r#   rH  r0   r    r%   rD  rJ  s      r   test_public_keyTestEccKey_P192.test_public_key  Y    ++WV_-?-?wO7%0*+U+r   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr@     rB  r	   
public_keyr#   rH  r0   r    r%   priv_keypub_keys      r   test_public_key_derived'TestEccKey_P192.test_public_key_derived  K    1-%%',,./'..9r   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )NzP-193rA  rB  r	   r   r   r   rv   4TestEccKey_P192.test_invalid_curve.<locals>.<lambda>      f7a.Hr   rz   r!   r<   s    r   test_invalid_curve"TestEccKey_P192.test_invalid_curve      *&HIr   c                 `    U R                  [        S 5        U R                  [        S 5        g )Nc                      [        SSS9$ )Nr@  r   rB  ra  r   r   r   rv   0TestEccKey_P192.test_invalid_d.<locals>.<lambda>  rc  r   c                  8    [        S[        S   R                  S9$ )Nr@  r7   rB  r	   r   orderr   r   r   rv   rj        f77>v7L7L/Nr   rd  r<   s    r   test_invalid_dTestEccKey_P192.test_invalid_d  *    *&HI* 'N 	Or   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )NrV  r@  r,   r      r   r/   rX  r0   rN   r%   private_keyprivate_key2private_key3rX  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                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr7   r   zcurve='NIST P-192'r9   r   r   assertInr1   r0   r   rX  r%   rJ  s     r   test_name_consistency%TestEccKey_P192.test_name_consistency  T    ll(*DI6L1)//>r   r   Nr   r   r   r   rK  rR  r\  re  ro  r|  r  r   r   r   r   r>  r>  m  '    .$,:JO
5$?r   r>  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestEccKey_P224i  c                    [        SSS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  R                  [        S   R                  5        U R                  UR
                  R                  [        S   R                  5        [        [        S   R                  [        S   R                  SS9n[        SSUS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  U5        [        SSS9n[        SSS9ng )	NP-224rA  rB  r   r   rC  	secp224r1
prime224v1rG  rI  s      r   rK   TestEccKey_P224.test_private_key  rM  r   c                     [        [        S   R                  [        S   R                  SS9n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr   r  r   rO  rP  rQ  s      r   rR  TestEccKey_P224.test_public_key  rT  r   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr  rV  rB  rW  rY  s      r   r\  'TestEccKey_P224.test_public_key_derived  r^  r   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )NzP-225rA  rB  ra  r   r   r   rv   4TestEccKey_P224.test_invalid_curve.<locals>.<lambda>  rc  r   rd  r<   s    r   re  "TestEccKey_P224.test_invalid_curve  rg  r   c                 `    U R                  [        S 5        U R                  [        S 5        g )Nc                      [        SSS9$ )Nr  r   rB  ra  r   r   r   rv   0TestEccKey_P224.test_invalid_d.<locals>.<lambda>  rc  r   c                  8    [        S[        S   R                  S9$ )Nr  r   rB  rl  r   r   r   rv   r    rn  r   rd  r<   s    r   ro  TestEccKey_P224.test_invalid_d  rq  r   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )NrV  r  rs  rt  ru  rv  s          r   r|  TestEccKey_P224.test_equality  r~  r   c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr   r   zcurve='NIST P-224'r   r  r  s     r   r  %TestEccKey_P224.test_name_consistency  r  r   r   Nr  r   r   r   r  r    r  r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestEccKey_P256i  c                    [        SSS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  R                  [        S   R                  5        U R                  UR
                  R                  [        S   R                  5        [        [        S   R                  [        S   R                  5      n[        SSUS9nU R                  UR                  S5        U R                  UR	                  5       5        U R                  UR
                  U5        [        SSS9n[        SSS9nU R                  [        [         SSS	9  g )
Nr   rA  rB  r,  rC  	secp256r1
prime256v1s    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   seed)r	   r0   r,   r$   rH  r    r^   r   r  r_   r  r   rz   r!   rI  s      r   rK   TestEccKey_P256.test_private_key  s   7a(")*wv'9'9:wv'9'9:++WV_-?-?@7au5")*U+ ;!,<1- 	*fFIr   c                     [        [        S   R                  [        S   R                  5      n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr,  r   rO  rP  rQ  s      r   rR  TestEccKey_P256.test_public_key
  sW    ++WV_-?-?@7%0*+U+r   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr   rV  rB  rW  rY  s      r   r\  'TestEccKey_P256.test_public_key_derived  r^  r   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )NzP-257rA  rB  ra  r   r   r   rv   4TestEccKey_P256.test_invalid_curve.<locals>.<lambda>  rc  r   rd  r<   s    r   re  "TestEccKey_P256.test_invalid_curve  rg  r   c                 `    U R                  [        S 5        U R                  [        S 5        g )Nc                      [        SSS9$ )Nr   r   rB  ra  r   r   r   rv   0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  rc  r   c                  8    [        S[        S   R                  S9$ )Nr   r,  rB  rl  r   r   r   rv   r    s    f7gfoF[F[.\r   rd  r<   s    r   ro  TestEccKey_P256.test_invalid_d  s$    *&HI*&\]r   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )NrV  r   rs  rt  ru  rv  s          r   r|  TestEccKey_P256.test_equality  r~  r   c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr,  r   zcurve='NIST P-256'r   r  r  s     r   r  %TestEccKey_P256.test_name_consistency1  r  r   r   Nr  r   r   r   r  r    s(    J*,:J^5$?r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestEccKey_P384i8  c                    [         S   n[        SSS9nU R                  UR                  S5        U R	                  UR                  5       5        U R                  UR                  R                  UR                  5        U R                  UR                  R                  UR                  5        [        UR                  UR                  S5      n[        SSUS9nU R                  UR                  S5        U R	                  UR                  5       5        U R                  UR                  U5        [        SSS9n[        SSS9n[        SSS9ng )Nr   r   rA  rB  rC  	secp384r1
prime384v1r   r	   r0   r,   r$   rH  r    r^   r  r_   r  r   )r%   r   rJ  rD  s       r   rK   TestEccKey_P384.test_private_key:      v7a(")*tww/tww/$''627au5")*U+ 6Q';!,<1-r   c                     [         S   n[        UR                  UR                  S5      n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr   r   rO  	r   r   r  r  r	   r#   rH  r0   r    )r%   r   rD  rJ  s       r   rR  TestEccKey_P384.test_public_keyO  V    v$''627%0*+U+r   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr   rV  rB  rW  rY  s      r   r\  'TestEccKey_P384.test_public_key_derivedW  r^  r   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )NzP-385rA  rB  ra  r   r   r   rv   4TestEccKey_P384.test_invalid_curve.<locals>.<lambda>_  rc  r   rd  r<   s    r   re  "TestEccKey_P384.test_invalid_curve^  rg  r   c                 `    U R                  [        S 5        U R                  [        S 5        g )Nc                      [        SSS9$ )Nr   r   rB  ra  r   r   r   rv   0TestEccKey_P384.test_invalid_d.<locals>.<lambda>b  rc  r   c                  8    [        S[        S   R                  S9$ )Nr   r   rB  rl  r   r   r   rv   r  c  rn  r   rd  r<   s    r   ro  TestEccKey_P384.test_invalid_da  rq  r   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )NrV  r   rs  rt  ru  rv  s          r   r|  TestEccKey_P384.test_equalityf  r~  r   c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr   r   zcurve='NIST P-384'r   r  r  s     r   r  %TestEccKey_P384.test_name_consistencyx  r  r   r   Nr  r   r   r   r  r  8  '    .*,:JO
5$?r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestEccKey_P521i  c                    [         S   n[        SSS9nU R                  UR                  S5        U R	                  UR                  5       5        U R                  UR                  R                  UR                  5        U R                  UR                  R                  UR                  5        [        UR                  UR                  S5      n[        SSUS9nU R                  UR                  S5        U R	                  UR                  5       5        U R                  UR                  U5        [        SSS9n[        SSS9n[        SSS9ng )Nr   P-521rA  rB  rC  	secp521r1
prime521v1r  )r%   r   rJ  rD  s       r   rK   TestEccKey_P521.test_private_key  r  r   c                     [         S   n[        UR                  UR                  S5      n[	        SUS9nU R                  UR                  5       5        U R                  UR                  U5        g )Nr   r   rO  r  )r%   r   rD  rJ  s       r   rR  TestEccKey_P521.test_public_key  r  r   c                     [        SSS9nUR                  5       nU R                  UR                  5       5        U R	                  UR
                  UR
                  5        g )Nr  rV  rB  rW  rY  s      r   r\  'TestEccKey_P521.test_public_key_derived  r^  r   c                 2    U R                  [        S 5        g )Nc                      [        SSS9$ )NzP-522rA  rB  ra  r   r   r   rv   4TestEccKey_P521.test_invalid_curve.<locals>.<lambda>  rc  r   rd  r<   s    r   re  "TestEccKey_P521.test_invalid_curve  rg  r   c                 `    U R                  [        S 5        U R                  [        S 5        g )Nc                      [        SSS9$ )Nr  r   rB  ra  r   r   r   rv   0TestEccKey_P521.test_invalid_d.<locals>.<lambda>  rc  r   c                  8    [        S[        S   R                  S9$ )Nr  r   rB  rl  r   r   r   rv   r    rn  r   rd  r<   s    r   ro  TestEccKey_P521.test_invalid_d  rq  r   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SSS9nUR                  5       nUR                  5       nUR                  5       nU R                  X5        U R	                  X5        U R                  XE5        U R	                  XF5        U R	                  XA5        g )NrV  r  rs  rt  ru  rv  s          r   r|  TestEccKey_P521.test_equality  r~  r   c                     [         R                  " SS9nU R                  S[        U5      5        U R	                  UR
                  S5        U R	                  UR                  5       R
                  S5        g )Nr   r   zcurve='NIST P-521'r   r  r  s     r   r  %TestEccKey_P521.test_name_consistency  r  r   r   Nr  r   r   r   r  r    r  r   r  c                   &    \ rS rSrS rS rS rSrg)TestEccModule_P192i  c                 h   [         R                  " SS9nU R                  UR                  5       5        U R	                  UR
                  [        [        S   R                  [        S   R                  S5      UR                  -  S5        [         R                  " SS9  [         R                  " SS9  g )Nr@  r   r7   rE  rF  r   r   r$   rH  r0   r    r   r   r  r  r,   r  s     r   test_generate TestEccModule_P192.test_generate      ll))*Xgfo.@.@.5fo.@.@.5&79<&? /5	6 	;'<(r   c                 L   [         R                  " SSS9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " S[        S   R                  [        S   R                  S9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " SSS9  [         R                  " SSS9  [         R                  " SSS9  g )Nr@  rA  rB  r7   r   r-   r.   rE  rF  r   r/   r$   rH  r0   r    r   Gr  r  r#   r  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                    [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  g )	N
   rt  r-   r.   r7   r   r@     rB  dictr   r  r  rz   r!   r   r/   r%   coordcoordGs      r   test_negative_construct*TestEccModule_P192.test_negative_construct  l    R+gfo00'&/:L:LM*cmmL7LeL*cmmR7aR6Rr   r   Nr   r   r   r   r  r  r  r   r   r   r   r  r        )/ Sr   r  c                   &    \ rS rSrS rS rS rSrg)TestEccModule_P224i  c                 h   [         R                  " SS9nU R                  UR                  5       5        U R	                  UR
                  [        [        S   R                  [        S   R                  S5      UR                  -  S5        [         R                  " SS9  [         R                  " SS9  g )Nr  r   r   r  r  r  r  s     r   r   TestEccModule_P224.test_generate  r  r   c                 L   [         R                  " SSS9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " S[        S   R                  [        S   R                  S9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " SSS9  [         R                  " SSS9  [         R                  " SSS9  g )Nr  rA  rB  r   r  r  r  r  r  s     r   r  !TestEccModule_P224.test_construct  r  r   c                    [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  g )	Nr  rt  r  r   r   r  r  rB  r  r   s      r   r  *TestEccModule_P224.test_negative_construct  r  r   r   Nr  r   r   r   r	  r	    r  r   r	  c                   &    \ rS rSrS rS rS rSrg)TestEccModule_P256i  c                 f   [         R                  " SS9nU R                  UR                  5       5        U R	                  UR
                  [        [        S   R                  [        S   R                  5      UR                  -  S5        [         R                  " SS9  [         R                  " SS9  g )Nr   r   r,  r  r  r  r  s     r   r   TestEccModule_P256.test_generate  s    ll))*Xgfo.@.@.5fo.@.@&BDGEE&J.4	6
 	;'<(r   c                 L   [         R                  " SSS9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " S[        S   R                  [        S   R                  S9nU R                  UR                  5       5        U R	                  UR
                  [        S   R                  5        [         R                  " SSS9  [         R                  " SSS9  [         R                  " SSS9  g )Nr   rA  rB  r,  r  r  r  r  r  s     r   r  !TestEccModule_P256.test_construct"  r  r   c                    [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  g )	Nr  rt  r  r,  r   r   r  rB  r  r   s      r   r  *TestEccModule_P256.test_negative_construct2  r  r   r   Nr  r   r   r   r  r    s    
)/ Sr   r  c                   &    \ rS rSrS rS rS rSrg)TestEccModule_P384i:  c                 \   [         S   n[        R                  " SS9nU R                  UR	                  5       5        U R                  UR                  [        UR                  UR                  S5      UR                  -  5        [        R                  " SS9  [        R                  " SS9  g )Nr   r   r   r  r  r   r   r   r$   rH  r0   r    r   r  r  r,   r%   r   rJ  s      r   r   TestEccModule_P384.test_generate<  t    ll))*Xehh&%ICEE%QR 	;'<(r   c                 4   [         S   n[        R                  " SSS9nU R                  UR	                  5       5        U R                  UR                  [         S   R                  5        [        R                  " SUR                  UR                  S9nU R                  UR	                  5       5        U R                  UR                  UR                  5        [        R                  " SSS9  [        R                  " SSS9  [        R                  " SSS9  g )Nr   r   rA  rB  r  r  r  r   r   r/   r$   rH  r0   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                    [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  g )	Nr  rt  r  r   r   r   r  rB  r  r   s      r   r  *TestEccModule_P384.test_negative_constructW  r  r   r   Nr  r   r   r   r  r  :      	)/ Sr   r  c                   &    \ rS rSrS rS rS rSrg)TestEccModule_P521i_  c                 \   [         S   n[        R                  " SS9nU R                  UR	                  5       5        U R                  UR                  [        UR                  UR                  S5      UR                  -  5        [        R                  " SS9  [        R                  " SS9  g )Nr   r  r   r  r  r  r  s      r   r   TestEccModule_P521.test_generatea  r  r   c                 4   [         S   n[        R                  " SSS9nU R                  UR	                  5       5        U R                  UR                  [         S   R                  5        [        R                  " SUR                  UR                  S9nU R                  UR	                  5       5        U R                  UR                  UR                  5        [        R                  " SSS9  [        R                  " SSS9  [        R                  " SSS9  g )Nr   r  rA  rB  r  r  r  r   r  s      r   r  !TestEccModule_P521.test_constructl  r"  r   c                    [        SSS9n[        [        S   R                  [        S   R                  S9nU R                  " [
        [        R                  4SS0UD6  U R                  " [
        [        R                  4SSS.UD6  g )	Nr  rt  r  r   r   r  r  rB  r  r   s      r   r  *TestEccModule_P521.test_negative_construct|  r  r   r   Nr  r   r   r   r'  r'  _  r%  r   r'  c                    / nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [
        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [         5      -  nU[        ["        5      -  nU[        [$        5      -  nU[        [&        5      -  nU[        [(        5      -  nU[        [*        5      -  nU$ rJ   )r   r   r5   r   r   r   r   r  r%  r+  r2  r8  r>  r  r  r  r  r  r	  r  r  r'  )configtestss     r   	get_testsr1    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                  >    [         R                  " [        5       5      $ rJ   )unittest	TestSuiter1  r   r   r   rv   rv     s    H&&y{3r   suite)defaultTest)1r4  binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r   r	   Crypto.Math.Numbersr
   TestCaser   r5   r   r   r   r   r  tv_paitvr  r^   r_   r"  setattrcountr%  r+  r2  r8  r>  r  r  r  r  r  r	  r  r  r'  r1  r   r6  mainr   r   r   <module>rD     s  >   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
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
7
 57  B ddbddbdd & !9rxx#7B 2H-- 2 
/4<*..0
1 
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   