Browse Source

[settings] Add back & properly implement use_dev_keys

pull/3631/head
smiRaphi 7 days ago
parent
commit
99741f0ac8
No known key found for this signature in database GPG Key ID: 504C55BB79ABECB6
  1. 1
      src/common/settings.h
  2. 16
      src/core/crypto/key_manager.cpp
  3. 3
      src/core/crypto/key_manager.h
  4. 4
      src/yuzu/configuration/configure_debug.cpp
  5. 7
      src/yuzu/configuration/configure_debug.ui
  6. 5
      src/yuzu/main_window.cpp

1
src/common/settings.h

@ -771,6 +771,7 @@ struct Values {
Setting<bool> reporting_services{
linkage, false, "reporting_services", Category::Debugging, Specialization::Default, false};
Setting<bool> quest_flag{linkage, false, "quest_flag", Category::Debugging};
Setting<bool> use_dev_keys{linkage, false, "use_dev_keys", Category::Debugging};
Setting<bool> disable_macro_jit{linkage, false, "disable_macro_jit",
Category::DebuggingGraphics};
Setting<bool> disable_macro_hle{linkage, false, "disable_macro_hle",

16
src/core/crypto/key_manager.cpp

@ -21,6 +21,7 @@
#include "common/fs/path_util.h"
#include "common/hex_util.h"
#include "common/logging/log.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/crypto/aes_util.h"
#include "core/crypto/key_manager.h"
@ -642,8 +643,15 @@ void KeyManager::ReloadKeys() {
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
if (!Common::FS::CreateDir(keys_dir))
LOG_ERROR(Core, "Failed to create the keys directory.");
LoadFromFile(keys_dir / "prod.keys_autogenerated", false);
LoadFromFile(keys_dir / "prod.keys", false);
if (Settings::values.use_dev_keys.GetValue()) {
dev_mode = true;
LoadFromFile(keys_dir / "dev.keys_autogenerated", false);
LoadFromFile(keys_dir / "dev.keys", false);
} else {
dev_mode = false;
LoadFromFile(keys_dir / "prod.keys_autogenerated", false);
LoadFromFile(keys_dir / "prod.keys", false);
}
LoadFromFile(keys_dir / "title.keys_autogenerated", true);
LoadFromFile(keys_dir / "title.keys", true);
LoadFromFile(keys_dir / "console.keys_autogenerated", false);
@ -838,7 +846,7 @@ void KeyManager::WriteKeyToFile(KeyCategory category, std::string_view keyname,
std::string filename = "title.keys_autogenerated";
if (category == KeyCategory::Standard) {
filename = "prod.keys_autogenerated";
filename = dev_mode ? "dev.keys_autogenerated" : "prod.keys_autogenerated";
} else if (category == KeyCategory::Console) {
filename = "console.keys_autogenerated";
}
@ -936,6 +944,8 @@ bool KeyManager::KeyFileExists(bool title) {
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
if (title)
return Common::FS::Exists(keys_dir / "title.keys");
if (Settings::values.use_dev_keys.GetValue())
return Common::FS::Exists(keys_dir / "dev.keys");
return Common::FS::Exists(keys_dir / "prod.keys");
}

3
src/core/crypto/key_manager.h

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@ -314,6 +314,7 @@ private:
std::array<u8, 576> eticket_extended_kek{};
RSAKeyPair<2048> eticket_rsa_keypair{};
bool dev_mode;
void LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys);
template <size_t Size>

4
src/yuzu/configuration/configure_debug.cpp

@ -12,6 +12,7 @@
#include "common/logging/filter.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/crypto/key_manager.h"
#include "ui_configure_debug.h"
#include "yuzu/configuration/configure_debug.h"
#include "yuzu/debugger/console.h"
@ -45,6 +46,7 @@ void ConfigureDebug::SetConfiguration() {
ui->reporting_services->setChecked(Settings::values.reporting_services.GetValue());
ui->dump_audio_commands->setChecked(Settings::values.dump_audio_commands.GetValue());
ui->quest_flag->setChecked(Settings::values.quest_flag.GetValue());
ui->use_dev_keys->setChecked(Settings::values.use_dev_keys.GetValue());
ui->use_debug_asserts->setChecked(Settings::values.use_debug_asserts.GetValue());
ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue());
ui->enable_all_controllers->setChecked(Settings::values.enable_all_controllers.GetValue());
@ -105,6 +107,7 @@ void ConfigureDebug::ApplyConfiguration() {
Settings::values.reporting_services = ui->reporting_services->isChecked();
Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked();
Settings::values.quest_flag = ui->quest_flag->isChecked();
Settings::values.use_dev_keys = ui->use_dev_keys->isChecked();
Settings::values.use_debug_asserts = ui->use_debug_asserts->isChecked();
Settings::values.use_auto_stub = ui->use_auto_stub->isChecked();
Settings::values.enable_all_controllers = ui->enable_all_controllers->isChecked();
@ -126,6 +129,7 @@ void ConfigureDebug::ApplyConfiguration() {
Common::Log::Filter filter;
filter.ParseFilterString(Settings::values.log_filter.GetValue());
Common::Log::SetGlobalFilter(filter);
Core::Crypto::KeyManager::Instance().ReloadKeys();
}
void ConfigureDebug::changeEvent(QEvent* event) {

7
src/yuzu/configuration/configure_debug.ui

@ -435,6 +435,13 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="use_dev_keys">
<property name="text">
<string>Use dev.keys</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="use_debug_asserts">
<property name="text">

5
src/yuzu/main_window.cpp

@ -139,6 +139,8 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
#include "core/perf_stats.h"
#include "core/crypto/key_manager.h"
// Input //
#include "hid_core/hid_core.h"
#include "hid_core/frontend/emulated_controller.h"
@ -565,6 +567,9 @@ MainWindow::MainWindow(bool has_broken_vulkan)
// Check for orphaned profiles and reset profile data if necessary
QtCommon::Content::FixProfiles();
if (Settings::values.use_dev_keys.GetValue()) {
Core::Crypto::KeyManager::Instance().ReloadKeys();
}
game_list->LoadCompatibilityList();
game_list->PopulateAsync(UISettings::values.game_dirs);

Loading…
Cancel
Save