19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_ECC
23#include "crypt_algid.h"
24#include "crypt_types.h"
33typedef struct EccPointInfo ECC_Point;
38typedef struct EccPara ECC_Para;
70void ECC_FreePara(ECC_Para *para);
101ECC_Point *ECC_NewPoint(
const ECC_Para *para);
111void ECC_FreePoint(ECC_Point *pt);
123int32_t ECC_CopyPoint(ECC_Point *dst,
const ECC_Point *src);
134ECC_Point *ECC_DupPoint(
const ECC_Point *pt);
148int32_t ECC_PointCmp(
const ECC_Para *para,
const ECC_Point *a,
const ECC_Point *b);
176int32_t ECC_GetPoint2Bn(
const ECC_Para *para, ECC_Point *pt, BN_BigNum *x, BN_BigNum *y);
189int32_t ECC_GetPointDataX(
const ECC_Para *para, ECC_Point *pt, BN_BigNum *x);
204int32_t ECC_PointMul(ECC_Para *para, ECC_Point *r,
205 const BN_BigNum *k,
const ECC_Point *pt);
220int32_t ECC_PointMulAdd(ECC_Para *para, ECC_Point *r,
221 const BN_BigNum *k1,
const BN_BigNum *k2,
const ECC_Point *pt);
236int32_t ECC_EncodePoint(
const ECC_Para *para, ECC_Point *pt, uint8_t *data, uint32_t *dataLen,
251int32_t ECC_DecodePoint(
const ECC_Para *para, ECC_Point *pt,
const uint8_t *data, uint32_t dataLen);
262BN_BigNum *ECC_GetParaH(
const ECC_Para *para);
273BN_BigNum *ECC_GetParaN(
const ECC_Para *para);
284BN_BigNum *ECC_GetParaA(
const ECC_Para *para);
295BN_BigNum *ECC_GetParaB(
const ECC_Para *para);
306BN_BigNum *ECC_GetParaX(
const ECC_Para *para);
317BN_BigNum *ECC_GetParaY(
const ECC_Para *para);
327uint32_t ECC_ParaBits(
const ECC_Para *para);
338ECC_Para *ECC_DupPara(
const ECC_Para *para);
350int32_t ECC_PointCheck(
const ECC_Point *pt);
362ECC_Point *ECC_GetGFromPara(
const ECC_Para *para);
374ReCodeData *ECC_ReCodeK(
const BN_BigNum *k, uint32_t window);
384void ECC_ReCodeFree(ReCodeData *code);
396int32_t ECC_ModOrderInv(
const ECC_Para *para, BN_BigNum *r,
const BN_BigNum *a);
410int32_t ECC_PointAddAffine(
const ECC_Para *para, ECC_Point *r,
const ECC_Point *a,
const ECC_Point *b);
420int32_t ECC_GetSecBits(
const ECC_Para *para);
430void ECC_SetLibCtx(
void *libCtx, ECC_Para *para);
442int32_t ECC_PointBlind(
const ECC_Para *para, ECC_Point *pt);
453int32_t ECC_PointToMont(
const ECC_Para *para, ECC_Point *pt, BN_Optimizer *opt);
464void ECC_PointFromMont(
const ECC_Para *para, ECC_Point *r);
CRYPT_PKEY_ParaId
定义 crypt_algid.h:208
CRYPT_PKEY_PointFormat
定义 crypt_algid.h:370