20#include "hitls_type.h"
21#include "hitls_cert_type.h"
22#include "hitls_cert_reg.h"
23#include "hitls_cert.h"
25#include "tls_config.h"
34#ifdef HITLS_TLS_PROTO_TLCP11
44 uint32_t currentCertKeyType;
46 BSL_HASH_Hash *certPairs;
51#ifndef HITLS_TLS_FEATURE_PROVIDER
55 void *defaultPasswdCbUserData;
56#ifdef HITLS_TLS_CONFIG_CERT_CALLBACK
57 HITLS_VerifyCb verifyCb;
59#ifdef HITLS_TLS_FEATURE_CERT_CB
63 HITLS_Lib_Ctx *libCtx;
67#define LIBCTX_FROM_CERT_MGR_CTX(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->libCtx)
68#define ATTR_FROM_CERT_MGR_CTX(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->attrName)
71#define SAL_CERT_GET_VERIFY_STORE(mgrCtx) ((mgrCtx)->verifyStore)
72#define SAL_CERT_GET_VERIFY_STORE_EX(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->verifyStore)
74#define SAL_CERT_GET_CHAIN_STORE(mgrCtx) ((mgrCtx)->chainStore)
75#define SAL_CERT_GET_CHAIN_STORE_EX(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->chainStore)
77#define SAL_CERT_GET_CERT_STORE(mgrCtx) ((mgrCtx)->certStore)
78#define SAL_CERT_GET_CERT_STORE_EX(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->certStore)
80#define SAL_CERT_GET_DEFAULT_PWD_CB(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->defaultPasswdCb)
81#define SAL_CERT_GET_DEFAULT_PWD_CB_USRDATA(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->defaultPasswdCbUserData)
83#ifdef HITLS_TLS_CONFIG_CERT_CALLBACK
84#define SAL_CERT_GET_VERIIFY_CB(mgrCtx) (((mgrCtx) == NULL) ? NULL : (mgrCtx)->verifyCb)
88#define SAL_CERT_PAIR_GET_X509(certPair) ((certPair)->cert)
89#define SAL_CERT_PAIR_GET_X509_EX(certPair) (((certPair) == NULL) ? NULL : (certPair)->cert)
91#define SAL_CERT_PAIR_GET_CHAIN(certPair) ((certPair)->chain)
93#ifdef HITLS_TLS_PROTO_TLCP11
94#define SAL_CERT_PAIR_GET_TLCP_ENC_CERT(certPair) ((certPair)->encCert)
95#define SAL_CERT_PAIR_GET_TLCP_ENC_CERT_EX(certPair) (((certPair) == NULL) ? NULL : (certPair)->encCert)
108void SAL_CERT_PairClear(CERT_MgrCtx *mgrCtx,
CERT_Pair *certPair);
118void SAL_CERT_PairFree(CERT_MgrCtx *mgrCtx,
CERT_Pair *certPair);
128int32_t SAL_CERT_HashDup(CERT_MgrCtx *destMgrCtx, CERT_MgrCtx *srcMgrCtx);
138bool SAL_CERT_MgrIsEnable(
void);
156CERT_MgrCtx *SAL_CERT_MgrCtxNew(
void);
166CERT_MgrCtx *SAL_CERT_MgrCtxProviderNew(HITLS_Lib_Ctx *libCtx,
const char *attrName);
175CERT_MgrCtx *SAL_CERT_MgrCtxDup(CERT_MgrCtx *mgrCtx);
184void SAL_CERT_MgrCtxFree(CERT_MgrCtx *mgrCtx);
204int32_t SAL_CERT_SetChainStore(CERT_MgrCtx *mgrCtx,
HITLS_CERT_Store *store);
214int32_t SAL_CERT_SetVerifyStore(CERT_MgrCtx *mgrCtx,
HITLS_CERT_Store *store);
270HITLS_CERT_Key *SAL_CERT_GetCurrentPrivateKey(CERT_MgrCtx *mgrCtx,
bool isTlcpEncCert);
282int32_t SAL_CERT_AddChainCert(CERT_MgrCtx *mgrCtx,
HITLS_CERT_X509 *cert);
286void SAL_CERT_ClearCurrentChainCerts(CERT_MgrCtx *mgrCtx);
295void SAL_CERT_ClearCertAndKey(CERT_MgrCtx *mgrCtx);
297int32_t SAL_CERT_AddExtraChainCert(CERT_MgrCtx *mgrCtx,
HITLS_CERT_X509 *cert);
299HITLS_CERT_Chain *SAL_CERT_GetExtraChainCerts(CERT_MgrCtx *mgrCtx,
bool isExtraChainCertsOnly);
301void SAL_CERT_ClearExtraChainCerts(CERT_MgrCtx *mgrCtx);
324int32_t SAL_CERT_SetDefaultPasswordCb(CERT_MgrCtx *mgrCtx,
HITLS_PasswordCb cb);
334int32_t SAL_CERT_SetDefaultPasswordCbUserdata(CERT_MgrCtx *mgrCtx,
void *userdata);
344int32_t SAL_CERT_SetVerifyCb(CERT_MgrCtx *mgrCtx, HITLS_VerifyCb cb);
354int32_t SAL_CERT_SetActiveCert(CERT_MgrCtx *mgrCtx,
long option);
365int32_t SAL_CERT_SetCertCb(CERT_MgrCtx *mgrCtx,
HITLS_CertCb certCb,
void *arg);
void HITLS_CERT_Key
Describes the certificate key
定义 hitls_cert_type.h:49
struct BslList HITLS_CERT_Chain
Describes the certificate chain
定义 hitls_cert_type.h:73
void HITLS_CERT_Store
Describes the certificate
定义 hitls_cert_type.h:55
void HITLS_CERT_X509
Describes the x509 certificate
定义 hitls_cert_type.h:37
HITLS_CERT_KeyType
Certificate Public Key Type
定义 hitls_cert_type.h:162
int32_t(* HITLS_CertCb)(HITLS_Ctx *ctx, void *arg)
Process the certificate callback.
定义 hitls_cert.h:931
int32_t(* HITLS_PasswordCb)(char *buf, int32_t bufLen, int32_t flag, void *userdata)
Password Callback
定义 hitls_cert.h:227
struct TlsConfig HITLS_Config
config context
定义 hitls_type.h:41
Structure for certificate management methods
定义 hitls_cert_reg.h:324