diff options
| author | Léo Lam <leo@innovatetechnologi.es> | 2018-05-21 15:48:17 +0200 |
|---|---|---|
| committer | Léo Lam <leo@innovatetechnologi.es> | 2018-05-31 17:54:43 +0200 |
| commit | fff1db973096a893475f3ec96ee6f28e35c4a67c (patch) | |
| tree | 5b92984b635bab59a2639cc06ce9860a534df23e /Source/Core/Common/TraversalClient.cpp | |
| parent | dd77ace56ada6cd7c394b39105a61b61905e5822 (diff) | |
Common: Add Random utilities
This makes it easier to generate random numbers or fill a buffer with
random data in a cryptographically secure way.
This also replaces existing usages of RNG functions in the codebase:
* <random> is pretty hard to use correctly, and std::random_device does
not give enough guarantees about its results (it's
implementation-defined, non cryptographically secure and could be
deterministic on some platforms).
Doing things correctly is error prone and verbose.
* rand() is terrible and should not be used especially in crypto code.
Diffstat (limited to 'Source/Core/Common/TraversalClient.cpp')
| -rw-r--r-- | Source/Core/Common/TraversalClient.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 4c415b2c64..36eb431c7f 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -4,22 +4,12 @@ #include <cstddef> #include <cstring> -#include <random> #include <string> #include "Common/CommonTypes.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" - -static void GetRandomishBytes(u8* buf, size_t size) -{ - // We don't need high quality random numbers (which might not be available), - // just non-repeating numbers! - static std::mt19937 prng(enet_time_get()); - static std::uniform_int_distribution<unsigned int> u8_distribution(0, 255); - for (size_t i = 0; i < size; i++) - buf[i] = u8_distribution(prng); -} +#include "Common/Random.h" TraversalClient::TraversalClient(ENetHost* netHost, const std::string& server, const u16 port) : m_NetHost(netHost), m_Server(server), m_port(port) @@ -280,7 +270,7 @@ TraversalRequestId TraversalClient::SendTraversalPacket(const TraversalPacket& p { OutgoingTraversalPacketInfo info; info.packet = packet; - GetRandomishBytes((u8*)&info.packet.requestId, sizeof(info.packet.requestId)); + Common::Random::Generate(&info.packet.requestId, sizeof(info.packet.requestId)); info.tries = 0; m_OutgoingTraversalPackets.push_back(info); ResendPacket(&m_OutgoingTraversalPackets.back()); |
