aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsmiRaphi <neogt404@gmail.com>2026-03-08 22:37:20 +0100
committercrueter <crueter@eden-emu.dev>2026-03-08 22:37:20 +0100
commit361e6209b2a7cbe2aec8119539f93b40f8a06213 (patch)
treed3685568459baa98169b5fbe1d1d332884da6d9d /src
parent3d1a67af18128831539c24f804b112f75b0194fd (diff)
[settings] Add back & properly implement use_dev_keys (#3631)
Was removed recently but also wasn't really working before, this adds it to the debug UI (under the kiosk option) and also makes it properly reload the keys on launch & setting change. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3631 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: smiRaphi <neogt404@gmail.com> Co-committed-by: smiRaphi <neogt404@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/common/settings.h1
-rw-r--r--src/core/crypto/key_manager.cpp16
-rw-r--r--src/core/crypto/key_manager.h3
-rw-r--r--src/yuzu/configuration/configure_debug.cpp4
-rw-r--r--src/yuzu/configuration/configure_debug.ui7
-rw-r--r--src/yuzu/main_window.cpp5
6 files changed, 32 insertions, 4 deletions
diff --git a/src/common/settings.h b/src/common/settings.h
index ac04d26fc5..8cd55bcdd3 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -777,6 +777,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",
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp
index 9a1b9d7a50..fc0ee064cc 100644
--- a/src/core/crypto/key_manager.cpp
+++ b/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");
}
diff --git a/src/core/crypto/key_manager.h b/src/core/crypto/key_manager.h
index 4d51b42677..7ef8375690 100644
--- a/src/core/crypto/key_manager.h
+++ b/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>
diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp
index bc835d35a2..e0bdbaeaa1 100644
--- a/src/yuzu/configuration/configure_debug.cpp
+++ b/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) {
diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui
index 1b1423b62c..f76f3b012d 100644
--- a/src/yuzu/configuration/configure_debug.ui
+++ b/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">
diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp
index 688078385a..399b3bd976 100644
--- a/src/yuzu/main_window.cpp
+++ b/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"
@@ -564,6 +566,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);