github.com/ethereum/go-ethereum@v1.16.1/crypto/secp256k1/libsecp256k1/src/testrand.h (about) 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 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 testrand32(void); 19 20 /** Generate a pseudorandom number in the range [0..2**64-1]. */ 21 SECP256K1_INLINE static uint64_t 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 testrand_bits(int bits); 26 27 /** Generate a pseudorandom number in the range [0..range-1]. */ 28 static uint32_t testrand_int(uint32_t range); 29 30 /** Generate a pseudorandom 32-byte array. */ 31 static void testrand256(unsigned char *b32); 32 33 /** Generate a pseudorandom 32-byte array with long sequences of zero and one bits. */ 34 static void testrand256_test(unsigned char *b32); 35 36 /** Generate pseudorandom bytes with long sequences of zero and one bits. */ 37 static void testrand_bytes_test(unsigned char *bytes, size_t len); 38 39 /** Flip a single random bit in a byte array */ 40 static void 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 testrand_init(const char* hexseed); 44 45 /** Print final test information. */ 46 static void testrand_finish(void); 47 48 #endif /* SECP256K1_TESTRAND_H */