mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
Do not permit copying FastRandomContexts
This commit is contained in:
parent
022cf47dd7
commit
e414486d56
2 changed files with 22 additions and 0 deletions
|
@ -464,6 +464,20 @@ FastRandomContext::FastRandomContext(bool fDeterministic) : requires_seed(!fDete
|
||||||
rng.SetKey(seed.begin(), 32);
|
rng.SetKey(seed.begin(), 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FastRandomContext& FastRandomContext::operator=(FastRandomContext&& from) noexcept
|
||||||
|
{
|
||||||
|
requires_seed = from.requires_seed;
|
||||||
|
rng = from.rng;
|
||||||
|
std::copy(std::begin(from.bytebuf), std::end(from.bytebuf), std::begin(bytebuf));
|
||||||
|
bytebuf_size = from.bytebuf_size;
|
||||||
|
bitbuf = from.bitbuf;
|
||||||
|
bitbuf_size = from.bitbuf_size;
|
||||||
|
from.requires_seed = true;
|
||||||
|
from.bytebuf_size = 0;
|
||||||
|
from.bitbuf_size = 0;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
void RandomInit()
|
void RandomInit()
|
||||||
{
|
{
|
||||||
RDRandInit();
|
RDRandInit();
|
||||||
|
|
|
@ -76,6 +76,14 @@ public:
|
||||||
/** Initialize with explicit seed (only for testing) */
|
/** Initialize with explicit seed (only for testing) */
|
||||||
explicit FastRandomContext(const uint256& seed);
|
explicit FastRandomContext(const uint256& seed);
|
||||||
|
|
||||||
|
// Do not permit copying a FastRandomContext (move it, or create a new one to get reseeded).
|
||||||
|
FastRandomContext(const FastRandomContext&) = delete;
|
||||||
|
FastRandomContext(FastRandomContext&&) = delete;
|
||||||
|
FastRandomContext& operator=(const FastRandomContext&) = delete;
|
||||||
|
|
||||||
|
/** Move a FastRandomContext. If the original one is used again, it will be reseeded. */
|
||||||
|
FastRandomContext& operator=(FastRandomContext&& from) noexcept;
|
||||||
|
|
||||||
/** Generate a random 64-bit integer. */
|
/** Generate a random 64-bit integer. */
|
||||||
uint64_t rand64()
|
uint64_t rand64()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue