iPXE
|
Hash-based derivation function (Hash_df) More...
#include <stdint.h>
#include <string.h>
#include <assert.h>
#include <byteswap.h>
#include <ipxe/crypto.h>
#include <ipxe/hash_df.h>
Go to the source code of this file.
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
void | hash_df (struct digest_algorithm *hash, const void *input, size_t input_len, void *output, size_t output_len) |
Distribute entropy throughout a buffer. More... | |
Hash-based derivation function (Hash_df)
This algorithm is designed to comply with ANS X9.82 Part 3-2007 Section 10.5.2. This standard is not freely available, but most of the text appears to be shared with NIST SP 800-90, which can be downloaded from
http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf
Where possible, references are given to both documents. In the case of any disagreement, ANS X9.82 takes priority over NIST SP 800-90. (In particular, note that some algorithms that are Approved by NIST SP 800-90 are not Approved by ANS X9.82.)
Definition in file hash_df.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
void hash_df | ( | struct digest_algorithm * | hash, |
const void * | input, | ||
size_t | input_len, | ||
void * | output, | ||
size_t | output_len | ||
) |
Distribute entropy throughout a buffer.
hash | Underlying hash algorithm |
input | Input data |
input_len | Length of input data, in bytes |
output | Output buffer |
output_len | Length of output buffer, in bytes |
This is the Hash_df function defined in ANS X9.82 Part 3-2007 Section 10.5.2 (NIST SP 800-90 Section 10.4.1).
The number of bits requested is implicit in the length of the output buffer. Requests must be for an integral number of bytes.
The output buffer is filled incrementally with each iteration of the central loop, rather than constructing an overall "temp" and then taking the leftmost(no_of_bits_to_return) bits.
There is no way for the Hash_df function to fail. The returned status SUCCESS is implicit.
Definition at line 84 of file hash_df.c.
References __attribute__, assert(), DBGC, DBGC_HDA, digest_final(), digest_init(), digest_update(), hash, hash_df(), htonl, memcpy(), NULL, offsetof, pad, prefix, and typeof().
Referenced by get_entropy_input(), get_entropy_input_tmp(), and hash_df().