80 size_t personal_len ) {
98 DBGC (
state,
"DRBG %p cannot support security strength %d\n",
114 DBGC (
state,
"DRBG %p personalisation string too long (%zd " 115 "bytes)\n",
state, personal_len );
145 DBGC (
state,
"DRBG %p could not get entropy input: %s\n",
171 state->reseed_required = 0;
192 size_t additional_len ) {
212 if ( !
state->valid ) {
229 DBGC (
state,
"DRBG %p additional input too long (%zd bytes)\n",
230 state, additional_len );
245 DBGC (
state,
"DRBG %p could not get entropy input: %s\n",
285 size_t additional_len,
int prediction_resist,
302 if ( !
state->valid ) {
312 DBGC (
state,
"DRBG %p request too long (%zd bytes)\n",
329 DBGC (
state,
"DRBG %p additional input too long (%zd bytes)\n",
330 state, additional_len );
343 state->reseed_required = 0;
349 if (
state->reseed_required || prediction_resist ) {
358 additional_len ) ) != 0 ) {
359 DBGC (
state,
"DRBG %p could not reseed: %s\n",
376 state->reseed_required = 0;
392 state->reseed_required = 1;
398 prediction_resist = 1;
#define EINVAL
Invalid argument.
struct arbelprm_rc_send_wqe rc
#define DRBG_MAX_ENTROPY_LEN_BYTES
Maximum entropy input length.
static int get_entropy_input(unsigned int min_entropy_bits, void *data, size_t min_len, size_t max_len)
Obtain entropy input.
int drbg_reseed(struct drbg_state *state, const void *additional, size_t additional_len)
Reseed DRBG.
static void drbg_instantiate_algorithm(struct drbg_state *state, const void *entropy, size_t entropy_len, const void *personal, size_t personal_len)
Instantiate DRBG algorithm.
A Deterministic Random Bit Generator.
#define ENOTSUP
Operation not supported.
#define DRBG_MAX_ADDITIONAL_LEN_BYTES
Maximum additional input length.
static void drbg_reseed_algorithm(struct drbg_state *state, const void *entropy, size_t entropy_len, const void *additional, size_t additional_len)
Reseed DRBG algorithm.
uint16_t additional
Additional sense code and qualifier.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static int drbg_generate_algorithm(struct drbg_state *state, const void *additional, size_t additional_len, void *data, size_t len)
Generate pseudorandom bits using DRBG algorithm.
#define DRBG_MAX_SECURITY_STRENGTH
Maximum security strength.
#define ERANGE
Result too large.
char * strerror(int errno)
Retrieve string representation of error number.
int drbg_instantiate(struct drbg_state *state, const void *personal, size_t personal_len)
Instantiate DRBG.
#define DRBG_MAX_GENERATED_LEN_BYTES
Maximum length of generated pseudorandom data per request.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
uint8_t data[48]
Additional event data.
#define DRBG_SECURITY_STRENGTH
Security strength.
void drbg_uninstantiate(struct drbg_state *state)
Uninstantiate DRBG.
#define DRBG_MIN_ENTROPY_LEN_BYTES
Minimum entropy input length.
#define NULL
NULL pointer (VOID *)
#define DRBG_MAX_PERSONAL_LEN_BYTES
Maximum personalisation string length.
int drbg_generate(struct drbg_state *state, const void *additional, size_t additional_len, int prediction_resist, void *data, size_t len)
Generate pseudorandom bits using DRBG.
void * memset(void *dest, int character, size_t len) __nonnull