o
    .ѹg7                     @   s@   d dl mZ ddlmZ ddlmZmZmZ dd Zdd Z	d	S )
   )_Curve    )Integer)load_pycryptodome_raw_libVoidPointerSmartPointerc                     s`   d} d}d}d}t dd G  fdddt}tt| d t|t|t|d d	d
d dd|}|S )Nl   l   S9i@eM^w|o                l   UK5J,{$%Xci\-G'
lJ[sii!l   XfL33ffL33ffL33ffL33ffzCrypto.PublicKey._ed25519ai  
typedef void Point;
int ed25519_new_point(Point **out,
                      const uint8_t x[32],
                      const uint8_t y[32],
                      size_t modsize,
                      const void *context);
int ed25519_clone(Point **P, const Point *Q);
void ed25519_free_point(Point *p);
int ed25519_cmp(const Point *p1, const Point *p2);
int ed25519_neg(Point *p);
int ed25519_get_xy(uint8_t *xb, uint8_t *yb, size_t modsize, Point *p);
int ed25519_double(Point *p);
int ed25519_add(Point *P1, const Point *P2);
int ed25519_scalar(Point *P, const uint8_t *scalar, size_t scalar_len, uint64_t seed);
c                       B   e Zd Z jZ jZ jZ j	Z
 jZ jZ jZ jZ jZdS )zed25519_curve.<locals>.EcLibN)__name__
__module____qualname__Zed25519_new_point	new_pointZed25519_clonecloneZed25519_free_point
free_pointZed25519_cmpcmpZed25519_negnegZed25519_get_xyget_xyZed25519_doubledoubleZed25519_addaddZed25519_scalarscalar Z_ed25519_libr   ]/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/Crypto/PublicKey/_edwards.pyEcLib!       
r      z1.3.101.112ZEd25519zssh-ed25519)r   objectr   r   )porderGxGyr   Zed25519r   r   r   ed25519_curve
   s(   
r    c            	         s   d} d}d}d}t dd G  fdddt}t } | }|r)td	| t|  j}t	t
| d t
|t
|t
|d d
d|dd |}|S )Nl   ?l   DVJ
Ru8a6!m,&vD}D2_l   ^@ 518`b8Cl\p*At(qmj.<+FaS[/SDZ74_3	l   zadoeC@
ZK^DsxssZhNx02>Ilq2 vIZugt'zCrypto.PublicKey._ed448a*  
typedef void EcContext;
typedef void PointEd448;
int ed448_new_context(EcContext **pec_ctx);
void ed448_context(EcContext *ec_ctx);
void ed448_free_context(EcContext *ec_ctx);
int ed448_new_point(PointEd448 **out,
                    const uint8_t x[56],
                    const uint8_t y[56],
                    size_t len,
                    const EcContext *context);
int ed448_clone(PointEd448 **P, const PointEd448 *Q);
void ed448_free_point(PointEd448 *p);
int ed448_cmp(const PointEd448 *p1, const PointEd448 *p2);
int ed448_neg(PointEd448 *p);
int ed448_get_xy(uint8_t *xb, uint8_t *yb, size_t len, const PointEd448 *p);
int ed448_double(PointEd448 *p);
int ed448_add(PointEd448 *P1, const PointEd448 *P2);
int ed448_scalar(PointEd448 *P, const uint8_t *scalar, size_t scalar_len, uint64_t seed);
c                       r   )zed448_curve.<locals>.EcLibN)r	   r
   r   Zed448_new_pointr   Zed448_cloner   Zed448_free_pointr   Z	ed448_cmpr   Z	ed448_negr   Zed448_get_xyr   Zed448_doubler   Z	ed448_addr   Zed448_scalarr   r   Z
_ed448_libr   r   r   V   r   r   z#Error %d initializing Ed448 contexti  z1.3.101.113ZEd448)r   r   r   Zed448_new_contextZ
address_ofImportErrorr   getZed448_free_contextr   r   )	r   r   r   r   r   Zed448_contextresultcontextZed448r   r!   r   ed448_curve;   s2   
r&   N)
Z_curver   ZCrypto.Math.Numbersr   ZCrypto.Util._raw_apir   r   r   r    r&   r   r   r   r   <module>   s
   1