
    Tf              
          d dl Z 	 d dlZn# e$ r d dlZY nw xY wd dlmZmZ d dlmZ	 	 d dlm
Z
 dZn# e$ r dZY nw xY wddlmZ ddlmZmZmZmZ i Zere
j        ged	<   d
ed<   dZdZdZdZdZ eede          Z eeeee          Z eddd          Z eeddd          Z ee          Zded<    ed'i e e e	j         dedz
                      d                         Z!d Z"e j#        $                    dd  e% e"ed                    D             d  e&d          D                       d              Z' G d! d"ej(                  Z) G d# d$ej(                  Z* G d% d&ej(                  Z+dS )(    N)givensettings)HealthCheckTF   )inverse_mod)CurveFpINFINITYPoint	CurveEdTwsuppress_health_checki  deadline      1(i&^#a;   9{uDjSg9g(B   +' 1t:_|v!a:@m   H<^W]dZ{cxW\Iq             max_examples)	min_value	max_valuec                 d    t          | t                    }t          | z  }||z  t          k    sJ d S N)r   rp192)multipleinv_mp1s      J/var/www/html/env/lib/python3.11/site-packages/ecdsa/test_ellipticcurve.pytest_p192_mult_testsr#   .   s7     !$$E	B:    c              #   T   K   t           }d}||k    r|V  || z   }|dz  }||k    d S d S )Nr   r   )r	   )pointnretis       r"   add_n_timesr*   7   sG      
C	A
q&&			Ek	Q q&&&&&&r$   zp, m, checkc                 (    g | ]\  }}t           ||fS  )g_23).0r'   exps      r"   
<listcomp>r0   C   s"    BBB3dAs^BBBr$      c                 8    g | ]}d                      |          S )zg_23 test with mult {0})format)r.   r)   s     r"   r0   r0   D   s'    ???	"	)	)!	,	,???r$   	   )idsc                     | |z  |k    sJ d S r   r,   )pmchecks      r"   test_add_and_mult_equivalencer:   A   s     q5E>>>>>>r$   c                   N    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	S )
	TestCurvec                 2    t          ddd          | _        d S Nr   r   )r   c_23clss    r"   
setUpClasszTestCurve.setUpClassK   s    2q!$$r$   c                 Z    |                      | j        t          ddd                     d S r>   )assertEqualr?   r   selfs    r"   test_equality_curveszTestCurve.test_equality_curvesO   s,    GB1$5$566666r$   c                 r    t          t          dt                    }|                     | j        |           d S )Nr   )r   r7   bassertNotEqualr?   )rF   c192s     r"   test_inequality_curvesz TestCurve.test_inequality_curvesR   s1    q"a  DIt,,,,,r$   c                     | j         d i d S r   r?   rE   s    r"   ,test_usability_in_a_hashed_collection_curvesz6TestCurve.test_usability_in_a_hashed_collection_curvesV       	Dr$   c                 .    t          | j                   d S r   hashr?   rE   s    r"   test_hashability_curvesz!TestCurve.test_hashability_curvesY       TYr$   c           
         t          ddd          t          ddd          t          ddd          }}}t          ddd          t          ddd          | j        }}}|                     t          t	          t          |||f                    d           |                     t          t	          t          |||f                    d           |                     t          d i|d i           |                     ||d i           d S )N   r   r   r      )r   r?   rD   lensetassertDictEqualassertIn)rF   ne1ne2ne3eq1eq2eq3s          r"   test_conflation_curvesz TestCurve.test_conflation_curves\   s    Aq))72q!+<+<gb!Q>O>O#SAq))72q!+<+<di#SS$S#!67788!<<<S$S#!67788!<<<dD\C;777cC;'''''r$   c                 V    |                      t          | j                  d           d S )NzCurveFp(p=23, a=1, b=1)rD   strr?   rE   s    r"   test___str__zTestCurve.test___str__d   s'    TY)BCCCCCr$   c                 p    t          dddd          }|                     t          |          d           d S )Nr   r   rX   zCurveFp(p=23, a=1, b=1, h=4))r   rD   rf   rF   cs     r"   test___str___with_cofactorz$TestCurve.test___str___with_cofactorg   s8    B1a  Q!?@@@@@r$   N)__name__
__module____qualname__classmethodrB   rG   rL   rO   rT   rc   rg   rk   r,   r$   r"   r<   r<   J   s        % % [%7 7 7- - -    ( ( (D D DA A A A Ar$   r<   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestCurveEdTwc                 2    t          ddd          | _        d S r>   )r   r?   r@   s    r"   rB   zTestCurveEdTw.setUpClassm   s    RA&&r$   c                 V    |                      t          | j                  d           d S )NzCurveEdTw(p=23, a=1, d=1)re   rE   s    r"   rg   zTestCurveEdTw.test___str__q   s'    TY)DEEEEEr$   c                 p    t          dddd          }|                     t          |          d           d S )Nr   r   rX   zCurveEdTw(p=23, a=1, d=1, h=4))r   rD   rf   ri   s     r"   rk   z(TestCurveEdTw.test___str___with_cofactort   s8    b!Q""Q!ABBBBBr$   c                     | j         d i d S r   rN   rE   s    r"   rO   z:TestCurveEdTw.test_usability_in_a_hashed_collection_curvesx   rP   r$   c                 .    t          | j                   d S r   rR   rE   s    r"   rT   z%TestCurveEdTw.test_hashability_curves{   rU   r$   N)	rl   rm   rn   ro   rB   rg   rk   rO   rT   r,   r$   r"   rq   rq   l   so        ' ' ['F F FC C C      r$   rq   c                       e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )	TestPointc                     t          ddd          | _        t          | j        ddd          | _        d}d}d}d}d	}t          |d
|          | _        t          | j        |||          | _        d S )Nr   r   r   r   r   r   r   r   r   r   )r   r?   r
   r-   rK   r   )rA   r7   r   rI   GxGys         r"   rB   zTestPoint.setUpClass   su    2q!$$2q!,,FF ???1b!$$2r1--r$   c                    d}|| j         z  }|                     |                                d           d}|| j         z  }|                     |                                d           |                     |                                d           d}d}|| j         z  ||z  z   }|                     |                                d           |                     |                                d           d S )Nl   uH=.t.#",W}7?jl   Z`uSG;R-]]0sk	+l   N/vZL_~XXw]ol   ~n&DJ,6'1a47b?`l   5XD+8n#w}rO	l   WTY>n+BtC*Yql   !M_JT96wfF[,z=)r   rD   xy)rF   dQkRu1u2temps           r"   	test_p192zTestPoint.test_p192   s    F	MCCEEE	
 	
 	
 G	MCCEEE	
 	
 	
 	CCEEE	
 	
 	
 HGDI~Q&FFHHH	
 	
 	
 	FFHHH	
 	
 	
 	
 	
r$   c                 P   t           }|                                }|                     ||           |                     |                                |                                           |                     |                                |                                           d S r   )r	   doublerD   r}   r~   )rF   r!   p3s      r"   test_double_infinityzTestPoint.test_double_infinity   s|    YY[[R   ((((((((r$   c                    d\  }}}}t          | j        ||          }|                                }|                     |                                |           |                     |                                |           d S )N)   
   r      )r
   r?   r   rD   r}   r~   )rF   x1y1x3y3r!   r   s          r"   test_doublezTestPoint.test_double   sq    'BB49b"%%YY[[$$$$$$$$r$   c                     d\  }}}}}t          | j        ||          }||z  }|                     |                                |           |                     |                                |           d S )N)r   r   r   r   r   r
   r?   rD   r}   r~   )rF   r   r   r8   r   r   r!   r   s           r"   test_multiplyzTestPoint.test_multiply   sp    -B2r49b"%%!V$$$$$$$$r$   c                    d\  }}}}}}t          | j        ||          }t          | j        ||          }||z   }	|                     |	                                |           |                     |	                                |           dS ):We expect that on curve c, (x1,y1) + (x2, y2 ) = (x3, y3).)r   r   r4   r         Nr   
rF   r   r   x2y2r   r   r!   p2r   s
             r"   test_addzTestPoint.test_add        "7BBB49b"%%49b"%%"W$$$$$$$$r$   c                    d\  }}}}}}t          | j        ||          }t          | j        ||          }||z   }	|                     |	                                |           |                     |	                                |           dS )r   )r   r   r   r   r   r   Nr   r   s
             r"   test_add_as_doublezTestPoint.test_add_as_double   r   r$   c           	      f    |                      | j        t          | j        ddd                     d S )Nr   r   )rD   r-   r
   r?   rE   s    r"   test_equality_pointszTestPoint.test_equality_points   s0    E$)RA$>$>?????r$   c                     t          ddd          }t          |ddd          }|                     | j        |           d S Nd   r   )r   r
   rJ   r-   )rF   rj   r7   s      r"   test_inequality_pointsz TestPoint.test_inequality_points   sD    CS!!!S#s##DIq)))))r$   c                 ^    t          ddd          }|                     | j        |           d S r   )r   rJ   r-   ri   s     r"   !test_inequality_points_diff_typesz+TestPoint.test_inequality_points_diff_types   s1    CS!!DIq)))))r$   c                     t          | j        dd          }|                     |t          j        | j        |                                                     d S Nr   r   )r
   r?   rD   
from_bytesto_bytesrF   r7   s     r"   test_to_bytes_from_bytesz"TestPoint.test_to_bytes_from_bytes   sH    $)Q##E,TY

EEFFFFFr$   c                 p    t          | j        dd          }|                     t          || z              d S r   )r
   r?   rD   r	   r   s     r"   test_add_to_neg_selfzTestPoint.test_add_to_neg_self   s7    $)Q##18,,,,,r$   c                 n    t          | j        dd          }|                     ||t          z              d S r   )r
   r?   assertIsr	   r   s     r"   test_add_to_infinityzTestPoint.test_add_to_infinity   s3    $)Q##aX&&&&&r$   c                 L    |                      t          t          dz             d S )Nr   )r   r	   rE   s    r"   test_mul_infinity_by_scalarz%TestPoint.test_mul_infinity_by_scalar   s     h2.....r$   c                 l    t          | j        dd          }|                     |dz  | dz             d S )Nr   r      )r
   r?   rD   r   s     r"   test_mul_by_negativezTestPoint.test_mul_by_negative   s;    $)Q##R1"*****r$   c                 V    |                      t          t                    d           d S )Ninfinity)rD   rf   r	   rE   s    r"   test_str_infinityzTestPoint.test_str_infinity   s$    X
33333r$   c                 x    t          | j        dd          }|                     t          |          d           d S )Nr   r   z(3,10))r
   r?   rD   rf   r   s     r"   test_str_pointzTestPoint.test_str_point   s7    $)Q##Q*****r$   N)rl   rm   rn   ro   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r$   r"   rx   rx      s#       . . [.
 
 
8) ) )% % %% % %% % %% % %@ @ @* * *
* * *G G G
- - -
' ' '
/ / /+ + +
4 4 4+ + + + +r$   rx   r,   ),pytest	unittest2unittestImportError
hypothesisr   r   hypothesis.strategies
strategiesstr   
HC_PRESENTnumbertheoryr   ellipticcurver   r	   r
   r   HYP_SETTINGStoo_slowr7   r   rI   rz   r{   rK   r   r?   r-   dictHYP_SLOW_SETTINGSintegersr#   r*   markparametrize	enumerateranger:   TestCaser<   rq   rx   r,   r$   r"   <module>r      s"           OOOOO & & & & & & & & " " " " " "&&&&&&JJ   JJJ % % % % % % > > > > > > > > > > > >  $-8-A,BL()#L ?> 777wq"auT2r1wr1auT2q! D&& $% . ! 
{r{Q!a%00011  21    BB))KKa,@,@"A"ABBB??eeAhh???   
  
A A A A A! A A AD    H%   &A+ A+ A+ A+ A+! A+ A+ A+ A+ A+s    	2 <<