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/Network.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/Network.cpp')
| -rw-r--r-- | Source/Core/Common/Network.cpp | 9 |
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) |
