1 #ifndef _IPXE_HMAC_DRBG_H 2 #define _IPXE_HMAC_DRBG_H 22 #define HMAC_DRBG( hash, max_security_strength, out_len_bits ) \ 23 ( hash, max_security_strength, out_len_bits ) 35 #define HMAC_DRBG_SHA1 HMAC_DRBG ( &sha1_algorithm, 128, 160 ) 47 #define HMAC_DRBG_SHA224 HMAC_DRBG ( &sha224_algorithm, 192, 224 ) 59 #define HMAC_DRBG_SHA256 HMAC_DRBG ( &sha256_algorithm, 256, 256 ) 71 #define HMAC_DRBG_SHA384 HMAC_DRBG ( &sha384_algorithm, 256, 384 ) 83 #define HMAC_DRBG_SHA512 HMAC_DRBG ( &sha512_algorithm, 256, 512 ) 90 #define HMAC_DRBG_HASH( hmac_drbg ) \ 91 HMAC_DRBG_EXTRACT_HASH hmac_drbg 92 #define HMAC_DRBG_EXTRACT_HASH( hash, max_security_strength, out_len_bits ) \ 100 #define HMAC_DRBG_MAX_SECURITY_STRENGTH( hmac_drbg ) \ 101 HMAC_DRBG_EXTRACT_MAX_SECURITY_STRENGTH hmac_drbg 102 #define HMAC_DRBG_EXTRACT_MAX_SECURITY_STRENGTH( hash, max_security_strength, \ 104 max_security_strength 111 #define HMAC_DRBG_OUTLEN_BITS( hmac_drbg ) \ 112 HMAC_DRBG_EXTRACT_OUTLEN_BITS hmac_drbg 113 #define HMAC_DRBG_EXTRACT_OUTLEN_BITS( hash, max_security_strength, \ 122 #define HMAC_DRBG_OUTLEN_BYTES( hmac_drbg ) \ 123 ( HMAC_DRBG_OUTLEN_BITS ( hmac_drbg ) / 8 ) 131 #define HMAC_DRBG_MAX_OUTLEN_BYTES HMAC_DRBG_OUTLEN_BYTES ( HMAC_DRBG_SHA512 ) 142 #define HMAC_DRBG_MIN_ENTROPY( security_strength ) (security_strength) 153 #define HMAC_DRBG_MIN_ENTROPY_LEN_BYTES( security_strength ) \ 154 ( (security_strength) / 8 ) 164 #define HMAC_DRBG_MAX_ENTROPY_LEN_BYTES 32 174 #define HMAC_DRBG_MAX_PERSONAL_LEN_BYTES 0xffffffffUL 184 #define HMAC_DRBG_MAX_ADDITIONAL_LEN_BYTES 0xffffffffUL 194 #define HMAC_DRBG_MAX_GENERATED_LEN_BYTES 0x0000ffffUL 206 #define HMAC_DRBG_RESEED_INTERVAL 1024 242 const void *entropy,
size_t entropy_len,
243 const void *personal,
size_t personal_len );
246 const void *entropy,
size_t entropy_len,
247 const void *
additional,
size_t additional_len );
250 const void *
additional,
size_t additional_len,
pseudo_bit_t hash[0x00010]
#define HMAC_DRBG_MAX_OUTLEN_BYTES
Maximum output block length, in bytes.
unsigned int reseed_counter
Reseed counter.
void hmac_drbg_reseed(struct digest_algorithm *hash, struct hmac_drbg_state *state, const void *entropy, size_t entropy_len, const void *additional, size_t additional_len)
Reseed HMAC_DRBG.
uint16_t additional
Additional sense code and qualifier.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
uint8_t value[HMAC_DRBG_MAX_OUTLEN_BYTES]
Current value.
uint8_t key[HMAC_DRBG_MAX_OUTLEN_BYTES]
Current key.
HMAC_DRBG internal state.
void hmac_drbg_instantiate(struct digest_algorithm *hash, struct hmac_drbg_state *state, const void *entropy, size_t entropy_len, const void *personal, size_t personal_len)
Instantiate HMAC_DRBG.
A message digest algorithm.
uint8_t data[48]
Additional event data.
int hmac_drbg_generate(struct digest_algorithm *hash, struct hmac_drbg_state *state, const void *additional, size_t additional_len, void *data, size_t len)
Generate pseudorandom bits using HMAC_DRBG.