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 */