#include "rtc_base/crypto_random.h"
#include <openssl/rand.h>
#include <cstdint>
#include <limits>
#include <memory>
#include <utility>
#include "absl/strings/string_view.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/synchronization/mutex.h"
#undef max
namespace rtc {
namespace {
class SecureRandomGenerator : public RandomGenerator { … };
class TestRandomGenerator : public RandomGenerator { … };
static const char kBase64[64] = …;
static const char kHex[16] = …;
static const char kUuidDigit17[4] = …;
webrtc::Mutex& GetRandomGeneratorLock() { … }
std::unique_ptr<RandomGenerator>& GetGlobalRng() { … }
RandomGenerator& Rng() { … }
}
void SetDefaultRandomGenerator() { … }
void SetRandomGenerator(std::unique_ptr<RandomGenerator> generator) { … }
void SetRandomTestMode(bool test) { … }
bool InitRandom(int seed) { … }
bool InitRandom(const char* seed, size_t len) { … }
std::string CreateRandomString(size_t len) { … }
static bool CreateRandomString(size_t len,
const char* table,
int table_size,
std::string* str) { … }
bool CreateRandomString(size_t len, std::string* str) { … }
bool CreateRandomString(size_t len, absl::string_view table, std::string* str) { … }
bool CreateRandomData(size_t length, std::string* data) { … }
std::string CreateRandomUuid() { … }
uint32_t CreateRandomId() { … }
uint64_t CreateRandomId64() { … }
uint32_t CreateRandomNonZeroId() { … }
double CreateRandomDouble() { … }
}