
    Tfa                        d dl mZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 	 d dlZn# e$ r d dlZY nw xY wd dlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  ddlm!Z! i Z"ej#        dk    rde"d	<    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fedddfedddfedddfedddfedddfed d!dfed"d#dfed$d%dfed&d'dfed(d)dfed*d+dfgZ)ej*        +                    d,e)          d-             Z,e e-d.d/          d0d1d2d3dfe e-d4d/          d5d6d7d8dfe e-d9d/          d:d;d<d=dfe e-d>d/          d?d@dAdBdfe e-dCd/          dDdEdFdGdfe e-dHd/          dIdJdKdLdfe e-dMd/          dNdOdPdQdfe e-dRd/          dSdTdUdVdfe e-dWd/          dXdYdZd[dfe e-d\d/          d]d^d_d`dfe e-dad/          dbdcdddedfe e-dfd/          dgdhdidjdfe e-dkd/          dldmdndodfe e-dpd/          dqdrdsdtdfe e-dud/          dvdwdxdydfgZ.ej*        +                    dze.          d{             Z/ej*        +                    dzd| e.D                       d}             Z0ej1        d~             Z2 e3e"          Z4dej5        v rde4d<   nde4d<    edi e4 e
edddf           e e2                      d                                     Z6d Z7dS )    )print_functionN)givensettingsnoteexample   )Private_key
Public_key	Signaturegenerator_192digest_integerellipticcurvepoint_is_validgenerator_224generator_256generator_384generator_521generator_secp256k1	curve_192InvalidPointErrorcurve_112r2generator_112r2int_to_string)Point)      i  deadlinec                   R    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )TestP192FromX9_62zCheck test vectors from X9.62c                 `   d| _         | j         t          z  | _        d| _        | j        t          z  | _        d| _        t          t          t          | j         z            | _        t          | j        | j                   | _	        | j	        
                    | j        | j                  | _        d S )Nl   uH=.t.#",W}7?jl   N/vZL_~XXw]ol   X9	BWGZ@G6|2)dr   QkRmsgr
   pubkr	   privksignsig)clss    B/var/www/html/env/lib/python3.11/site-packages/ecdsa/test_ecdsa.py
setUpClasszTestP192FromX9_62.setUpClass+   s    I%J%Bm]SU-BCC#%00	)..#%00    c                 D    | j                                         dk    sJ d S )Nl   Z`uSG;R-]]0sk	+)r"   xselfs    r+   test_point_multiplicationz+TestP192FromX9_62.test_point_multiplication7   s$    vxxzzOOOOOOOr-   c                     | j                                         dk    sJ | j                                         dk    sJ d S )N   ~n&DJ,6'1a47b?`   5XD+8n#w}rO	)r$   r/   yr0   s    r+   test_point_multiplication_2z-TestP192FromX9_62.test_point_multiplication_2:   s@    vxxzzOOOOOvxxzzOOOOOOOr-   c                     d}d}|t           z  || j        z  z   }|                                dk    sJ |                                dk    sJ d S )Nl   WTY>n+BtC*Yql   !M_JT96wfF[,z=r4   r5   )r   r"   r/   r6   )r1   u1u2temps       r+   test_mult_and_additionz(TestP192FromX9_62.test_mult_and_addition>   s[    GGM!BK/vvxxMMMMMvvxxMMMMMMMr-   c                 V    | j         j        | j         j        }}|dk    sJ |dk    sJ d S )Nr4   l   v;*Y<L u<+=<f)r)   rs)r1   r>   r?   s      r+   test_signaturez TestP192FromX9_62.test_signatureE   s=    xz48:1NNNNNNNNNNNNr-   c                 T    | j                             | j        | j                  sJ d S Nr&   verifiesr%   r)   r0   s    r+   test_verificationz#TestP192FromX9_62.test_verificationJ   s*    y!!$(DH5555555r-   c                 Z    | j                             | j        dz
  | j                  rJ d S Nr   rC   r0   s    r+   test_rejectionz TestP192FromX9_62.test_rejectionM   s.    9%%dhlDH=======r-   c           	      &   t          t          t          j                    t          j                    t          j                    t          j                              | j        j                  }|	                    | j
        | j                  sJ d S rB   )r
   r   r   curver/   r6   orderr&   pointrD   r%   r)   )r1   r&   s     r+   $test_verification_with_regular_pointz6TestP192FromX9_62.test_verification_with_regular_pointP   s{    #%%!!!!#%%	  IO
 
 }}TXtx0000000r-   N)__name__
__module____qualname____doc__classmethodr,   r2   r7   r<   r@   rE   rH   rM    r-   r+   r   r   (   s        ''	1 	1 [	1P P PP P PN N NO O O
6 6 6> > >1 1 1 1 1r-   r   c                   P    e 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 )TestPublicKeyc                     t           }d}d}t          j        |                                ||          }t	          ||          }t	          ||          }|                     ||           d S N   y2HK@ @fj 6bkX   #(z>f^UT!]i&)r   r   r   rJ   r
   assertEqual)r1   genr/   r6   rL   pub_key1pub_key2s          r+   test_equality_public_keysz'TestPublicKey.test_equality_public_keys_   sg    >>#CIIKKA66c5))c5))8,,,,,r-   c                 0   t           }d}d}t          j        |                                ||          }d}d}t          j        |                                ||          }t	          ||          }t	          ||          }	|                     ||	           d S )NrX   rY      ]/C{me@M 3(E   
UCz8"O{q&f0Ar   r   r   rJ   r
   assertNotEqual
r1   r[   x1y1point1x2y2point2r\   r]   s
             r+   test_inequality_public_keyz(TestPublicKey.test_inequality_public_keyh   s    ??$SYY[["b99??$SYY[["b99c6**c6**Hh/////r-   c                 8   t           }d}d}t          j        |                                ||          }d}d}t          j        t	          j                    ||          }t          ||          }t          t          |          }	|                     ||	           d S )NrX   rY   l   fiU1)LD8m
9 l   }s4<(F^zzj\ )r   r   r   rJ   r   r
   rc   rd   s
             r+    test_inequality_different_curvesz.TestPublicKey.test_inequality_different_curvesv   s    ??$SYY[["b99++$_%:%<%<b"EEc6**ov66Hh/////r-   c                     t           }d}d}t          j        |                                ||          }t	          ||          }|                     |d            d S rW   rb   )r1   r[   r/   r6   rL   pub_keys         r+   *test_inequality_public_key_not_implementedz8TestPublicKey.test_inequality_public_key_not_implemented   sX    >>#CIIKKA66S%((GT*****r-   c                    t          j        t          j                    t          j                    t          j                    d          }d}d}t          j        |                                ||          }|                     t                    5 }t          ||           d d d            n# 1 swxY w Y   | 
                    dt          |j                             d S )Nr   rX   rY   zGenerator point must have order)r   PointJacobir   rJ   r/   r6   r   assertRaisesr   r
   assertInstr	exception)r1   r[   r/   r6   rL   es         r+   ,test_public_key_with_generator_without_orderz:TestPublicKey.test_public_key_with_generator_without_order   s    '!!=?#4#4mo6G6G
 
 ?>#CIIKKA66011 	#QsE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	7Q[9I9IJJJJJs   B..B25B2c                 t   d}d}t          j        t          ||d          }|                     t          j        ||                     |                     t                    5 }t          t          |           d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr       k2x7|oq_ r   zGenerator point order)r   rr   r   
assertTruecontains_pointrs   r   r
   r   rt   ru   rv   )r1   r/   r6   rL   rw   s        r+   <test_public_point_on_curve_not_scalar_multiple_of_base_pointzJTestPublicKey.test_public_point_on_curve_not_scalar_multiple_of_base_point   s    *)+q!Q??21a88999011 	/Q...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	-s1;/?/?@@@@@s   #BB	B	c                 `    d}d}|                      t          t          ||                     d S )Nr   rz   )assertFalser   r   )r1   r/   r6   s      r+   :test_point_is_valid_with_not_scalar_multiple_of_base_pointzHTestPublicKey.test_point_is_valid_with_not_scalar_multiple_of_base_point   s2    *A>>?????r-   c                    t          j        t          ddd          }|                     t                    5 }t          t          |           d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nr   r   The public point has x or y
r   rr   r   rs   r   r
   r   rt   ru   rv   r1   ptrw   s      r+   test_invalid_point_x_negativez+TestPublicKey.test_invalid_point_x_negative   s    &y"a;;011 	*Q}b)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	3S5E5EFFFFF   AA Ac                 >   t          j        t          t          j                    dd          }|                     t
                    5 }t          t          |           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S Nr   r   r   r   rr   r   prs   r   r
   r   rt   ru   rv   r   s      r+   test_invalid_point_x_equal_pz*TestPublicKey.test_invalid_point_x_equal_p   s    &y)+--AFF011 	*Q}b)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	3S5E5EFFFFF   A**A.1A.c                    t          j        t          ddd          }|                     t                    5 }t          t          |           d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nr   r   r   r   r   r   s      r+   test_invalid_point_y_negativez+TestPublicKey.test_invalid_point_y_negative   s    &y!R;;011 	*Q}b)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	3S5E5EFFFFFr   c                 >   t          j        t          dt          j                    d          }|                     t
                    5 }t          t          |           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S r   r   r   s      r+   test_invalid_point_y_equal_pz*TestPublicKey.test_invalid_point_y_equal_p   s    &y!Y[]]AFF011 	*Q}b)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	3S5E5EFFFFFr   N)rN   rO   rP   r^   rk   rm   rp   rx   r}   r   r   r   r   r   rS   r-   r+   rU   rU   ^   s        - - -0 0 00 0 0+ + +K K KA A A@ @ @G G GG G GG G GG G G G Gr-   rU   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestPublicKeyVerifiesc                     t           }d}d}t          j        |                                ||          }t	          ||          | _        d S rW   r   r   r   rJ   r
   ro   r*   r[   r/   r6   rL   s        r+   r,   z TestPublicKeyVerifies.setUpClass   sB    >>#CIIKKA66 e,,r-   c                     t          dd          }|                     | j                            d|                     d S )Nr   r   r   r   ro   rD   r1   r)   s     r+   test_sig_with_r_zeroz*TestPublicKeyVerifies.test_sig_with_r_zero   ;    1oo..q#6677777r-   c                     t          t          j                    d          }|                     | j                            d|                     d S rG   r   r   rK   r   ro   rD   r   s     r+   test_sig_with_r_orderz+TestPublicKeyVerifies.test_sig_with_r_order   sF    +--q11..q#6677777r-   c                     t          dd          }|                     | j                            d|                     d S )Nr   r   r   r   s     r+   test_sig_with_s_zeroz*TestPublicKeyVerifies.test_sig_with_s_zero   r   r-   c                     t          dt          j                              }|                     | j                            d|                     d S rG   r   r   s     r+   test_sig_with_s_orderz+TestPublicKeyVerifies.test_sig_with_s_order   sF    =.0011..q#6677777r-   N)	rN   rO   rP   rR   r,   r   r   r   r   rS   r-   r+   r   r      si        - - [-8 8 8
8 8 8
8 8 8
8 8 8 8 8r-   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestPrivateKeyc                     t           }d}d}t          j        |                                ||          }t	          ||          | _        d S rW   r   r   s        r+   r,   zTestPrivateKey.setUpClass   sB    >>#CIIKKA66 e,,r-   c                     t          | j        d          }t          | j        d          }|                     ||           d S Nd   )r	   ro   rZ   r1   pr_key1pr_key2s      r+   test_equality_private_keysz)TestPrivateKey.test_equality_private_keys   s@    dlC00dlC00'*****r-   c                     t          | j        d          }t          | j        d          }|                     ||           d S )Nr      r	   ro   rc   r   s      r+   test_inequality_private_keysz+TestPrivateKey.test_inequality_private_keys   s@    dlC00dlC00GW-----r-   c                 \    t          | j        d          }|                     |d            d S r   r   )r1   pr_keys     r+   ,test_inequality_private_keys_not_implementedz;TestPrivateKey.test_inequality_private_keys_not_implemented  s/    T\3//FD)))))r-   N)rN   rO   rP   rR   r,   r   r   r   rS   r-   r+   r   r      sZ        - - [-+ + +
. . .
* * * * *r-   r   l   :HJ`4wwqVXR}h
xhl   MuC	E|dD30v[6?LFl   ;G-^
lqkwdx.}js q~l   *vdF*Me5RN"[T]	l   'q%_h$z0W]uq?l   pTp- |q.c_bb"`+qrX   rY   Tl   pZ)SS4gr7)<E_1j`+l   N*y?4 =ntb/{ Rd~)"|	l   \,}fDx;#C7l   wF;6*&hJ|(9r>n%r{r`   ra   l   F>x.~x:UIpel   5f~p3,Z'o	>Qql   /+ Ug1	0B]D?}x5&l   [-L#rJ4dM][$1r<B.<l   CkcOG>F"S@kT75n	l   W&`}
#-'bgqgD~Gl   m+}LLjTb`-~({Me#Fl   g0H?h_OXk
l   S" +6}=%?T5`&Yl   #)T!MjC:e6j- 	zgenerator,x,y,expectedc                 4    t          | ||          |k    sJ dS )z~
    `generator` defines the curve; is `(x, y)` a point on
    this curve? `expected` is True if the right answer is Yes.
    N)r   )	generatorr/   r6   expecteds       r+   test_point_validityr   V  s'     )Q**h666666r-     0x84ce72aa8699df436059f052ac51b6398d2511e49631bcb7e71f89c499b9ee425dfbc13a5f6d408471b054f2655617cbbaf7937b7c80cd8865cf02c8487d30d2b0fbd8b2c4e102e16d828374bbc47b93852f212d5043c3ea720f086178ff798cc4f63f787b9c2e419efa033e7644ea7936f54462dc21a6c4580725f7f0e7d158   l   geC	9|C0M9F	QL_l   k)7Q2XZ~
S}l   )$|;6y3q'Fe7Hp(,eMl   y$=tY,dY=V4P]  0x94bb5bacd5f8ea765810024db87f4224ad71362a3c28284b2b9f39fab86db12e8beb94aae899768229be8fdb6c4f12f28912bb604703a79ccff769c1607f5a91450f30ba0460d359d9126cbd6296be6d9c4bb96c0ee74cbb44197c207f6db326ab6f5a659113a9034e54be7b041ced9dcf6458d7fb9cbfb2744d999f7dfd63f4l   zN( i,q ARs`2^%4|l   -5CY42U[B]aT/l   Ug?n 3ua	!wPX0)(l   l`gxJR\8z%8/
OlV  0xf6227a8eeb34afed1621dcc89a91d72ea212cb2f476839d9b4243c66877911b37b4ad6f4448792a7bbba76c63bdd63414b6facab7dc71c3396a73bd7ee14cdd41a659c61c99b779cecf07bc51ab391aa3252386242b9853ea7da67fd768d303f1b9b513d401565b6f1eb722dfdb96b519fe4f9bd5de67ae131e64b40e78c42ddl   <~a>m.'J%qWzcl   6#Hl6;gBPy3q^X!l   V$tl7!Z{^EmTul   	*
}a2nyyJ!USY  0x16b5f93afd0d02246f662761ed8e0dd9504681ed02a253006eb36736b563097ba39f81c8e1bce7a16c1339e345efabbc6baa3efb0612948ae51103382a8ee8bc448e3ef71e9f6f7a9676694831d7f5dd0db5446f179bcb737d4a526367a447bfe2c857521c7f40b6d7d7e01a180d92431fb0bbd29c04a0c420a57b3ed26ccd8al   +F_7UK_b@{{~Eo&l   RHykQ$k X1W<P?l   }*Fp`x)kg<TJml    E;yS*sX{<!(Dr  0x08a2024b61b79d260e3bb43ef15659aec89e5b560199bc82cf7c65c77d39192e03b9a895d766655105edd9188242b91fbde4167f7862d4ddd61e5d4ab55196683d4f13ceb90d87aea6e07eb50a874e33086c4a7cb0273a8e1c4408f4b846bceae1ebaac1b2b2ea851a9b09de322efe34cebe601653efd6ddc876ce8c2f2072fbl   (I2=R-.L\Sdc7Cw|tl   '<;zs=A93=Q3KmdKoZl   w n- ldk4
7X5_wEP	l   zhMR?WZf`){Gs,o  0x1843aba74b0789d4ac6b0b8923848023a644a7b70afa23b1191829bbe4397ce15b629bf21a8838298653ed0c19222b95fa4f7390d1b4c844d96e645537e0aae98afb5c0ac3bd0e4c37f8daaff25556c64e98c319c52687c904c4de7240a1cc55cd9756b7edaef184e6e23b385726e9ffcba8001b8f574987c1a3fedaaa83ca6dl   !) q!q?"" 1j5AdjPfl   V2PPzN=E|#^-%X1a[N l   %s8`Il)aMt '}+l   3V zXC&,?p]L3+4
  0x5a478f4084ddd1a7fea038aa9732a822106385797d02311aeef4d0264f824f698df7a48cfb6b578cf3da416bc0799425bb491be5b5ecc37995b85b03420a98f2c4dc5c31a69a379e9e322fbe706bbcaf0f77175e05cbb4fa162e0da82010a278461e3e974d137bc746d1880d6eb02aa95216014b37480d84b87f717bb13f76e1l   |`#;e	$beJ)qr)3cl   Vl}v;}uA(gZH$O]l   ^lhcEpRNvw3l   P_O*@ Bd>b;yO>OT  0xc598774259a058fa65212ac57eaa4f52240e629ef4c310722088292d1d4af6c39b49ce06ba77e4247b20637174d0bd67c9723feb57b5ead232b47ea452d5d7a089f17c00b8b6767e434a5e16c231ba0efa718a340bf41d67ea2d295812ff1b9277daacb8bc27b50ea5e6443bcf95ef4e9f5468fe78485236313d53d1c68f6ba2l   
<GksS}5F
@j:@c^
l   >/vMmY6#k?]xxvggl   UinLNSr/nwB ^A$Il    'q_LTDrUAidJ
  0xca98ed9db081a07b7557f24ced6c7b9891269a95d2026747add9e9eb80638a961cf9c71a1b9f2c29744180bd4c3d3db60f2243c5c0b7cc8a8d40a3f9a7fc910250f2187136ee6413ffc67f1a25e1c4c204fa9635312252ac0e0481d89b6d53808f0c496ba87631803f6c572c1f61fa049737fdacce4adff757afed4f05beb658l   /l$JL'k]-Xl   gsV,)[l6|#+j]6l   buxr
+)	;ZMZZ,W;_	l   "]|~ZTU?^v4cC\  0x31dd9a54c8338bea06b87eca813d555ad1850fac9742ef0bbe40dad400e10288acc9c11ea7dac79eb16378ebea9490e09536099f1b993e2653cd50240014c90a9c987f64545abc6a536b9bd2435eb5e911fdfde2f13be96ea36ad38df4ae9ea387b29cced599af777338af2794820c9cce43b51d2112380a35802ab7e396c97al   Jk5":C||QSr;16	l   9fJ;=#0L]`vBW$ ]c6idl   ;g4K-$faR$ot-Z9l   eX{o(`Ub&]vW  0xb2b94e4432267c92f9fdb9dc6040c95ffa477652761290d3c7de312283f6450d89cc4aabe748554dfb6056b2d8e99c7aeaad9cdddebdee9dbc099839562d9064e68e7bb5f3a6bba0749ca9a538181fc785553a4000785d73cc207922f63e8ce1112768cb1de7b673aed83a1e4a74592f1268d8e2a4e9e63d414b5d442bd0456dl   l/S>sJOEj,)%,UJ~l   b&HqV{,?%YTlS@=#%l   >b*j61gHXf l   2-^P=f;B"^v[z 
  0x4366fcadf10d30d086911de30143da6f579527036937007b337f7282460eae5678b15cccda853193ea5fc4bc0a6b9d7a31128f27e1214988592827520b214eed5052f7775b750b0c6b15f145453ba3fee24a085d65287e10509eb5d5f602c440341376b95c24e5c4727d4b859bfe1483d20538acdd92c7997fa9c614f0f839d7l   Sgk"Z{h7E&qS?dU	l    er&SE/,J^pt$bl   h&~AJ gKl
-	_kEl   5pq!09lxBm^bI.  0x543f8af57d750e33aa8565e0cae92bfa7a1ff78833093421c2942cadf9986670a5ff3244c02a8225e790fbf30ea84c74720abf99cfd10d02d34377c3d3b41269bea763384f372bb786b5846f58932defa68023136cd571863b304886e95e52e7877f445b9364b3f06f3c28da12707673fecb4b8071de06b6e0a3c87da160cef3l   5Xyn"Mz$YI)Z]?l   kg":(VeFo/+p!e[l   xt:!lM1l)3|^{:y6l   h6ns(#lrI<-9pTv  0xd2e8454143ce281e609a9d748014dcebb9d0bc53adb02443a6aac2ffe6cb009f387c346ecb051791404f79e902ee333ad65e5c8cb38dc0d1d39a8dc90add5023572720e5b94b190d43dd0d7873397504c0c7aef2727e628eb6a74411f2e400c65670716cb4a815dc91cbbfeb7cfe8c929e93184c938af2c078584da045e8f8d1l   %3 aoqQ{FZg(knvTjl   xm%<DifPjXNOa@Z^ l   #Oh?7HB[qJf&0F
l   /BWde&b"Ej+NY"	x=!8  0x6660717144040f3e2f95a4e25b08a7079c702a8b29babad5a19a87654bc5c5afa261512a11b998a4fb36b5d8fe8bd942792ff0324b108120de86d63f65855e5461184fc96a0a8ffd2ce6d5dfb0230cbbdd98f8543e361b3205f5da3d500fdc8bac6db377d75ebef3cb8f4d1ff738071ad0938917889250b41dd1d98896ca06fbl   w|FM<$?i&i_6NzVl   "N?xVP3|xl/M-AdSl   !-iuL
Vw|k3	l   crE;X<v 
lN`fma	zgen,msg,qx,qy,r,s,expectedc                    t          | t          j        |                                 ||                    }t	          j        t                    5 }t          |          }	ddd           n# 1 swxY w Y   t          |          dk    sJ d|d         j	        j
        d         v sJ d|d         j	        j
        d         v sJ d|d         j	        j
        d         v sJ ||                    |	t          ||                    k    sJ dS )z
    `msg` = message, `qx` and `qy` represent the base point on
    elliptic curve of `gen`, `r` and `s` are the signature, and
    `expected` is True iff the signature is expected to be valid.N   unusedr   r   r   )r
   r   r   rJ   pytestwarnsDeprecationWarningr   lenmessageargsrD   r   )
r[   r%   qxqyr>   r?   r   r&   r   msg_dgsts
             r+   test_signature_validityr   R  s:    c=.syy{{BCCDDD	(	)	) 'U!#&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'u::????uQx',Q/////uQx',Q/////uQx',Q/////t}}XyA????????s   A,,A03A0c                 "    g | ]}|d          
|S )   rS   ).0r/   s     r+   
<listcomp>r   c  s!    "E"E"E!"E1"E"E"Er-   c           
         ~t          ||          }t          j        t                    5 }t	          |          }	d d d            n# 1 swxY w Y   t          |          dk    sJ d|d         j        j        d         v sJ d|d         j        j        d         v sJ d|d         j        j        d         v sJ |                    |	|           }
|
sJ |
D ]B}|j	        }t          | ||                                |                                ||d           Ct          j        |                                 ||          }d |
D             }||v sJ d S )Nr   r   r   r   r   Tc                     g | ]	}|j         
S rS   )rL   )r   pks     r+   r   z$test_pk_recovery.<locals>.<listcomp>y  s    %%%2bh%%%r-   )r   r   r   r   r   r   r   r   recover_public_keysrL   r   r/   r6   r   r   rJ   )r[   r%   r>   r?   r   r   r   r(   r   r   pksr   q
original_qpointss                  r+   test_pk_recoveryr   b  s    	Q??D	(	)	) 'U!#&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'u::????uQx',Q/////uQx',Q/////uQx',Q/////

"
"8S
1
1CJJ3  D DHS!##%%1dCCCC $SYY[["b99J%%%%%Fs   AAAc                 ^   t           t          t          t          t          t
          d} | t          j        t          |	                                                              }t          d                    |                     ||         }t          |                                          dz
  } | t          j        d|                    } | t          j        d|                    } | t          j        d|          t          j        |dz	  |          z            }||||fS )z*Hypothesis strategy for test_sig_verify().)r   r   r   r   r   r   zGenerator used: {0}r   )	min_value	max_value)r   r   r   r   r   r   stsampled_fromsortedkeysr   formatintrK   integers)drawname_gennamer   rK   keyr%   nonces           r+   st_random_gen_key_msg_noncer   }  s    '&&2&& H 4x}} 7 78899D		%	%d	+	+,,,I	!!""Q&E
$r{Q%888
9
9C
$r{Q%888
9
9CD
a5111
+
e
<
<
<	= E c3%%r-   z--fastmax_examples
      c                     | \  }}}}t          |||z            }t          ||          }|                    ||          }|                    ||          sJ |                    |dz
  |          rJ dS )z
    Check if signing and verification works for arbitrary messages and
    that signatures for other messages are rejected.
    r   N)r
   r	   r(   rD   )r   r   sec_multr%   r   pubkeyprivkey	signatures           r+   test_sig_verifyr     s     '+#Ixe	9x#788F&(++GS%((I??3	*****sQw	2222222r-   c                      t          j        t                    5 } t          d          dk    sJ 	 d d d            n# 1 swxY w Y   t	          |           dk    sJ d| d         j        j        d         v sJ d S )Nr       r   r   )r   r   r   r   r   r   r   )r   s    r+   test_int_to_string_with_zeror     s    	(	)	) +UQ7*****+ + + + + + + + + + + + + + + u::????uQx',Q///////s   =AArS   )8
__future__r   syshypothesis.strategies
strategiesr   
hypothesisr   r   r   r   	unittest2unittestImportErrorr   ecdsar	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   HYP_SETTINGSversion_infoTestCaser   rU   r   r   P192_POINTSmarkparametrizer   r   CURVE_192_KATSr   r   	compositer   dictSIG_VER_SETTINGSargvr   r   rS   r-   r+   <module>r     s   % % % % % % 



 " " " " " " 5 5 5 5 5 5 5 5 5 5 5 5        OOOOO                                      & !           f#L31 31 31 31 31) 31 31 31lpG pG pG pG pGH% pG pG pGf8 8 8 8 8H- 8 8 8@* * * * *X& * * *6 	:>	 	>:	 	:>	 	::	 	::	 	::	 	::	 	:>	 	::	 	::	 	::	 	::	GIX 1;??7 7 @?7 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	
 	
 	
 	;:::" 	K 	
 	
 	;:::  	K 	
 	
 	;:::Aod 5~FF@ @ GF@  "E"En"E"E"E      0 & & &0 4%% sx'(^$$')^$ 
-Aq	!""""$$%%3 3 &% #" 3"0 0 0 0 0s   # 	//