
    sIg              
       "   d dl Z 	 d dlZd dlmZmZ d dlmZ	 	 d dlm
Z
 dZ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 jF                  jI                  d e% e"ed            D  cg c]
  \  } }e| |f c}}  e&d      D cg c]  }djO                  |       c}      d        Z( G d  d!ejR                        Z* G d" d#ejR                        Z+ G d$ d%ejR                        Z,y# e$ r d dlZY jw xY w# e$ r dZY aw xY wc c}} w c c}w )'    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                 R    t        | t              }t        | z  }||z  t        k(  sJ y N)r   rp192)multipleinv_mp1s      U/var/www/html/answerous/venv/lib/python3.12/site-packages/ecdsa/test_ellipticcurve.pytest_p192_mult_testsr#   .   s+     !$E	B:    c              #   P   K   t         }d}||k  r| || z   }|dz  }||k  ry y w)Nr   r   )r	   )pointnretis       r"   add_n_timesr*   7   s7     
C	A
q&	Ek	Q q&s   !&&zp, m, check   	   zg_23 test with mult {0})idsc                     | |z  |k(  sJ y r    )pmchecks      r"   test_add_and_mult_equivalencer3   A   s     q5E>>r$   c                   F    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zy	)
	TestCurvec                 (    t        ddd      | _        y Nr   r   )r   c_23clss    r"   
setUpClasszTestCurve.setUpClassK   s    2q!$r$   c                 R    | j                  | j                  t        ddd             y r7   )assertEqualr8   r   selfs    r"   test_equality_curveszTestCurve.test_equality_curvesO   s    GB1$56r$   c                 f    t        t        dt              }| j                  | j                  |       y )Nr   )r   r0   bassertNotEqualr8   )r?   c192s     r"   test_inequality_curvesz TestCurve.test_inequality_curvesR   s$    q"a DIIt,r$   c                      | j                   d i y r   r8   r>   s    r"   ,test_usability_in_a_hashed_collection_curvesz6TestCurve.test_usability_in_a_hashed_collection_curvesV       	Dr$   c                 .    t        | j                         y r   hashr8   r>   s    r"   test_hashability_curvesz!TestCurve.test_hashability_curvesY       TYYr$   c           
         t        ddd      t        ddd      t        ddd      }}}t        ddd      t        ddd      | j                  }}}| j                  t        t	        t        |||f            d       | j                  t        t	        t        |||f            d       | j                  t        d i|d i       | j                  ||d i       y )N   r   r   r      )r   r8   r=   lensetassertDictEqualassertIn)r?   ne1ne2ne3eq1eq2eq3s          r"   test_conflation_curvesz TestCurve.test_conflation_curves\   s    Aq)72q!+<gb!Q>O#SAq)72q!+<dii#SS$S#!678!<S$S#!678!<dD\C;7cC;'r$   c                 N    | j                  t        | j                        d       y )NzCurveFp(p=23, a=1, b=1)r=   strr8   r>   s    r"   test___str__zTestCurve.test___str__d   s    TYY)BCr$   c                 V    t        dddd      }| j                  t        |      d       y )Nr   r   rQ   zCurveFp(p=23, a=1, b=1, h=4))r   r=   r_   r?   cs     r"   test___str___with_cofactorz$TestCurve.test___str___with_cofactorg   s'    B1a Q!?@r$   N)__name__
__module____qualname__classmethodr;   r@   rE   rH   rM   r\   r`   rd   r/   r$   r"   r5   r5   J   s9    % %7-(DAr$   r5   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestCurveEdTwc                 (    t        ddd      | _        y r7   )r   r8   r9   s    r"   r;   zTestCurveEdTw.setUpClassm   s    RA&r$   c                 N    | j                  t        | j                        d       y )NzCurveEdTw(p=23, a=1, d=1)r^   r>   s    r"   r`   zTestCurveEdTw.test___str__q   s    TYY)DEr$   c                 V    t        dddd      }| j                  t        |      d       y )Nr   r   rQ   zCurveEdTw(p=23, a=1, d=1, h=4))r   r=   r_   rb   s     r"   rd   z(TestCurveEdTw.test___str___with_cofactort   s'    b!Q"Q!ABr$   c                      | j                   d i y r   rG   r>   s    r"   rH   z:TestCurveEdTw.test_usability_in_a_hashed_collection_curvesx   rI   r$   c                 .    t        | j                         y r   rK   r>   s    r"   rM   z%TestCurveEdTw.test_hashability_curves{   rN   r$   N)	re   rf   rg   rh   r;   r`   rd   rH   rM   r/   r$   r"   rj   rj   l   s*    ' 'FCr$   rj   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y)	TestPointc                     t        ddd      | _        t        | j                  ddd      | _        d}d}d}d}d	}t        |d
|      | _        t        | j                  |||      | _        y )Nr   r   r   r   r   r   r   r   r   r   )r   r8   r
   g_23rD   r   )r:   r0   r   rB   GxGys         r"   r;   zTestPoint.setUpClass   si    2q!$2q!,FF ???1b!$2r1-r$   c                    d}|| j                   z  }| j                  |j                         d       d}|| j                   z  }| j                  |j                         d       | j                  |j                         d       d}d}|| j                   z  ||z  z   }| j                  |j                         d       | j                  |j                         d       y )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   r=   xy)r?   dQkRu1u2temps           r"   	test_p192zTestPoint.test_p192   s     F		MCCEE	
 G		MCCEE	
 	CCEE	
 HGDII~Q&FFHH	
 	FFHH	
r$   c                    t         }|j                         }| j                  ||       | j                  |j                         |j                                | j                  |j	                         |j	                                y r   )r	   doubler=   rw   rx   )r?   r!   p3s      r"   test_double_infinityzTestPoint.test_double_infinity   sZ    YY[R ((r$   c                     d\  }}}}t        | j                  ||      }|j                         }| j                  |j	                         |       | j                  |j                         |       y )N)   
   r      )r
   r8   r   r=   rw   rx   )r?   x1y1x3y3r!   r   s          r"   test_doublezTestPoint.test_double   sX    'BB499b"%YY[$$r$   c                     d\  }}}}}t        | j                  ||      }||z  }| j                  |j                         |       | j                  |j	                         |       y )N)r   r   r   r   r   r
   r8   r=   rw   rx   )r?   r   r   r1   r   r   r!   r   s           r"   test_multiplyzTestPoint.test_multiply   sY    -B2r499b"%!V$$r$   c                     d\  }}}}}}t        | j                  ||      }t        | j                  ||      }||z   }	| j                  |	j                         |       | j                  |	j	                         |       y):We expect that on curve c, (x1,y1) + (x2, y2 ) = (x3, y3).)r   r   r,   r         Nr   
r?   r   r   x2y2r   r   r!   p2r   s
             r"   test_addzTestPoint.test_add   o     "7BBB499b"%499b"%"W$$r$   c                     d\  }}}}}}t        | j                  ||      }t        | j                  ||      }||z   }	| j                  |	j                         |       | j                  |	j	                         |       y)r   )r   r   r   r   r   r   Nr   r   s
             r"   test_add_as_doublezTestPoint.test_add_as_double   r   r$   c           	      h    | j                  | j                  t        | j                  ddd             y )Nr   r   )r=   rs   r
   r8   r>   s    r"   test_equality_pointszTestPoint.test_equality_points   s%    E$))RA$>?r$   c                 r    t        ddd      }t        |ddd      }| j                  | j                  |       y Nd   r   )r   r
   rC   rs   )r?   rc   r0   s      r"   test_inequality_pointsz TestPoint.test_inequality_points   s4    CS!!S#s#DIIq)r$   c                 V    t        ddd      }| j                  | j                  |       y r   )r   rC   rs   rb   s     r"   !test_inequality_points_diff_typesz+TestPoint.test_inequality_points_diff_types   s$    CS!DIIq)r$   c                     t        | j                  dd      }| j                  |t        j                  | j                  |j	                                      y Nr   r   )r
   r8   r=   
from_bytesto_bytesr?   r0   s     r"   test_to_bytes_from_bytesz"TestPoint.test_to_bytes_from_bytes   s;    $))Q#E,,TYY

EFr$   c                 f    t        | j                  dd      }| j                  t        || z          y r   )r
   r8   r=   r	   r   s     r"   test_add_to_neg_selfzTestPoint.test_add_to_neg_self   s*    $))Q#18,r$   c                 d    t        | j                  dd      }| j                  ||t        z          y r   )r
   r8   assertIsr	   r   s     r"   test_add_to_infinityzTestPoint.test_add_to_infinity   s&    $))Q#aX&r$   c                 >    | j                  t        t        dz         y )Nr   )r   r	   r>   s    r"   test_mul_infinity_by_scalarz%TestPoint.test_mul_infinity_by_scalar   s    h2.r$   c                 d    t        | j                  dd      }| j                  |dz  | dz         y )Nr   r      )r
   r8   r=   r   s     r"   test_mul_by_negativezTestPoint.test_mul_by_negative   s.    $))Q#R1"*r$   c                 B    | j                  t        t              d       y )Ninfinity)r=   r_   r	   r>   s    r"   test_str_infinityzTestPoint.test_str_infinity   s    X
3r$   c                 h    t        | j                  dd      }| j                  t        |      d       y )Nr   r   z(3,10))r
   r8   r=   r_   r   s     r"   test_str_pointzTestPoint.test_str_point   s(    $))Q#Q*r$   N)re   rf   rg   rh   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r$   r"   rq   rq      sf    . .
8)%%%%@*
*G
-
'
/+
4+r$   rq   r/   )-pytest	unittest2unittestImportError
hypothesisr   r   hypothesis.strategies
strategiesstr   
HC_PRESENTnumbertheoryr   ellipticcurver   r	   r
   r   HYP_SETTINGStoo_slowr0   r   rB   rt   ru   rD   r   r8   rs   dictHYP_SLOW_SETTINGSintegersr#   r*   markparametrize	enumeraterangeformatr3   TestCaser5   rj   rq   )r'   expr)   s   000r"   <module>r      s     ' "&J & > > -8-A-A,BL()#L ?> 777q"aT2r1r1aT2q! & $% . ! 
{r{{Q!a%01 2  "+Ka,@"AB3dAs^B6;Ah?	"	)	)!	,?  

A!! ADH%% &A+!! A+u    Jj C?s.   E( E8 &FF(	E54E58FF