16#ifndef HITLS_PKCS12_LOCAL_H
17#define HITLS_PKCS12_LOCAL_H
19#include "hitls_build.h"
20#ifdef HITLS_PKI_PKCS12
22#include "bsl_asn1_internal.h"
24#include "sal_atomic.h"
25#include "hitls_x509_local.h"
26#include "hitls_pki_cert.h"
27#include "hitls_pki_crl.h"
28#include "crypt_eal_codecs.h"
37} HITLS_PKCS12_ContentInfo;
44} HITLS_PKCS12_MacData;
47typedef struct _HITLS_PKCS12_Bag {
52 HITLS_X509_Cert *cert;
56 HITLS_X509_Attrs *attributes;
57 BSL_SAL_RefCount references;
64typedef struct _HITLS_PKCS12 {
66 HITLS_PKCS12_Bag *key;
67 HITLS_PKCS12_Bag *entityCert;
69 BSL_ASN1_List *secretBags;
70 BSL_ASN1_List *certList;
71 BSL_ASN1_List *crlList;
72 BSL_ASN1_List *keyList;
73 HITLS_PKCS12_MacData *macData;
74 HITLS_PKI_LibCtx *libCtx;
82} HITLS_PKCS12_CommonSafeBag;
88} HITLS_PKCS12_SafeBagAttr;
94 HITLS_X509_Attrs *attributes;
95} HITLS_PKCS12_SafeBag;
97void HITLS_PKCS12_SafeBagFree(HITLS_PKCS12_SafeBag *safeBag);
99HITLS_PKCS12_MacData *HITLS_PKCS12_MacDataNew(
void);
101void HITLS_PKCS12_MacDataFree(HITLS_PKCS12_MacData *macData);
103void HITLS_PKCS12_AttributesFree(
void *attribute);
106 HITLS_PKCS12_KDF_ENCKEY_ID = 1,
107 HITLS_PKCS12_KDF_ENCIV_ID = 2,
108 HITLS_PKCS12_KDF_MACKEY_ID = 3,
109} HITLS_PKCS12_KDF_IDX;
115int32_t HITLS_PKCS12_KDF(HITLS_PKCS12 *p12,
const uint8_t *pwd, uint32_t pwdLen,
116 HITLS_PKCS12_KDF_IDX type,
BSL_Buffer *output);
123#ifdef HITLS_PKI_PKCS12_PARSE
129int32_t HITLS_PKCS12_ParseContentInfo(HITLS_PKI_LibCtx *libCtx,
const char *attrName,
BSL_Buffer *encode,
130 const uint8_t *password, uint32_t passLen,
BSL_Buffer *data);
138int32_t HITLS_PKCS12_ParseAsn1AddList(
BSL_Buffer *encode, BSL_ASN1_List *list, uint32_t parseType);
143int32_t HITLS_PKCS12_ParseSafeBagList(BSL_ASN1_List *bagList,
const uint8_t *password, uint32_t passLen,
149int32_t HITLS_PKCS12_ParseSafeBagAttr(BSL_ASN1_Buffer *attrBuff, HITLS_X509_Attrs *attrList);
154int32_t HITLS_PKCS12_ParseAuthSafeData(
BSL_Buffer *encode,
const uint8_t *password, uint32_t passLen,
160int32_t HITLS_PKCS12_ParseMacData(
BSL_Buffer *encode, HITLS_PKCS12_MacData *macData);
163#ifdef HITLS_PKI_PKCS12_GEN
173int32_t HITLS_PKCS12_EncodeContentInfo(HITLS_PKI_LibCtx *libCtx,
const char *attrName,
BSL_Buffer *input,
179int32_t HITLS_PKCS12_EncodeAsn1List(HITLS_PKCS12 *p12, BSL_ASN1_List *list, uint32_t encodeType,
187int32_t HITLS_PKCS12_BagAddAttr(HITLS_PKCS12_Bag *bag, uint32_t type,
const BSL_Buffer *attrValue);
193int32_t HITLS_PKCS12_BagRefUp(HITLS_PKCS12_Bag *bag);
struct EAL_PkeyCtx CRYPT_EAL_PkeyCtx
定义 crypt_eal_pkey.h:108