16#ifndef CRYPT_ENTROPY_H
17#define CRYPT_ENTROPY_H
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_ENTROPY
24#include "crypt_types.h"
61#ifdef HITLS_CRYPTO_ENTROPY_SYS
62typedef struct ES_Entropy ENTROPY_EntropySource;
72ENTROPY_EntropySource *ENTROPY_EsNew(
void);
75void ENTROPY_EsFree(ENTROPY_EntropySource *ctx);
78int32_t ENTROPY_EsInit(ENTROPY_EntropySource *ctx);
81void ENTROPY_EsDeinit(ENTROPY_EntropySource *ctx);
84int32_t ENTROPY_EsCtrl(ENTROPY_EntropySource *ctx, int32_t cmd,
void *data, uint32_t len);
87uint32_t ENTROPY_EsEntropyGet(ENTROPY_EntropySource *ctx, uint8_t *data, uint32_t len);
90int32_t ENTROPY_EsEntropyGather(ENTROPY_EntropySource *es);
93typedef struct EntropySeedPool ENTROPY_SeedPool;
96typedef uint32_t (*EntropyGet)(
void *ctx, uint8_t *buf, uint32_t bufLen);
99ENTROPY_SeedPool *ENTROPY_SeedPoolNew(
bool isCreateNullPool);
102int32_t ENTROPY_SeedPoolAddEs(ENTROPY_SeedPool *pool,
const CRYPT_EAL_EsPara *para);
105void ENTROPY_SeedPoolFree(ENTROPY_SeedPool *pool);
108uint32_t ENTROPY_SeedPoolCollect(ENTROPY_SeedPool *pool,
bool isNpesUsed, uint32_t needEntropy,
109 uint8_t *data, uint32_t *len);
112bool ENTROPY_SeedPoolCheckState(ENTROPY_SeedPool *seedPool,
bool isNpesUsed);
115uint32_t ENTROPY_SeedPoolGetMinEntropy(ENTROPY_SeedPool *seedPool);
117typedef int32_t (*ExternalConditioningFunction)(uint32_t algId, uint8_t *in, uint32_t inLen, uint8_t *out,
120typedef struct EcfCtx {
123 ExternalConditioningFunction conFunc;
137int32_t ENTROPY_GetFullEntropyInput(
void *ctx, ENTROPY_SeedPool *pool,
bool isNpesUsed, uint32_t needEntropy,
138 uint8_t *data, uint32_t len);