diff options
author | James Wahlin <james.wahlin@mongodb.com> | 2019-10-02 14:48:40 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-10-02 14:48:40 +0000 |
commit | a40b196bd3cecd0b66a6323f57e6f08efe0af392 (patch) | |
tree | 32ffa94f852e91e2b5d4cac3ea8728998b3837e0 /src/mongo/db/time_proof_service.cpp | |
parent | 3175a30264d26b31309e9a4abfb69d9f14136702 (diff) | |
download | mongo-a40b196bd3cecd0b66a6323f57e6f08efe0af392.tar.gz |
Revert "SERVER-43641 upgrade random.h"
This reverts commit 96da177c6ae7b7ed0f29983ad033d8a59524b0b2.
Diffstat (limited to 'src/mongo/db/time_proof_service.cpp')
-rw-r--r-- | src/mongo/db/time_proof_service.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mongo/db/time_proof_service.cpp b/src/mongo/db/time_proof_service.cpp index da65e441712..7e29f0b2254 100644 --- a/src/mongo/db/time_proof_service.cpp +++ b/src/mongo/db/time_proof_service.cpp @@ -45,9 +45,15 @@ namespace mongo { const uint64_t kRangeMask = 0x0000'0000'0000'FFFF; TimeProofService::Key TimeProofService::generateRandomKey() { - std::array<std::uint8_t, SHA1Block::kHashLength> keyBuffer; - SecureRandom().fill(keyBuffer.data(), keyBuffer.size()); - return fassert(40384, SHA1Block::fromBuffer(keyBuffer.data(), keyBuffer.size())); + // SecureRandom only produces 64-bit numbers, so 3 is the minimum for 20 random bytes. + const size_t kRandomNumbers = 3; + std::array<std::int64_t, kRandomNumbers> keyBuffer; + std::unique_ptr<SecureRandom> rng(SecureRandom::create()); + std::generate(keyBuffer.begin(), keyBuffer.end(), [&] { return rng->nextInt64(); }); + + return fassert(40384, + SHA1Block::fromBuffer(reinterpret_cast<std::uint8_t*>(keyBuffer.data()), + SHA1Block::kHashLength)); } TimeProofService::TimeProof TimeProofService::getProof(LogicalTime time, const Key& key) { |