U
    Š¾úgG  ã                   @   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   íSë9i“@eMó^¨w|o                l   UK‚5±J,{´$%Xci\¸-÷G'
lJ[sii!l   XfÌL™33ffÌL™33ffÌL™33ffÌL™33ffzCryptodome.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                       sB   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   úA/tmp/pip-unpacked-wheel-_q8s9isk/Cryptodome/PublicKey/_edwards.pyÚEcLib!   s   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ƒ }ˆ  | ¡ ¡}|rRtd	| ƒ‚t| ¡ ˆ jƒ}t	t
| ƒd t
|ƒt
|ƒt
|ƒd d
d|dd |ƒ}|S )Nl   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl   óD°VJ
ÆRu±8£a6!m,»&ÚvD}D2_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl   ^@¯ 51â8`b8ÀCÊlª\×p*AŒtô(’qmjÏ.<‚+FaS[Í/SDZ74_3ã	l   zadoeC@Ù
ùZK‰^ýDsx™sø­sZhNx0Ž2›§>Ilq2« vIðZugt'zCryptodome.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                       sB   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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   s   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Cryptodome.Math.Numbersr   ZCryptodome.Util._raw_apir   r   r   r   r$   r   r   r   r   Ú<module>   s   1