/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk-pwg-rnd.ctr */ #ifndef DK_PWG_RND_H_INCLUDED /** Avoid multiple inclusions. */ #define DK_PWG_RND_H_INCLUDED 1 #line 10 "dk-pwg-rnd.ctr" /** @file dk4rnd.h Random number generation. NOT A GOOD IDEA: WE EITHER NEED CRYPTOGRAPHICALLY STRONG RANDOM DATA OR LIGHTWEIGHT RANDOM DATA FOR GAMES OR SIMULATIONS. ONE SIZE DOESN'T FIT ALL! */ #ifdef __cplusplus extern "C" { #endif /** Retrieve PRNG type. @return PRNG type. */ int dk4rnd_get_prng_type(void); /** Initialize (seed) PRNG. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_NOT_FOUND
if the function failed to obtain seed data. */ int dk4rnd_init(dk4_er_t *erp); /** Retrieve random bytes. @param bptr Pointer to destination buffer. @param bs Destination buffer size. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if bptr is NULL or bs is either 0 or too large, - DK4_E_SYNTAX
if the PRNG was not yet initialized successfully, - DK4_E_NOT_FOUND
if the function failed to obtain random data. */ int dk4rnd_get_data(void *bptr, size_t bs, dk4_er_t *erp); /** Clean up PRNG. */ void dk4rnd_cleanup(void); #ifdef __cplusplus } #endif /** Random number generators. */ enum { /** Use rand() function. */ DK4_PRNG_SIMPLE = 1, /** Use nrand48() function. */ DK4_PRNG_RAND48 = 2, /** Use initstate()/setstate() functions. */ DK4_PRNG_STATE = 4, /** Use OpenSSL PRNG. */ DK4_PRNG_OPENSSL = 8, /** All the PRNGs above. */ DK4_PRNG_ALL = ( DK4_PRNG_SIMPLE | DK4_PRNG_RAND48 | DK4_PRNG_STATE | DK4_PRNG_OPENSSL ) }; #endif