openHiTLS API openHiTLS 0.1.0-Alpha1
crypt_eal_rand.h
浏览该文件的文档.
1/*---------------------------------------------------------------------------------------------
2 * This file is part of the openHiTLS project.
3 * Copyright © 2023 Huawei Technologies Co.,Ltd. All rights reserved.
4 * Licensed under the openHiTLS Software license agreement 1.0. See LICENSE in the project root
5 * for license information.
6 *---------------------------------------------------------------------------------------------
7 */
8
15#ifndef CRYPT_EAL_RAND_H
16#define CRYPT_EAL_RAND_H
17
18#include <stdbool.h>
19#include <stdint.h>
20#include "crypt_algid.h"
21#include "crypt_types.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
56int32_t CRYPT_EAL_RandInit(CRYPT_RAND_AlgId id, CRYPT_RandSeedMethod *seedMeth, void *seedCtx,
57 const uint8_t *pers, uint32_t persLen);
58
66
81int32_t CRYPT_EAL_RandbytesWithAdin(uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen);
82
94int32_t CRYPT_EAL_Randbytes(uint8_t *byte, uint32_t len);
95
106int32_t CRYPT_EAL_RandSeedWithAdin(uint8_t *addin, uint32_t addinLen);
107
117int32_t CRYPT_EAL_RandSeed(void);
118
119typedef struct EAL_RndCtx CRYPT_EAL_RndCtx;
120
149 const uint8_t *pers, uint32_t persLen);
150
159
174int32_t CRYPT_EAL_DrbgbytesWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen);
175
188int32_t CRYPT_EAL_Drbgbytes(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len);
189
200int32_t CRYPT_EAL_DrbgSeedWithAdin(CRYPT_EAL_RndCtx *ctx, uint8_t *addin, uint32_t addinLen);
201
212
223
224#ifdef __cplusplus
225}
226#endif
227
228#endif // CRYPT_EAL_RAND_H
void CRYPT_EAL_DrbgDeinit(CRYPT_EAL_RndCtx *ctx)
CRYPT_EAL_DrbgDeinit Deinitialization interface, this interface does not support multiple threads.
struct EAL_RndCtx CRYPT_EAL_RndCtx
Definition crypt_eal_rand.h:119
CRYPT_EAL_RndCtx * CRYPT_EAL_DrbgInit(CRYPT_RAND_AlgId id, CRYPT_RandSeedMethod *seedMeth, void *seedCtx, const uint8_t *pers, uint32_t persLen)
Random number initialization interface, and this interface does not support multiple threads.
CRYPT_RAND_AlgId
Definition crypt_algid.h:34
int32_t CRYPT_EAL_Drbgbytes(CRYPT_EAL_RndCtx *ctx, uint8_t *byte, uint32_t len)
bool CRYPT_EAL_RandIsValidAlgId(CRYPT_RAND_AlgId id)
Check whether the id is valid Rand algorithm ID.
int32_t CRYPT_EAL_RandbytesWithAdin(uint8_t *byte, uint32_t len, uint8_t *addin, uint32_t addinLen)
Generate a random number.
int32_t CRYPT_EAL_Randbytes(uint8_t *byte, uint32_t len)
int32_t CRYPT_EAL_DrbgSeed(CRYPT_EAL_RndCtx *ctx)
Regenerate the seed, which is equivalent to CRYPT_EAL_RandSeedWithAdin(NULL, 0).
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_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.
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.
int32_t CRYPT_EAL_RandSeed(void)
Definition crypt_types.h:294