26#ifndef CRYPT_SM9_EAL_H
27#define CRYPT_SM9_EAL_H
29#include "hitls_build.h"
30#ifdef HITLS_CRYPTO_SM9
33#include "crypt_types.h"
34#include "bsl_params.h"
35#include "crypt_errno.h"
42typedef struct SM9_Ctx_st CRYPT_SM9_Ctx;
48CRYPT_SM9_Ctx *CRYPT_SM9_NewCtx(
void);
55CRYPT_SM9_Ctx *CRYPT_SM9_DupCtx(
const CRYPT_SM9_Ctx *ctx);
61void CRYPT_SM9_FreeCtx(CRYPT_SM9_Ctx *ctx);
68int32_t CRYPT_SM9_Gen(CRYPT_SM9_Ctx *ctx);
87int32_t CRYPT_SM9_SetPubKeyEx(CRYPT_SM9_Ctx *ctx,
const BSL_Param *param);
102int32_t CRYPT_SM9_SetPrvKeyEx(CRYPT_SM9_Ctx *ctx,
const BSL_Param *param);
110int32_t CRYPT_SM9_GetPubKeyEx(
const CRYPT_SM9_Ctx *ctx, BSL_Param *param);
118int32_t CRYPT_SM9_GetPrvKeyEx(
const CRYPT_SM9_Ctx *ctx, BSL_Param *param);
130int32_t CRYPT_SM9_Sign(
const CRYPT_SM9_Ctx *ctx, int32_t mdId,
131 const uint8_t *data, uint32_t dataLen,
132 uint8_t *sign, uint32_t *signLen);
144int32_t CRYPT_SM9_Verify(
const CRYPT_SM9_Ctx *ctx, int32_t mdId,
145 const uint8_t *data, uint32_t dataLen,
146 const uint8_t *sign, uint32_t signLen);
157int32_t CRYPT_SM9_Encrypt(
const CRYPT_SM9_Ctx *ctx,
158 const uint8_t *data, uint32_t dataLen,
159 uint8_t *out, uint32_t *outLen);
170int32_t CRYPT_SM9_Decrypt(
const CRYPT_SM9_Ctx *ctx,
171 const uint8_t *data, uint32_t dataLen,
172 uint8_t *out, uint32_t *outLen);
182int32_t CRYPT_SM9_ComputeShareKey(
const CRYPT_SM9_Ctx *selfCtx,
const CRYPT_SM9_Ctx *peerCtx,
183 uint8_t *out, uint32_t *outLen);
193int32_t CRYPT_SM9_Ctrl(CRYPT_SM9_Ctx *ctx, int32_t cmd,
void *val, uint32_t valLen);
201int32_t CRYPT_SM9_Check(int32_t checkType,
const CRYPT_SM9_Ctx *ctx1,
const CRYPT_SM9_Ctx *ctx2);
209int32_t CRYPT_SM9_Cmp(
const CRYPT_SM9_Ctx *ctx1,
const CRYPT_SM9_Ctx *ctx2);