19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_SM2
23#include "crypt_types.h"
25#include "bsl_params.h"
32typedef struct SM2_Ctx CRYPT_SM2_Ctx;
34typedef struct EccPara CRYPT_Sm2Para;
43CRYPT_SM2_Ctx *CRYPT_SM2_NewCtx(
void);
54CRYPT_SM2_Ctx *CRYPT_SM2_NewCtxEx(
void *libCtx);
64CRYPT_SM2_Ctx *CRYPT_SM2_DupCtx(CRYPT_SM2_Ctx *ctx);
72void CRYPT_SM2_FreeCtx(CRYPT_SM2_Ctx *ctx);
83uint32_t CRYPT_SM2_GetBits(
const CRYPT_SM2_Ctx *ctx);
96int32_t CRYPT_SM2_Gen(CRYPT_SM2_Ctx *ctx);
98#ifdef HITLS_CRYPTO_SM2_SIGN
108uint32_t CRYPT_SM2_GetSignLen(
const CRYPT_SM2_Ctx *ctx);
131int32_t CRYPT_SM2_Sign(
const CRYPT_SM2_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
132 uint8_t *sign, uint32_t *signLen);
154int32_t CRYPT_SM2_SignData(
const CRYPT_SM2_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
155 uint8_t *sign, uint32_t *signLen);
176int32_t CRYPT_SM2_Verify(
const CRYPT_SM2_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
177 const uint8_t *sign, uint32_t signLen);
197int32_t CRYPT_SM2_VerifyData(
const CRYPT_SM2_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
198 const uint8_t *sign, uint32_t signLen);
213int32_t CRYPT_SM2_SetPrvKey(CRYPT_SM2_Ctx *ctx,
const CRYPT_Sm2Prv *prv);
227int32_t CRYPT_SM2_SetPubKey(CRYPT_SM2_Ctx *ctx,
const CRYPT_Sm2Pub *pub);
241int32_t CRYPT_SM2_GetPrvKey(
const CRYPT_SM2_Ctx *ctx,
CRYPT_Sm2Prv *prv);
255int32_t CRYPT_SM2_GetPubKey(
const CRYPT_SM2_Ctx *ctx,
CRYPT_Sm2Pub *pub);
257#ifdef HITLS_BSL_PARAMS
270int32_t CRYPT_SM2_SetPrvKeyEx(CRYPT_SM2_Ctx *ctx,
const BSL_Param *para);
284int32_t CRYPT_SM2_SetPubKeyEx(CRYPT_SM2_Ctx *ctx,
const BSL_Param *para);
298int32_t CRYPT_SM2_GetPrvKeyEx(
const CRYPT_SM2_Ctx *ctx, BSL_Param *para);
312int32_t CRYPT_SM2_GetPubKeyEx(
const CRYPT_SM2_Ctx *ctx, BSL_Param *para);
328int32_t CRYPT_SM2_Ctrl(CRYPT_SM2_Ctx *ctx, int32_t opt,
void *val, uint32_t len);
330#ifdef HITLS_CRYPTO_SM2_EXCH
344int32_t CRYPT_SM2_KapComputeKey(
const CRYPT_SM2_Ctx *selfCtx,
const CRYPT_SM2_Ctx *peerCtx, uint8_t *out,
348#ifdef HITLS_CRYPTO_SM2_CRYPT
362int32_t CRYPT_SM2_Encrypt(CRYPT_SM2_Ctx *ctx,
const uint8_t *data, uint32_t datalen, uint8_t *out, uint32_t *outlen);
377int32_t CRYPT_SM2_Decrypt(CRYPT_SM2_Ctx *ctx,
const uint8_t *data, uint32_t datalen, uint8_t *out, uint32_t *outlen);
380#ifdef HITLS_CRYPTO_SM2_CMP
391int32_t CRYPT_SM2_Cmp(
const CRYPT_SM2_Ctx *a,
const CRYPT_SM2_Ctx *b);
393#define CRYPT_SM2_Cmp NULL
404int32_t CRYPT_SM2_GetSecBits(
const CRYPT_SM2_Ctx *ctx);
406#ifdef HITLS_CRYPTO_KEY_DECODE_CHAIN
414int32_t CRYPT_SM2_Import(CRYPT_SM2_Ctx *ctx,
const BSL_Param *params);
423int32_t CRYPT_SM2_Export(
const CRYPT_SM2_Ctx *ctx, BSL_Param *params);
426#ifdef HITLS_CRYPTO_SM2_CHECK
438int32_t CRYPT_SM2_Check(uint32_t checkType,
const CRYPT_SM2_Ctx *pkey1,
const CRYPT_SM2_Ctx *pkey2);
CRYPT_Data CRYPT_Sm2Prv
定义 crypt_types.h:289
CRYPT_Data CRYPT_Sm2Pub
定义 crypt_types.h:428