From fff1db973096a893475f3ec96ee6f28e35c4a67c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 21 May 2018 15:48:17 +0200 Subject: 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: * 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. --- Source/Core/Common/Network.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'Source/Core/Common/Network.cpp') diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index f492efd5ae..1d95e0c8a4 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -5,11 +5,10 @@ #include #include #include -#include #include "Common/Network.h" +#include "Common/Random.h" #include "Common/StringUtil.h" -#include "Common/Timer.h" namespace Common { @@ -31,11 +30,7 @@ void GenerateMacAddress(const MACConsumer type, u8* mac) } // Generate the 24-bit NIC-specific portion of the MAC address. - std::default_random_engine generator(Common::Timer::GetTimeMs()); - std::uniform_int_distribution distribution(0x00, 0xFF); - mac[3] = static_cast(distribution(generator)); - mac[4] = static_cast(distribution(generator)); - mac[5] = static_cast(distribution(generator)); + Common::Random::Generate(&mac[3], 3); } std::string MacAddressToString(const u8* mac) -- cgit v1.2.3