22#ifndef CRYPT_EAL_IMPLPROVIDER_H
23#define CRYPT_EAL_IMPLPROVIDER_H
26#include "bsl_params.h"
27#include "crypt_types.h"
33#define CRYPT_EAL_FUNC_END {0, NULL}
34#define CRYPT_EAL_ALGINFO_END {0, NULL, NULL}
42typedef void (CRYPT_EAL_CvtVoid)(void);
45#define CRYPT_EAL_CAP_GETENTROPY 1
46#define CRYPT_EAL_CAP_CLEANENTROPY 2
47#define CRYPT_EAL_CAP_GETNONCE 3
48#define CRYPT_EAL_CAP_CLEANNONCE 4
51#define CRYPT_EAL_CAP_MGRCTXCTRL 5
53#define BSL_SAL_CAP_LOAD_LIB 6
54#define BSL_SAL_CAP_GET_FUNC_ADDR 7
55#define BSL_SAL_CAP_UNLOAD_LIB 8
57typedef int32_t (*CRYPT_EAL_ProvMgrCtrlCb)(
void *mgrCtx, int32_t cmd,
void *val, uint32_t valLen);
60 CRYPT_EAL_MGR_GETSEEDCTX,
61 CRYPT_EAL_MGR_GETLIBCTX,
62} CRYPT_EAL_PROVMGRCTRL;
65#define CRYPT_EAL_PROVCB_FREE 1
66#define CRYPT_EAL_PROVCB_QUERY 2
67#define CRYPT_EAL_PROVCB_CTRL 3
68#define CRYPT_EAL_PROVCB_GETCAPS 4
71typedef void (*CRYPT_EAL_ProvFreeCb)(
void *provCtx);
73#define CRYPT_EAL_OPERAID_SYMMCIPHER 1
74#define CRYPT_EAL_OPERAID_KEYMGMT 2
75#define CRYPT_EAL_OPERAID_SIGN 3
76#define CRYPT_EAL_OPERAID_ASYMCIPHER 4
77#define CRYPT_EAL_OPERAID_KEYEXCH 5
78#define CRYPT_EAL_OPERAID_KEM 6
79#define CRYPT_EAL_OPERAID_HASH 7
80#define CRYPT_EAL_OPERAID_MAC 8
81#define CRYPT_EAL_OPERAID_KDF 9
82#define CRYPT_EAL_OPERAID_RAND 10
83#define CRYPT_EAL_OPERAID_DECODER 11
84#define CRYPT_EAL_OPERAID_SELFTEST 12
86typedef int32_t (*CRYPT_EAL_ProvQueryCb)(
void *provCtx, int32_t operaId,
CRYPT_EAL_AlgInfo **algInfos);
88typedef int32_t (*CRYPT_EAL_ProvCtrlCb)(
void *provCtx, int32_t cmd,
void *val, uint32_t valLen);
90#define CRYPT_EAL_GET_GROUP_CAP 1
91#define CRYPT_EAL_GET_SIGALG_CAP 2
102typedef int32_t (*CRYPT_EAL_ProcessFuncCb)(
const BSL_Param *params,
void *args);
105typedef int32_t (*CRYPT_EAL_ProvGetCapsCb)(
void *provCtx, int32_t cmd, CRYPT_EAL_ProcessFuncCb cb,
void *args);
124#define CRYPT_EAL_IMPLCIPHER_NEWCTX 1
125#define CRYPT_EAL_IMPLCIPHER_INITCTX 2
126#define CRYPT_EAL_IMPLCIPHER_UPDATE 3
127#define CRYPT_EAL_IMPLCIPHER_FINAL 4
128#define CRYPT_EAL_IMPLCIPHER_DEINITCTX 5
129#define CRYPT_EAL_IMPLCIPHER_CTRL 6
130#define CRYPT_EAL_IMPLCIPHER_FREECTX 7
131#define CRYPT_EAL_IMPLCIPHER_DUPCTX 8
133typedef void *(*CRYPT_EAL_ImplCipherNewCtx)(
void *provCtx, int32_t algId);
134typedef int32_t (*CRYPT_EAL_ImplCipherInitCtx)(
void *ctx,
const uint8_t *key, uint32_t keyLen,
135 const uint8_t *iv, uint32_t ivLen, BSL_Param *param,
bool enc);
136typedef int32_t (*CRYPT_EAL_ImplCipherUpdate)(
void *ctx,
const uint8_t *in, uint32_t inLen,
137 uint8_t *out, uint32_t *outLen);
138typedef int32_t (*CRYPT_EAL_ImplCipherFinal)(
void *ctx, uint8_t *out, uint32_t *outLen);
139typedef int32_t (*CRYPT_EAL_ImplCipherDeinitCtx)(
void *ctx);
140typedef int32_t (*CRYPT_EAL_ImplCipherCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
141typedef void (*CRYPT_EAL_ImplCipherFreeCtx)(
void *ctx);
142typedef void *(*CRYPT_EAL_ImplCipherDupCtx)(
const void *ctx);
145#define CRYPT_EAL_IMPLPKEYMGMT_NEWCTX 1
146#define CRYPT_EAL_IMPLPKEYMGMT_SETPARAM 2
147#define CRYPT_EAL_IMPLPKEYMGMT_GETPARAM 3
148#define CRYPT_EAL_IMPLPKEYMGMT_GENKEY 4
149#define CRYPT_EAL_IMPLPKEYMGMT_SETPRV 5
150#define CRYPT_EAL_IMPLPKEYMGMT_SETPUB 6
151#define CRYPT_EAL_IMPLPKEYMGMT_GETPRV 7
152#define CRYPT_EAL_IMPLPKEYMGMT_GETPUB 8
153#define CRYPT_EAL_IMPLPKEYMGMT_DUPCTX 9
154#define CRYPT_EAL_IMPLPKEYMGMT_CHECK 10
155#define CRYPT_EAL_IMPLPKEYMGMT_COMPARE 11
156#define CRYPT_EAL_IMPLPKEYMGMT_CTRL 12
157#define CRYPT_EAL_IMPLPKEYMGMT_FREECTX 13
158#define CRYPT_EAL_IMPLPKEYMGMT_COPYPARAM 14
159#define CRYPT_EAL_IMPLPKEYMGMT_IMPORT 15
160#define CRYPT_EAL_IMPLPKEYMGMT_EXPORT 16
162typedef void *(*CRYPT_EAL_ImplPkeyMgmtNewCtx)(
void *provCtx, int32_t algId);
163typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtSetParam)(
void *ctx,
const BSL_Param *param);
164typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtGetParam)(
void *ctx, BSL_Param *param);
165typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtGenKey)(
void *ctx);
166typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtSetPrv)(
void *ctx,
const BSL_Param *param);
167typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtSetPub)(
void *ctx,
const BSL_Param *param);
168typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtGetPrv)(
const void *ctx, BSL_Param *param);
169typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtGetPub)(
const void *ctx, BSL_Param *param);
170typedef void *(*CRYPT_EAL_ImplPkeyMgmtDupCtx)(
const void *ctx);
171typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtCheck)(uint32_t checkType,
const void *ctx1,
const void *ctx2);
172typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtCompare)(
const void *ctx1,
const void *ctx2);
173typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
174typedef void (*CRYPT_EAL_ImplPkeyMgmtFreeCtx)(
void *ctx);
175typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtImport)(
void *ctx,
const BSL_Param *param);
176typedef int32_t (*CRYPT_EAL_ImplPkeyMgmtExport)(
const void *ctx, BSL_Param *param);
179#define CRYPT_EAL_IMPLPKEYSIGN_SIGN 1
180#define CRYPT_EAL_IMPLPKEYSIGN_SIGNDATA 2
181#define CRYPT_EAL_IMPLPKEYSIGN_VERIFY 3
182#define CRYPT_EAL_IMPLPKEYSIGN_VERIFYDATA 4
183#define CRYPT_EAL_IMPLPKEYSIGN_RECOVER 5
184#define CRYPT_EAL_IMPLPKEYSIGN_BLIND 6
185#define CRYPT_EAL_IMPLPKEYSIGN_UNBLIND 7
187typedef int32_t (*CRYPT_EAL_ImplPkeySign)(
void *ctx, int32_t mdAlgId,
const uint8_t *data, uint32_t dataLen,
188 uint8_t *sign, uint32_t *signLen);
189typedef int32_t (*CRYPT_EAL_ImplPkeySignData)(
void *ctx,
const uint8_t *data, uint32_t dataLen,
190 uint8_t *sign, uint32_t *signLen);
191typedef int32_t (*CRYPT_EAL_ImplPkeyVerify)(
const void *ctx, int32_t mdAlgId,
const uint8_t *data, uint32_t dataLen,
192 uint8_t *sign, uint32_t signLen);
193typedef int32_t (*CRYPT_EAL_ImplPkeyVerifyData)(
const void *ctx,
const uint8_t *data, uint32_t dataLen,
194 uint8_t *sign, uint32_t signLen);
195typedef int32_t (*CRYPT_EAL_ImplPkeyRecover)(
const void *ctx, uint8_t *sign, uint32_t signLen,
196 uint8_t *data, uint32_t *dataLen);
197typedef int32_t (*CRYPT_EAL_ImplPkeyBlind)(
void *ctx, int32_t mdAlgId,
const uint8_t *input, uint32_t inputLen,
198 uint8_t *out, uint32_t *outLen);
199typedef int32_t (*CRYPT_EAL_ImplPkeyUnBlind)(
const void *ctx,
const uint8_t *input, uint32_t inputLen,
200 uint8_t *out, uint32_t *outLen);
203#define CRYPT_EAL_IMPLPKEYCIPHER_ENCRYPT 1
204#define CRYPT_EAL_IMPLPKEYCIPHER_DECRYPT 2
205#define CRYPT_EAL_IMPLPKEYCIPHER_HEADD 3
206#define CRYPT_EAL_IMPLPKEYCIPHER_HEMUL 4
208typedef int32_t (*CRYPT_EAL_ImplPkeyEncrypt)(
void *ctx,
const uint8_t *data, uint32_t dataLen,
209 uint8_t *out, uint32_t *outLen);
210typedef int32_t (*CRYPT_EAL_ImplPkeyDecrypt)(
void *ctx,
const uint8_t *data, uint32_t dataLen,
211 uint8_t *out, uint32_t *outLen);
212typedef int32_t (*CRYPT_EAL_ImplPkeyHEAdd)(
const void *ctx,
const BSL_Param *input, uint8_t *out, uint32_t *outLen);
213typedef int32_t (*CRYPT_EAL_ImplPkeyHEMul)(
const void *ctx,
const BSL_Param *input, uint8_t *out, uint32_t *outLen);
216#define CRYPT_EAL_IMPLPKEYEXCH_EXCH 1
217typedef int32_t (*CRYPT_EAL_ImplPkeyExch)(
const void *ctx,
const void *pubCtx, uint8_t *out, uint32_t *outLen);
220#define CRYPT_EAL_IMPLPKEYKEM_ENCAPSULATE_INIT 1
221#define CRYPT_EAL_IMPLPKEYKEM_DECAPSULATE_INIT 2
222#define CRYPT_EAL_IMPLPKEYKEM_ENCAPSULATE 3
223#define CRYPT_EAL_IMPLPKEYKEM_DECAPSULATE 4
225typedef int32_t (*CRYPT_EAL_ImplPkeyEncapsInit)(
const void *ctx, BSL_Param *params);
226typedef int32_t (*CRYPT_EAL_ImplPkeyDecapsInit)(
const void *ctx, BSL_Param *params);
227typedef int32_t (*CRYPT_EAL_ImplPkeyKemEncapsulate)(
const void *ctx, uint8_t *cipher, uint32_t *cipherLen,
228 uint8_t *out, uint32_t *outLen);
229typedef int32_t (*CRYPT_EAL_ImplPkeyKemDecapsulate)(
const void *ctx, uint8_t *data, uint32_t dataLen,
230 uint8_t *out, uint32_t *outLen);
233#define CRYPT_EAL_IMPLMD_NEWCTX 1
234#define CRYPT_EAL_IMPLMD_INITCTX 2
235#define CRYPT_EAL_IMPLMD_UPDATE 3
236#define CRYPT_EAL_IMPLMD_FINAL 4
237#define CRYPT_EAL_IMPLMD_DEINITCTX 5
238#define CRYPT_EAL_IMPLMD_DUPCTX 6
239#define CRYPT_EAL_IMPLMD_CTRL 7
240#define CRYPT_EAL_IMPLMD_FREECTX 8
241#define CRYPT_EAL_IMPLMD_SQUEEZE 9
242#define CRYPT_EAL_IMPLMD_COPYCTX 10
243#define CRYPT_EAL_IMPLMD_GETPARAM 11
245typedef void *(*CRYPT_EAL_ImplMdNewCtx)(
void *provCtx, int32_t algId);
246typedef int32_t (*CRYPT_EAL_ImplMdInitCtx)(
void *ctx, BSL_Param *param);
247typedef int32_t (*CRYPT_EAL_ImplMdUpdate)(
void *ctx,
const uint8_t *input, uint32_t len);
248typedef int32_t (*CRYPT_EAL_ImplMdFinal)(
void *ctx, uint8_t *out, uint32_t *outLen);
249typedef int32_t (*CRYPT_EAL_ImplMdDeInitCtx)(
void *ctx);
250typedef void *(*CRYPT_EAL_ImplMdDupCtx)(
const void *ctx);
251typedef int32_t (*CRYPT_EAL_ImplMdCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
252typedef void (*CRYPT_EAL_ImplMdFreeCtx)(
void *ctx);
253typedef int32_t (*CRYPT_EAL_ImplMdSqueeze)(
void *ctx, uint8_t *out, uint32_t len);
254typedef int32_t (*CRYPT_EAL_ImplMdCopyCtx)(
void *dst,
const void *src);
255typedef int32_t (*CRYPT_EAL_ImplMdGetParam)(
void *ctx, BSL_Param *param);
258#define CRYPT_EAL_IMPLMAC_NEWCTX 1
259#define CRYPT_EAL_IMPLMAC_INIT 2
260#define CRYPT_EAL_IMPLMAC_UPDATE 3
261#define CRYPT_EAL_IMPLMAC_FINAL 4
262#define CRYPT_EAL_IMPLMAC_DEINITCTX 5
263#define CRYPT_EAL_IMPLMAC_REINITCTX 6
264#define CRYPT_EAL_IMPLMAC_CTRL 7
265#define CRYPT_EAL_IMPLMAC_FREECTX 8
266#define CRYPT_EAL_IMPLMAC_SETPARAM 9
267#define CRYPT_EAL_IMPLMAC_DUPCTX 10
269typedef void *(*CRYPT_EAL_ImplMacNewCtx)(
void *provCtx, int32_t algId);
270typedef int32_t (*CRYPT_EAL_ImplMacInit)(
void *ctx,
const uint8_t *key, uint32_t len, BSL_Param *param);
271typedef int32_t (*CRYPT_EAL_ImplMacUpdate)(
void *ctx,
const uint8_t *input, uint32_t len);
272typedef int32_t (*CRYPT_EAL_ImplMacFinal)(
void *ctx, uint8_t *out, uint32_t *outLen);
273typedef int32_t (*CRYPT_EAL_ImplMacDeInitCtx)(
void *ctx);
274typedef int32_t (*CRYPT_EAL_ImplMacReInitCtx)(
void *ctx);
275typedef int32_t (*CRYPT_EAL_ImplMacCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
276typedef void (*CRYPT_EAL_ImplMacFreeCtx)(
void *ctx);
277typedef int32_t (*CRYPT_EAL_ImplMacSetParam)(
void *ctx,
const BSL_Param *param);
278typedef void *(*CRYPT_EAL_ImplMacDupCtx)(
const void *ctx);
281#define CRYPT_EAL_IMPLKDF_NEWCTX 1
282#define CRYPT_EAL_IMPLKDF_SETPARAM 2
283#define CRYPT_EAL_IMPLKDF_DERIVE 3
284#define CRYPT_EAL_IMPLKDF_DEINITCTX 4
285#define CRYPT_EAL_IMPLKDF_CTRL 5
286#define CRYPT_EAL_IMPLKDF_FREECTX 6
287#define CRYPT_EAL_IMPLKDF_DUPCTX 7
289typedef void *(*CRYPT_EAL_ImplKdfNewCtx)(
void *provCtx, int32_t algId);
290typedef int32_t (*CRYPT_EAL_ImplKdfSetParam)(
void *ctx, BSL_Param *param);
291typedef int32_t (*CRYPT_EAL_ImplKdfDerive)(
void *ctx, uint8_t *key, uint32_t keyLen);
292typedef int32_t (*CRYPT_EAL_ImplKdfDeInitCtx)(
void *ctx);
293typedef int32_t (*CRYPT_EAL_ImplKdfCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
294typedef void (*CRYPT_EAL_ImplKdfFreeCtx)(
void *ctx);
295typedef void *(*CRYPT_EAL_ImplKdfDupCtx)(
const void *ctx);
298#define CRYPT_EAL_IMPLRAND_DRBGNEWCTX 1
299#define CRYPT_EAL_IMPLRAND_DRBGINST 2
300#define CRYPT_EAL_IMPLRAND_DRBGUNINST 3
301#define CRYPT_EAL_IMPLRAND_DRBGGEN 4
302#define CRYPT_EAL_IMPLRAND_DRBGRESEED 5
303#define CRYPT_EAL_IMPLRAND_DRBGCTRL 6
304#define CRYPT_EAL_IMPLRAND_DRBGFREECTX 7
306typedef void *(*CRYPT_EAL_ImplRandDrbgNewCtx)(
void *provCtx, int32_t algId, BSL_Param *param);
307typedef int32_t (*CRYPT_EAL_ImplRandDrbgInst)(
void *ctx,
const uint8_t *pers, uint32_t persLen, BSL_Param *param);
308typedef int32_t (*CRYPT_EAL_ImplRandDrbgUnInst)(
void *ctx);
309typedef int32_t (*CRYPT_EAL_ImplRandDrbgGen)(
void *ctx, uint8_t *out, uint32_t outLen,
const uint8_t *adin,
310 uint32_t adinLen, BSL_Param *param);
311typedef int32_t (*CRYPT_EAL_ImplRandDrbgReSeed)(
void *ctx,
const uint8_t *addin, uint32_t addinLen, BSL_Param *param);
312typedef int32_t (*CRYPT_EAL_ImplRandDrbgCtrl)(
void *ctx, int32_t cmd,
void *val, uint32_t valLen);
313typedef void (*CRYPT_EAL_ImplRandDrbgFreeCtx)(
void *ctx);
316#define CRYPT_DECODER_IMPL_NEWCTX 1
317#define CRYPT_DECODER_IMPL_SETPARAM 2
318#define CRYPT_DECODER_IMPL_GETPARAM 3
319#define CRYPT_DECODER_IMPL_DECODE 4
320#define CRYPT_DECODER_IMPL_FREEOUTDATA 5
321#define CRYPT_DECODER_IMPL_FREECTX 6
323typedef void *(*CRYPT_DECODER_IMPL_NewCtx)(
void *provCtx);
324typedef int32_t (*CRYPT_DECODER_IMPL_SetParam)(
void *ctx,
const BSL_Param *param);
325typedef int32_t (*CRYPT_DECODER_IMPL_GetParam)(
void *ctx, BSL_Param *param);
326typedef int32_t (*CRYPT_DECODER_IMPL_Decode)(
void *ctx,
const BSL_Param *inParam, BSL_Param **outParam);
327typedef void (*CRYPT_DECODER_IMPL_FreeOutData)(
void *ctx, BSL_Param *outData);
328typedef void (*CRYPT_DECODER_IMPL_FreeCtx)(
void *ctx);
331#define CRYPT_EAL_IMPLSELFTEST_NEWCTX 1
332#define CRYPT_EAL_IMPLSELFTEST_GETVERSION 2
333#define CRYPT_EAL_IMPLSELFTEST_SELFTEST 3
334#define CRYPT_EAL_IMPLSELFTEST_FREECTX 4
336typedef void *(*CRYPT_EAL_ImplSelftestNewCtx)(
void *provCtx);
337typedef const char *(*CRYPT_EAL_ImplSelftestGetVersion)(
void *ctx);
338typedef int32_t (*CRYPT_EAL_ImplSelftestSelftest)(
void *ctx,
const BSL_Param *param);
339typedef void (*CRYPT_EAL_ImplSelftestFreeCtx)(
void *ctx);
int32_t(* CRYPT_EAL_ImplProviderInit)(CRYPT_EAL_ProvMgrCtx *mgrCtx, BSL_Param *param, CRYPT_EAL_Func *capFuncs, CRYPT_EAL_Func **outFuncs, void **provCtx)
Provider initialization function prototype,
定义 crypt_eal_implprovider.h:120
定义 crypt_eal_implprovider.h:36