summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Network.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2018-05-21 15:48:17 +0200
committerLéo Lam <leo@innovatetechnologi.es>2018-05-31 17:54:43 +0200
commitfff1db973096a893475f3ec96ee6f28e35c4a67c (patch)
tree5b92984b635bab59a2639cc06ce9860a534df23e /Source/Core/Common/Network.cpp
parentdd77ace56ada6cd7c394b39105a61b61905e5822 (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/Network.cpp')
-rw-r--r--Source/Core/Common/Network.cpp9
1 files changed, 2 insertions, 7 deletions
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 <cctype>
#include <cstring>
#include <ctime>
-#include <random>
#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<int> distribution(0x00, 0xFF);
- mac[3] = static_cast<u8>(distribution(generator));
- mac[4] = static_cast<u8>(distribution(generator));
- mac[5] = static_cast<u8>(distribution(generator));
+ Common::Random::Generate(&mac[3], 3);
}
std::string MacAddressToString(const u8* mac)