csecp256k1

Haskell FFI bindings to bitcoin-core/secp256k1 (docs.ppad.tech/csecp256k1).
git clone git://git.ppad.tech/csecp256k1.git
Log | Files | Refs | README | LICENSE

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