19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_DSA
24#include "crypt_types.h"
25#include "bsl_params.h"
33#ifndef CRYPT_DSA_TRY_MAX_CNT
34#define CRYPT_DSA_TRY_MAX_CNT 100
37#define CRYPT_DSA_FFC_PARAM 1
38#define CRYPT_DH_FFC_PARAM 2
40#define CRYPT_DISABLE_SP800_KEYGEN_FLAG 0
41#define CRYPT_ENABLE_SP800_KEYGEN_FLAG 1
44typedef struct DSA_Para CRYPT_DSA_Para;
47typedef struct DSA_Ctx CRYPT_DSA_Ctx;
63CRYPT_DSA_Ctx *CRYPT_DSA_NewCtx(
void);
74CRYPT_DSA_Ctx *CRYPT_DSA_NewCtxEx(
void *libCtx);
85CRYPT_DSA_Ctx *CRYPT_DSA_DupCtx(CRYPT_DSA_Ctx *dsaCtx);
93void CRYPT_DSA_FreeCtx(CRYPT_DSA_Ctx *ctx);
112void CRYPT_DSA_FreePara(CRYPT_DSA_Para *para);
127int32_t CRYPT_DSA_SetPara(CRYPT_DSA_Ctx *ctx,
const CRYPT_DsaPara *para);
141int32_t CRYPT_DSA_GetPara(
const CRYPT_DSA_Ctx *ctx,
CRYPT_DsaPara *para);
152uint32_t CRYPT_DSA_GetBits(
const CRYPT_DSA_Ctx *ctx);
163uint32_t CRYPT_DSA_GetSignLen(
const CRYPT_DSA_Ctx *ctx);
177int32_t CRYPT_DSA_Gen(CRYPT_DSA_Ctx *ctx);
200int32_t CRYPT_DSA_Sign(
const CRYPT_DSA_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
201 uint8_t *sign, uint32_t *signLen);
223int32_t CRYPT_DSA_SignData(
const CRYPT_DSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
224 uint8_t *sign, uint32_t *signLen);
244int32_t CRYPT_DSA_VerifyData(
const CRYPT_DSA_Ctx *ctx,
const uint8_t *data, uint32_t dataLen,
245 const uint8_t *sign, uint32_t signLen);
266int32_t CRYPT_DSA_Verify(
const CRYPT_DSA_Ctx *ctx, int32_t algId,
const uint8_t *data, uint32_t dataLen,
267 const uint8_t *sign, uint32_t signLen);
283int32_t CRYPT_DSA_SetPrvKey(CRYPT_DSA_Ctx *ctx,
const CRYPT_DsaPrv *prv);
299int32_t CRYPT_DSA_SetPubKey(CRYPT_DSA_Ctx *ctx,
const CRYPT_DsaPub *pub);
314int32_t CRYPT_DSA_GetPrvKey(
const CRYPT_DSA_Ctx *ctx,
CRYPT_DsaPrv *prv);
329int32_t CRYPT_DSA_GetPubKey(
const CRYPT_DSA_Ctx *ctx,
CRYPT_DsaPub *pub);
344int32_t CRYPT_DSA_SetParaEx(CRYPT_DSA_Ctx *ctx,
const BSL_Param *para);
358int32_t CRYPT_DSA_GetParaEx(
const CRYPT_DSA_Ctx *ctx, BSL_Param *para);
374int32_t CRYPT_DSA_SetPrvKeyEx(CRYPT_DSA_Ctx *ctx,
const BSL_Param *para);
390int32_t CRYPT_DSA_SetPubKeyEx(CRYPT_DSA_Ctx *ctx,
const BSL_Param *para);
405int32_t CRYPT_DSA_GetPrvKeyEx(
const CRYPT_DSA_Ctx *ctx, BSL_Param *para);
420int32_t CRYPT_DSA_GetPubKeyEx(
const CRYPT_DSA_Ctx *ctx, BSL_Param *para);
422#ifdef HITLS_CRYPTO_DSA_CMP
437int32_t CRYPT_DSA_Cmp(
const CRYPT_DSA_Ctx *a,
const CRYPT_DSA_Ctx *b);
439#define CRYPT_DSA_Cmp NULL
454int32_t CRYPT_DSA_Ctrl(CRYPT_DSA_Ctx *ctx, int32_t opt,
void *val, uint32_t len);
465int32_t CRYPT_DSA_GetSecBits(
const CRYPT_DSA_Ctx *ctx);
467#ifdef HITLS_CRYPTO_DSA_CHECK
480int32_t CRYPT_DSA_Check(uint32_t checkType,
const CRYPT_DSA_Ctx *pkey1,
const CRYPT_DSA_Ctx *pkey2);
CRYPT_Data CRYPT_DsaPrv
定义 crypt_types.h:268
CRYPT_Data CRYPT_DsaPub
定义 crypt_types.h:407