16#ifndef HITLS_CMS_LOCAL_H
17#define HITLS_CMS_LOCAL_H
19#include "hitls_build.h"
21#include "hitls_x509_local.h"
22#include "crypt_eal_md.h"
23#include "hitls_cert_local.h"
24#include "hitls_pki_crl.h"
30#ifdef HITLS_PKI_CMS_SIGNEDDATA
32#define HITLS_CMS_SIGNEDDATA_SIGNERINFO_V1 0x01
33#define HITLS_CMS_SIGNEDDATA_SIGNERINFO_V3 0x03
42 CRYPT_EAL_MdCtx *mdCtx;
49#define CMS_SignerInfos BslList
58} CMS_EncapContentInfo;
60#define HITLS_CMS_FLAG_GEN 0x01
61#define HITLS_CMS_FLAG_PARSE 0x02
62#define HITLS_CMS_FLAG_NO_SIGNEDATTR 0x08
68typedef struct _CMS_SignerInfo {
70 BSL_ASN1_List *issuerName;
71 BSL_Buffer certSerialNum;
72 HITLS_X509_ExtSki subjectKeyId;
74 HITLS_X509_Attrs *signedAttrs;
75 HITLS_X509_Asn1AlgId sigAlg;
76 HITLS_X509_Attrs *unsignedAttrs;
83#define HITLS_CMS_UNINIT 0
84#define HITLS_CMS_SIGN_INIT 1
85#define HITLS_CMS_VERIFY_INIT 2
86#define HITLS_CMS_SIGN_FINISHED 3
87#define HITLS_CMS_VERIFY_FINISHED 4
94 HITLS_X509_List *digestAlg;
95 CMS_EncapContentInfo encapCont;
96 HITLS_X509_List *certs;
97 HITLS_X509_List *crls;
98 CMS_SignerInfos *signerInfos;
103 HITLS_PKI_LibCtx *libCtx;
104 const char *attrName;
116typedef struct _HITLS_CMS {
119 CMS_SignedData *signedData;
129int32_t HITLS_CMS_ParseSignedData(HITLS_PKI_LibCtx *libCtx,
const char *attrName,
const BSL_Buffer *encode,
130 HITLS_CMS **signedData);
136CMS_SignerInfo *CMS_SignerInfoNew(uint32_t flag);
138void CMS_AlgIdFree(
void *algId);
147int32_t HITLS_CMS_GenSignedDataBuff(int32_t format, HITLS_CMS *cms,
BSL_Buffer *encode);
153void HITLS_CMS_SignerInfoFree(
void *signerInfo);
158int32_t HITLS_CMS_AddMd(HITLS_X509_List *list, int32_t mdId);
163int32_t HITLS_CMS_SignedDataCtrl(HITLS_CMS *cms, int32_t cmd,
void *val, uint32_t valLen);
168int32_t HITLS_CMS_AddCert(HITLS_X509_List **list, HITLS_X509_Cert *cert);
173int32_t HITLS_CMS_AddCrl(HITLS_X509_List **list, HITLS_X509_Crl *crl);
178int32_t HITLS_CMS_SignedDataInit(HITLS_CMS *cms, int32_t option,
const BSL_Param *param);
183int32_t HITLS_CMS_SignedDataUpdate(HITLS_CMS *cms,
const BSL_Buffer *input);
188int32_t HITLS_CMS_SignedDataFinal(HITLS_CMS *cms,
const BSL_Param *param);
192#ifdef HITLS_PKI_CMS_DATA
197#ifdef HITLS_PKI_CMS_DIGESTINFO
220int32_t HITLS_CMS_GenBuff(int32_t format, HITLS_CMS *cms,
const BSL_Param *optionalParam,
BSL_Buffer *encode);
234int32_t HITLS_CMS_GenFile(int32_t format, HITLS_CMS *cms,
const BSL_Param *optionalParam,
const char *path);