diff options
| author | Michael Brown | 2012-02-20 22:26:23 +0100 |
|---|---|---|
| committer | Michael Brown | 2012-02-21 13:42:46 +0100 |
| commit | 4e0effc6ad3b9f39859e259dd8f1f8af91c5b480 (patch) | |
| tree | 2bf6c739f1e82bbb59d12010f0844734dd19e645 /src/include | |
| parent | [rng] Add ANS X9.82 mandatory start-up tests (diff) | |
| download | ipxe-4e0effc6ad3b9f39859e259dd8f1f8af91c5b480.tar.gz ipxe-4e0effc6ad3b9f39859e259dd8f1f8af91c5b480.tar.xz ipxe-4e0effc6ad3b9f39859e259dd8f1f8af91c5b480.zip | |
[rng] Add ANS X9.82 RBG wrapper functions
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/ipxe/rbg.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/include/ipxe/rbg.h b/src/include/ipxe/rbg.h new file mode 100644 index 000000000..9689142f8 --- /dev/null +++ b/src/include/ipxe/rbg.h @@ -0,0 +1,43 @@ +#ifndef _IPXE_RBG_H +#define _IPXE_RBG_H + +/** @file + * + * RBG mechanism + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <stdint.h> +#include <ipxe/drbg.h> + +/** An RBG */ +struct random_bit_generator { + /** DRBG state */ + struct drbg_state state; +}; + +extern struct random_bit_generator rbg; + +/** + * Generate bits using RBG + * + * @v additional Additional input + * @v additional_len Length of additional input + * @v prediction_resist Prediction resistance is required + * @v data Output buffer + * @v len Length of output buffer + * @ret rc Return status code + * + * This is the RBG_Generate function defined in ANS X9.82 Part 4 + * (April 2011 Draft) Section 9.1.2.2. + */ +static inline int rbg_generate ( const void *additional, size_t additional_len, + int prediction_resist, void *data, + size_t len ) { + return drbg_generate ( &rbg.state, additional, additional_len, + prediction_resist, data, len ); +} + +#endif /* _IPXE_RBG_H */ |
