svc: Use proper random entropy generation algorithm

This commit is contained in:
Zach Hilman 2018-11-13 12:25:43 -05:00
parent 65bd03d74c
commit ab552e4a25
6 changed files with 33 additions and 8 deletions

View file

@ -8,6 +8,7 @@
#include <bitset>
#include <cstddef>
#include <memory>
#include <random>
#include <string>
#include <vector>
#include <boost/container/static_vector.hpp>
@ -119,6 +120,8 @@ struct CodeSet final {
class Process final : public Object {
public:
static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4;
static SharedPtr<Process> Create(KernelCore& kernel, std::string&& name);
std::string GetTypeName() const override {
@ -212,6 +215,11 @@ public:
total_process_running_time_ticks += ticks;
}
/// Gets 8 bytes of random data for svcGetInfo RandomEntropy
u64 GetRandomEntropy(std::size_t index) const {
return random_entropy.at(index);
}
/**
* Loads process-specifics configuration info with metadata provided
* by an executable.
@ -321,6 +329,9 @@ private:
/// Per-process handle table for storing created object handles in.
HandleTable handle_table;
/// Random values for svcGetInfo RandomEntropy
std::array<u64, RANDOM_ENTROPY_SIZE> random_entropy;
std::string name;
};