o
    Þý°j{  ã                   @   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                     sb   d‰d} t ddƒ‰ G ‡ fdd„dtƒ}‡fdd„}ttˆƒd t| ƒtd	ƒd d d
dd dd ||ƒ}|S )Nl   íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl   íSë9i“@eMó^¨w|o                z Cryptodome.PublicKey._curve25519aê  
typedef void Point;

int curve25519_new_point(Point **out,
                         const uint8_t x[32],
                         size_t modsize,
                         const void* context);
int curve25519_clone(Point **P, const Point *Q);
void curve25519_free_point(Point *p);
int curve25519_get_x(uint8_t *xb, size_t modsize, Point *p);
int curve25519_scalar(Point *P, const uint8_t *scalar, size_t scalar_len, uint64_t seed);
int curve25519_cmp(const Point *ecp1, const Point *ecp2);
c                       s0   e Zd Z” jZ” jZ” jZ” j	Z
” jZ” jZdS )zcurve25519_curve.<locals>.EcLibN)Ú__name__Ú
__module__Ú__qualname__Úcurve25519_new_pointÚ	new_pointÚcurve25519_cloneÚcloneÚcurve25519_free_pointÚ
free_pointÚcurve25519_get_xÚget_xÚcurve25519_scalarÚscalarÚcurve25519_cmpÚcmp© )Ú_curve25519_libr   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/PublicKey/_montgomery.pyÚEcLib   s    
r   c                    sz   ˆ d }d}d}dd||ˆ d ˆ ˆ d ˆ | ˆ | |d ||d f}z| j |v}W n ty4   d}Y nw |s;tdƒ‚d S )Né   l   àkõxíÂujaj\~|ObjZ®s”	ÛoP,�E¯$¸ l   _+yŽBb$:6gÁw[ˆ8câph[DS7èOWr   r   FzInvalid Curve25519 public key©ÚxÚ
ValueError)ÚpointÚp2Úx1Úx2Ú	deny_listÚvalid©Úpr   r   Ú_validate_x25519_point$   s0   ôÿÿz0curve25519_curve.<locals>._validate_x25519_pointé	   éÿ   z1.3.101.110Ú
Curve25519)r   Úobjectr   r   )Úorderr   r'   Ú
curve25519r   )r   r&   r   Úcurve25519_curve
   s(   
ôr.   c                     s’   d‰d} t ddƒ‰ G ‡ fdd„dtƒ}tƒ }| | ¡ ¡}|r%td| ƒ‚‡fdd	„}ttˆƒd t| ƒtd
ƒd d ddt| 	¡ |j
ƒdd ||ƒ}|S )Nl   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl   óD°VJ
ÆRu±8£a6!m,»&ÚvD}D2_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzCryptodome.PublicKey._curve448a±  
typedef void Curve448Context;
typedef void Curve448Point;

int curve448_new_context(Curve448Context **pec_ctx);
void curve448_free_context(Curve448Context *ec_ctx);
int curve448_new_point(Curve448Point **out,
                       const uint8_t *x,
                       size_t len,
                       const Curve448Context *ec_ctx);
void curve448_free_point(Curve448Point *p);
int curve448_clone(Curve448Point **P, const Curve448Point *Q);
int curve448_get_x(uint8_t *xb, size_t modsize, const Curve448Point *p);
int curve448_scalar(Curve448Point *P, const uint8_t *scalar, size_t scalar_len, uint64_t seed);
int curve448_cmp(const Curve448Point *ecp1, const Curve448Point *ecp2);
c                       s<   e Zd Z” jZ” jZ” jZ” j	Z
” jZ” jZ” jZ” jZdS )zcurve448_curve.<locals>.EcLibN)r   r	   r
   Úcurve448_new_contextÚnew_contextÚcurve448_free_contextÚfree_contextÚcurve448_new_pointr   Úcurve448_cloner   Úcurve448_free_pointr   Úcurve448_get_xr   Úcurve448_scalarr   Úcurve448_cmpr   r   )Ú_curve448_libr   r   r   i   s    
r   z&Error %d initializing Curve448 contextc                    sL   ddˆ d ˆ ˆ d f}z| j |v}W n ty   d}Y nw |s$tdƒ‚d S )Nr   r   FzInvalid Curve448 public keyr   )r   r#   r$   r%   r   r   Ú_validate_x448_pointx   s   ûÿÿz,curve448_curve.<locals>._validate_x448_pointé   iÀ  z1.3.101.111ÚCurve448)r   r+   r   r0   Ú
address_ofÚImportErrorr   r   r   Úgetr2   )r,   r   Úcurve448_contextÚresultr:   Úcurve448r   )r9   r&   r   Úcurve448_curveT   s0   

ôrC   N)
Ú_curver   ÚCryptodome.Math.Numbersr   ÚCryptodome.Util._raw_apir   r   r   r.   rC   r   r   r   r   Ú<module>   s
   J