
    ,hn              	          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      xs g ZeD ]>  Zej2                  ej4                  ej6                  fdZ eedej<                  z  e       @  G d d e j                        Z edd!d"d# d$ d% d      xs g ZeD ]>  Zej2                  ej4                  ej6                  fd&Z eedej<                  z  e       @  G d' d(e j                        Z  edd)d*d+ d, d- d      xs g ZeD ]>  Zej2                  ej4                  ej6                  fd.Z ee dej<                  z  e       @  G d/ d0e j                        Z! edd1d2d3 d4 d5 d      xs g ZeD ]>  Zej2                  ej4                  ej6                  fd6Z ee!dej<                  z  e       @  G d7 d8e j                        Z" edd9d:d; d< d= d      xs g ZeD ]>  Zej2                  ej4                  ej6                  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 j`                  dVW       yy)X    N)	unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integerc                       e Zd Zd Zd Zy)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      }| j                  | |       k(         | j                  | |       k7         y )NP-256curveP-384znot on the same curvec                       e Zd Zy)+TestEccPoint.test_mix.<locals>.OtherKeyTypeN)__name__
__module____qualname__     i/var/www/html/Resume-Scraper/venv/lib/python3.12/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_mixzTestEccPoint.test_mix-   s    \\(//\\(//	5G 	5*c!f444	5	5"HB 	5*c!f444	5	 	 	|~-.ln,-s0   A	 		A+A&&A+/A6 6	B?BBc                 l    t        j                  dddd      }| j                  t        |      d       y )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   s9    ]]j#p#qs 	b  $@  	Ar   N)r   r   r   r%   r-   r   r   r   r   r   +   s    ..Ar   r   c                   x    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y)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                 P    | j                  | j                  j                  d       y )N
NIST P-192r+   pointSr   r!   s    r   test_curve_attributez+TestEccPoint_NIST_P192.test_curve_attributeY       **L9r   c                     t        dd      }|j                  | j                         | j                  || j                         y Nr   r   setr4   r+   r!   pointWs     r   test_setzTestEccPoint_NIST_P192.test_set\   1    !Q

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

4;;-DKK5r   c                     | j                    }| j                   |z   }| j                  || j                   j                                y rA   r4   r+   point_at_infinityr!   negSsums      r   test_negatez"TestEccPoint_NIST_P192.test_negateh   8    |kkD dkk;;=>r   c                    d}d}| j                   | j                  z   }| j                  |j                  |       | j                  |j                  |       |j                         }| j                   |z   }| j                  || j                          || j                   z   }| j                  || j                          ||z   }| j                  ||       y 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                         }|| j                  z  }| j                  |j                  |       | j                  |j
                  |       |j                         }| j                   j                         }||z  }| j                  || j                          |j                         }|| j                   z  }| j                  || j                          |j                         }||z  }| j                  ||       y 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                  |       | j                  |j
                  |       | j                   j                         }|j                         }|j                          | j                  ||       | j                   j                         }||z  }| j                  |j                  |       | j                  |j
                  |       y )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+ kk++-% !!#&7+7+r   c                 v    d}d}d} j                   |z  } j                  |j                  |        j                  |j                  |        j                   j	                         } j                   dz  } j                  ||        j                  t         fd       | j                   z  } j                  |j                  |        j                  |j                  |       t        |       j                   z  } j                  |j                  |        j                  |j                  |       y )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>       dkkB.> 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+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                     d}d}d}d}| j                   |z  | j                  |z  z   }| j                  |j                  |       | j                  |j                  |       y )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   sX    >>DDq4;;?27+7+r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )N      r+   r4   size_in_bitssize_in_bytesr5   s    r   
test_sizesz!TestEccPoint_NIST_P192.test_sizes   <    113S9224b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_    ~BBF
 BBF
:.
6?
&,&4,*,4,:r   r/   c                   x    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y)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                 P    | j                  | j                  j                  d       y )N
NIST P-224r3   r5   s    r   r6   z+TestEccPoint_NIST_P224.test_curve_attribute   r7   r   c                     t        dd      }|j                  | j                         | j                  || j                         y r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P224.test_set   r?   r   c                 *   | j                   j                         }| j                  || j                          |j                  | j                         | j                  || j                         | j                  | j                   | j                         y rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P224.test_copy   rG   r   c                     | j                    }| j                   |z   }| j                  || j                   j                                y rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P224.test_negate   rO   r   c                    d}d}| j                   | j                  z   }| j                  |j                  |       | j                  |j                  |       |j                         }| j                   |z   }| j                  || j                          || j                   z   }| j                  || j                          ||z   }| j                  ||       y 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                         }|| j                  z  }| j                  |j                  |       | j                  |j
                  |       |j                         }| j                   j                         }||z  }| j                  || j                          |j                         }|| j                   z  }| j                  || j                          |j                         }||z  }| j                  ||       y 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                  |       | j                  |j
                  |       | j                   j                         }|j                         }|j                          | j                  ||       | j                   j                         }||z  }| j                  |j                  |       | j                  |j
                  |       y )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+ kk++-% !!#&7+7+r   c                 v    d}d}d} j                   |z  } j                  |j                  |        j                  |j                  |        j                   j	                         } j                   dz  } j                  ||        j                  t         fd       | j                   z  } j                  |j                  |        j                  |j                  |       t        |       j                   z  } j                  |j                  |        j                  |j                  |       y )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+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                     d}d}d}d}| j                   |z  | j                  |z  z   }| j                  |j                  |       | j                  |j                  |       y )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[  sX    FFLLq4;;?27+7+r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )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_    ~JJF
 JJF
:.
6?
&,&4,*,4,:r   r|   c                   p    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y)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                 P    | j                  | j                  j                  d       y )N
NIST P-256r3   r5   s    r   r6   z+TestEccPoint_NIST_P256.test_curve_attributeu  r7   r   c                     t        dd      }|j                  | j                         | j                  || j                         y r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P256.test_setx  r?   r   c                 *   | j                   j                         }| j                  || j                          |j                  | j                         | j                  || j                         | j                  | j                   | j                         y rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P256.test_copy}  rG   r   c                     | j                    }| j                   |z   }| j                  || j                   j                                y rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P256.test_negate  rO   r   c                    d}d}| j                   | j                  z   }| j                  |j                  |       | j                  |j                  |       |j                         }| j                   |z   }| j                  || j                          || j                   z   }| j                  || j                          ||z   }| j                  ||       y 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                         }|| j                  z  }| j                  |j                  |       | j                  |j
                  |       |j                         }| j                   j                         }||z  }| j                  || j                          |j                         }|| j                   z  }| j                  || j                          |j                         }||z  }| j                  ||       y 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                  |       | j                  |j
                  |       | j                   j                         }|j                         }|j                          | j                  ||       | j                   j                         }||z  }| j                  |j                  |       | j                  |j
                  |       y )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+ kk++-% !!#&7+7+r   c                 v    d}d}d} j                   |z  } j                  |j                  |        j                  |j                  |        j                   j	                         } j                   dz  } j                  ||        j                  t         fd       | j                   z  } j                  |j                  |        j                  |j                  |       t        |       j                   z  } j                  |j                  |        j                  |j                  |       y )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+ kk++-q% 	*&>? T[[7+7+dkk)7+7+r   c                     d}d}d}d}| j                   |z  | j                  |z  z   }| j                  |j                  |       | j                  |j                  |       y )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  sX    NNTTq4;;?27+7+r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )N       ru   r5   s    r   rx   z!TestEccPoint_NIST_P256.test_sizes  ry   r   Nr   r   r   r   r   r   j  s[    ~RRTF RRTF:.
6?
&,&4,*,4,:r   r   c                   t    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y)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                 P    | j                  | j                  j                  d       y )N
NIST P-384r3   r5   s    r   r6   z+TestEccPoint_NIST_P384.test_curve_attribute  r7   r   c                     t        ddd      }|j                  | j                         | j                  || j                         y )Nr   r   r:   r<   s     r   r>   zTestEccPoint_NIST_P384.test_set  s4    !Q'

4;;-r   c                 *   | j                   j                         }| j                  || j                          |j                  | j                         | j                  || j                         | j                  | j                   | j                         y rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P384.test_copy  rG   r   c                     | j                    }| j                   |z   }| j                  || j                   j                                y rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P384.test_negate  rO   r   c                    d}d}| j                   | j                  z   }| j                  |j                  |       | j                  |j                  |       |j                         }| j                   |z   }| j                  || j                          || j                   z   }| j                  || j                          ||z   }| j                  ||       y )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                         }|| j                  z  }| j                  |j                  |       | j                  |j
                  |       |j                         }| j                   j                         }||z  }| j                  || j                          |j                         }|| j                   z  }| j                  || j                          |j                         }||z  }| j                  ||       y r   r\   rU   s        r   _test_inplace_additionz-TestEccPoint_NIST_P384._test_inplace_addition.  r   r   c                    d}d}| j                   j                         }|j                          | j                  |j                  |       | j                  |j
                  |       | j                   j                         }|j                         }|j                          | j                  ||       | j                   j                         }||z  }| j                  |j                  |       | j                  |j
                  |       y )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+ kk++-% !!#&7+7+r   c                 H    d}d}d} j                   |z  } j                  |j                  |        j                  |j                  |        j                   j	                         } j                   dz  } j                  ||        j                  t         fd       y )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+ kk++-q% 	*&>?r   c                     d}d}d}d}| j                   |z  | j                  |z  z   }| j                  |j                  |       | j                  |j                  |       y )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  sX    nnttq4;;?27+7+r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )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`    ~rrF
 rrF
:.
6?
&,&4,*@",:r   r   c                   t    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y)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                 P    | j                  | j                  j                  d       y )N
NIST P-521r3   r5   s    r   r6   z+TestEccPoint_NIST_P521.test_curve_attribute  r7   r   c                     t        dd      }|j                  | j                         | j                  || j                         y r9   r:   r<   s     r   r>   zTestEccPoint_NIST_P521.test_set  r?   r   c                 *   | j                   j                         }| j                  || j                          |j                  | j                         | j                  || j                         | j                  | j                   | j                         y rA   rB   r<   s     r   rF   z TestEccPoint_NIST_P521.test_copy  rG   r   c                     | j                    }| j                   |z   }| j                  || j                   j                                y rA   rI   rK   s      r   rN   z"TestEccPoint_NIST_P521.test_negate  rO   r   c                    d}d}| j                   | j                  z   }| j                  |j                  |       | j                  |j                  |       |j                         }| j                   |z   }| j                  || j                          || j                   z   }| j                  || j                          ||z   }| j                  ||       y 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                         }|| j                  z  }| j                  |j                  |       | j                  |j
                  |       |j                         }| j                   j                         }||z  }| j                  || j                          |j                         }|| j                   z  }| j                  || j                          |j                         }||z  }| j                  ||       y 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                  |       | j                  |j
                  |       | j                   j                         }|j                         }|j                          | j                  ||       | j                   j                         }||z  }| j                  |j                  |       | j                  |j
                  |       y )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+ kk++-% !!#&7+7+r   c                 H    d}d}d} j                   |z  } j                  |j                  |        j                  |j                  |        j                   j	                         } j                   dz  } j                  ||        j                  t         fd       y )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+ kk++-q% 	*&>?r   c                     d}d}d}d}| j                   |z  }|| j                  |z  z  }| j                  |j                  |       | j                  |j                  |       y )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  si     W W ] ]q$++/!7+7+r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )Ni	  B   ru   r5   s    r   rx   z!TestEccPoint_NIST_P521.test_sizes  ry   r   Nr   r   r   r   r   r   }  sl    ~ [ [F
  [ [F
:.
6?
&,&4,*@"	,:r   r   c                   V    e Zd ZdZed   Z eej                  ej                  d      Z	y)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     $    CFOEehh&1Fr   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F r   c                     t        | d      S N   r   rS   s    r   rh   rh         C2J r   c                     t        | d      S r   r   rT   s    r   rh   rh     r   r   )r   rS   rT   c                     | j                   |z  }| j                  |j                  |       | j                  |j                  |       y rA   r   r+   rS   rT   r!   scalarrS   rT   results        r   new_testr     8    v%1%1%r   ztest_%dc                   V    e Zd ZdZed   Z eej                  ej                  d      Z	y)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                  |       | j                  |j                  |       y rA   r   r   s        r   r   r   '  r   r   c                   V    e Zd ZdZed   Z eej                  ej                  d      Z	y)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                  |       | j                  |j                  |       y rA   r   r   s        r   r   r   <  r   r   c                   V    e Zd ZdZed   Z eej                  ej                  d      Z	y)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                  |       | j                  |j                  |       y rA   r   r   s        r   r   r   Q  r   r   c                   V    e Zd ZdZed   Z eej                  ej                  d      Z	y)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                  |       | j                  |j                  |       y rA   r   r   s        r   r   r   f  r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestEccKey_P192c                    t        dd      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  j                  t        d   j                         | j                  |j
                  j                  t        d   j                         t        t        d   j                  t        d   j                  d      }t        dd|      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  |       t        dd      }t        dd      }y )	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      7a(")*wv'9'9:wv'9'9:++WV_-?-?wO7au5")*U+ ;!,<1-r   c                     t        t        d   j                  t        d   j                  d      }t	        d|      }| j                  |j                                | j                  |j                  |       y )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  Y    ++WV_-?-?wO7%0*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr     r  r	   
public_keyr   r	  r+   r   r!   priv_keypub_keys      r   test_public_key_derivedz'TestEccKey_P192.test_public_key_derived  K    1-%%',,./'..9r   c                 2    | j                  t        d        y )Nc                      t        dd      S )NzP-193r  r  r	   r   r   r   rh   z4TestEccKey_P192.test_invalid_curve.<locals>.<lambda>      f7a.H r   rk   r   r5   s    r   test_invalid_curvez"TestEccKey_P192.test_invalid_curve      *&HIr   c                 `    | j                  t        d        | j                  t        d        y )Nc                      t        dd      S )Nr  r   r  r  r   r   r   rh   z0TestEccKey_P192.test_invalid_d.<locals>.<lambda>  r   r   c                  >    t        dt        d   j                        S )Nr  r0   r  r	   r   orderr   r   r   rh   z0TestEccKey_P192.test_invalid_d.<locals>.<lambda>      f77>v7L7L/N r   r!  r5   s    r   test_invalid_dzTestEccKey_P192.test_invalid_d  *    *&HI* 'N 	Or   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )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      mmaw7}}q8}}q8 ++-
"--/"--/l3K6[1J4J4r   c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )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  T    ll(*DI6L1)//>r   N
r   r   r   r  r  r  r"  r*  r6  r<  r   r   r   r   r   m  '    .$,:JO
5$?r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestEccKey_P224c                    t        dd      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  j                  t        d   j                         | j                  |j
                  j                  t        d   j                         t        t        d   j                  t        d   j                  d      }t        dd|      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  |       t        dd      }t        dd      }y )	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                  |j                                | j                  |j                  |       y )Nr}   rC  r   r  r  r  s      r   r  zTestEccKey_P224.test_public_key  r  r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )NrC  r  r  r  r  s      r   r  z'TestEccKey_P224.test_public_key_derived  r  r   c                 2    | j                  t        d        y )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                 `    | j                  t        d        | j                  t        d        y )Nc                      t        dd      S )NrC  r   r  r  r   r   r   rh   z0TestEccKey_P224.test_invalid_d.<locals>.<lambda>  r   r   c                  >    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      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )Nr  rC  r-  r.  r/  r0  s          r   r6  zTestEccKey_P224.test_equality  r7  r   c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )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                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestEccKey_P256c                    t        dd      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  j                  t        d   j                         | j                  |j
                  j                  t        d   j                         t        t        d   j                  t        d   j                        }t        dd|      }| j                  |j                  d       | j                  |j	                                | j                  |j
                  |       t        dd      }t        dd      }| j                  t        t         dd	       y )
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  s   7a(")*wv'9'9:wv'9'9:++WV_-?-?@7au5")*U+ ;!,<1- 	*fFIr   c                     t        t        d   j                  t        d   j                        }t	        d|      }| j                  |j                                | j                  |j                  |       y )Nr   r   r  r  r  s      r   r  zTestEccKey_P256.test_public_key
  sW    ++WV_-?-?@7%0*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr   r  r  r  r  s      r   r  z'TestEccKey_P256.test_public_key_derived  r  r   c                 2    | j                  t        d        y )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                 `    | j                  t        d        | j                  t        d        y )Nc                      t        dd      S )Nr   r   r  r  r   r   r   rh   z0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  r   r   c                  >    t        dt        d   j                        S )Nr   r   r  r'  r   r   r   rh   z0TestEccKey_P256.test_invalid_d.<locals>.<lambda>  s    f7gfoF[F[.\ r   r!  r5   s    r   r*  zTestEccKey_P256.test_invalid_d  s$    *&HI*&\]r   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )Nr  r   r-  r.  r/  r0  s          r   r6  zTestEccKey_P256.test_equality  r7  r   c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )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^5$?r   rP  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestEccKey_P384c                    t         d   }t        dd      }| j                  |j                  d       | j	                  |j                                | j                  |j                  j                  |j                         | j                  |j                  j                  |j                         t        |j                  |j                  d      }t        dd|      }| j                  |j                  d       | j	                  |j                                | j                  |j                  |       t        dd      }t        dd      }t        dd      }y )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(")*tww/tww/$''627au5")*U+ 6Q';!,<1-r   c                     t         d   }t        |j                  |j                  d      }t	        d|      }| j                  |j                                | j                  |j                  |       y )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  V    v$''627%0*+U+r   c                     t        dd      }|j                         }| j                  |j                                | j	                  |j
                  |j
                         y )Nr   r  r  r  r  s      r   r  z'TestEccKey_P384.test_public_key_derivedW  r  r   c                 2    | j                  t        d        y )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                 `    | j                  t        d        | j                  t        d        y )Nc                      t        dd      S )Nr   r   r  r  r   r   r   rh   z0TestEccKey_P384.test_invalid_d.<locals>.<lambda>b  r   r   c                  >    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      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )Nr  r   r-  r.  r/  r0  s          r   r6  zTestEccKey_P384.test_equalityf  r7  r   c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )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O
5$?r   r_  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestEccKey_P521c                    t         d   }t        dd      }| j                  |j                  d       | j	                  |j                                | j                  |j                  j                  |j                         | j                  |j                  j                  |j                         t        |j                  |j                  d      }t        dd|      }| j                  |j                  d       | j	                  |j                                | j                  |j                  |       t        dd      }t        dd      }t        dd      }y )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                  |j                                | j                  |j                  |       y )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                  |j                                | j	                  |j
                  |j
                         y )Nrt  r  r  r  r  s      r   r  z'TestEccKey_P521.test_public_key_derived  r  r   c                 2    | j                  t        d        y )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                 `    | j                  t        d        | j                  t        d        y )Nc                      t        dd      S )Nrt  r   r  r  r   r   r   rh   z0TestEccKey_P521.test_invalid_d.<locals>.<lambda>  r   r   c                  >    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      }|j                         }|j                         }|j                         }| j                  ||       | j	                  ||       | j                  ||       | j	                  ||       | j	                  ||       y )Nr  rt  r-  r.  r/  r0  s          r   r6  zTestEccKey_P521.test_equality  r7  r   c                     t        j                  d      }| j                  dt        |             | j	                  |j
                  d       | j	                  |j                         j
                  d       y )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y)TestEccModule_P192c                 t   t        j                  d      }| j                  |j                                | j	                  |j
                  t        t        d   j                  t        d   j                  d      |j                  z  d       t        j                  d       t        j                  d       y )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      ll))*Xgfo.@.@.5fo.@.@.5&79<&? /5	6 	;'<(r   c                 `   t        j                  dd      }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dt        d   j                  t        d   j                        }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dd       t        j                  dd       t        j                  dd       y )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      mm'Q/)*WV_%6%67mm'76?3E3E$+FO$6$68*+WV_%6%6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| y )	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  p    R+gfo00'&/:L:LM*cmmL7LeL*cmmR7aR6Rr   Nr   r   r   r  r  r  r   r   r   r  r        )/ Sr   r  c                       e Zd Zd Zd Zd Zy)TestEccModule_P224c                 t   t        j                  d      }| j                  |j                                | j	                  |j
                  t        t        d   j                  t        d   j                  d      |j                  z  d       t        j                  d       t        j                  d       y )NrC  r   r}   rD  rE  r  r;  s     r   r  z TestEccModule_P224.test_generate  r  r   c                 `   t        j                  dd      }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dt        d   j                  t        d   j                        }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dd       t        j                  dd       t        j                  dd       y )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| y )	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y)TestEccModule_P256c                 r   t        j                  d      }| j                  |j                                | j	                  |j
                  t        t        d   j                  t        d   j                        |j                  z  d       t        j                  d       t        j                  d       y )Nr   r   r   rR  rS  r  r;  s     r   r  z TestEccModule_P256.test_generate  s    ll))*Xgfo.@.@.5fo.@.@&BDGEE&J.4	6
 	;'<(r   c                 `   t        j                  dd      }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dt        d   j                  t        d   j                        }| j                  |j                                | j	                  |j
                  t        d   j                         t        j                  dd       t        j                  dd       t        j                  dd       y )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| y )	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    s    
)/ Sr   r  c                       e Zd Zd Zd Zd Zy)TestEccModule_P384c                 h   t         d   }t        j                  d      }| j                  |j	                                | j                  |j                  t        |j                  |j                  d      |j                  z         t        j                  d       t        j                  d       y )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<  t    ll))*Xehh&%ICEE%QR 	;'<(r   c                 H   t         d   }t        j                  dd      }| j                  |j	                                | j                  |j                  t         d   j                         t        j                  d|j                  |j                        }| j                  |j	                                | j                  |j                  |j                         t        j                  dd       t        j                  dd       t        j                  dd       y )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      mm'Q/)*WV_%6%67mm'588UXXN*+UWW- 	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| y )	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  :      	)/ Sr   r  c                       e Zd Zd Zd Zd Zy)TestEccModule_P521c                 h   t         d   }t        j                  d      }| j                  |j	                                | j                  |j                  t        |j                  |j                  d      |j                  z         t        j                  d       t        j                  d       y )Nr   rt  r   ru  rv  r  r  s      r   r  z TestEccModule_P521.test_generatea  r  r   c                 H   t         d   }t        j                  dd      }| j                  |j	                                | j                  |j                  t         d   j                         t        j                  d|j                  |j                        }| j                  |j	                                | j                  |j                  |j                         t        j                  dd       t        j                  dd       t        j                  dd       y )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| y )	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    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                  <    t        j                  t                     S rA   )unittest	TestSuiter  r   r   r   rh   rh     s    H&&y{3 r   suite)defaultTest)1r  binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.PublicKeyr   Crypto.PublicKey.ECCr   r   r	   Crypto.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     s4  >   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   CB ddbddbdd & !9rxx#7BC2H-- 2 
/4<*..0
1 
7
 57   CB ddbddbdd & !9rxx#7BC2H-- 2 
/4<*..0
1 
7
 57   CB ddbddbdd & !9rxx#7BC2H-- 2 
/4<*..0
1 
7
 57   CB ddbddbdd & !9rxx#7BC2H-- 2 
/4<*..0
1 
7
 57   CB ddbddbdd & !9rxx#7BC@?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HMMg& r   