1
0
Fork 0
forked from suyu/suyu

Removing Warning

This commit is contained in:
Paulo Alfaiate 2024-03-18 18:29:11 +00:00 committed by Levi Akatsuki
parent 5e9a855f1e
commit e9eb3f3799
7 changed files with 30 additions and 25 deletions

1
.gitignore vendored
View file

@ -4,6 +4,7 @@
# Build directory # Build directory
[Bb]uild*/ [Bb]uild*/
doc-build/ doc-build/
cmake-build*/
# Generated source files # Generated source files
src/common/scm_rev.cpp src/common/scm_rev.cpp

View file

@ -648,14 +648,14 @@ void KeyManager::ReloadKeys() {
if (Settings::values.use_dev_keys) { if (Settings::values.use_dev_keys) {
dev_mode = true; dev_mode = true;
LoadFromFile(suyu_keys_dir / "dev.keys", false); LoadFromFile(suyu_keys_dir / "dev.keys", 1);
} else { } else {
dev_mode = false; dev_mode = false;
LoadFromFile(suyu_keys_dir / "prod.keys", false); LoadFromFile(suyu_keys_dir / "prod.keys", 2);
} }
LoadFromFile(suyu_keys_dir / "title.keys", true); LoadFromFile(suyu_keys_dir / "title.keys", 3);
LoadFromFile(suyu_keys_dir / "console.keys", false); LoadFromFile(suyu_keys_dir / "console.keys", 4);
} }
static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_t length) { static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_t length) {
@ -666,11 +666,26 @@ static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_
[](u8 c) { return std::isxdigit(c); }); [](u8 c) { return std::isxdigit(c); });
} }
void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys) { void KeyManager::LoadFromFile(const std::filesystem::path& file_path, int key_type) {
if (!Common::FS::Exists(file_path)) { if (!Common::FS::Exists(file_path)) {
LOG_ERROR(Crypto, "Failed to load key file at '{}': File not found", switch (key_type) {
file_path.generic_string()); case 1:
return; LOG_ERROR(Crypto, "Issue with Development key file at '{}': File not found",
file_path.generic_string());
return;
case 2:
LOG_ERROR(Crypto, "Issue with Production key file at '{}': File not found",
file_path.generic_string());
return;
case 3:
LOG_INFO(Crypto, "Issue with Title key file at '{}': File not found",
file_path.generic_string());
case 4:
LOG_INFO(Crypto, "Issue with Console key file at '{}': File not found",
file_path.generic_string());
default:
LOG_ERROR(Crypto, "Unknown Key Type");
}
} }
std::ifstream file; std::ifstream file;
@ -1307,4 +1322,4 @@ bool KeyManager::AddTicket(const Ticket& ticket) {
SetKey(S128KeyType::Titlekey, key.value(), rights_id[1], rights_id[0]); SetKey(S128KeyType::Titlekey, key.value(), rights_id[1], rights_id[0]);
return true; return true;
} }
} // namespace Core::Crypto } // namespace Core::Crypto

View file

@ -312,7 +312,7 @@ private:
RSAKeyPair<2048> eticket_rsa_keypair{}; RSAKeyPair<2048> eticket_rsa_keypair{};
bool dev_mode; bool dev_mode;
void LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys); void LoadFromFile(const std::filesystem::path& file_path, int key_type);
void DeriveGeneralPurposeKeys(std::size_t crypto_revision); void DeriveGeneralPurposeKeys(std::size_t crypto_revision);

View file

@ -55,10 +55,6 @@ AppLoader_NAX::LoadResult AppLoader_NAX::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
return {ResultStatus::ErrorNAXInconvertibleToNCA, {}}; return {ResultStatus::ErrorNAXInconvertibleToNCA, {}};
} }

View file

@ -102,10 +102,6 @@ AppLoader_NSP::LoadResult AppLoader_NSP::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
return {ResultStatus::ErrorNSPMissingProgramNCA, {}}; return {ResultStatus::ErrorNSPMissingProgramNCA, {}};
} }

View file

@ -71,10 +71,6 @@ AppLoader_XCI::LoadResult AppLoader_XCI::Load(Kernel::KProcess& process, Core::S
return {ResultStatus::ErrorMissingProductionKeyFile, {}}; return {ResultStatus::ErrorMissingProductionKeyFile, {}};
} }
if (!xci->HasProgramNCA() && !Core::Crypto::KeyManager::KeyFileExists(true)) {
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
}
const auto result = nca_loader->Load(process, system); const auto result = nca_loader->Load(process, system);
if (result.first != ResultStatus::Success) { if (result.first != ResultStatus::Success) {
return result; return result;

View file

@ -1755,9 +1755,10 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa
if (!ContentManager::AreKeysPresent()) { if (!ContentManager::AreKeysPresent()) {
QMessageBox::warning(this, tr("Derivation Components Missing"), QMessageBox::warning(this, tr("Derivation Components Missing"),
tr("Encryption keys are missing. " tr("Encryption keys are missing. "
"You need to provide both your own title.keys " "In order to use this emulator"
"and your own prod.keys " "you need to provide your own prod.keys"
"in order to play games")); "Some games might also require your own title.keys as well"
"in order to play them."));
return false; return false;
} }