/opt/imunify360/venv/lib/python3.11/site-packages/Crypto/PublicKey/__pycache__
NameSizeModeActions
DSA.cpython-311.pyc305080644editdlrm
ECC.cpython-311.pyc770760644editdlrm
ElGamal.cpython-311.pyc113410644editdlrm
RSA.cpython-311.pyc355940644editdlrm
_openssh.cpython-311.pyc59240644editdlrm
__init__.cpython-311.pyc31800644editdlrm
Edit: /opt/imunify360/venv/lib/python3.11/site-packages/Crypto/PublicKey/__pycache__/ECC.cpython-311.pyc (77076B)
§ þEÇ\ãó† —ddlmZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z ddl mZmZddlmZddlmZmZmZmZddlmZmZmZmZmZmZmZdd lm Z m!Z!m"Z"dd l#m$Z$m%Z%dd l&m'Z'dd l(m)Z)ed d¦«Z*edd¦«Z+edd¦«Z,d„Z-edd¦«Z.iZ/gd¢a0d„Z1e1¦«[1gd¢a2d„Z3e3¦«[3gd¢a4d„Z5e5¦«[5gd¢a6d„Z7e7¦«[7gd¢a8d„Z9e9¦«[9d d!ga:d"„Z;e;¦«[;d#d$ga¦«Z?Gd(„d)e@¦«ZAeAe/d*jBe/d*jCd*¦«ZDe/d* EeD¬+¦«ZFe/ GeH It`eF¦«¦«[D[Fb0eAe/d,jBe/d,jCd,¦«ZJe/d, EeJ¬+¦«ZKe/ GeH ItdeK¦«¦«[J[Kb2eAe/d-jBe/d-jCd-¦«ZLe/d- EeL¬+¦«ZMe/ GeH ItheM¦«¦«[L[Mb4eAe/d.jBe/d.jCd.¦«ZNe/d. EeN¬+¦«ZOe/ GeH ItleO¦«¦«[N[Ob6eAe/d/jBe/d/jCd/¦«ZPe/d/ EeP¬+¦«ZQe/ GeH ItpeQ¦«¦«[P[Qb8eAe/d!jBe/d!jCd!¦«ZRe/d! EeR¬+¦«ZSe/ GeH ItteS¦«¦«[R[Sb:eAe/d$jBe/d$jCd$¦«ZTe/d$ EeT¬+¦«ZUe/ GeH ItxeU¦«¦«[T[Ub<Gd0„d1e@¦«ZVd2„ZWd3„ZXdFd4„ZYd5„ZZdGd6„Z[d7„Z\d8„Z]d9„Z^d:„Z_d;„Z`d<„Zad=„ZbdFd>„Zcedd?kr³ddleZed@Zfe/d-jg h¦«ZidAZjeeje¦«Zkelej¦«D]ZmeiefzZnŒeodBeeje¦«ekz ejz dCzdD¦«eeje¦«Zkelej¦«D]ZmenefzZnŒeodEeeje¦«ekz ejz dCzdD¦«dSdS)Hé)Úprint_functionN)Ú namedtuple)ÚbordÚtobytesÚtostrÚbchrÚ is_string)Ú bytes_to_longÚ long_to_bytes)ÚInteger)Ú DerObjectIdÚDerOctetStringÚ DerSequenceÚ DerBitString)Úload_pycryptodome_raw_libÚ VoidPointerÚ SmartPointerÚc_size_tÚ c_uint8_ptrÚ c_ulonglongÚ null_pointer)Ú_expand_subject_public_key_infoÚ_create_subject_public_key_infoÚ _extract_subject_public_key_info)ÚSHA512ÚSHAKE256)Úget_random_bytes)Ú getrandbitszCrypto.PublicKey._ec_wsa typedef void EcContext; typedef void EcPoint; int ec_ws_new_context(EcContext **pec_ctx, const uint8_t *modulus, const uint8_t *b, const uint8_t *order, size_t len, uint64_t seed); void ec_free_context(EcContext *ec_ctx); int ec_ws_new_point(EcPoint **pecp, const uint8_t *x, const uint8_t *y, size_t len, const EcContext *ec_ctx); void ec_ws_free_point(EcPoint *ecp); int ec_ws_get_xy(uint8_t *x, uint8_t *y, size_t len, const EcPoint *ecp); int ec_ws_double(EcPoint *p); int ec_ws_add(EcPoint *ecpa, EcPoint *ecpb); int ec_ws_scalar(EcPoint *ecp, const uint8_t *k, size_t len, uint64_t seed); int ec_ws_clone(EcPoint **pecp2, const EcPoint *ecp); int ec_ws_cmp(const EcPoint *ecp1, const EcPoint *ecp2); int ec_ws_neg(EcPoint *p); zCrypto.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); zCrypto.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óÚ—|jjdkrttd|z¦«}nA|jjdkrttd|z¦«}ntt d|z¦«}|S)NÚEd25519Úed25519_ÚEd448Úed448_Úec_ws_)Ú_curveÚdescÚgetattrÚ _ed25519_libÚ _ed448_libÚ_ec_lib)Úecc_objÚ func_nameÚresults úv/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/PublicKey/ECC.pyÚlib_funcr/�sg€Ø„~Ô˜iÒ'Ð'Ý� z°IÑ'=Ñ>Ô>ˆˆØ ŒÔ  Ò 'Ð 'Ý� X° Ñ%9Ñ:Ô:ˆˆå� (¨YÑ"6Ñ7Ô7ˆØ €MóÚ_Curvez

€EØ ;€BØ ;€Bå   BÑ'Ô'€LÝ ˜1˜bÑ !Ô !€Fݘu bÑ)Ô)€Jå!‘m”m€OÝ × &Ò & ×'AÒ'AÑ'CÔ'CÝ'2°<Ñ'@Ô'@Ý'2°6Ñ':Ô':Ý'2°:Ñ'>Ô'>Ý'/µ°LÑ0AÔ0AÑ'BÔ'BÝ'2µ;¸r±?´?Ñ'CÔ'Cñ )ô)€FððJÝÐ?À&ÑHÑIÔIÐIå˜?×.Ò.Ñ0Ô0µ'Ô2IÑJÔJ€GÝ •'˜!‘*”*ݘ!‘*”*ݘ%‘.”.ݘ"‘+”+ݘ"‘+”+ØØØ'ØØØ'Øñ ô €Dõ ‡N‚N•4—=’=¥¨TÑ2Ô2Ñ3Ô3Ð3Ð3Ð3r0)Úp224ú NIST P-224zP-224Ú prime224v1Ú secp224r1Únistp224cóT—d}d}d}d}d}t|d¦«}t|d¦«}t|d¦«}t¦«}t | ¦«t |¦«t |¦«t |¦«t t|¦«¦«ttd¦«¦«¦«} | rtd| z¦«‚t|  ¦«tj ¦«} tt|¦«t|¦«t|¦«t|¦«t|¦«dd d | d d d ¦ « } t  t$ t(| ¦«¦«dS)NlÀÿÿÿÿÿÿÿÿ?l´«F eY8¢ ûwõ-X"PVdÕ/�%ÀPP!-l=*¸8%éá¸(‹ÿÿÿÿÿÿÿ?l!¸"X”!#BXÕtàJ9!'È|û%»V—AÃ-l4~ f¬&Dvè@hº!Íf¿E0m9_ qlM/ér9z#Error %d initializing P-224 contextéàz 1.3.132.0.33rRzecdsa-sha2-nistp224rQ)r rr*r;r<rrr=rrr>rr?r@r1r rArBrCrDÚ p224_names) rFrGrHrIrJÚ p224_modulusÚp224_bÚ p224_orderÚec_p224_contextr-rOrQs r.Ú init_p224r^Òsn€ØB€AØB€AØ F€EØ C€BØ C€Bå   BÑ'Ô'€LÝ ˜1˜bÑ !Ô !€Fݘu bÑ)Ô)€Jå!‘m”m€OÝ × &Ò & ×'AÒ'AÑ'CÔ'CÝ'2°<Ñ'@Ô'@Ý'2°6Ñ':Ô':Ý'2°:Ñ'>Ô'>Ý'/µ°LÑ0AÔ0AÑ'BÔ'BÝ'2µ;¸r±?´?Ñ'CÔ'Cñ )ô)€FððJÝÐ?À&ÑHÑIÔIÐIå˜?×.Ò.Ñ0Ô0µ'Ô2IÑJÔJ€GÝ •'˜!‘*”*ݘ!‘*”*ݘ%‘.”.ݘ"‘+”+ݘ"‘+”+ØØØ ØØØ'Øñ ô €Dõ ‡N‚N•4—=’=¥¨TÑ2Ô2Ñ3Ô3Ð3Ð3Ð3r0)Úp256ú NIST P-256zP-256Ú prime256v1Ú secp256r1Únistp256cóT—d}d}d}d}d}t|d¦«}t|d¦«}t|d¦«}t¦«}t | ¦«t |¦«t |¦«t |¦«t t|¦«¦«ttd¦«¦«¦«} | rtd| z¦«‚t|  ¦«tj ¦«} tt|¦«t|¦«t|¦«t|¦«t|¦«dd d | d d d ¦ « } t  t$ t(| ¦«¦«dS)Nlÿÿÿÿÿÿ?@ÿÿlK`¤Oøpq^cv 3,ƒe< 1ÚUê]>{|RŽ*ìÆZlQ%Æx +ÎOhóbi+}s¼ÿÿÿÿ@ÿÿl–B11e %:f=K`¾wr�HŽ7g‹HK8ùhklõQ~o ²]ìl+fÚUg+<ð)Z?î8óO†?q!ãOé r9z#Error %d initializing P-256 contextéz1.2.840.10045.3.1.7r`zecdsa-sha2-nistp256r_)r rr*r;r<rrr=rrr>rr?r@r1r rArBrCrDÚ p256_names) rFrGrHrIrJÚ p256_modulusÚp256_bÚ p256_orderÚec_p256_contextr-rOr_s r.Ú init_p256rlsn€ØJ€AØJ€AØ N€EØ K€BØ K€Bå   BÑ'Ô'€LÝ ˜1˜bÑ !Ô !€Fݘu bÑ)Ô)€Jå!‘m”m€OÝ × &Ò & ×'AÒ'AÑ'CÔ'CÝ'2°<Ñ'@Ô'@Ý'2°6Ñ':Ô':Ý'2°:Ñ'>Ô'>Ý'/µ°LÑ0AÔ0AÑ'BÔ'BÝ'2µ;¸r±?´?Ñ'CÔ'Cñ )ô)€FððJÝÐ?À&ÑHÑIÔIÐIå˜?×.Ò.Ñ0Ô0µ'Ô2IÑJÔJ€GÝ •'˜!‘*”*ݘ!‘*”*ݘ%‘.”.ݘ"‘+”+ݘ"‘+”+ØØØ'ØØØ'Øñ ô €Dõ ‡N‚N•4—=’=¥¨TÑ2Ô2Ñ3Ô3Ð3Ð3Ð3r0)Úp384ú NIST P-384zP-384Ú prime384v1Ú secp384r1Únistp384cóT—d}d}d}d}d}t|d¦«}t|d¦«}t|d¦«}t¦«}t | ¦«t |¦«t |¦«t |¦«t t|¦«¦«ttd¦«¦«¦«} | rtd| z¦«‚t|  ¦«tj ¦«} tt|¦«t|¦«t|¦«t|¦«t|¦«dd d | d d d ¦ « } t  t$ t(| ¦«¦«dS)NlÿÿÀÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlï*Ø'·#.TÒÚEbc+ÆZ'@=D 1 "( ?7N2Zà_+à“|¹ñS/1fls)Š«e`g®w’l X_[nÐlv|ÿÿÿÿÿÿÿÿÿÿÿÿÿl· ìdáx¢RÃ¥joyU8T( :Ÿssé"±nèZ‚L÷8kñ&Á"_ÊUl_Ô!òuR×Ð/‡sX0 @qa×NˆQ�N�B&JÞôxS8KJüEéYë ‹ K%Þlé0r9z#Error %d initializing P-384 contexti€z 1.3.132.0.34rnzecdsa-sha2-nistp384rm)r rr*r;r<rrr=rrr>rr?r@r1r rArBrCrDÚ p384_names) rFrGrHrIrJÚ p384_modulusÚp384_bÚ p384_orderÚec_p384_contextr-rOrms r.Ú init_p384ry0sn€Øj€AØj€AØ n€EØ k€BØ k€Bå   BÑ'Ô'€LÝ ˜1˜bÑ !Ô !€Fݘu bÑ)Ô)€Jå!‘m”m€OÝ × &Ò & ×'AÒ'AÑ'CÔ'CÝ'2°<Ñ'@Ô'@Ý'2°6Ñ':Ô':Ý'2°:Ñ'>Ô'>Ý'/µ°LÑ0AÔ0AÑ'BÔ'BÝ'2µ;¸r±?´?Ñ'CÔ'Cñ )ô)€FððJÝÐ?À&ÑHÑIÔIÐIå˜?×.Ò.Ñ0Ô0µ'Ô2IÑJÔJ€GÝ •'˜!‘*”*ݘ!‘*”*ݘ%‘.”.ݘ"‘+”+ݘ"‘+”+ØØØ ØØØ'Øñ ô €Dõ ‡N‚N•4—=’=¥¨TÑ2Ô2Ñ3Ô3Ð3Ð3Ð3r0)Úp521ú NIST P-521zP-521Ú prime521v1Ú secp521r1Únistp521cóT—d}d}d}d}d}t|d¦«}t|d¦«}t|d¦«}t¦«}t | ¦«t |¦«t |¦«t |¦«t t|¦«¦«ttd¦«¦«¦«} | rtd| z¦«‚t|  ¦«tj ¦«} tt|¦«t|¦«t|¦«t|¦«t|¦«dd d | d d d ¦ « } t  t$ t(| ¦«¦«dS)Nl#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl#? VQ(zO†%bï95~cîte1oR{¨VÂÄ;ŒLH w>ÅlÌ-rZE]´"Sr‡&Ga9}*Fl# dp"z\}[ëzˆ3"näZ;PKÜ# `ü7ÍrËoÁC†Qôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl#f=ËÇxóK¿)H-apY$3^Q‹ ná%kù{;/K!u{4-{Š?$íO‚�d8ÑV1¶lÇ3s:· l#Pf¢?ÚQôE$XN¨!85aZþÈU ȽWL9îYLù¹hûz Ñf«$Du13otc!û%‘ pMxjRr`éBr9z#Error %d initializing P-521 contexti z 1.3.132.0.35r{zecdsa-sha2-nistp521rz)r rr*r;r<rrr=rrr>rr?r@r1r rArBrCrDÚ p521_names) rFrGrHrIrJÚ p521_modulusÚp521_bÚ p521_orderÚec_p521_contextr-rOrzs r.Ú init_p521r†_s}€ð S€Að S€Að W€Eð T€Bð T€Bå   BÑ'Ô'€LÝ ˜1˜bÑ !Ô !€Fݘu bÑ)Ô)€Jå!‘m”m€OÝ × &Ò & ×'AÒ'AÑ'CÔ'CÝ'2°<Ñ'@Ô'@Ý'2°6Ñ':Ô':Ý'2°:Ñ'>Ô'>Ý'/µ°LÑ0AÔ0AÑ'BÔ'BÝ'2µ;¸r±?´?Ñ'CÔ'Cñ )ô)€FððJÝÐ?À&ÑHÑIÔIÐIå˜?×.Ò.Ñ0Ô0µ'Ô2IÑJÔJ€GÝ •'˜!‘*”*ݘ!‘*”*ݘ%‘.”.ݘ"‘+”+ݘ"‘+”+ØØØ ØØØ'Øñ ô €Dõ ‡N‚N•4—=’=¥¨TÑ2Ô2Ñ3Ô3Ð3Ð3Ð3r0Úed25519r có"—d}d}d}d}tt|¦«dt|¦«t|¦«t|¦«ddddddd ¦ « }t t t |¦«¦«dS) NìíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlíSë9i “@eMó^¨w|olUK‚5±J,{´$%Xci\¸-÷G' lJ[sii!lXfÌL™33ffÌL™33ffÌL™33ffÌL™33fféÿú 1.3.101.112r ú ssh-ed25519r‡)r1r rArBrCrDÚ ed25519_names)rFrHrIrJr‡s r.Ú init_ed25519rŽ�sˆ€ØJ€AØ N€EØ K€BØ K€Bå•W˜Q‘Z”ZØÝ˜U‘^”^ݘR‘[”[ݘR‘[”[ØØØ"ØØØ"Øñ  ô  €Gõ ‡N‚N•4—=’=¥°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r0Úed448r"có—d}d}d}d}t¦«}t | ¦«¦«}|rt d|z¦«‚t | ¦«tj¦«}tt|¦«dt|¦«t|¦«t|¦«ddd|ddd ¦ « }t  t  t|¦«¦«dS) Nìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlóD°VJ ÆRu±8£a6!m,»&ÚvD}D2_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl^@¯ 51â8`b8ÀCÊlª\×p*AŒtô(’qmjÏ.<‚+FaS[Í/SDZ74_3 ã lzadoeC@Ù ùZK‰^ýDsx™sø­sZhNx�0Ž2›§>Ilq2« vIðZu gt' z#Error %d initializing Ed448 contextiÀú 1.3.101.113r"r�)rr)Úed448_new_contextr<r>rr?Úed448_free_contextr1r rArBrCrDÚ ed448_names)rFrHrIrJÚ ed448_contextr-rOr�s r.Ú init_ed448r—ªsë€Øz€AØ ~€EØ {€BØ {€Bå‘M”M€MÝ × )Ò )¨-×*BÒ*BÑ*DÔ*DÑ EÔ E€FØ ðJÝÐ?À&ÑHÑIÔIÐIå˜=×,Ò,Ñ.Ô.µ Ô0MÑNÔN€Gå •7˜1‘:”:ØÝ˜5‘>”>ݘ2‘;”;ݘ2‘;”;ØØØ ØØØØñ ô €Eõ ‡N‚N•4—=’=¥¨eÑ4Ô4Ñ5Ô5Ð5Ð5Ð5r0có—eZdZdS)ÚUnsupportedEccFeatureN)Ú__name__Ú __module__Ú __qualname__©r0r.r™r™Ës€€€€€Ø€Dr0r™có¼—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z e d „¦«Ze d „¦«Ze d„¦«Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZdS)ÚEccPointaPA class to model a point on an Elliptic Curve. The class supports operators for: * Adding two points: ``R = S + T`` * In-place addition: ``S += T`` * Negating a point: ``R = -T`` * Comparing two points: ``if S == T: ...`` or ``if S != T: ...`` * Multiplying a point by a scalar: ``R = S*k`` * In-place multiplication by a scalar: ``T *= k`` :ivar x: The affine X-coordinate of the ECC point :vartype x: integer :ivar y: The affine Y-coordinate of the ECC point :vartype y: integer :ivar xy: The tuple with affine X- and Y- coordinates r_có€— t||_n-#t$r tdt |¦«z¦«‚wxYw||_| ¦«}t||¦«}t||¦«}t|¦«|kst|¦«|krtd¦«‚t|d¦«}t|d¦«}t¦«|_ |jj   ¦«} n#t$r t} YnwxYw||j  ¦«t#|¦«t#|¦«t%|¦«| ¦«} | r'| dkrtd¦«‚td| z¦«‚t'|j   ¦«|¦«|_ dS)NzUnknown curve name %szIncorrect coordinate lengthÚ new_pointÚ free_pointéz)The EC point does not belong to the curvez(Error %d while instantiating an EC point)rAr%ÚKeyErrorÚ ValueErrorÚstrÚ _curve_nameÚ size_in_bytesr r=r/rÚ_pointrOr?ÚAttributeErrorrr<rrr) ÚselfÚxÚyÚcurveÚ modulus_bytesÚxbÚybr¡Ú free_funcrOr-s r.Ú__init__zEccPoint.__init__äsº€ð CÝ! %œ.ˆDŒKˆKøÝð Cð Cð CÝÐ4µs¸5±z´zÑAÑBÔBÐ Bð Cøøøà ˆÔà×*Ò*Ñ,Ô,ˆ å ˜1˜mÑ ,Ô ,ˆÝ ˜1˜mÑ ,Ô ,ˆÝ ˆr‰7Œ7�mÒ #Ð #¥s¨2¡w¤w°-Ò'?Ð'?ÝÐ:Ñ;Ô;Ð ;å˜T ;Ñ/Ô/ˆ ݘT <Ñ0Ô0ˆ å!‘m”mˆŒ ð #Ø”kÔ)×-Ò-Ñ/Ô/ˆGˆGøÝð #ð #ð #Ý"ˆGˆGˆGð #øøøà�˜4œ;×1Ò1Ñ3Ô3Ý& r™?œ?Ý& r™?œ?Ý# MÑ2Ô2Ø"ñ $ô$ˆð ð RؘŠ|ˆ|Ý Ð!LÑMÔMÐMÝÐGÈ&ÑPÑQÔQÐ Qõ# 4¤;§?¢?Ñ#4Ô#4°iÑ@Ô@ˆŒ ˆ ˆ s‚•*?Ã&DÄDÄDcó`—t|d¦«}t|d¦«}t¦«|_||j ¦«|j ¦«¦«}|rt d|z¦«‚t |j ¦«|¦«|_|S)NÚcloner¢z"Error %d while cloning an EC point)r/rr©r<r?r¥r)r«Úpointrµr²r-s r.Úsetz EccPoint.set sž€Ý˜˜wÑ'Ô'ˆÝ˜T <Ñ0Ô0ˆ å!‘m”mˆŒ Ø��t”{×-Ò-Ñ/Ô/Ø”|×'Ò'Ñ)Ô)ñ+ô+ˆð ð LÝÐAÀFÑJÑKÔKÐ Kå" 4¤;§?¢?Ñ#4Ô#4°iÑ@Ô@ˆŒ ؈ r0cóÌ—t|t¦«sdSt|d¦«}d||j ¦«|j ¦«¦«kS)NFÚcmpr)Ú isinstancerŸr/r©r?)r«r¶Úcmp_funcs r.Ú__eq__zEccPoint.__eq__sY€Ý˜%¥Ñ*Ô*ð Ø�5å˜D %Ñ(Ô(ˆØ�H�H˜Tœ[Ÿ_š_Ñ.Ô.°´ ×0@Ò0@Ñ0BÔ0BÑCÔCÒCÐCr0có—||k S©Nr�)r«r¶s r.Ú__ne__zEccPoint.__ne__ s€Ø˜5’=Ð Ð r0cóº—t|d¦«}| ¦«}||j ¦«¦«}|rt d|z¦«‚|S)NÚnegz$Error %d while inverting an EC point)r/Úcopyr©r?r¥)r«Úneg_funcÚnpr-s r.Ú__neg__zEccPoint.__neg__#sY€Ý˜D %Ñ(Ô(ˆØ �YŠY‰[Œ[ˆØ�˜"œ)Ÿ-š-™/œ/Ñ*Ô*ˆØ ð NÝÐCÀfÑLÑMÔMÐ M؈ r0cóF—|j\}}t|||j¦«}|S)zReturn a copy of this point.)ÚxyrŸr§)r«r¬r­rÄs r.rÂz EccPoint.copy+s&€àŒw‰ˆˆ1Ý �a˜˜DÔ,Ñ -Ô -ˆØˆ r0có—|jjdvS)N©r‡r�)r%Úname©r«s r.Ú _is_eddsazEccPoint._is_eddsa1ó€ØŒ{ÔÐ#7Ð7Ð7r0cóV—| ¦«r |jdkS|jdkS)z,``True`` if this is the *point-at-infinity*.r)rr)rÌr¬rÇrËs r.Úis_point_at_infinityzEccPoint.is_point_at_infinity4s/€ð �>Š>Ñ Ô ð %Ø”6˜Q’;Ð à”7˜fÒ$Ð $r0có‚—| ¦«rtdd|j¦«Stdd|j¦«S)z-Return the *point-at-infinity* for the curve.ré)rÌrŸr§rËs r.Úpoint_at_infinityzEccPoint.point_at_infinity<s@€ð �>Š>Ñ Ô ð 4ݘA˜q $Ô"2Ñ3Ô3Ð 3å˜A˜q $Ô"2Ñ3Ô3Ð 3r0có—|jdS)Nr©rÇrËs r.r¬z EccPoint.xDó€àŒw�qŒzÐr0có—|jdS)NrÑrÔrËs r.r­z EccPoint.yHrÕr0có¶—| ¦«}t|¦«}t|¦«}t|d¦«}|t|¦«t|¦«t |¦«|j ¦«¦«}|rtd|z¦«‚tt|¦«¦«tt|¦«¦«fS)NÚget_xyz#Error %d while encoding an EC point) r¨Ú bytearrayr/rrr©r?r¥r r )r«r¯r°r±rØr-s r.rÇz EccPoint.xyLs€à×*Ò*Ñ,Ô,ˆ Ý �}Ñ %Ô %ˆÝ �}Ñ %Ô %ˆÝ˜$ Ñ)Ô)ˆØ��  B™œÝ# B™œÝ  Ñ/Ô/Øœ ŸšÑ)Ô)ñ+ô+ˆð ð MÝÐBÀVÑKÑLÔLÐ Lå�  bÑ)Ô)Ñ*Ô*­GµMÀ"Ñ4EÔ4EÑ,FÔ,FÐGÐGr0có6—| ¦«dzdzS)z"Size of each coordinate, in bytes.éé)Ú size_in_bitsrËs r.r¨zEccPoint.size_in_bytes[s€à×!Ò!Ñ#Ô# aÑ'¨AÑ-Ð-r0có—|jjS)z!Size of each coordinate, in bits.)r%Ú modulus_bitsrËs r.rÝzEccPoint.size_in_bits_s €àŒ{Ô'Ð'r0có’—t|d¦«}||j ¦«¦«}|rtd|z¦«‚|S)zuDouble this point (in-place operation). Returns: This same object (to enable chaining). Údoublez#Error %d while doubling an EC point©r/r©r?r¥)r«Ú double_funcr-s r.rázEccPoint.doublecsP€õ˜t XÑ.Ô.ˆ Ø�˜Tœ[Ÿ_š_Ñ.Ô.Ñ/Ô/ˆØ ð MÝÐBÀVÑKÑLÔLÐ L؈ r0cóì—t|d¦«}||j ¦«|j ¦«¦«}|r'|dkrtd¦«‚td|z¦«‚|S)zAdd a second point to this oneÚaddéz#EC points are not on the same curvez#Error %d while adding two EC pointsrâ)r«r¶Úadd_funcr-s r.Ú__iadd__zEccPoint.__iadd__psx€õ˜D %Ñ(Ô(ˆØ�˜$œ+Ÿ/š/Ñ+Ô+¨U¬\×-=Ò-=Ñ-?Ô-?Ñ@Ô@ˆØ ð MؘŠ|ˆ|Ý Ð!FÑGÔGÐGÝÐBÀVÑKÑLÔLÐ L؈ r0có8—| ¦«}||z }|S)z8Return a new point, the addition of this one and another©rÂ)r«r¶rÄs r.Ú__add__zEccPoint.__add__{s€ð�YŠY‰[Œ[ˆØ ˆe‰ ˆØˆ r0c ób—t|d¦«}|dkrtd¦«‚t|¦«}||j ¦«t |¦«t t|¦«¦«ttd¦«¦«¦«}|rtd|z¦«‚|S)zMultiply this point by a scalarÚscalarrz?Scalar multiplication is only defined for non-negative integersr9z%Error %d during scalar multiplication) r/r¥r r©r?rrr=rr)r«ríÚ scalar_funcÚsbr-s r.Ú__imul__zEccPoint.__imul__‚s¦€õ˜t XÑ.Ô.ˆ Ø �AŠ:ˆ:ÝÐ^Ñ_Ô_Ð _Ý ˜6Ñ "Ô "ˆØ�˜Tœ[Ÿ_š_Ñ.Ô.Ý(¨™_œ_Ý%¥c¨"¡g¤gÑ.Ô.Ý(­°R©¬Ñ9Ô9ñ;ô;ˆð ð OÝÐDÀvÑMÑNÔNÐ N؈ r0có8—| ¦«}||z}|S)z2Return a new point, the scalar product of this onerê)r«rírÄs r.Ú__mul__zEccPoint.__mul__‘s€ð�YŠY‰[Œ[ˆØ ˆf‰ ˆØˆ r0có,—| |¦«Sr¾)rò)r«Ú left_hands r.Ú__rmul__zEccPoint.__rmul__˜s€Ø�|Š|˜IÑ&Ô&Ð&r0N)r_)ršr›rœÚ__doc__r³r·r¼r¿rÅrÂrÌrÏrÒÚpropertyr¬r­rÇr¨rÝrárèrërðròrõr�r0r.rŸrŸÏs~€€€€€ððð($Að$Að$Að$AðL ð ð ðDðDðDð!ð!ð!ððððððð 8ð8ð8ð%ð%ð%ð4ð4ð4ðððñ„Xððððñ„Xððð Hð Hñ„Xð Hð.ð.ð.ð(ð(ð(ð ð ð ð ð ð ðððð ð ð ðððð'ð'ð'ð'ð'r0rŸr2)ÚGrQr_rmrzcóÈ—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z e d „¦«Z e d „¦«Z e d „¦«Zd „Zd „Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZdS)ÚEccKeya¿Class defining an ECC key. Do not instantiate directly. Use :func:`generate`, :func:`construct` or :func:`import_key` instead. :ivar curve: The name of the curve as defined in the `ECC table`_. :vartype curve: string :ivar pointQ: an ECC point representating the public component. :vartype pointQ: :class:`EccPoint` :ivar d: A scalar that represents the private component in NIST P curves. It is smaller than the order of the generator point. :vartype d: integer :ivar seed: A seed that representats the private component in EdDSA curves (Ed25519, 32 bytes; Ed448, 57 bytes). :vartype seed: bytes c ó�—t|¦«}| dd¦«}| dd¦«|_| dd¦«|_| dd¦«|_|€|jr |jj}|rt dt|¦«z¦«‚|tvrtd|z¦«‚t||_ |j j |_ t|jdu¦«t|jdu¦«z}|dkr|j€td ¦«‚dS|d krtd ¦«‚| ¦«s^|j�td ¦«‚t|j¦«|_d |jcxkr|j jksntd¦«‚dS|j�td¦«‚|j jdkršt%|j¦«dkrtd¦«‚t'j|j¦« ¦«}|dd…|_t/|dd…¦«}|dxxdzcc<|ddzdz|d<n®|j jdkržt%|j¦«dkrtd¦«‚t1j|j¦« d¦«}|dd…|_t/|dd…¦«}|dxxdzcc<|dxxdzcc<d|d<tj|d¬ ¦«|_dS)!aiCreate a new ECC key Keywords: curve : string The name of the curve. d : integer Mandatory for a private key one NIST P curves. It must be in the range ``[1..order-1]``. seed : bytes Mandatory for a private key on the Ed25519 (32 bytes) or Ed448 (57 bytes) curve. point : EccPoint Mandatory for a public key. If provided for a private key, the implementation will NOT check whether it matches ``d``. Only one parameter among ``d``, ``seed`` or ``point`` may be used. r®NÚdÚseedr¶úUnknown parameters: zUnsupported curve (%s)rzGAt lest one between parameters 'point', 'd' or 'seed' must be specifiedéz,Parameters d and seed are mutually exclusivez7Parameter 'seed' can only be used with Ed25519 or Ed448rÑz;Parameter d must be an integer smaller than the curve orderz/Parameter d can only be used with NIST P curvesr‡rez0Parameter seed must be 32 bytes long for Ed25519éøéér9r�é9z.Parameter seed must be 57 bytes long for Ed448éréüé7é€é8Úlittle©Ú byteorder)rCÚpopÚ_dÚ_seedr©r§Ú TypeErrorr¦rAr¥r%r&r®ÚintrÌr rHrÊr=rÚnewÚdigestÚ_prefixrÙrÚreadÚ from_bytes)r«ÚkwargsÚkwargs_Ú curve_nameÚcountÚ seed_hashÚtmps r.r³zEccKey.__init__×s-€õ&�v‘,”,ˆØ—[’[ ¨$Ñ/Ô/ˆ Ø—+’+˜c 4Ñ(Ô(ˆŒØ—[’[ ¨Ñ.Ô.ˆŒ Ø—k’k '¨4Ñ0Ô0ˆŒ Ø Ð  $¤+Ð ØœÔ0ˆJØ ð CÝÐ2µS¸±\´\ÑAÑBÔBÐ Bà �WÐ $Ð $ÝÐ5¸ ÑBÑCÔCÐ CݘjÔ)ˆŒ Ø”[Ô%ˆŒ å�D”G 4Ð'Ñ(Ô(­3¨t¬zÀÐ/EÑ+FÔ+FÑFˆà �AŠ:ˆ:ØŒ{Ð"Ý Ð!jÑkÔkÐkØ ˆFà �AŠ:ˆ:ÝÐKÑLÔLÐ Lð�~Š~ÑÔð BØŒzÐ%Ý Ð!ZÑ[Ô[Ð[ݘdœgÑ&Ô&ˆDŒGؘœÐ3Ð3Ò3Ð3 $¤+Ô"3Ò3Ð3Ð3Ð3Ý Ð!^Ñ_Ô_Ð_ð4Ð3ðŒwÐ"Ý Ð!RÑSÔSÐSàŒ{Ô 9Ò,Ð,Ý�t”z‘?”? bÒ(Ð(Ý$Ð%WÑXÔXÐXÝ"œJ t¤zÑ2Ô2×9Ò9Ñ;Ô;� Ø(¨¨¨œ~�” Ý  ¨#¨2¨#¤Ñ/Ô/�Ø�A��”˜$‘��‘ؘrœ7 T™>¨TÑ1��B‘�à”Ô! WÒ,Ð,Ý�t”z‘?”? bÒ(Ð(Ý$Ð%UÑVÔVÐVÝ$œL¨¬Ñ4Ô4×9Ò9¸#Ñ>Ô>� Ø(¨¨¨œ~�” Ý  ¨#¨2¨#¤Ñ/Ô/�Ø�A��”˜$‘��‘Ø�B��”˜4‘��‘Ø��B‘ÝÔ(¨¸ÐAÑAÔAˆDŒGˆGˆGr0có—|jjdvS)N)r r")r%r&rËs r.rÌzEccKey._is_eddsa#rÍr0có¨—t|t¦«sdS| ¦«| ¦«krdS|j|jkS)NF)rºrúÚ has_privateÚpointQ)r«Úothers r.r¼z EccKey.__eq__&sP€Ý˜%¥Ñ(Ô(ð Ø�5à × Ò Ñ Ô  $×"2Ò"2Ñ"4Ô"4Ò 4Ð 4Ø�5àŒ|˜tœ{Ò*Ð*r0có—| ¦«rV| ¦«r*dttj|j¦«¦«z}ndt |j¦«z}nd}|jj \}}d|j j |||fzS)Nz , seed=%sz, d=%dÚz,EccKey(curve='%s', point_x=%d, point_y=%d%s)) rrÌrÚbinasciiÚhexlifyrrr rrÇr%r&)r«Úextrar¬r­s r.Ú__repr__zEccKey.__repr__/s‹€Ø × Ò Ñ Ô ð Ø�~Š~ÑÔð 0Ø#¥e­HÔ,<¸T¼ZÑ,HÔ,HÑ&IÔ&IÑI��à ¥3 t¤w¡<¤<Ñ/��àˆEØŒ{Œ~‰ˆˆ1Ø=ÀÄÔAQÐSTÐVWÐY^Ð@_Ñ_Ð_r0có—|jduS)zJ``True`` if this key can be used for making signatures or decrypting data.N)r rËs r.rzEccKey.has_private:s€ðŒw˜dÐ"Ð"r0có—d|cxkr|jjksnJ‚|jj}tjd|¬¦«}|j|z}||z |¦«}|jj|zj|z}|||z||zzz|z}||fS)NrrÑ)Ú min_inclusiveÚ max_exclusive)r%rHr Ú random_ranger Úinverserør¬) r«ÚzÚkrHÚblindÚblind_dÚ inv_blind_kÚrÚss r.Ú_signz EccKey._sign@s±€Ø�1Ð(Ð(Ò(Ð(�t”{Ô(Ò(Ð(Ð(Ð(Ð(Ð(à” Ô!ˆÝÔ$°1Ø38ð:ñ:ô:ˆð”'˜E‘/ˆØ˜q‘y×)Ò)¨%Ñ0Ô0ˆ à Œ[Œ]˜QÑ Ô ! EÑ )ˆØ ˜5 1™9 w°¡{Ñ2Ñ 3°eÑ ;ˆØ�1ˆvˆ r0cóΗ|jj}|d |¦«}|jj||z|zz}|j||dz|zz}||zj|dkS)NrÑr)r%rHr,rørr¬)r«r-ÚrsrHÚsinvÚpoint1Úpoint2s r.Ú_verifyzEccKey._verifyOsg€Ø” Ô!ˆØ�!Œu�}Š}˜UÑ#Ô#ˆØ”” 4¨!¡8¨uÑ"4Ñ5ˆØ” ¨¨1¬¡°Ñ 6Ñ7ˆØ˜‘Ô" b¨¤eÒ+Ð+r0cóV—| ¦«std¦«‚|jS©NzThis is not a private ECC key)rr¥r rËs r.rüzEccKey.dVs,€à×ÒÑ!Ô!ð >ÝÐ<Ñ=Ô=Ð =ØŒwˆr0cóV—| ¦«std¦«‚|jSr<)rr¥rrËs r.rýz EccKey.seed\s-€à×ÒÑ!Ô!ð >ÝÐ<Ñ=Ô=Ð =ØŒzÐr0cóP—|j€|jj|jz|_|jSr¾)r©r%rør rËs r.rz EccKey.pointQbs$€à Œ;Ð Øœ+œ-¨$¬'Ñ1ˆDŒKØŒ{Ðr0cóB—t|jj|j¬¦«S)z^A matching ECC public key. Returns: a new :class:`EccKey` object )r®r¶)rúr%r&rrËs r.Ú public_keyzEccKey.public_keyhs€õ˜DœKÔ,°D´KÐ@Ñ@Ô@Ð@r0có’—| ¦«rtd¦«‚|j ¦«}|rF|jj ¦«rd}nd}||jj |¦«z}nBd|jj |¦«z|jj |¦«z}|S)Nz+SEC1 format is unsupported for EdDSA curvesóóó)rÌr¥rr¨r­Úis_oddr¬Úto_bytes)r«Úcompressr¯Ú first_byter@s r.Ú _export_SEC1zEccKey._export_SEC1qsÍ€Ø �>Š>Ñ Ô ð LÝÐJÑKÔKÐ Kðœ ×1Ò1Ñ3Ô3ˆ à ð AØŒ{Œ}×#Ò#Ñ%Ô%ð %Ø$� � à$� Ø$Øœ+œ-×0Ò0°Ñ?Ô?ñ@ˆJˆJð"Øœ+œ-×0Ò0°Ñ?Ô?ñ@àœ+œ-×0Ò0°Ñ?Ô?ñ@ˆJðÐr0cón—|jj\}}|jjdkr9t | dd¬¦«¦«}|dzdz|dz|d<nO|jjdkr0t | d d¬¦«¦«}|dzdz|d <nt d ¦«‚t|¦«S) Nr‡rer r rÑrÛrr�rrzNot an EdDSA key to export)rrÇr%rÊrÙrFr¥Úbytes)r«r¬r­r-s r.Ú _export_eddsazEccKey._export_eddsa�s³€ØŒ{Œ~‰ˆˆ1Ø Œ;Ô ˜yÒ (Ð (ݘqŸzšz¨"¸˜zÑAÔAÑBÔBˆFؘq™5 Q™,¨&°¬*Ñ4ˆF�2‰JˆJØ Œ[Ô  Ò (Ð (ݘqŸzšz¨"¸˜zÑAÔAÑBÔBˆFؘa™% A™ˆF�2‰JˆJåÐ9Ñ:Ô:Ð :Ý�V‰}Œ}Ðr0cóò—| ¦«r#|jj}| ¦«}d}n0d}| |¦«}t |jj¦«}t |||¦«S)Nú1.2.840.10045.2.1)rÌr%ÚoidrLrIr r)r«rGrOr@Úparamss r.Ú_export_subjectPublicKeyInfoz#EccKey._export_subjectPublicKeyInfo™sx€Ø �>Š>Ñ Ô ð 2Ø”+”/ˆCØ×+Ò+Ñ-Ô-ˆJ؈FˆFà%ˆCØ×*Ò*¨8Ñ4Ô4ˆJÝ  ¤¤Ñ1Ô1ˆFå.¨sØ/9Ø/5ñ7ô7ð 7r0TcóÖ—| ¦«sJ‚|j ¦«}d|jj |¦«z|jj |¦«z}dt |j |¦«¦«t|j j d¬¦«t|d¬¦«g}|s|d=t|¦«  ¦«S)NrDrÑr©Úexplicitrÿ)rrr¨r¬rFr­rrür r%rOrrÚencode)r«Úinclude_ec_paramsr¯r@Úseqs r.Ú_export_rfc5915_private_derz"EccKey._export_rfc5915_private_der§sÜ€à×ÒÑ!Ô!Ð!Ð!Ð!ðœ ×1Ò1Ñ3Ô3ˆ ØØ”k”m×,Ò,¨]Ñ;Ô;ñ<à”k”m×,Ò,¨]Ñ;Ô;ñ<ˆ ðݘdœfŸošo¨mÑ<Ô<Ñ=Ô=ݘ4œ;œ?°QÐ7Ñ7Ô7ݘJ°Ð3Ñ3Ô3ð5ˆð !ð Ø�A�å˜3ÑÔ×&Ò&Ñ(Ô(Ð(r0c óz—ddlm}| dd¦«�d|vrtd¦«‚| ¦«r5|jj}t|j¦«  ¦«}d}n1d}|  d¬¦«}t|jj¦«}|j ||fd |i|¤Ž}|S) Nr©ÚPKCS8Ú passphraseÚ protectionú5At least the 'protection' parameter should be presentrNF)rVÚ key_params) Ú Crypto.IOr[r?r¥rÌr%rOrrrUrXr Úwrap)r«rr[rOÚ private_keyrPr-s r.Ú _export_pkcs8zEccKey._export_pkcs8Âsà€Ø#Ð#Ð#Ð#Ð#Ð#à �:Š:�l DÑ )Ô )Ð 5¸,ÈfÐ:TÐ:TÝÐTÑUÔUÐ Uà �>Š>Ñ Ô ð 2Ø”+”/ˆCÝ(¨¬Ñ4Ô4×;Ò;Ñ=Ô=ˆK؈FˆFà%ˆCØ×:Ò:ÈUÐ:ÑSÔSˆKÝ  ¤¤Ñ1Ô1ˆFà�”˜KØð&ð&à'-ð&ð%ð&ð&ˆðˆ r0cód—ddlm}| |¦«}| |d¦«S)Nr©ÚPEMz PUBLIC KEY)r`rfrQrU)r«rGrfÚ encoded_ders r.Ú_export_public_pemzEccKey._export_public_pem×s;€Ø!Ð!Ð!Ð!Ð!Ð!à×7Ò7¸ÑAÔAˆ Ø�zŠz˜+ |Ñ4Ô4Ð4r0c óV—ddlm}| ¦«}|j|d|fi|¤ŽS)NrrezEC PRIVATE KEY)r`rfrXrU©r«r\rrfrgs r.Ú_export_private_pemzEccKey._export_private_pemÝsD€Ø!Ð!Ð!Ð!Ð!Ð!à×6Ò6Ñ8Ô8ˆ ؈sŒz˜+Ð'7¸ÐNÐNÀvÐNÐNÐNr0cób—ddlm}| ¦«}| |d¦«S)Nrrez PRIVATE KEY)r`rfrcrU)r«rfrgs r.Ú(_export_private_clear_pkcs8_in_clear_pemz/EccKey._export_private_clear_pkcs8_in_clear_pemãs9€Ø!Ð!Ð!Ð!Ð!Ð!à×(Ò(Ñ*Ô*ˆ Ø�zŠz˜+ }Ñ5Ô5Ð5r0c ó†—ddlm}|sJ‚d|vrtd¦«‚|jdd|i|¤Ž}| |d¦«S)Nrrer]r^r\zENCRYPTED PRIVATE KEYr�)r`rfr¥rcrUrjs r.Ú,_export_private_encrypted_pkcs8_in_clear_pemz3EccKey._export_private_encrypted_pkcs8_in_clear_pemésk€Ø!Ð!Ð!Ð!Ð!Ð!àÐЈzØ ˜vÐ %Ð %ÝÐTÑUÔUÐ UØ(�dÔ(ÐIÐI°JÐIÀ&ÐIÐIˆ Ø�zŠz˜+Ð'>Ñ?Ô?Ð?r0cój—| ¦«rtd¦«‚|jj}|€td|jjz¦«‚|dkr3| ¦«}t |¦«t |¦«f}nè|j ¦«}|rQd|jj   ¦«z}t|¦«|jj   |¦«z}nBd|jj   |¦«z|jj   |¦«z}| d¦«d}t |¦«t |¦«|f}d d„|D¦«¦«}|d zt!t#j|¦«¦«zS) Nz"Cannot export OpenSSH private keysz Cannot export %s keys as OpenSSHrŒrÿrDú-r0cóX—g|]'}tjdt|¦«¦«|z‘Œ(S)ú>I)ÚstructÚpackr=)Ú.0r¬s r.ú z*EccKey._export_openssh.. s/€ÐFÐFÐF¸1�œ T­3¨q©6¬6Ñ2Ô2°QÑ6ÐFÐFÐFr0ú )rr¥r%ÚopensshrÊrLrrr¨r­rErr¬rFÚsplitÚjoinrr#Ú b2a_base64) r«rGr&r@Úcompsr¯rHÚmiddleÚblobs r.Ú_export_opensshzEccKey._export_opensshòs‘€Ø × Ò Ñ Ô ð CÝÐAÑBÔBÐ BàŒ{Ô"ˆà ˆ<ÝÐ?À$Ä+ÔBRÑRÑSÔSÐ SØ �]Ò "Ð "Ø×+Ò+Ñ-Ô-ˆJݘT‘]”]¥G¨JÑ$7Ô$7Ð8ˆEˆEà œK×5Ò5Ñ7Ô7ˆMàð EØ ¤¤×!5Ò!5Ñ!7Ô!7Ñ7� Ý" :Ñ.Ô.Ø"œkœm×4Ò4°]ÑCÔCñD� � ð&Ø"œkœm×4Ò4°]ÑCÔCñDà"œkœm×4Ò4°]ÑCÔCñD� ð—Z’Z ‘_”_ QÔ'ˆFݘT‘]”]¥G¨F¡O¤O°ZÐ@ˆEà�xŠxÐFÐFÀÐFÑFÔFÑGÔGˆØ�c‰z�E¥(Ô"5°dÑ";Ô";Ñ<Ô<Ñ<ÐØ-˜4Ô-ÐLÐL¸ÐLÀtÐLÐLÐLà×;Ò;Ñ=Ô=Ð=å ð"6Ø8Bñ"CñDôDðDðð GÝ Ð!>ÀÑ!EÑFÔFÐFؘUÒ"Ð"Ø×.Ò.¨xÑ8Ô8Ð8ؘuÒ$Ð$Ø×8Ò8¸ÑBÔBÐBؘvÒ%Ð%Ø×(Ò(¨Ñ2Ô2Ð2ؘuÒ$Ð$Ø”;Ô#Ð';Ð;Ð;Ø×-Ò-Ñ/Ô/Ð/à×,Ò,¨XÑ6Ô6Ð6à×+Ò+¨HÑ5Ô5Ð5r0N)T)ršr›rœrör³rÌr¼r&rr4r:r÷rürýrr@rIrLrQrXrcrhrkrmror€rŠr�r0r.rúrúÁs©€€€€€ððð*JBðJBðJBðX8ð8ð8ð+ð+ð+ð `ð `ð `ð#ð#ð#ð ð ð ð,ð,ð,ðððñ„Xðð ððñ„Xðð ððñ„Xðð AðAðAðððð8 ð ð ð 7ð 7ð 7ð)ð)ð)ð)ð6ððð*5ð5ð5ð OðOðOð 6ð6ð6ð @ð@ð@ð=ð=ð=ð:z6ðz6ðz6ðz6ðz6r0rúc óè—| d¦«}t|}| dt¦«}|rtdt |¦«z¦«‚t|jdkr|d¦«}t ||¬¦«}n`t|jdkr|d¦«}t ||¬¦«}n-tjd |j |¬ ¦«}t ||¬ ¦«}|S) a1Generate a new private key on the given curve. Args: curve (string): Mandatory. It must be a curve name defined in the `ECC table`_. randfunc (callable): Optional. The RNG to read randomness from. If ``None``, :func:`Crypto.Random.get_random_bytes` is used. r®Úrandfuncrþr‡re©r®rýr�rrÑ)r)r*rŒ)r®rü) r rArrr¦rÊrúr r+rH)rrr®rŒrýÚnew_keyrüs r.Úgenerater�Œs÷€ð—’˜GÑ$Ô$€JÝ �JÔ €EØ�zŠz˜*Õ&6Ñ7Ô7€HØ ð>ÝÐ.µ°V±´Ñ<Ñ=Ô=Ð=åˆzÔÔ 9Ò,Ð,؈x˜‰|Œ|ˆÝ˜z°Ð5Ñ5Ô5ˆˆÝ �Ô Ô ! WÒ ,Ð ,؈x˜‰|Œ|ˆÝ˜z°Ð5Ñ5Ô5ˆˆå Ô ¨qØ/4¬{Ø*2ð 4ñ 4ô 4ˆõ˜z¨QÐ/Ñ/Ô/ˆà €Nr0c ó€—|d}t|}| dd¦«}| dd¦«}d|vrtd¦«‚d||fvrt|||¦«|d<t di|¤Ž}| ¦«r/d|vr+|j|jz}|j||fkrtd¦«‚|S) a”Build a new ECC key (private or public) starting from some base components. In most cases, you will already have an existing key which you can read in with :func:`import_key` instead of this function. Args: curve (string): Mandatory. The name of the elliptic curve, as defined in the `ECC table`_. d (integer): Mandatory for a private key and a NIST P-curve (e.g., P-256): the integer in the range ``[1..order-1]`` that represents the key. seed (bytes): Mandatory for a private key and an EdDSA curve. It must be 32 bytes for Ed25519, and 57 bytes for Ed448. point_x (integer): Mandatory for a public key: the X coordinate (affine) of the ECC point. point_y (integer): Mandatory for a public key: the Y coordinate (affine) of the ECC point. Returns: :class:`EccKey` : a new ECC key object r®Úpoint_xNÚpoint_yr¶zUnknown keyword: pointz(Private and public ECC keys do not matchr�) rAr rrŸrúrrørürÇr¥)rrr®r‘r’rŽÚpub_keys r.Ú constructr”®sä€ð<˜”€JÝ �JÔ €EØ�jŠj˜ DÑ)Ô)€GØ�jŠj˜ DÑ)Ô)€Gà�&ÐÐÝÐ0Ñ1Ô1Ð1à �G˜WÐ%Ð%Ð%å" 7¨G°ZÑ@Ô@ˆˆw‰åÐÐ�vÐЀGð×ÒÑÔðI ¨FÐ!2Ð!2Ø”'˜GœIÑ%ˆØ Œ:˜' 7Ð+Ò +Ð +ÝÐGÑHÔHÐ Hà €Nr0có¤—t ¦«D]\}}|r |j|krn/||krn'Œ|rtd|z¦«‚td|z¦«‚|j ¦«}t |d¦«}|dkrgt|¦«dd|zzkrtd¦«‚tj |d|dz…¦«}tj ||dzd…¦«}nÈ|d vrµt|¦«d|zkrtd¦«‚tj |dd…¦«}|d z|d zz |j z  |j¦«}|dkr|  ¦«r |j|z }|d kr| ¦«r |j|z }ntd ¦«‚t|||¬ ¦«S) aConvert an encoded EC point into an EccKey object ec_point: byte string with the EC point (SEC1-encoded) curve_oid: string with the name the curve curve_name: string with the OID of the curve Either curve_id or curve_name must be specified úUnsupported ECC curve (OID: %s)zUnsupported ECC curve (%s)rérÑrÿzIncorrect EC point lengthN©rÿér™zIncorrect EC point encoding©r®r‘r’)rAÚitemsrOr™rFr¨rr=r¥r rrGÚsqrtrEÚis_evenr”) Úec_pointÚ curve_oidrr§r®r¯Ú point_typer¬r­s r.Ú_import_public_derr¡äsú€õ&Ÿmšm™oœoð Sð Sш �UØ ð ˜œ iÒ/Ð/Ø ˆEØ ˜Ò $Ð $Ø ˆEð %ð ð SÝ'Ð(IÈIÑ(UÑVÔVÐ Vå'Ð(DÀzÑ(QÑRÔRÐ Rð”G×)Ò)Ñ+Ô+€MÝ�h˜q”kÑ"Ô"€Jð�TÒÐÝ ˆx‰=Œ=˜Q  ]Ñ!2Ñ2Ò 3Ð 3ÝÐ8Ñ9Ô9Ð 9Ý Ô ˜x¨¨-¸©/Ð(9Ô:Ñ ;Ô ;ˆÝ Ô ˜x¨ °a©Ð(8Ð(8Ô9Ñ :Ô :ˆˆà �|Ð #Ð #Ý ˆx‰=Œ=˜Q Ñ.Ò /Ð /ÝÐ8Ñ9Ô9Ð 9Ý Ô ˜x¨¨¨œ|Ñ ,Ô ,ˆà �‰T�A�a‘C‰Z˜%œ'Ñ !× 'Ò '¨¬Ñ 0Ô 0ˆØ ˜Ò Ð  !§(¢(¡*¤*Ð Ø”˜!‘ ˆAØ ˜Ò Ð  !§)¢)¡+¤+Ð Ø”˜!‘ ˆAøåÐ6Ñ7Ô7Ð7å ˜;°¸1Ð =Ñ =Ô =Ð=r0cóØ—t|¦«\}}}d}dtfdtfdœ}||vrj|std|z¦«‚ t ¦« |¦«j}n#t$rtd¦«‚wxYwt||¬¦«S||vr?||\}} |rtd|z¦«‚| |¦«\} } t| | |¬ ¦«Std |z¦«‚) z4Convert a subjectPublicKeyInfo into an EccKey object©rNz 1.3.132.1.12z 1.3.132.1.13r r"©r‹r’z%Missing ECC parameters for ECC OID %szError decoding namedCurve©rŸz(Unexpected ECC parameters for ECC OID %s)r‘r’r®zUnsupported ECC OID: %s) rÚ_import_ed25519_public_keyÚ_import_ed448_public_keyr¥r ÚdecodeÚvaluer¡r”r™) ÚencodedrrOržrPÚ nist_p_oidsÚ eddsa_oidsrŸrÚimport_eddsa_public_keyr¬r­s r.Ú_import_subjectPublicKeyInfor®sA€õ <¸GÑDÔDÑ€Cˆ�6ð€Kð "Õ#=Ð>ØÕ#;Ð<ðð€Jð  ˆkÐÐðð LÝÐDÀsÑJÑKÔKÐ Kð :Ý#™ œ ×,Ò,¨VÑ4Ô4Ô:ˆIˆIøÝð :ð :ð :ÝÐ8Ñ9Ô9Ð 9ð :øøøõ" (°iÐ@Ñ@Ô@Ð@à � Ð Ð à.8¸¬oÑ+ˆ Ð+ð ð OÝÐGÈ#ÑMÑNÔNÐ Nà&Ð& xÑ0Ô0‰ˆˆ1Ý ¨A°ZÐ@Ñ@Ô@Ð@å#Ð$=ÀÑ$CÑDÔDÐDs Á&A)Á)BcóÈ—t¦« |d¬¦«}|ddkrtd¦«‚ td¬¦« |d¦«j}|�||krtd¦«‚|}n#t$rYnwxYw|€td ¦«‚t  ¦«D]\}}|j|krnŒtd |z¦«‚t¦« |d¦«j }|j   ¦«}t|¦«|krtd ¦«‚tj|¦«} t|¦«dkrXt!d¬¦« |d ¦«j} t#| |¬ ¦«} | jj} | jj} ndx} } t+|| | | ¬¦«S)N)r™r—)Ú nr_elementsrrÑz!Incorrect ECC private key versionrSrÿzCurve mismatchzNo curve foundr–zPrivate key is too smalléÿÿÿÿr¥)r®rür‘r’)rr¨r¥r r©rAr›rOr™rÚpayloadrFr¨r=r rrr¡rr¬r­r”)rªr\rŸrbÚ parametersrr®Ú scalar_bytesr¯rüÚpublic_key_encr@r‘r’s r.Ú_import_rfc5915_derr¶Psú€õ‘-”-×&Ò& w¸FÐ&ÑCÔC€KØ�1„~˜ÒÐÝÐ<Ñ=Ô=Ð=ð Ý ¨!Ð,Ñ,Ô,×3Ò3°KÀ´NÑCÔCÔIˆ Ø Ð  Z°9Ò%<Ð%<ÝÐ-Ñ.Ô.Ð .؈ ˆ øÝ ð ð ð Ø ˆð øøøðÐÝÐ)Ñ*Ô*Ð*å$Ÿ]š]™_œ_ðSðSш �EØ Œ9˜ Ò !Ð !Ø ˆEð "õ$Ð$EÈ Ñ$QÑRÔRÐRå!Ñ#Ô#×*Ò*¨;°q¬>Ñ:Ô:ÔB€LØ”G×)Ò)Ñ+Ô+€MÝ ˆ<ÑÔ˜MÒ)Ð)ÝÐ3Ñ4Ô4Ð4ÝÔ˜<Ñ(Ô(€Aõ ˆ;ÑÔ˜!ÒÐÝ%¨qÐ1Ñ1Ô1×8Ò8¸ÀR¼ÑIÔIÔOˆÝ'¨À)ÐLÑLÔLˆ ØÔ#Ô%ˆØÔ#Ô%ˆˆà Ð ˆ�'å ˜:¨°GÀWÐ MÑ MÔ MÐMsÁAB BÂBcó’—ddlm}| ||¦«\}}}d}dddœ}||vr7t¦« |¦«j}t |||¦«S||vrP|�td¦«‚d}t¦« |¦«j } t||| ¬¦«Std |z¦«‚) NrrZr£r r"r¤z.EdDSA ECC private key must not have parametersr�z!Unsupported ECC purpose (OID: %s)) r`r[Úunwrapr r¨r©r¶r¥rr²r”r™) rªr\r[Úalgo_oidrbrPr«r¬rŸrýs r.Ú _import_pkcs8rº‚sï€ØÐÐÐÐÐà$)§L¢L°¸*Ñ$EÔ$EÑ!€Hˆk˜6ð€Kð !Øðð€Jð �;ÐÐÝ‘M”M×(Ò(¨Ñ0Ô0Ô6ˆ Ý" ;° ¸IÑFÔFÐFØ �ZÐ Ð Ø Ð ÝÐMÑNÔNÐ N؈ ÝÑÔ×&Ò& {Ñ3Ô3Ô;ˆÝ˜z¨(Ô3¸$Ð?Ñ?Ô?Ð?å#Ð$GÈ(Ñ$RÑSÔSÐSr0có>—t|¦«}t|¦«Sr¾)rr®)rªrÚsp_infos r.Ú_import_x509_certr½žs€å.¨wÑ7Ô7€GÝ '¨Ñ 0Ô 0Ð0r0có— t||¦«S#t$r}|‚d}~wtttf$rYnwxYw t ||¦«S#t$r}|‚d}~wtttf$rYnwxYw t ||¦«S#t$r}|‚d}~wtttf$rYnwxYw t||¦«S#t$r}|‚d}~wtttf$rYnwxYwtd¦«‚)NzNot an ECC DER key)r®r™r¥rÚ IndexErrorr½r¶rº)rªr\Úerrs r.Ú _import_derrÁ¤so€ð Ý+¨G°ZÑ@Ô@Ð@øÝ ðððØˆ øøøøÝ � ¥:Ð .ð ð ð Ø ˆð øøøð Ý  ¨*Ñ5Ô5Ð5øÝ ðððØˆ øøøøÝ � ¥:Ð .ð ð ð Ø ˆð øøøð Ý" 7¨JÑ7Ô7Ð7øÝ ðððØˆ øøøøÝ � ¥:Ð .ð ð ð Ø ˆð øøøð ݘW jÑ1Ô1Ð1øÝ ðððØˆ øøøøÝ � ¥:Ð .ð ð ð Ø ˆð øøøõ Ð)Ñ *Ô *Ð*sm‚’ ;œž;º;¿AÁ A8ÁAÁA8Á7A8Á<B  B5ÂBÂB5Â4B5Â9C à C2ÃCÃC2Ã1C2cóv—| d¦«}t|¦«dvrtd¦«‚ tj|d¦«}g}t|¦«dkrct jd|dd…¦«d}| |dd|z…¦«|d|zd…}t|¦«dk°c|d|dkrtd¦«‚|d d ¦«r¬t  ¦«D]c\}}|j €Œ |j  d ¦«sŒ(t|j  d ¦«d ¦«}|d|krnŒdtd |z¦«‚t|d |j¬¦«}nO|ddkr+t|d¦«\} } t!d| | ¬¦«}ntd|dz¦«‚n8#t"t$tjf$rtd|dz¦«‚wxYw|S)Nó r˜zNot an openssh public keyrÑr—rsrzMismatch in openssh public keyó ecdsa-sha2-ú ecdsa-sha2rqrÿzUnsupported ECC curve: r¥ó ssh-ed25519r ršzUnsupported SSH key type: zError parsing SSH key type: )rzr=r¥r#Ú a2b_base64rtÚunpackÚappendÚ startswithrAr›ryrr¡rOr¦r”r¿rÚError) rªÚpartsÚ keystringÚkeypartsÚlkrr®r~Úecc_keyr¬r­s r.Ú_import_openssh_publicrÑÅsQ€Ø �MŠM˜$Ñ Ô €EÝ ˆ5�z„z˜ÐÐÝÐ4Ñ5Ô5Ð5ð$DÝÔ'¨¨a¬Ñ1Ô1ˆ àˆÝ�)‰nŒn˜qÒ Ð Ý”˜t Y¨r°¨r¤]Ñ3Ô3°AÔ6ˆBØ �OŠO˜I a¨¨B© hÔ/Ñ 0Ô 0Ð 0Ø! ! b¡& ' 'Ô*ˆIõ�)‰nŒn˜qÒ Ð ð �Œ8�x ”{Ò "Ð "ÝÐ=Ñ>Ô>Ð >ð �Œ8× Ò ˜~Ñ .Ô .ð Få%,§]¢]¡_¤_ð Eð EÑ!� ˜EØ”=Ð(ØØ”}×/Ò/° Ñ=Ô=ðØÝ  ¤×!4Ò!4°SÑ!9Ô!9¸!Ô!<Ñ=Ô=�ؘA”; &Ò(Ð(Ø�Eð)õ!Ð!:¸VÑ!CÑDÔDÐDå(¨°!¬ÀÄ ÐJÑJÔJˆGˆGð�1ŒX˜Ò 'Ð 'Ý-¨h°q¬kÑ:Ô:‰DˆAˆqÝ i¸ÀAÐFÑFÔFˆGˆGåÐ9¸EÀ!¼HÑDÑEÔEÐ Eøøå � ¥8¤>Ð 2ðDðDðDÝÐ7¸%À¼(ÑBÑCÔCÐCðDøøøð €Ns ·G HÈ5H6có’—ddlm}m}m}m}|||¦«\}}ddt dfi}| d¦«�r||¦«\} }| tvrtd| z¦«‚t| } | j dzd z} ||¦«\} }t| d ¦«d krtd ¦«‚t| ¦«d | zdzkrtd¦«‚tj| dd| z…¦«} tj| d| zd…¦«}||¦«\}}tj|¦«}|| dœ}n\||vrF||\}}}||¦«\} }|| ¦«\} }||¦«\}}|d|…}||dœ}ntd|z¦«‚||¦«\}}||¦«td| |dœ|¤ŽS)NrÑ)Úimport_openssh_private_genericÚ read_bytesÚ read_stringÚ check_paddingrŒr rerÅzUnsupported ECC curve %srÛrÜrr—z/Only uncompressed OpenSSH EC keys are supportedrÿzIncorrect public key length)rür®)rýr®zUnsupport SSH agent key type:)r‘r’r�)Ú_opensshrÓrÔrÕrÖr¦rÊrAr™rßrr¥r=r rr”)ÚdataÚpasswordrÓrÔrÕrÖÚkey_typeÚ decryptedÚ eddsa_keysÚecdsa_curve_namer®r¯r@r‘r’rbrürPrr­Úseed_lenÚprivate_public_keyrýÚ_Úpaddeds r.Ú_import_openssh_private_eccrâósƒ€ðCðCðCðCðCðCðCðCðCðCðCðCð9Ð8¸¸xÑHÔHÑ€Hˆið ˜ Õ#=¸rÐBð€Jð ×Ò˜<Ñ(Ô(ñ#Eà&1 k°)Ñ&<Ô&<Ñ#И)Ø ¥7Ð *Ð *Ý'Ð(BÐEUÑ(UÑVÔVÐ VÝÐ(Ô)ˆØÔ+¨aÑ/°AÑ5ˆ à *  ¨9Ñ 5Ô 5ш �Iå � ˜1” Ñ Ô  !Ò #Ð #ÝÐNÑOÔOÐ OÝ ˆz‰?Œ?˜a -Ñ/°!Ñ3Ò 3Ð 3ÝÐ:Ñ;Ô;Ð ;åÔ$ Z°°!°M±/Ð0AÔ%BÑCÔCˆÝÔ$ Z°°-±Ð0@Ð0@Ô%AÑBÔBˆà!+ ¨IÑ!6Ô!6ш �YÝ Ô ˜{Ñ +Ô +ˆàÐ#3Ð4Ð4ˆˆà �ZÐ Ð à8BÀ8Ô8LÑ5ˆ Ð+¨Xà *  ¨9Ñ 5Ô 5ш �IØ2Ð2°:Ñ>Ô>ш�à(2¨ °9Ñ(=Ô(=Ñ%ИIØ! ) 8 )Ô,ˆà¨Ð4Ð4ˆˆåÐ8¸8ÑCÑDÔDÐDà� ˜IÑ&Ô&�I€A€vØ€M�&ÑÔÐå Ð @˜W¨gÐ @Ð @¸Ð @Ð @Ð@r0có —t|¦«dkrtd¦«‚td¦«}d}t|¦«}|ddz }|dxxdzcc<tj|d¬ ¦«}||krtd ¦«‚|d krd S|d zd z |z}|d z|z|zd z|z} | |¦«}||z|z} tj| |¦«} | d z|kr|| z } n#t$rtd¦«‚wxYw| |fS)a~Import an Ed25519 ECC public key, encoded as raw bytes as described in RFC8032_. Args: encoded (bytes): The Ed25519 public key to import. It must be 32 bytes long. Returns: :class:`EccKey` : a new ECC key object Raises: ValueError: when the given key cannot be parsed. .. _RFC8032: https://datatracker.ietf.org/doc/html/rfc8032 rez9Incorrect length. Only Ed25519 public keys are supported.r‰l£x²&(7Z/· ;(P8ÑsÝe:Ì8ÎÛ w6RrrÛrr r zInvalid Ed25519 key (y)rÑ©rrÑrÿzInvalid Ed25519 public key)r=r¥r rÙrr,Ú_tonelli_shanks© rªrFrür­Úx_lsbr’ÚuÚvÚv_invÚx2r‘s r.r¦r¦*sP€õ" ˆ7�|„|�rÒÐÝÐTÑUÔUÐUåÐRÑSÔS€AØU€Aå�'ÑÔ€AØ ˆbŒE�Q‰J€EØ€b€E€E„EˆT�M€E€E�EÝÔ  ¨hÐ7Ñ7Ô7€GØ�!‚|€|ÝÐ2Ñ3Ô3Ð3Ø�!‚|€|؈tà �!‰�a‰˜1Ñ€AØ �1‰*�q‰.˜AÑ  Ñ ! QÑ&€Að7Ø— ’ ˜!‘ ” ˆØ�%‰i˜1‰_ˆÝÔ)¨"¨aÑ0Ô0ˆØ �a‰K˜EÒ !Ð !ؘ'‘kˆGøøÝ ð7ð7ð7ÝÐ5Ñ6Ô6Ð6ð7øøøà �GÐ Ðs Â.AC/Ã/D có—t|¦«dkrtd¦«‚td¦«}d}|dd…}t|d¦«dz }tj|d¬ ¦«}||krtd ¦«‚|d krd S|d zd z |z}|d z|z|zd z |z} | |¦«}||z|z} tj| |¦«} | d z|kr|| z } n#t$rtd¦«‚wxYw| |fS)azImport an Ed448 ECC public key, encoded as raw bytes as described in RFC8032_. Args: encoded (bytes): The Ed448 public key to import. It must be 57 bytes long. Returns: :class:`EccKey` : a new ECC key object Raises: ValueError: when the given key cannot be parsed. .. _RFC8032: https://datatracker.ietf.org/doc/html/rfc8032 rz7Incorrect length. Only Ed448 public keys are supported.r‘lVgþÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNrrÛr r zInvalid Ed448 key (y)rÑrärÿzInvalid Ed448 public key)r=r¥r rrr,råræs r.r§r§WsM€õ" ˆ7�|„|�rÒÐÝÐRÑSÔSÐSåðCñ Dô D€AØz€Aà���Œ €AÝ �˜”Ñ Ô  Ñ "€EÝÔ  ¨hÐ7Ñ7Ô7€GØ�!‚|€|ÝÐ0Ñ1Ô1Ð1Ø�!‚|€|؈tà �!‰�a‰˜1Ñ€AØ �1‰*�q‰.˜AÑ  Ñ ! QÑ&€Að5Ø— ’ ˜!‘ ” ˆØ�%‰i˜1‰_ˆÝÔ)¨"¨aÑ0Ô0ˆØ �a‰K˜EÒ !Ð !ؘ'‘kˆGøøÝ ð5ð5ð5ÝÐ3Ñ4Ô4Ð4ð5øøøà �GÐ Ðs Â&AC'Ã'DcóÀ—ddlm}t|¦«}|�t|¦«}| d¦«r;t |¦«}| ||¦«\}}}t ||¦«}|S| d¦«r™t |¦«}d} d} tj| dz| zd |tj ¬ ¦«}| ||¦«\} }}|rd} t| |¦«}n,#t$r} | ‚d} ~ wt$rtd ¦«‚wxYw|S| d ¦«rt|¦«St|¦«dkr)t|d¦«d krt||¦«St|¦«dkr9t|d¦«dvr"|€td¦«‚t!||¬¦«Std¦«‚)a Import an ECC key (public or private). Args: encoded (bytes or multi-line string): The ECC key to import. The function will try to automatically detect the right format. Supported formats for an ECC **public** key: * X.509 certificate: binary (DER) or ASCII (PEM). * X.509 ``subjectPublicKeyInfo``: binary (DER) or ASCII (PEM). * SEC1_ (or X9.62), as ``bytes``. NIST P curves only. You must also provide the ``curve_name`` (with a value from the `ECC table`_) * OpenSSH line, defined in RFC5656_ and RFC8709_ (ASCII). This is normally the content of files like ``~/.ssh/id_ecdsa.pub``. Supported formats for an ECC **private** key: * A binary ``ECPrivateKey`` structure, as defined in `RFC5915`_ (DER). NIST P curves only. * A `PKCS#8`_ structure (or the more recent Asymmetric Key Package, RFC5958_): binary (DER) or ASCII (PEM). * `OpenSSH 6.5`_ and newer versions (ASCII). Private keys can be in the clear or password-protected. For details about the PEM encoding, see `RFC1421`_/`RFC1423`_. passphrase (byte string): The passphrase to use for decrypting a private key. Encryption may be applied protected at the PEM level (not recommended) or at the PKCS#8 level (recommended). This parameter is ignored if the key in input is not encrypted. curve_name (string): For a SEC1 encoding only. This is the name of the curve, as defined in the `ECC table`_. .. note:: To import EdDSA private and public keys, when encoded as raw ``bytes``, use: * :func:`Crypto.Signature.eddsa.import_public_key`, or * :func:`Crypto.Signature.eddsa.import_private_key`. Returns: :class:`EccKey` : a new ECC key object Raises: ValueError: when the given key cannot be parsed (possibly because the pass phrase is wrong). .. _RFC1421: https://datatracker.ietf.org/doc/html/rfc1421 .. _RFC1423: https://datatracker.ietf.org/doc/html/rfc1423 .. _RFC5915: https://datatracker.ietf.org/doc/html/rfc5915 .. _RFC5656: https://datatracker.ietf.org/doc/html/rfc5656 .. _RFC8709: https://datatracker.ietf.org/doc/html/rfc8709 .. _RFC5958: https://datatracker.ietf.org/doc/html/rfc5958 .. _`PKCS#8`: https://datatracker.ietf.org/doc/html/rfc5208 .. _`OpenSSH 6.5`: https://flak.tedunangst.com/post/new-openssh-key-format-and-bcrypt-pbkdf .. _SEC1: https://www.secg.org/sec1-v2.pdf rreNs-----BEGIN OPENSSH PRIVATE KEYs-----z-----BEGIN EC PARAMETERS-----z-----END EC PARAMETERS-----z.*?r")Úflagsz(Invalid DER encoding inside the PEM file)rÄrÆrsszNo curve name was provided)rzECC key format is not supported)r`rfrrÊrr¨râÚreÚsubÚDOTALLrÁr™r¥rÑr=rr¡) rªr\rrfÚ text_encodedÚopenssh_encodedÚmarkerÚenc_flagr-Úecparams_startÚ ecparams_endÚ der_encodedÚuefs r.Ú import_keyrúƒs0€ð~ÐÐÐÐÐå�gÑÔ€GØÐݘZÑ(Ô(ˆ ð×ÒÐ;Ñ<Ô<ðݘW‘~”~ˆ Ø,/¯JªJ°|ÀZÑ,PÔ,PÑ)ˆ˜ Ý,¨_¸jÑIÔIˆØˆ à × Ò ˜HÑ %Ô %ðå˜W‘~”~ˆ ð9ˆØ4ˆ Ý”v˜n¨uÑ4°|ÑCÀRØ*Ý$&¤Ið/ñ/ô/ˆ ð),¯ ª °<ÀÑ(LÔ(LÑ%ˆ �V˜XØ ð ØˆJð IÝ  ¨jÑ9Ô9ˆFˆFøÝ$ð ð ð ØˆIøøøøÝð Ið Ið IÝÐGÑHÔHÐ Hð Iøøøàˆ ð×ÒÐ:Ñ;Ô;ð/Ý% gÑ.Ô.Ð.õ ˆ7�|„|�aÒÐ�D ¨¤Ñ,Ô,°Ò4Ð4ݘ7 JÑ/Ô/Ð/õ ˆ7�|„|�aÒÐ�D ¨¤Ñ,Ô,°Ð?Ð?Ø Ð ÝÐ9Ñ:Ô:Ð :Ý! '°jÐAÑAÔAÐAå Ð6Ñ 7Ô 7Ð7sÃ&C7Ã7 D ÄDÄD Ú__main__lýö_,)¶NÌ$ÔcÐ hKf-5lkrs£ðð>&Ð%Ð%Ð%Ð%Ð%à € € € Ø € € € Ø€€€Ø"Ð"Ð"Ð"Ð"Ð"àGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGØ;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à'Ð'Ð'Ð'Ð'Ð'ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð,ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð=ð@ð@ð@ð@ð@ð@ð@ð@ð@ð@ð)Ð(Ð(Ð(Ð(Ð(Ð(Ð(à*Ð*Ð*Ð*Ð*Ð*Ø,Ð,Ð,Ð,Ð,Ð,ð $Ð #Ð$=ð@ñ ô €ð>)Ð(Ð)DðGñô€ ð"'Ð &Ð'@ðCñô€ ð,ððð4 ˆ�HÐ\Ñ ]Ô ]€Ø €ððð€ ð$4ð$4ð$4ðN € � „ € Ø ððð€ ð$4ð$4ð$4ðN € � „ € Ø ððð€ ð$4ð$4ð$4ðN € � „ € Ø ððð€ ð$4ð$4ð$4ðN € � „ € Ø ððð€ ð$4ð$4ð$4ðN € � „ € Ø ð˜IÐ&€ ð:ð:ð:ð, € �„€Øð˜Ð € ð6ð6ð6ð: € � „ € Øð ð ð ð ð ˜Jñ ô ð ðJ'ðJ'ðJ'ðJ'ðJ'ˆvñJ'ôJ'ðJ'ð\ ˆ�'˜&”/Ô$ g¨f¤oÔ&8¸&Ñ AÔ A€Øˆv„×Ò &ÐÑ)Ô)€Ø‡‚ˆt�}Š}�Z¨Ñ.Ô.Ñ/Ô/Ð/Ø ˆD�*à ˆ�'˜&”/Ô$ g¨f¤oÔ&8¸&Ñ AÔ A€Øˆv„×Ò &ÐÑ)Ô)€Ø‡‚ˆt�}Š}�Z¨Ñ.Ô.Ñ/Ô/Ð/Ø ˆD�*à ˆ�'˜&”/Ô$ g¨f¤oÔ&8¸&Ñ AÔ A€Øˆv„×Ò &ÐÑ)Ô)€Ø‡‚ˆt�}Š}�Z¨Ñ.Ô.Ñ/Ô/Ð/Ø ˆD�*à ˆ�'˜&”/Ô$ g¨f¤oÔ&8¸&Ñ AÔ A€Øˆv„×Ò &ÐÑ)Ô)€Ø‡‚ˆt�}Š}�Z¨Ñ.Ô.Ñ/Ô/Ð/Ø ˆD�*à ˆ�'˜&”/Ô$ g¨f¤oÔ&8¸&Ñ AÔ A€Øˆv„×Ò &ÐÑ)Ô)€Ø‡‚ˆt�}Š}�Z¨Ñ.Ô.Ñ/Ô/Ð/Ø ˆD�*à ˆH�W˜YÔ'Ô*¨G°IÔ,>Ô,AÀ9Ñ MÔ M€ Ø �)Ô × %Ò %¨ Ð %Ñ 2Ô 2€Ø‡‚ˆt�}Š}�]¨GÑ4Ô4Ñ5Ô5Ð5Ø ˆw˜ à ˆ(�7˜7Ô#Ô&¨°Ô(8Ô(;¸WÑ EÔ E€Ø�Ô×!Ò! GÐ!Ñ,Ô,€Ø‡‚ˆt�}Š}�[¨%Ñ0Ô0Ñ1Ô1Ð1Ø ˆU�KðH6ðH6ðH6ðH6ðH6ˆVñH6ôH6ðH6ðVðððD3ð3ð3ðl5>ð5>ð5>ð5>ðp1Eð1Eð1Eðh/Nð/Nð/Nð/NðdTðTðTð81ð1ð1ð +ð+ð+ðB+ð+ð+ð\4Að4Að4Aðn*ð*ð*ðZ)ð)ð)ðXq8ðq8ðq8ðq8ðh ˆzÒÐà€K€K€KàJ€Aà �FŒOÔ × "Ò "Ñ $Ô $€EØ €Eà ˆDŒI‰KŒK€EØ ˆU�5‰\Œ\ððˆØ˜‘ˆˆØ €Eˆ+˜ ˜œ ™ œ  eÑ+¨uÑ4°tÑ;¸TÑBÔBÐBà ˆDŒI‰KŒK€EØ ˆU�5‰\Œ\ððˆØ˜!‘ˆˆØ €EÐ # i d¤i¡k¤k°EÑ&9¸UÑ%BÀTÑ%IÈ4ÑPÔPÐPÐPÐPð#Ðr0