16#ifndef CRYPT_LOCAL_TYPES_H
17#define CRYPT_LOCAL_TYPES_H
21#include "crypt_algid.h"
22#include "crypt_types.h"
23#include "crypt_eal_provider.h"
29#define CRYPT_PKEY_FLAG_DUP 0x01
30#define CRYPT_PKEY_FLAG_NEED_EXPORT_CB 0x02
33typedef int32_t (*GetLenFunc)(
const void *ctx);
36typedef void* (*MdNewCtx)(
void *provCtx, int32_t algId);
37typedef int32_t (*MdInit)(
void *data,
const BSL_Param *param);
38typedef int32_t (*MdUpdate)(
void *data,
const uint8_t *input, uint32_t len);
39typedef int32_t (*MdFinal)(
void *data, uint8_t *out, uint32_t *len);
40typedef int32_t (*MdDeinit)(
void *data);
41typedef int32_t (*MdCopyCtx)(
void *dst,
const void *src);
42typedef void* (*MdDupCtx)(
const void *src);
43typedef void (*MdFreeCtx)(
void *data);
44typedef int32_t (*MdGetParam)(
void *data, BSL_Param *param);
45typedef int32_t (*MdSqueeze)(
void *data, uint8_t *out, uint32_t len);
47#ifdef HITLS_CRYPTO_MD_MB
48typedef void *(*MdMBNewCtx)(uint32_t num);
49typedef void (*MdMBFreeCtx)(
void *ctx);
50typedef int32_t (*MdMBInit)(
void *ctx);
51typedef int32_t (*MdMBUpdate)(
void *ctx,
const uint8_t *data[], uint32_t nbytes[], uint32_t num);
52typedef int32_t (*MdMBFinal)(
void *ctx, uint8_t *digest[], uint32_t *outlen, uint32_t num);
81 uint16_t compressionRounds;
82 uint16_t finalizationRounds;
86typedef void *(*PkeyNew)(void);
87typedef void* (*PkeyProvNew)(
void *provCtx, int32_t algId);
88typedef void *(*PkeyDup)(
void *key);
89typedef void (*PkeyFree)(
void *key);
90typedef void *(*PkeyNewParaById)(int32_t id);
92typedef void (*PkeyFreePara)(
void *para);
93typedef int32_t (*PkeySetPara)(
void *key,
const void *para);
94typedef int32_t (*PkeyGetPara)(
const void *key,
void *para);
95typedef int32_t (*PkeyGen)(
void *key);
96typedef uint32_t (*PkeyBits)(
void *key);
97typedef uint32_t (*PkeyGetSignLen)(
void *key);
98typedef int32_t (*PkeyCtrl)(
void *key, int32_t opt,
void *val, uint32_t len);
99typedef int32_t (*PkeySetPrv)(
void *key,
const void *para);
100typedef int32_t (*PkeySetPub)(
void *key,
const void *para);
101typedef int32_t (*PkeyGetPrv)(
const void *key,
void *para);
102typedef int32_t (*PkeyGetPub)(
const void *key,
void *para);
103typedef void *(*PkeyNewPara)(
const void *para);
104typedef int32_t (*PkeySign)(
void *key, int32_t mdAlgId,
const uint8_t *data, uint32_t dataLen,
105 uint8_t *sign, uint32_t *signLen);
106typedef int32_t (*PkeySignData)(
void *key,
const uint8_t *data, uint32_t dataLen,
107 uint8_t *sign, uint32_t *signLen);
108typedef int32_t (*PkeyVerify)(
const void *key, int32_t mdAlgId,
const uint8_t *data, uint32_t dataLen,
109 const uint8_t *sign, uint32_t signLen);
110typedef int32_t (*PkeyVerifyData)(
const void *key,
const uint8_t *data, uint32_t dataLen,
111 const uint8_t *sign, uint32_t signLen);
112typedef int32_t (*PkeyRecover)(
const void *key,
const uint8_t *sign, uint32_t signLen,
113 uint8_t *data, uint32_t *dataLen);
114typedef int32_t (*PkeyComputeShareKey)(
const void *key,
const void *pub, uint8_t *share, uint32_t *shareLen);
115typedef int32_t (*PkeyCrypt)(
const void *key,
const uint8_t *data, uint32_t dataLen, uint8_t *out, uint32_t *outLen);
116typedef int32_t (*PkeyHEOperation)(
const void *ctx,
const BSL_Param *input, uint8_t *out, uint32_t *outLen);
117typedef int32_t (*PkeyCheck)(uint32_t checkType,
const void *key1,
const void *key2);
118typedef int32_t (*PkeyCmp)(
const void *key1,
const void *key2);
119typedef int32_t (*PkeyCopyParam)(
const void *src,
void *dest);
120typedef int32_t (*PkeyGetSecBits)(
const void *key);
121typedef int32_t (*PkeyEncapsulate)(
const void *key, uint8_t *cipher, uint32_t *cipherLen,
122 uint8_t *share, uint32_t *shareLen);
123typedef int32_t (*PkeyDecapsulate)(
const void *key,
const uint8_t *cipher, uint32_t cipherLen,
124 uint8_t *share, uint32_t *shareLen);
126typedef int32_t (*PkeyEncapsInit)(
const void *key,
const void *para);
127typedef int32_t (*PkeyDecapsInit)(
const void *key,
const void *para);
128typedef int32_t (*PkeyBlind)(
void *pkey, int32_t mdAlgId,
const uint8_t *input, uint32_t inputLen,
129 uint8_t *out, uint32_t *outLen);
130typedef int32_t (*PkeyUnBlind)(
const void *pkey,
const uint8_t *input, uint32_t inputLen,
131 uint8_t *out, uint32_t *outLen);
133typedef int32_t (*PkeyImport)(
void *key,
const BSL_Param *params);
135typedef int32_t (*PkeyExport)(
const void *key, BSL_Param *params);
157 PkeySignData signData;
159 PkeyVerifyData verifyData;
161 PkeyComputeShareKey computeShareKey;
164 PkeyHEOperation headd;
165 PkeyHEOperation hemul;
168 PkeyCopyParam copyPara;
169 PkeyEncapsulate pkeyEncaps;
170 PkeyDecapsulate pkeyDecaps;
177 PkeyProvNew provNewCtx;
189 PkeySignData signData;
191 PkeyVerifyData verifyData;
193 PkeyComputeShareKey computeShareKey;
196 PkeyHEOperation headd;
197 PkeyHEOperation hemul;
200 PkeyEncapsInit encapsInit;
201 PkeyDecapsInit decapsInit;
202 PkeyEncapsulate pkeyEncaps;
203 PkeyDecapsulate pkeyDecaps;
214 CRYPT_SYM_AES128 = 0,
222typedef void *(*CipherNewCtx)(
void *provCtx, int32_t alg);
223typedef int32_t (*CipherInitCtx)(
void *ctx,
const uint8_t *key, uint32_t keyLen,
const uint8_t *iv,
224 uint32_t ivLen,
void *param,
bool enc);
225typedef int32_t (*CipherDeInitCtx)(
void *ctx);
226typedef int32_t (*CipherUpdate)(
void *ctx,
const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen);
227typedef int32_t (*CipherFinal)(
void *ctx, uint8_t *out, uint32_t *outLen);
228typedef int32_t (*CipherCtrl)(
void *ctx, int32_t opt,
void *val, uint32_t len);
229typedef void (*CipherFreeCtx)(
void *ctx);
230typedef void *(*CipherDupCtx)(
const void *ctx);
232typedef int32_t (*SetEncryptKey)(
void *ctx,
const uint8_t *key, uint32_t len);
233typedef int32_t (*SetDecryptKey)(
void *ctx,
const uint8_t *key, uint32_t len);
234typedef int32_t (*SetKey)(
void *ctx,
const uint8_t *key, uint32_t len);
236typedef int32_t (*EncryptBlock)(
void *ctx,
const uint8_t *in, uint8_t *out, uint32_t len);
237typedef int32_t (*DecryptBlock)(
void *ctx,
const uint8_t *in, uint8_t *out, uint32_t len);
238typedef void (*DeInitBlockCtx)(
void *ctx);
239typedef int32_t (*CipherStreamProcess)(
void *ctx,
const uint8_t *in, uint8_t *out, uint32_t len);
242 SetEncryptKey setEncryptKey;
243 SetDecryptKey setDecryptKey;
244 EncryptBlock encryptBlock;
245 DecryptBlock decryptBlock;
246 DeInitBlockCtx cipherDeInitCtx;
247 CipherCtrl cipherCtrl;
250 CRYPT_SYM_AlgId algId;
255 CipherInitCtx initCtx;
256 CipherDeInitCtx deinitCtx;
260 CipherFreeCtx freeCtx;
265typedef void* (*KdfNewCtx)(
void *provCtx, int32_t algId);
266typedef int32_t (*KdfSetParam)(
void *ctx,
const BSL_Param *param);
267typedef int32_t (*KdfDerive)(
void *ctx, uint8_t *key, uint32_t keyLen);
268typedef int32_t (*KdfDeinit)(
void *ctx);
269typedef int32_t (*KdfCtrl)(
void *data, int32_t cmd,
void *val, uint32_t valLen);
270typedef void (*KdfFreeCtx)(
void *ctx);
271typedef void *(*KdfDupCtx)(
const void *ctx);
275 KdfSetParam setParam;
289typedef void* (*MacNewCtx)(
void *provCtx, int32_t algId);
291typedef int32_t (*MacInit)(
void *ctx,
const uint8_t *key, uint32_t len,
void *param);
292typedef int32_t (*MacUpdate)(
void *ctx,
const uint8_t *in, uint32_t len);
293typedef int32_t (*MacFinal)(
void *ctx,
const uint8_t *out, uint32_t *len);
294typedef int32_t (*MacDeinit)(
void *ctx);
296typedef int32_t (*MacReinit)(
void *ctx);
297typedef int32_t (*MacCtrl)(
void *ctx, uint32_t opt,
void *val, uint32_t len);
298typedef int32_t (*MacSetParam)(
void *data,
const BSL_Param *param);
299typedef void (*MacFreeCtx)(
void *ctx);
300typedef void* (*MacDupCtx)(
const void *ctx);
312 MacSetParam setParam;
320 CRYPT_SYM_AlgId symId;
340 HCRYPT_MODE_CHACHA20_POLY1305,
343 HCRYPT_MODE_WRAP_NOPAD,
344 HCRYPT_MODE_WRAP_PAD,
365typedef void *(*RandNewCtx)(
void *libCtx, int32_t algId,
CRYPT_RandSeedMethod *seedMethod,
void *seedCtx);
366typedef void *(*RandProvNewCtx)(
void *provCtx, int32_t algId, BSL_Param *param);
367typedef int32_t (*RandDrbgInst)(
void *ctx,
const uint8_t *person, uint32_t persLen,
void *param);
368typedef int32_t (*RandDrbgUnInst)(
void *ctx);
369typedef int32_t (*RandDrbgGen)(
void *ctx, uint8_t *bytes, uint32_t len,
const uint8_t *adin,
370 uint32_t adinLen,
void *param);
371typedef int32_t (*RandDrbgReSeed)(
void *ctx,
const uint8_t *addin, uint32_t addinLen,
void *param);
372typedef int32_t (*RandDrbgCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
373typedef void (*RandDrbgFreeCtx)(
void *ctx);
377 RandProvNewCtx provNewCtx;
379 RandDrbgUnInst unInst;
381 RandDrbgReSeed reSeed;
383 RandDrbgFreeCtx freeCtx;
398 CRYPT_CTRL_GET_MACID = 0,
399 CRYPT_CTRL_GET_SALTLEN,
401 CRYPT_CTRL_GET_KEYLEN
405 CRYPT_PKEY_CHECK_KEYPAIR = 1,
406 CRYPT_PKEY_CHECK_PRVKEY = 2,
407 CRYPT_PKEY_CHECK_MAX,
CRYPT_PKEY_ParaId
定义 crypt_algid.h:208
CRYPT_MD_AlgId
定义 crypt_algid.h:68
定义 crypt_local_types.h:283
定义 crypt_local_types.h:253
定义 crypt_local_types.h:273
定义 crypt_local_types.h:317
定义 crypt_local_types.h:303
定义 crypt_local_types.h:63
定义 crypt_local_types.h:143
定义 crypt_local_types.h:175
定义 crypt_local_types.h:386
定义 crypt_local_types.h:375
定义 crypt_local_types.h:79
定义 crypt_local_types.h:241
定义 crypt_local_types.h:354
EAL_MdMethod mgfMeth
定义 crypt_local_types.h:357
EAL_MdMethod mdMeth
定义 crypt_local_types.h:356
CRYPT_MD_AlgId mdId
定义 crypt_local_types.h:358
CRYPT_MD_AlgId mgfId
定义 crypt_local_types.h:359
int32_t saltLen
定义 crypt_local_types.h:355