]>
Commit | Line | Data |
---|---|---|
71712b27 GM |
1 | /********************************************************************** |
2 | * Copyright (c) 2013, 2014 Pieter Wuille * | |
3 | * Distributed under the MIT software license, see the accompanying * | |
4 | * file COPYING or http://www.opensource.org/licenses/mit-license.php.* | |
5 | **********************************************************************/ | |
f0709ac5 | 6 | |
abe2d3e8 DR |
7 | #ifndef SECP256K1_TESTRAND_H |
8 | #define SECP256K1_TESTRAND_H | |
f0709ac5 GM |
9 | |
10 | #if defined HAVE_CONFIG_H | |
11 | #include "libsecp256k1-config.h" | |
12 | #endif | |
13 | ||
34b898dc GM |
14 | /* A non-cryptographic RNG used only for test infrastructure. */ |
15 | ||
16 | /** Seed the pseudorandom number generator for testing. */ | |
a45c1fa6 | 17 | SECP256K1_INLINE static void secp256k1_testrand_seed(const unsigned char *seed16); |
f0709ac5 | 18 | |
251b1a62 | 19 | /** Generate a pseudorandom number in the range [0..2**32-1]. */ |
a45c1fa6 | 20 | static uint32_t secp256k1_testrand32(void); |
f0709ac5 | 21 | |
251b1a62 PW |
22 | /** Generate a pseudorandom number in the range [0..2**bits-1]. Bits must be 1 or |
23 | * more. */ | |
a45c1fa6 | 24 | static uint32_t secp256k1_testrand_bits(int bits); |
251b1a62 PW |
25 | |
26 | /** Generate a pseudorandom number in the range [0..range-1]. */ | |
a45c1fa6 | 27 | static uint32_t secp256k1_testrand_int(uint32_t range); |
251b1a62 | 28 | |
f0709ac5 | 29 | /** Generate a pseudorandom 32-byte array. */ |
a45c1fa6 | 30 | static void secp256k1_testrand256(unsigned char *b32); |
f0709ac5 GM |
31 | |
32 | /** Generate a pseudorandom 32-byte array with long sequences of zero and one bits. */ | |
a45c1fa6 | 33 | static void secp256k1_testrand256_test(unsigned char *b32); |
f0709ac5 | 34 | |
251b1a62 | 35 | /** Generate pseudorandom bytes with long sequences of zero and one bits. */ |
a45c1fa6 | 36 | static void secp256k1_testrand_bytes_test(unsigned char *bytes, size_t len); |
251b1a62 | 37 | |
7332d2db | 38 | /** Flip a single random bit in a byte array */ |
a45c1fa6 | 39 | static void secp256k1_testrand_flip(unsigned char *b, size_t len); |
7332d2db | 40 | |
49e6630b | 41 | /** Initialize the test RNG using (hex encoded) array up to 16 bytes, or randomly if hexseed is NULL. */ |
a45c1fa6 | 42 | static void secp256k1_testrand_init(const char* hexseed); |
49e6630b PW |
43 | |
44 | /** Print final test information. */ | |
a45c1fa6 | 45 | static void secp256k1_testrand_finish(void); |
49e6630b | 46 | |
abe2d3e8 | 47 | #endif /* SECP256K1_TESTRAND_H */ |