crypto/key_manager: Remove dependency on the global system accessor

We can supply the content provider as an argument instead of hardcoding
a global accessor in the implementation.
This commit is contained in:
Lioncash 2020-09-14 16:47:25 -04:00
parent 1a9774f824
commit e0dd440b1f
3 changed files with 12 additions and 7 deletions

View file

@ -23,7 +23,6 @@
#include "common/hex_util.h" #include "common/hex_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/string_util.h" #include "common/string_util.h"
#include "core/core.h"
#include "core/crypto/aes_util.h" #include "core/crypto/aes_util.h"
#include "core/crypto/key_manager.h" #include "core/crypto/key_manager.h"
#include "core/crypto/partition_data_manager.h" #include "core/crypto/partition_data_manager.h"
@ -1022,10 +1021,10 @@ void KeyManager::DeriveBase() {
} }
} }
void KeyManager::DeriveETicket(PartitionDataManager& data) { void KeyManager::DeriveETicket(PartitionDataManager& data,
const FileSys::ContentProvider& provider) {
// ETicket keys // ETicket keys
const auto es = Core::System::GetInstance().GetContentProvider().GetEntry( const auto es = provider.GetEntry(0x0100000000000033, FileSys::ContentRecordType::Program);
0x0100000000000033, FileSys::ContentRecordType::Program);
if (es == nullptr) { if (es == nullptr) {
return; return;

View file

@ -20,6 +20,10 @@ namespace Common::FS {
class IOFile; class IOFile;
} }
namespace FileSys {
class ContentProvider;
}
namespace Loader { namespace Loader {
enum class ResultStatus : u16; enum class ResultStatus : u16;
} }
@ -252,7 +256,7 @@ public:
bool BaseDeriveNecessary() const; bool BaseDeriveNecessary() const;
void DeriveBase(); void DeriveBase();
void DeriveETicket(PartitionDataManager& data); void DeriveETicket(PartitionDataManager& data, const FileSys::ContentProvider& provider);
void PopulateTickets(); void PopulateTickets();
void SynthesizeTickets(); void SynthesizeTickets();

View file

@ -2592,8 +2592,10 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
const auto function = [this, &keys, &pdm] { const auto function = [this, &keys, &pdm] {
keys.PopulateFromPartitionData(pdm); keys.PopulateFromPartitionData(pdm);
Core::System::GetInstance().GetFileSystemController().CreateFactories(*vfs);
keys.DeriveETicket(pdm); auto& system = Core::System::GetInstance();
system.GetFileSystemController().CreateFactories(*vfs);
keys.DeriveETicket(pdm, system.GetContentProvider());
}; };
QString errors; QString errors;