diff options
| author | Pieter Wuille <[email protected]> | 2017-06-07 14:59:41 -0700 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2017-06-07 15:12:14 -0700 |
| commit | e801084decf4542d57cf5ddb95820643766a172a (patch) | |
| tree | 2050a8eea74767a125f67ee4db8abd0a23793954 /src/random.cpp | |
| parent | Merge #9672: Opt-into-RBF for RPC & bitcoin-tx (diff) | |
| parent | scripted-diff: Use new naming style for insecure_rand* functions (diff) | |
| download | discoin-e801084decf4542d57cf5ddb95820643766a172a.tar.xz discoin-e801084decf4542d57cf5ddb95820643766a172a.zip | |
Merge #10321: Use FastRandomContext for all tests
e94584858 scripted-diff: Use new naming style for insecure_rand* functions (Pieter Wuille)
2fcd9cc86 scripted-diff: Use randbits/bool instead of randrange where possible (Pieter Wuille)
2ada67852 Use randbits instead of ad-hoc emulation in prevector tests (Pieter Wuille)
5f0b04eed Replace rand() & ((1 << N) - 1) with randbits(N) (Pieter Wuille)
3ecabae36 Replace more rand() % NUM by randranges (Pieter Wuille)
efee1db21 scripted-diff: use insecure_rand256/randrange more (Pieter Wuille)
1119927df Add various insecure_rand wrappers for tests (Pieter Wuille)
124d13a58 Merge test_random.h into test_bitcoin.h (Pieter Wuille)
90620d66c scripted-diff: Rename cuckoo tests' local rand context (Pieter Wuille)
37e864eb9 Add FastRandomContext::rand256() and ::randbytes() (Pieter Wuille)
Tree-SHA512: d09705a3ec718ae792f7d66a75401903ba7b9c9d3fc36669d6e3b9242f0194738106be26baefc8a8e3fa6df7c9a35978c71c0c430278a028b331df23a3ea3070
Diffstat (limited to 'src/random.cpp')
| -rw-r--r-- | src/random.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/random.cpp b/src/random.cpp index de7553c82..e1ccfa5f2 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -304,6 +304,26 @@ void FastRandomContext::RandomSeed() requires_seed = false; } +uint256 FastRandomContext::rand256() +{ + if (bytebuf_size < 32) { + FillByteBuffer(); + } + uint256 ret; + memcpy(ret.begin(), bytebuf + 64 - bytebuf_size, 32); + bytebuf_size -= 32; + return ret; +} + +std::vector<unsigned char> FastRandomContext::randbytes(size_t len) +{ + std::vector<unsigned char> ret(len); + if (len > 0) { + rng.Output(&ret[0], len); + } + return ret; +} + FastRandomContext::FastRandomContext(const uint256& seed) : requires_seed(false), bytebuf_size(0), bitbuf_size(0) { rng.SetKey(seed.begin(), 32); |