
    ¿ig              	          d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ  G d d	e j                  Z G d
 de j                  Z G d de j                  Z G d de j                  Z G d de j                  Z G d de j                  Z G d de j                  Z edddd d d d          pg ZeD ]-Zej        ej        ej        fdZ eedej        z  e           . G d d e j                  Z edd!d"d# d$ d% d          pg ZeD ]-Zej        ej        ej        fd&Z eedej        z  e           . G d' d(e j                  Z  edd)d*d+ d, d- d          pg ZeD ]-Zej        ej        ej        fd.Z ee dej        z  e           . G d/ d0e j                  Z! edd1d2d3 d4 d5 d          pg ZeD ]-Zej        ej        ej        fd6Z ee!dej        z  e           . G d7 d8e j                  Z" edd9d:d; d< d= d          pg ZeD ]-Zej        ej        ej        fd>Z ee"dej        z  e           . G d? d@e j                  Z# G dA dBe j                  Z$ G dC dDe j                  Z% G dE dFe j                  Z& G dG dHe j                  Z' G dI dJe j                  Z( G dK dLe j                  Z) G dM dNe j                  Z* G dO dPe j                  Z+ G dQ dRe j                  Z,i fdSZ-e.dTk    rdU Z/ e j0        dVW           dS dS )X    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integerc                       e Zd Zd Zd ZdS )TestEccPointc                    t          j        d          j        }t          j        d          j        }	 ||z    J # t          $ r}dt	          |          v sJ Y d }~nd }~ww xY w	 ||z  }J # t          $ r}dt	          |          v sJ Y d }~nd }~ww xY w G d d          }|                     | |            k               |                     | |            k               d S )NP-256curveP-384Fznot on the same curvec                       e Zd ZdS )+TestEccPoint.test_mix.<locals>.OtherKeyTypeN)__name__
__module____qualname__     g/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/SelfTest/PublicKey/test_ECC_NIST.pyOtherKeyTyper   >   s        Dr   r   )r   generatepointQ
ValueErrorstrassertFalse
assertTrue)selfp1p2er   s        r   test_mixzTestEccPoint.test_mix-   sH   \(((/\(((/	5GGM 	5 	5 	5*c!ff444444444	5	5"HBM 	5 	5 	5*c!ff444444444	5	 	 	 	 	 	 	 	 	||~~-...llnn,-----s-   = 
A$AA$(A/ /
B9BBc                 |    t          j        dddd          }|                     t          |          d           d S )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_reprzTestEccPoint.test_reprD   s]    ]j#p#qs s s 	b  $@  	A  	A  	A  	A  	Ar   N)r   r   r   r%   r-   r   r   r   r   r   +   s7        . . ..A A A A Ar   r   c                       e Zd ZdZ eddd          Z eddd          Zd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd ZdS )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                 F    |                      | j        j        d           d S )N
NIST P-192r+   pointSr   r!   s    r   test_curve_attributez+TestEccPoint_NIST_P192.test_curve_attributeY   #    *L99999r   c                     t          dd          }|                    | j                   |                     || j                   d S Nr   r   setr4   r+   r!   pointWs     r   test_setzTestEccPoint_NIST_P192.test_set\   A    !Q

4;-----r   c                    | j                                         }|                     || j                    |                    | j                   |                     || j                   |                     | j         | j                   d S Nr4   copyr+   r;   pointTassertNotEqualr<   s     r   	test_copyz TestEccPoint_NIST_P192.test_copya   y    !!##---

4;---DK55555r   c                     | j          }| j         |z   }|                     || j                                                    d S rA   r4   r+   point_at_infinityr!   negSsums      r   test_negatez"TestEccPoint_NIST_P192.test_negateh   A    |kD dk;;==>>>>>r   c                    d}d}| j         | j        z   }|                     |j        |           |                     |j        |           |                                }| j         |z   }|                     || j                    || j         z   }|                     || j                    ||z   }|                     ||           d S Nl   <Sb!tX?w|xh\7% l   K*m/_JSl(U[yq;}r4   rD   r+   xyrJ   r!   pointRxpointRypointRpais        r   test_additionz$TestEccPoint_NIST_P192.test_additionm   s    DDt{*7+++7+++&&(( s"--- t{"--- s%%%%%r   c                 *   d}d}| j                                         }|| j        z  }|                     |j        |           |                     |j        |           |                                }| j                                         }||z  }|                     || j                    |                                }|| j         z  }|                     || j                    |                                }||z  }|                     ||           d S rQ   r4   rC   rD   r+   rS   rT   rJ   rU   s        r   test_inplace_additionz,TestEccPoint_NIST_P192.test_inplace_addition   s	   DD!!##$+7+++7+++&&(( !!###--- $+--- #%%%%%r   c                 *   d}d}| j                                         }|                                 |                     |j        |           |                     |j        |           | j                                         }|                                }|                                 |                     ||           | j                                         }||z  }|                     |j        |           |                     |j        |           d S )Nl   bi~hIR wYTSD{1.-l   	%Y^-<6!N	qp r4   rC   doubler+   rS   rT   rJ   rU   s        r   test_doublingz$TestEccPoint_NIST_P192.test_doubling   s    DD!!##7+++7+++ k++--%%% !!##&7+++7+++++r   c                 \    d}d}d} j         |z  }                     |j        |                                |j        |            j                                         } j         dz  }                     ||                                t           fd           | j         z  }                     |j        |                                |j        |           t          |           j         z  }                     |j        |                                |j        |           d S )N   tlkdcH(Lj]u5Qx
l   1m~KT4IwxIG-i!wl   {5syq-BKBior   c                       j         dz  S Nr4   r5   s   r   <lambda>z=TestEccPoint_NIST_P192.test_scalar_multiply.<locals>.<lambda>       dkB.> r   r4   r+   rS   rT   rJ   assertRaisesr   r
   r!   r'   rV   rW   rX   rY   s   `     r   test_scalar_multiplyz+TestEccPoint_NIST_P192.test_scalar_multiply   s*   >DDq7+++7+++ k++--q%%% 	*&>&>&>&>??? T[7+++7+++dk)7+++7+++++r   c                     d}d}d}d}| j         |z  | j        |z  z   }|                     |j        |           |                     |j        |           d S )Nrc   l   rr6O^ho3&gaOqKl   [oge?/ or6uc;'{ l   D6vMc'~vLz6bHer4   rD   r+   rS   rT   r!   r'   r$   rV   rW   rX   s         r   test_joint_scalar_multiplyz1TestEccPoint_NIST_P192.test_joint_scalar_multiply   sb    >>DDq4;?27+++7+++++r   c                     |                      | j                                        d           |                      | j                                        d           d S )N      r+   r4   size_in_bitssize_in_bytesr5   s    r   
test_sizesz!TestEccPoint_NIST_P192.test_sizes   P    1133S9992244b99999r   N)r   r   r   __doc__r   r4   rD   r6   r>   rF   rN   rZ   r]   ra   rm   rq   rx   r   r   r   r/   r/   L   s        ~~XBB  F
 XBB  F
: : :. . .
6 6 6? ? ?
& & &,& & &4, , ,*, , ,4, , ,: : : : :r   r/   c                       e Zd ZdZ eddd          Z eddd          Zd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd ZdS )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                 F    |                      | j        j        d           d S )N
NIST P-224r3   r5   s    r   r6   z+TestEccPoint_NIST_P224.test_curve_attribute   r7   r   c                     t          dd          }|                    | j                   |                     || j                   d S r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P224.test_set   r?   r   c                    | j                                         }|                     || j                    |                    | j                   |                     || j                   |                     | j         | j                   d S rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P224.test_copy   rG   r   c                     | j          }| j         |z   }|                     || j                                                    d S rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P224.test_negate   rO   r   c                    d}d}| j         | j        z   }|                     |j        |           |                     |j        |           |                                }| j         |z   }|                     || j                    || j         z   }|                     || j                    ||z   }|                     ||           d S Nl   }Q+|y%w<{ Vu{adl   pZv8)_z-hK	G^6gyO9rR   rU   s        r   rZ   z$TestEccPoint_NIST_P224.test_addition   s    LLt{*7+++7+++&&(( s"--- t{"--- s%%%%%r   c                 *   d}d}| j                                         }|| j        z  }|                     |j        |           |                     |j        |           |                                }| j                                         }||z  }|                     || j                    |                                }|| j         z  }|                     || j                    |                                }||z  }|                     ||           d S r   r\   rU   s        r   r]   z,TestEccPoint_NIST_P224.test_inplace_addition  s	   LL!!##$+7+++7+++&&(( !!###--- $+--- #%%%%%r   c                 *   d}d}| j                                         }|                                 |                     |j        |           |                     |j        |           | j                                         }|                                }|                                 |                     ||           | j                                         }||z  }|                     |j        |           |                     |j        |           d S )Nl   _xxRh>7ZPJIw}-r*l   }]o`}MH^>A0Z]Sv>L1|+r_   rU   s        r   ra   z$TestEccPoint_NIST_P224.test_doubling,  s    LL!!##7+++7+++ k++--%%% !!##&7+++7+++++r   c                 \    d}d}d} j         |z  }                     |j        |                                |j        |            j                                         } j         dz  }                     ||                                t           fd           | j         z  }                     |j        |                                |j        |           t          |           j         z  }                     |j        |                                |j        |           d S )N   ;WU'uoZw]o]em82~P)l   <N0VmoLBm_J+'"/F*iKl%l   mG[nWh8z{hbIU_OxQB)Jr   c                       j         dz  S re   rg   r5   s   r   rh   z=TestEccPoint_NIST_P224.test_scalar_multiply.<locals>.<lambda>P  ri   r   rj   rl   s   `     r   rm   z+TestEccPoint_NIST_P224.test_scalar_multiplyA  s*   FLLq7+++7+++ k++--q%%% 	*&>&>&>&>??? T[7+++7+++dk)7+++7+++++r   c                     d}d}d}d}| j         |z  | j        |z  z   }|                     |j        |           |                     |j        |           d S )Nr   l   6W]UDwyptq>3dd|?)5l   >HEK5\
5F2~?jTm{+E6l   1(^VKUC?++'*X:pCro   rp   s         r   test_joing_scalar_multiplyz1TestEccPoint_NIST_P224.test_joing_scalar_multiply[  sb    FFLLq4;?27+++7+++++r   c                     |                      | j                                        d           |                      | j                                        d           d S )N      ru   r5   s    r   rx   z!TestEccPoint_NIST_P224.test_sizese  ry   r   Nr   r   r   rz   r   r4   rD   r6   r>   rF   rN   rZ   r]   ra   rm   r   rx   r   r   r   r|   r|      s        ~~XJJ  F
 XJJ  F
: : :. . .
6 6 6? ? ?
& & &,& & &4, , ,*, , ,4, , ,: : : : :r   r|   c                   ~    e Zd ZdZ edd          Z edd          Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd ZdS )TestEccPoint_NIST_P256ztTests defined in section 4.3 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl   ,;zQCl:a*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                 F    |                      | j        j        d           d S )N
NIST P-256r3   r5   s    r   r6   z+TestEccPoint_NIST_P256.test_curve_attributeu  r7   r   c                     t          dd          }|                    | j                   |                     || j                   d S r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P256.test_setx  r?   r   c                    | j                                         }|                     || j                    |                    | j                   |                     || j                   |                     | j         | j                   d S rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P256.test_copy}  rG   r   c                     | j          }| j         |z   }|                     || j                                                    d S rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P256.test_negate  rO   r   c                    d}d}| j         | j        z   }|                     |j        |           |                     |j        |           |                                }| j         |z   }|                     || j                    || j         z   }|                     || j                    ||z   }|                     ||           d S Nl   ~(iM)E=kdHpit3&EpmRrl   dBhE@	hFTVL.E$udK].X rR   rU   s        r   rZ   z$TestEccPoint_NIST_P256.test_addition  s    TTt{*7+++7+++&&(( s"--- t{"--- s%%%%%r   c                 *   d}d}| j                                         }|| j        z  }|                     |j        |           |                     |j        |           |                                }| j                                         }||z  }|                     || j                    |                                }|| j         z  }|                     || j                    |                                }||z  }|                     ||           d S r   r\   rU   s        r   r]   z,TestEccPoint_NIST_P256.test_inplace_addition  	   TT!!##$+7+++7+++&&(( !!###--- $+--- #%%%%%r   c                 *   d}d}| j                                         }|                                 |                     |j        |           |                     |j        |           | j                                         }|                                }|                                 |                     ||           | j                                         }||z  }|                     |j        |           |                     |j        |           d S )Nl   '6?0T.<63GwG:]Hsivl   P6e#` {yO8^g^ w{9lJ@z r_   rU   s        r   ra   z$TestEccPoint_NIST_P256.test_doubling  s    TT!!##7+++7+++ k++--%%% !!##&7+++7+++++r   c                 \    d}d}d} j         |z  }                     |j        |                                |j        |            j                                         } j         dz  }                     ||                                t           fd           | j         z  }                     |j        |                                |j        |           t          |           j         z  }                     |j        |                                |j        |           d S )N   _,)N$chKf-5lk<Xk#E l   ? nDf>1x066OPKFQl   ATU*-sX)>~|N\}T9%Dbu4ur   c                       j         dz  S re   rg   r5   s   r   rh   z=TestEccPoint_NIST_P256.test_scalar_multiply.<locals>.<lambda>  ri   r   rj   rl   s   `     r   rm   z+TestEccPoint_NIST_P256.test_scalar_multiply  s*   NTTq7+++7+++ k++--q%%% 	*&>&>&>&>??? T[7+++7+++dk)7+++7+++++r   c                     d}d}d}d}| j         |z  | j        |z  z   }|                     |j        |           |                     |j        |           d S )Nr   l   T:XuMKt^5~{"/T3G1S l   vbaB>Y5OgEI# d3ZgX l   uR`/.5ES6p* Pr ro   rp   s         r   r   z1TestEccPoint_NIST_P256.test_joing_scalar_multiply  sb    NNTTq4;?27+++7+++++r   c                     |                      | j                                        d           |                      | j                                        d           d S )N       ru   r5   s    r   rx   z!TestEccPoint_NIST_P256.test_sizes  ry   r   Nr   r   r   r   r   r   j  s        ~~XRRT TF XRRT TF: : :. . .
6 6 6? ? ?
& & &,& & &4, , ,*, , ,4, , ,: : : : :r   r   c                       e Zd ZdZ eddd          Z eddd          Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd ZdS )TestEccPoint_NIST_P384ztTests defined in section 4.4 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=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                 F    |                      | j        j        d           d S )N
NIST P-384r3   r5   s    r   r6   z+TestEccPoint_NIST_P384.test_curve_attribute  r7   r   c                     t          ddd          }|                    | j                   |                     || j                   d S )Nr   r   r:   r<   s     r   r>   zTestEccPoint_NIST_P384.test_set  sE    !Q''

4;-----r   c                    | j                                         }|                     || j                    |                    | j                   |                     || j                   |                     | j         | j                   d S rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P384.test_copy  rG   r   c                     | j          }| j         |z   }|                     || j                                                    d S rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P384.test_negate  rO   r   c                    d}d}| j         | j        z   }|                     |j        |           |                     |j        |           |                                }| j         |z   }|                     || j                    || j         z   }|                     || j                    ||z   }|                     ||           d S )Nl   ^\mLH\%sz.	_QHp)wB'2h\|Sz9Y07s\\% l   $	rQ4 1ml w{g~OM wr6bLLU;8*$0xrs, rR   rU   s        r   rZ   z$TestEccPoint_NIST_P384.test_addition  s    ttt{*7+++7+++&&(( s"--- t{"--- s%%%%%r   c                 *   d}d}| j                                         }|| j        z  }|                     |j        |           |                     |j        |           |                                }| j                                         }||z  }|                     || j                    |                                }|| j         z  }|                     || j                    |                                }||z  }|                     ||           d S r   r\   rU   s        r   _test_inplace_additionz-TestEccPoint_NIST_P384._test_inplace_addition.  r   r   c                 *   d}d}| j                                         }|                                 |                     |j        |           |                     |j        |           | j                                         }|                                }|                                 |                     ||           | j                                         }||z  }|                     |j        |           |                     |j        |           d S )Nl   LPeroBr0_nCYw~s7xI|Z:Ze*X!T l   ]e^A|\"Rn0WWCs(h}	c5JBNnN=.r_   rU   s        r   ra   z$TestEccPoint_NIST_P384.test_doublingH  s    tt!!##7+++7+++ k++--%%% !!##&7+++7+++++r   c                 B    d}d}d} j         |z  }                     |j        |                                |j        |            j                                         } j         dz  }                     ||                                t           fd           d S )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                       j         dz  S re   rg   r5   s   r   rh   z=TestEccPoint_NIST_P384.test_scalar_multiply.<locals>.<lambda>l  ri   r   r4   r+   rS   rT   rJ   rk   r   rl   s   `     r   rm   z+TestEccPoint_NIST_P384.test_scalar_multiply]  s    nttq7+++7+++ k++--q%%% 	*&>&>&>&>?????r   c                     d}d}d}d}| j         |z  | j        |z  z   }|                     |j        |           |                     |j        |           d S )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 ro   rp   s         r   r   z1TestEccPoint_NIST_P384.test_joing_scalar_multiplyn  sb    nnttq4;?27+++7+++++r   c                     |                      | j                                        d           |                      | j                                        d           d S )Ni  0   ru   r5   s    r   rx   z!TestEccPoint_NIST_P384.test_sizesx  ry   r   N)r   r   r   rz   r   r4   rD   r6   r>   rF   rN   rZ   r   ra   rm   r   rx   r   r   r   r   r     s        ~~Xrr F
 Xrr F
: : :. . .
6 6 6? ? ?
& & &,& & &4, , ,*@ @ @", , ,: : : : :r   r   c                       e Zd ZdZ eddd          Z eddd          Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd ZdS )TestEccPoint_NIST_P521ztTests defined in section 4.5 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl#   A5;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                 F    |                      | j        j        d           d S )N
NIST P-521r3   r5   s    r   r6   z+TestEccPoint_NIST_P521.test_curve_attribute  r7   r   c                     t          dd          }|                    | j                   |                     || j                   d S r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P521.test_set  r?   r   c                    | j                                         }|                     || j                    |                    | j                   |                     || j                   |                     | j         | j                   d S rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P521.test_copy  rG   r   c                     | j          }| j         |z   }|                     || j                                                    d S rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P521.test_negate  rO   r   c                    d}d}| j         | j        z   }|                     |j        |           |                     |j        |           |                                }| j         |z   }|                     || j                    || j         z   }|                     || j                    ||z   }|                     ||           d S 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rR   rU   s        r   rZ   z$TestEccPoint_NIST_P521.test_addition  s     ] ]t{*7+++7+++&&(( s"--- t{"--- s%%%%%r   c                 *   d}d}| j                                         }|| j        z  }|                     |j        |           |                     |j        |           |                                }| j                                         }||z  }|                     || j                    |                                }|| j         z  }|                     || j                    |                                }||z  }|                     ||           d S r   r\   rU   s        r   r]   z,TestEccPoint_NIST_P521.test_inplace_addition  s    ] ]!!##$+7+++7+++&&(( !!###--- $+--- #%%%%%r   c                 *   d}d}| j                                         }|                                 |                     |j        |           |                     |j        |           | j                                         }|                                }|                                 |                     ||           | j                                         }||z  }|                     |j        |           |                     |j        |           d S )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r_   rU   s        r   ra   z$TestEccPoint_NIST_P521.test_doubling  s     ] ]!!##7+++7+++ k++--%%% !!##&7+++7+++++r   c                 B    d}d}d} j         |z  }                     |j        |                                |j        |            j                                         } j         dz  }                     ||                                t           fd           d S )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                       j         dz  S re   rg   r5   s   r   rh   z=TestEccPoint_NIST_P521.test_scalar_multiply.<locals>.<lambda>  ri   r   r   rl   s   `     r   rm   z+TestEccPoint_NIST_P521.test_scalar_multiply  s     W ] ]q7+++7+++ k++--q%%% 	*&>&>&>&>?????r   c                     d}d}d}d}| j         |z  }|| j        |z  z  }|                     |j        |           |                     |j        |           d S )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? ro   rp   s         r   r   z1TestEccPoint_NIST_P521.test_joing_scalar_multiply  ss     W W ] ]q$+/!7+++7+++++r   c                     |                      | j                                        d           |                      | j                                        d           d S )Ni	  B   ru   r5   s    r   rx   z!TestEccPoint_NIST_P521.test_sizes  ry   r   Nr   r   r   r   r   r   }  s        ~~X [ [ F
 X [ [ F
: : :. . .
6 6 6? ? ?
& & &,& & &4, , ,*@ @ @"	, 	, 	,: : : : :r   r   c                   P    e Zd ZdZed         Z eej        ej        d          Z	dS )TestEccPoint_PAI_P1929Test vectors from http://point-at-infinity.org/ecc/nisttvr0   N
r   r   r   rz   r   r   r   GxGypointGr   r   r   r   r     4        CCFOEXeh&11FFFr   r   )	PublicKeyr   zpoint-at-infinity.org-P192.txtz&P-192 tests from point-at-infinity.orgc                      t          |           S rA   intks    r   rh   rh         CFF r   c                 "    t          | d          S N   r   rS   s    r   rh   rh         C2JJ r   c                 "    t          | d          S r   r   rT   s    r   rh   rh     r   r   )r   rS   rT   c                     | j         |z  }|                     |j        |           |                     |j        |           d S rA   r   r+   rS   rT   r!   scalarrS   rT   results        r   new_testr     D    v%1%%%1%%%%%r   ztest_%dc                   P    e Zd ZdZed         Z eej        ej        d          Z	dS )TestEccPoint_PAI_P224r   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                      t          |           S rA   r   r   s    r   rh   rh   #  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   $  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   %  r   r   c                     | j         |z  }|                     |j        |           |                     |j        |           d S rA   r   r   s        r   r   r   '  r   r   c                   P    e Zd ZdZed         Z eej        ej        d          Z	dS )TestEccPoint_PAI_P256r   p256Nr   r   r   r   r   r   .  r   r   r   zpoint-at-infinity.org-P256.txtz&P-256 tests from point-at-infinity.orgc                      t          |           S rA   r   r   s    r   rh   rh   8  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   9  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   :  r   r   c                     | j         |z  }|                     |j        |           |                     |j        |           d S rA   r   r   s        r   r   r   <  r   r   c                   P    e Zd ZdZed         Z eej        ej        d          Z	dS )TestEccPoint_PAI_P384r   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                      t          |           S rA   r   r   s    r   rh   rh   M  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   N  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   O  r   r   c                     | j         |z  }|                     |j        |           |                     |j        |           d S rA   r   r   s        r   r   r   Q  r   r   c                   P    e Zd ZdZed         Z eej        ej        d          Z	dS )TestEccPoint_PAI_P521r   r   Nr   r   r   r   r   r   X  r   r   r   zpoint-at-infinity.org-P521.txtz&P-521 tests from point-at-infinity.orgc                      t          |           S rA   r   r   s    r   rh   rh   b  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   c  r   r   c                 "    t          | d          S r   r   r   s    r   rh   rh   d  r   r   c                     | j         |z  }|                     |j        |           |                     |j        |           d S rA   r   r   s        r   r   r   f  r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEccKey_P192c                    t          dd          }|                     |j        d           |                     |                                           |                     |j        j        t          d         j                   |                     |j        j	        t          d         j
                   t          t          d         j        t          d         j
        d          }t          dd|          }|                     |j        d           |                     |                                           |                     |j        |           t          dd          }t          dd          }d S )	NP-192   r   r'   r0   r   r   r'   point	secp192r1
prime192v1r	   r+   r'   r    has_privater   rS   r   r   rT   r   r   r!   keyr  s      r   test_private_keyz TestEccKey_P192.test_private_keyo  6   7a((("""))***wv'9:::wv'9:::+WV_-?wOOO7au555"""))***U+++ ;!,,,<1---r   c                    t          t          d         j        t          d         j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr0   r  r   r   r  	r   r   r   r   r	   r   r	  r+   r   r!   r  r  s      r   test_public_keyzTestEccKey_P192.test_public_key  r    +WV_-?wOOO7%000**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr     r  r	   
public_keyr   r	  r+   r   r!   priv_keypub_keys      r   test_public_key_derivedz'TestEccKey_P192.test_public_key_derived  e    1---%%'',,..///'.99999r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )NzP-193r  r  r	   r   r   r   rh   z4TestEccKey_P192.test_invalid_curve.<locals>.<lambda>      f7a.H.H.H r   rk   r   r5   s    r   test_invalid_curvez"TestEccKey_P192.test_invalid_curve  "    *&H&HIIIIIr   c                 v    |                      t          d            |                      t          d            d S )Nc                  $    t          dd          S )Nr  r   r  r  r   r   r   rh   z0TestEccKey_P192.test_invalid_d.<locals>.<lambda>  r   r   c                  D    t          dt          d         j                  S )Nr  r0   r  r	   r   orderr   r   r   rh   z0TestEccKey_P192.test_invalid_d.<locals>.<lambda>  $    f77>v7L/N /N /N r   r!  r5   s    r   test_invalid_dzTestEccKey_P192.test_invalid_d  Q    *&H&HIII* 'N 'N 	O 	O 	O 	O 	Or   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr  r  r'   r      r   r*   r  r+   rE   r!   private_keyprivate_key2private_key3r  public_key2public_key3s          r   test_equalityzTestEccKey_P192.test_equality      maw777}q888}q888 ++--
"--//"--//l333K666[111J444J44444r   c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr0   r   zcurve='NIST P-192'r2   r   r   assertInr,   r+   r   r  r!   r  s     r   test_name_consistencyz%TestEccKey_P192.test_name_consistency  p    l(((*DII666L111))/>>>>>r   N
r   r   r   r  r  r  r"  r*  r6  r<  r   r   r   r   r   m          . . .$, , ,: : :J J JO O O
5 5 5$? ? ? ? ?r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEccKey_P224c                    t          dd          }|                     |j        d           |                     |                                           |                     |j        j        t          d         j                   |                     |j        j	        t          d         j
                   t          t          d         j        t          d         j
        d          }t          dd|          }|                     |j        d           |                     |                                           |                     |j        |           t          dd          }t          dd          }d S )	NP-224r  r  r}   r   r  	secp224r1
prime224v1r  r
  s      r   r  z TestEccKey_P224.test_private_key  r  r   c                    t          t          d         j        t          d         j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr}   rC  r   r  r  r  s      r   r  zTestEccKey_P224.test_public_key  r  r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )NrC  r  r  r  r  s      r   r  z'TestEccKey_P224.test_public_key_derived  r  r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )NzP-225r  r  r  r   r   r   rh   z4TestEccKey_P224.test_invalid_curve.<locals>.<lambda>  r   r   r!  r5   s    r   r"  z"TestEccKey_P224.test_invalid_curve  r#  r   c                 v    |                      t          d            |                      t          d            d S )Nc                  $    t          dd          S )NrC  r   r  r  r   r   r   rh   z0TestEccKey_P224.test_invalid_d.<locals>.<lambda>  r   r   c                  D    t          dt          d         j                  S )NrC  r}   r  r'  r   r   r   rh   z0TestEccKey_P224.test_invalid_d.<locals>.<lambda>  r)  r   r!  r5   s    r   r*  zTestEccKey_P224.test_invalid_d  r+  r   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr  rC  r-  r.  r/  r0  s          r   r6  zTestEccKey_P224.test_equality  r7  r   c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr}   r   zcurve='NIST P-224'r   r9  r;  s     r   r<  z%TestEccKey_P224.test_name_consistency  r=  r   Nr>  r   r   r   rA  rA    r?  r   rA  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEccKey_P256c                 4   t          dd          }|                     |j        d           |                     |                                           |                     |j        j        t          d         j                   |                     |j        j	        t          d         j
                   t          t          d         j        t          d         j
                  }t          dd|          }|                     |j        d           |                     |                                           |                     |j        |           t          dd          }t          dd          }|                     t          t           dd	           d S )
Nr   r  r  r   r  	secp256r1
prime256v1s    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)r   seed)r	   r+   r'   r    r	  r   rS   r   r   rT   r   r   rk   r   r
  s      r   r  z TestEccKey_P256.test_private_key  sR   7a((("""))***wv'9:::wv'9:::+WV_-?@@7au555"""))***U+++ ;!,,,<1--- 	*fFIIIIIr   c                    t          t          d         j        t          d         j                  }t	          d|          }|                     |                                           |                     |j        |           d S )Nr   r   r  r  r  s      r   r  zTestEccKey_P256.test_public_key
  sm    +WV_-?@@7%000**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr   r  r  r  r  s      r   r  z'TestEccKey_P256.test_public_key_derived  r  r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )NzP-257r  r  r  r   r   r   rh   z4TestEccKey_P256.test_invalid_curve.<locals>.<lambda>  r   r   r!  r5   s    r   r"  z"TestEccKey_P256.test_invalid_curve  r#  r   c                 v    |                      t          d            |                      t          d            d S )Nc                  $    t          dd          S )Nr   r   r  r  r   r   r   rh   z0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  r   r   c                  D    t          dt          d         j                  S )Nr   r   r  r'  r   r   r   rh   z0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  s    f7gfoF[.\.\.\ r   r!  r5   s    r   r*  zTestEccKey_P256.test_invalid_d  s<    *&H&HIII*&\&\]]]]]r   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr  r   r-  r.  r/  r0  s          r   r6  zTestEccKey_P256.test_equality  r7  r   c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr   r   zcurve='NIST P-256'r   r9  r;  s     r   r<  z%TestEccKey_P256.test_name_consistency1  r=  r   Nr>  r   r   r   rP  rP    s        J J J*, , ,: : :J J J^ ^ ^5 5 5$? ? ? ? ?r   rP  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEccKey_P384c                    t           d         }t          dd          }|                     |j        d           |                     |                                           |                     |j        j        |j                   |                     |j        j	        |j
                   t          |j        |j
        d          }t          dd|          }|                     |j        d           |                     |                                           |                     |j        |           t          dd          }t          dd          }t          dd          }d S )Nr   r   r  r  r  	secp384r1
prime384v1r   r	   r+   r'   r    r	  r   rS   r   rT   r   r   )r!   r   r  r  s       r   r  z TestEccKey_P384.test_private_key:  :   v7a((("""))***tw///tw///$'6227au555"""))***U+++ 6Q''';!,,,<1---r   c                     t           d         }t          |j        |j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr   r   r  	r   r   r   r   r	   r   r	  r+   r   )r!   r   r  r  s       r   r  zTestEccKey_P384.test_public_keyO  n    v$'6227%000**+++U+++++r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nr   r  r  r  r  s      r   r  z'TestEccKey_P384.test_public_key_derivedW  r  r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )NzP-385r  r  r  r   r   r   rh   z4TestEccKey_P384.test_invalid_curve.<locals>.<lambda>_  r   r   r!  r5   s    r   r"  z"TestEccKey_P384.test_invalid_curve^  r#  r   c                 v    |                      t          d            |                      t          d            d S )Nc                  $    t          dd          S )Nr   r   r  r  r   r   r   rh   z0TestEccKey_P384.test_invalid_d.<locals>.<lambda>b  r   r   c                  D    t          dt          d         j                  S )Nr   r   r  r'  r   r   r   rh   z0TestEccKey_P384.test_invalid_d.<locals>.<lambda>c  r)  r   r!  r5   s    r   r*  zTestEccKey_P384.test_invalid_da  r+  r   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr  r   r-  r.  r/  r0  s          r   r6  zTestEccKey_P384.test_equalityf  r7  r   c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr   r   zcurve='NIST P-384'r   r9  r;  s     r   r<  z%TestEccKey_P384.test_name_consistencyx  r=  r   Nr>  r   r   r   r_  r_  8          . . .*, , ,: : :J J JO O O
5 5 5$? ? ? ? ?r   r_  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEccKey_P521c                    t           d         }t          dd          }|                     |j        d           |                     |                                           |                     |j        j        |j                   |                     |j        j	        |j
                   t          |j        |j
        d          }t          dd|          }|                     |j        d           |                     |                                           |                     |j        |           t          dd          }t          dd          }t          dd          }d S )Nr   P-521r  r  r  	secp521r1
prime521v1rc  )r!   r   r  r  s       r   r  z TestEccKey_P521.test_private_key  rd  r   c                     t           d         }t          |j        |j        d          }t	          d|          }|                     |                                           |                     |j        |           d S )Nr   r   r  rf  )r!   r   r  r  s       r   r  zTestEccKey_P521.test_public_key  rg  r   c                     t          dd          }|                                }|                     |                                           |                     |j        |j                   d S )Nrt  r  r  r  r  s      r   r  z'TestEccKey_P521.test_public_key_derived  r  r   c                 >    |                      t          d            d S )Nc                  $    t          dd          S )NzP-522r  r  r  r   r   r   rh   z4TestEccKey_P521.test_invalid_curve.<locals>.<lambda>  r   r   r!  r5   s    r   r"  z"TestEccKey_P521.test_invalid_curve  r#  r   c                 v    |                      t          d            |                      t          d            d S )Nc                  $    t          dd          S )Nrt  r   r  r  r   r   r   rh   z0TestEccKey_P521.test_invalid_d.<locals>.<lambda>  r   r   c                  D    t          dt          d         j                  S )Nrt  r   r  r'  r   r   r   rh   z0TestEccKey_P521.test_invalid_d.<locals>.<lambda>  r)  r   r!  r5   s    r   r*  zTestEccKey_P521.test_invalid_d  r+  r   c                    t          j        dd          }t          j        dd          }t          j        dd          }|                                }|                                }|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           d S )Nr  rt  r-  r.  r/  r0  s          r   r6  zTestEccKey_P521.test_equality  r7  r   c                    t          j        d          }|                     dt          |                     |                     |j        d           |                     |                                j        d           d S )Nr   r   zcurve='NIST P-521'r   r9  r;  s     r   r<  z%TestEccKey_P521.test_name_consistency  r=  r   Nr>  r   r   r   rr  rr    rp  r   rr  c                        e Zd Zd Zd Zd ZdS )TestEccModule_P192c                 x   t          j        d          }|                     |                                           |                     |j        t          t          d         j        t          d         j	        d          |j
        z  d           t          j        d           t          j        d           d S )Nr  r   r0   r  r  r   r   r    r	  r+   r   r   r   r   r   r'   r;  s     r   test_generatez TestEccModule_P192.test_generate      l)))))***Xgfo.@.5fo.@.5&7 &79<&? /5	6 	6 	6 	;''''<((((((r   c                 l   t          j        dd          }|                     |                                           |                     |j        t          d         j                   t          j        dt          d         j        t          d         j	                  }| 
                    |                                           |                     |j        t          d         j                   t          j        dd           t          j        dd           t          j        dd           d S )Nr  r  r  r0   r   r(   r)   r  r  r   r*   r    r	  r+   r   r   Gr   r   r   r;  s     r   test_constructz!TestEccModule_P192.test_construct      m'Q///))***WV_%6777m'76?3E$+FO$68 8 8**+++WV_%6777 	Fa((((K1----LA......r   c                    t          dd          }t          t          d         j        t          d         j                  } | j        t
          t          j        fddi|  | j        t
          t          j        fddd| d S )	N
   r.  r(   r)   r0   r   r     r  dictr   r   r   rk   r   r   r*   r!   coordcoordGs      r   test_negative_constructz*TestEccModule_P192.test_negative_construct      R+++gfo0'&/:LMMM*cmLL7LeLLL*cmR7aRR6RRRRRr   Nr   r   r   r  r  r  r   r   r   r  r    F        ) ) )/ / / S S S S Sr   r  c                        e Zd Zd Zd Zd ZdS )TestEccModule_P224c                 x   t          j        d          }|                     |                                           |                     |j        t          t          d         j        t          d         j	        d          |j
        z  d           t          j        d           t          j        d           d S )NrC  r   r}   rD  rE  r  r;  s     r   r  z TestEccModule_P224.test_generate  r  r   c                 l   t          j        dd          }|                     |                                           |                     |j        t          d         j                   t          j        dt          d         j        t          d         j	                  }| 
                    |                                           |                     |j        t          d         j                   t          j        dd           t          j        dd           t          j        dd           d S )NrC  r  r  r}   r  rD  rE  r  r;  s     r   r  z!TestEccModule_P224.test_construct  r  r   c                    t          dd          }t          t          d         j        t          d         j                  } | j        t
          t          j        fddi|  | j        t
          t          j        fddd| d S )	Nr  r.  r  r}   r   rC  r  r  r  r  s      r   r  z*TestEccModule_P224.test_negative_construct  r  r   Nr  r   r   r   r  r    r  r   r  c                        e Zd Zd Zd Zd ZdS )TestEccModule_P256c                 v   t          j        d          }|                     |                                           |                     |j        t          t          d         j        t          d         j	                  |j
        z  d           t          j        d           t          j        d           d S )Nr   r   r   rR  rS  r  r;  s     r   r  z TestEccModule_P256.test_generate  s    l)))))***Xgfo.@.5fo.@&B &BDGE&J.4	6 	6 	6
 	;''''<((((((r   c                 l   t          j        dd          }|                     |                                           |                     |j        t          d         j                   t          j        dt          d         j        t          d         j	                  }| 
                    |                                           |                     |j        t          d         j                   t          j        dd           t          j        dd           t          j        dd           d S )Nr   r  r  r   r  rR  rS  r  r;  s     r   r  z!TestEccModule_P256.test_construct"  r  r   c                    t          dd          }t          t          d         j        t          d         j                  } | j        t
          t          j        fddi|  | j        t
          t          j        fddd| d S )	Nr  r.  r  r   r   r   r  r  r  r  s      r   r  z*TestEccModule_P256.test_negative_construct2  r  r   Nr  r   r   r   r  r    sF        
) 
) 
)/ / / S S S S Sr   r  c                        e Zd Zd Zd Zd ZdS )TestEccModule_P384c                 d   t           d         }t          j        d          }|                     |                                           |                     |j        t          |j        |j	        d          |j
        z             t          j        d           t          j        d           d S )Nr   r   r   ra  rb  r   r   r   r    r	  r+   r   r   r   r   r'   r!   r   r  s      r   r  z TestEccModule_P384.test_generate<      l)))))***Xeh&%I%ICE%QRRR 	;''''<((((((r   c                 D   t           d         }t          j        dd          }|                     |                                           |                     |j        t           d         j                   t          j        d|j        |j	                  }| 
                    |                                           |                     |j        |j                   t          j        dd           t          j        dd           t          j        dd           d S )Nr   r   r  r  r  ra  rb  r   r   r*   r    r	  r+   r   r  r   r   r   r  s      r   r  z!TestEccModule_P384.test_constructG      m'Q///))***WV_%6777m'58UXNNN**+++UW--- 	Fa((((K1----LA......r   c                    t          dd          }t          t          d         j        t          d         j                  } | j        t
          t          j        fddi|  | j        t
          t          j        fddd| d S )	Nr  r.  r  r   r   r   r  r  r  r  s      r   r  z*TestEccModule_P384.test_negative_constructW  r  r   Nr  r   r   r   r  r  :  F        	) 	) 	)/ / / S S S S Sr   r  c                        e Zd Zd Zd Zd ZdS )TestEccModule_P521c                 d   t           d         }t          j        d          }|                     |                                           |                     |j        t          |j        |j	        d          |j
        z             t          j        d           t          j        d           d S )Nr   rt  r   ru  rv  r  r  s      r   r  z TestEccModule_P521.test_generatea  r  r   c                 D   t           d         }t          j        dd          }|                     |                                           |                     |j        t           d         j                   t          j        d|j        |j	                  }| 
                    |                                           |                     |j        |j                   t          j        dd           t          j        dd           t          j        dd           d S )Nr   rt  r  r  r  ru  rv  r  r  s      r   r  z!TestEccModule_P521.test_constructl  r  r   c                    t          dd          }t          t          d         j        t          d         j                  } | j        t
          t          j        fddi|  | j        t
          t          j        fddd| d S )	Nr  r.  r  r   r   rt  r  r  r  r  s      r   r  z*TestEccModule_P521.test_negative_construct|  r  r   Nr  r   r   r   r  r  _  r  r   r  c                    g }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t
                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                    z  }|t          t                     z  }|t          t"                    z  }|t          t$                    z  }|t          t&                    z  }|t          t(                    z  }|t          t*                    z  }|S rA   )r   r   r/   r|   r   r   r   r   r   r   r   r   r   rA  rP  r_  rr  r  r  r  r  r  )configtestss     r   	get_testsr    s   E	_\***E	_3444E	_3444E	_3444E	_3444E	_3444E	_2333E	_2333E	_2333E	_2333E	_2333E	__---E	__---E	__---E	__---E	__---E	_/000E	_/000E	_/000E	_/000E	_/000ELr   __main__c                  B    t          j        t                                S rA   )unittest	TestSuiter  r   r   r   rh   rh     s    H&y{{33 r   suite)defaultTest)1r  binasciir   Cryptodome.SelfTest.st_commonr   Cryptodome.SelfTest.loaderr   Cryptodome.PublicKeyr   Cryptodome.PublicKey.ECCr   r   r	   Cryptodome.Math.Numbersr
   TestCaser   r/   r|   r   r   r   r   tv_paitvr   rS   rT   r   setattrcountr   r   r   r   r   rA  rP  r_  rr  r  r  r  r  r  r  r   r  mainr   r   r   <module>r     s!  >        9 9 9 9 9 9 8 8 8 8 8 8 $ $ $ $ $ $ > > > > > > > > > > + + + + + +A A A A A8$ A A ABL: L: L: L: L:X. L: L: L:^L: L: L: L: L:X. L: L: L:^J: J: J: J: J:X. J: J: J:ZC: C: C: C: C:X. C: C: C:LD: D: D: D: D:X. D: D: D:N2 2 2 2 2H- 2 2 2 
	/4<**....0 0
1 
1 
7
 57   C CB dbdbd & & & & G!9rx#7BBBB2 2 2 2 2H- 2 2 2 
	/4<**....0 0
1 
1 
7
 57   C CB dbdbd & & & & G!9rx#7BBBB2 2 2 2 2H- 2 2 2 
	/4<**....0 0
1 
1 
7
 57   C CB dbdbd & & & & G!9rx#7BBBB2 2 2 2 2H- 2 2 2 
	/4<**....0 0
1 
1 
7
 57   C CB dbdbd & & & & G!9rx#7BBBB2 2 2 2 2H- 2 2 2 
	/4<**....0 0
1 
1 
7
 57   C CB dbdbd & & & & G!9rx#7BBBB@? @? @? @? @?h' @? @? @?F@? @? @? @? @?h' @? @? @?FB? B? B? B? B?h' B? B? B?JD? D? D? D? D?h' D? D? D?ND? D? D? D? D?h' D? D? D?N$S $S $S $S $S* $S $S $SN$S $S $S $S $S* $S $S $SN#S #S #S #S #S* #S #S #SL"S "S "S "S "S* "S "S "SJ"S "S "S "S "S* "S "S "SJ     4 z33EHMg&&&&&& r   