testrand.h (2150B)
1 /*********************************************************************** 2 * Copyright (c) 2013, 2014 Pieter Wuille * 3 * Distributed under the MIT software license, see the accompanying * 4 * file COPYING or https://www.opensource.org/licenses/mit-license.php.* 5 ***********************************************************************/ 6 7 #ifndef SECP256K1_TESTRAND_H 8 #define SECP256K1_TESTRAND_H 9 10 #include "util.h" 11 12 /* A non-cryptographic RNG used only for test infrastructure. */ 13 14 /** Seed the pseudorandom number generator for testing. */ 15 SECP256K1_INLINE static void haskellsecp256k1_v0_1_0_testrand_seed(const unsigned char *seed16); 16 17 /** Generate a pseudorandom number in the range [0..2**32-1]. */ 18 SECP256K1_INLINE static uint32_t haskellsecp256k1_v0_1_0_testrand32(void); 19 20 /** Generate a pseudorandom number in the range [0..2**64-1]. */ 21 SECP256K1_INLINE static uint64_t haskellsecp256k1_v0_1_0_testrand64(void); 22 23 /** Generate a pseudorandom number in the range [0..2**bits-1]. Bits must be 1 or 24 * more. */ 25 SECP256K1_INLINE static uint64_t haskellsecp256k1_v0_1_0_testrand_bits(int bits); 26 27 /** Generate a pseudorandom number in the range [0..range-1]. */ 28 static uint32_t haskellsecp256k1_v0_1_0_testrand_int(uint32_t range); 29 30 /** Generate a pseudorandom 32-byte array. */ 31 static void haskellsecp256k1_v0_1_0_testrand256(unsigned char *b32); 32 33 /** Generate a pseudorandom 32-byte array with long sequences of zero and one bits. */ 34 static void haskellsecp256k1_v0_1_0_testrand256_test(unsigned char *b32); 35 36 /** Generate pseudorandom bytes with long sequences of zero and one bits. */ 37 static void haskellsecp256k1_v0_1_0_testrand_bytes_test(unsigned char *bytes, size_t len); 38 39 /** Flip a single random bit in a byte array */ 40 static void haskellsecp256k1_v0_1_0_testrand_flip(unsigned char *b, size_t len); 41 42 /** Initialize the test RNG using (hex encoded) array up to 16 bytes, or randomly if hexseed is NULL. */ 43 static void haskellsecp256k1_v0_1_0_testrand_init(const char* hexseed); 44 45 /** Print final test information. */ 46 static void haskellsecp256k1_v0_1_0_testrand_finish(void); 47 48 #endif /* SECP256K1_TESTRAND_H */