diff options
author | Uros Majstorovic <majstor@majstor.org> | 2018-01-22 15:23:20 +0100 |
---|---|---|
committer | Uros Majstorovic <majstor@majstor.org> | 2018-01-22 15:23:20 +0100 |
commit | 87c71978e556d532a5b91a653514a92acec9a1b7 (patch) | |
tree | b7533e088f1adf07ec46a32e9cf33251a147bbe2 /code/ecp/crypto/arc4random/arc4random.h | |
parent | b9d0e6e824f222e7f6647806b6afb3c2f4727ab5 (diff) |
arc4random added
Diffstat (limited to 'code/ecp/crypto/arc4random/arc4random.h')
-rwxr-xr-x | code/ecp/crypto/arc4random/arc4random.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/code/ecp/crypto/arc4random/arc4random.h b/code/ecp/crypto/arc4random/arc4random.h new file mode 100755 index 0000000..e281a89 --- /dev/null +++ b/code/ecp/crypto/arc4random/arc4random.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 1996, David Mazieres <dm@uun.org> + * Copyright (c) 2008, Damien Miller <djm@openbsd.org> + * Copyright (c) 2013, Markus Friedl <markus@openbsd.org> + * Copyright (c) 2014, Theo de Raadt <deraadt@openbsd.org> + * Copyright (c) 2015, Sudhi Herle <sudhi@herle.net> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ___ARC4RANDOM_H_5000666_1462841354__ +#define ___ARC4RANDOM_H_5000666_1462841354__ 1 + + /* Provide C linkage for symbols declared here .. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <stdint.h> +#include <sys/types.h> + +/* + * On OpenBSD - we should NOT use the same symbol names. OpenBSD + * libc defines these, and the rest of libc uses this - from dynamic + * loading, to malloc() to printf() etc. + * + * For some fun, don't redefine the names - and see what happens :-) + */ +#ifdef __OpenBSD__ + +#define arc4random mt_arc4random +#define arc4random_uniform mt_arc4random_uniform +#define arc4random_buf mt_arc4random_buf + +#endif /* __OpenBSD__ */ + + +/* + * Initialize generator with getentropy + */ +extern void arc4random_init(int (*) (void*, size_t)); + + +/* + * Generate and return a random 32-bit number + */ +extern uint32_t arc4random(void); + + +/* + * Generate and return a uniformly random 32-bit quantity with an + * upper bound of 'upper_bound' + */ +extern uint32_t arc4random_uniform(uint32_t upper_bound); + + +/* + * Generate 'n' random bytes and put them in 'buf'. + */ +extern void arc4random_buf(void* buf, size_t n); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* ! ___ARC4RANDOM_H_5000666_1462841354__ */ + +/* EOF */ |