79 size_t personal_len ) {
97 DBGC (
state,
"DRBG %p cannot support security strength %d\n",
113 DBGC (
state,
"DRBG %p personalisation string too long (%zd " 114 "bytes)\n",
state, personal_len );
144 DBGC (
state,
"DRBG %p could not get entropy input: %s\n",
170 state->reseed_required = 0;
191 size_t additional_len ) {
211 if ( !
state->valid ) {
228 DBGC (
state,
"DRBG %p additional input too long (%zd bytes)\n",
229 state, additional_len );
244 DBGC (
state,
"DRBG %p could not get entropy input: %s\n",
284 size_t additional_len,
int prediction_resist,
301 if ( !
state->valid ) {
311 DBGC (
state,
"DRBG %p request too long (%zd bytes)\n",
328 DBGC (
state,
"DRBG %p additional input too long (%zd bytes)\n",
329 state, additional_len );
342 state->reseed_required = 0;
348 if (
state->reseed_required || prediction_resist ) {
357 additional_len ) ) != 0 ) {
358 DBGC (
state,
"DRBG %p could not reseed: %s\n",
375 state->reseed_required = 0;
391 state->reseed_required = 1;
397 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