API参考
载入中...
搜索中...
未找到
crypt_eal_rand.h
1/*
2 * This file is part of the openHiTLS project.
3 *
4 * openHiTLS is licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 *
8 * http://license.coscl.org.cn/MulanPSL2
9 *
10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13 * See the Mulan PSL v2 for more details.
14 */
15
21
22#ifndef CRYPT_EAL_RAND_H
23#define CRYPT_EAL_RAND_H
24
25#include <stdbool.h>
26#include <stdint.h>
27#include "crypt_algid.h"
28#include "crypt_types.h"
29#include "bsl_params.h"
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
44 typedef int32_t (*CRYPT_EAL_RandFunc)(uint8_t *rand, uint32_t randLen);
45
55
66typedef int32_t (*CRYPT_EAL_RandFuncEx)(void *ctx, uint8_t *rand, uint32_t randLen);
67
77
107int32_t CRYPT_EAL_RandInit(CRYPT_RAND_AlgId id, CRYPT_RandSeedMethod *seedMeth, void *seedCtx,
108 const uint8_t *pers, uint32_t persLen);
109
124int32_t CRYPT_EAL_ProviderRandInitCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName,
125 const uint8_t *pers, uint32_t persLen, BSL_Param *param);
126
134
143void CRYPT_EAL_RandDeinitEx(CRYPT_EAL_LibCtx *libCtx);
144
159int32_t CRYPT_EAL_RandbytesWithAdin(uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen);
160
176int32_t CRYPT_EAL_RandbytesWithAdinEx(CRYPT_EAL_LibCtx *libCtx,
177 uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen);
178
190int32_t CRYPT_EAL_Randbytes(uint8_t *byte, uint32_t len);
191
204int32_t CRYPT_EAL_RandbytesEx(CRYPT_EAL_LibCtx *libCtx, uint8_t *byte, uint32_t len);
205
218int32_t CRYPT_EAL_RandSeedWithAdin(uint8_t *addin, uint32_t addinLen);
219
231int32_t CRYPT_EAL_RandSeed(void);
232
244int32_t CRYPT_EAL_RandSeedEx(CRYPT_EAL_LibCtx *libCtx);
245
246typedef struct EAL_RndCtx CRYPT_EAL_RndCtx;
247
273CRYPT_EAL_RndCtx *CRYPT_EAL_DrbgNew(CRYPT_RAND_AlgId id, CRYPT_RandSeedMethod *seedMeth, void *seedCtx);
274
287CRYPT_EAL_RndCtx *CRYPT_EAL_ProviderDrbgNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName,
288 BSL_Param *param);
289
297void CRYPT_EAL_DrbgDeinit(CRYPT_EAL_RndCtx *ctx);
298
313int32_t CRYPT_EAL_DrbgbytesWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen);
314
327int32_t CRYPT_EAL_Drbgbytes(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len);
328
339int32_t CRYPT_EAL_DrbgSeedWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *addin, uint32_t addinLen);
340
350int32_t CRYPT_EAL_DrbgSeed(CRYPT_EAL_RndCtx *ctx);
351
362
376int32_t CRYPT_EAL_DrbgInstantiate(CRYPT_EAL_RndCtx *rndCtx, const uint8_t *pers, uint32_t persLen);
377
390int32_t CRYPT_EAL_DrbgCtrl(CRYPT_EAL_RndCtx *ctx, int32_t cmd, void *val, uint32_t valLen);
391
400CRYPT_EAL_RndCtx *CRYPT_EAL_GetSeedCtx(bool isParentEntropy);
401
402#ifdef __cplusplus
403}
404#endif
405
406#endif // CRYPT_EAL_RAND_H
CRYPT_RAND_AlgId
定义 crypt_algid.h:41
int32_t CRYPT_EAL_Drbgbytes(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len)
int32_t(* CRYPT_EAL_RandFunc)(uint8_t *rand, uint32_t randLen)
rand generate callback
定义 crypt_eal_rand.h:44
int32_t CRYPT_EAL_RandSeedEx(CRYPT_EAL_LibCtx *libCtx)
bool CRYPT_EAL_RandIsValidAlgId(CRYPT_RAND_AlgId id)
Check whether the id is valid Rand algorithm ID.
CRYPT_EAL_RndCtx * CRYPT_EAL_ProviderDrbgNewCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName, BSL_Param *param)
Random number initialization in the providers.
int32_t CRYPT_EAL_RandbytesWithAdin(uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen)
Generate a random number.
CRYPT_EAL_RndCtx * CRYPT_EAL_GetSeedCtx(bool isParentEntropy)
Get the seed of Primary DRBG.
int32_t CRYPT_EAL_Randbytes(uint8_t *byte, uint32_t len)
int32_t(* CRYPT_EAL_RandFuncEx)(void *ctx, uint8_t *rand, uint32_t randLen)
rand generate callback
定义 crypt_eal_rand.h:66
int32_t CRYPT_EAL_DrbgSeed(CRYPT_EAL_RndCtx *ctx)
Regenerate the seed, which is equivalent to CRYPT_EAL_RandSeedWithAdin(NULL, 0).
void CRYPT_EAL_SetRandCallBack(CRYPT_EAL_RandFunc func)
set rand func callback
int32_t CRYPT_EAL_RandSeedWithAdin(uint8_t *addin, uint32_t addinLen)
Regenerate the seed.
int32_t CRYPT_EAL_RandInit(CRYPT_RAND_AlgId id, CRYPT_RandSeedMethod *seedMeth, void *seedCtx, const uint8_t *pers, uint32_t persLen)
Random number initialization interface. This interface does not support multiple threads.
int32_t CRYPT_EAL_DrbgCtrl(CRYPT_EAL_RndCtx *ctx, int32_t cmd, void *val, uint32_t valLen)
get or set rand param
int32_t CRYPT_EAL_ProviderRandInitCtx(CRYPT_EAL_LibCtx *libCtx, int32_t algId, const char *attrName, const uint8_t *pers, uint32_t persLen, BSL_Param *param)
Random number initialization in the providers.
int32_t CRYPT_EAL_RandbytesWithAdinEx(CRYPT_EAL_LibCtx *libCtx, uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen)
Generate a random number.
int32_t CRYPT_EAL_DrbgSeedWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *addin, uint32_t addinLen)
Regenerate the seed. The addtional data can be NULL. This interface supports multi-thread access.
int32_t CRYPT_EAL_DrbgInstantiate(CRYPT_EAL_RndCtx *rndCtx, const uint8_t *pers, uint32_t persLen)
Instantiate the DRBG.
void CRYPT_EAL_SetRandCallBackEx(CRYPT_EAL_RandFuncEx func)
set rand func callback
void CRYPT_EAL_RandDeinit(void)
Deinitializing the global RAND interface, this interface does not support multiple threads.
int32_t CRYPT_EAL_DrbgbytesWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen)
Generate a random number.
void CRYPT_EAL_RandDeinitEx(CRYPT_EAL_LibCtx *libCtx)
Deinitializing the libCtx RAND interface, this interface does not support multiple threads.
int32_t CRYPT_EAL_RandbytesEx(CRYPT_EAL_LibCtx *libCtx, uint8_t *byte, uint32_t len)
int32_t CRYPT_EAL_RandSeed(void)
定义 crypt_types.h:587