mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-25 13:17:05 +02:00
[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>
This commit is contained in:
parent
3d1a67af18
commit
361e6209b2
6 changed files with 32 additions and 4 deletions
|
|
@ -777,6 +777,7 @@ struct Values {
|
||||||
Setting<bool> reporting_services{
|
Setting<bool> reporting_services{
|
||||||
linkage, false, "reporting_services", Category::Debugging, Specialization::Default, false};
|
linkage, false, "reporting_services", Category::Debugging, Specialization::Default, false};
|
||||||
Setting<bool> quest_flag{linkage, false, "quest_flag", Category::Debugging};
|
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",
|
Setting<bool> disable_macro_jit{linkage, false, "disable_macro_jit",
|
||||||
Category::DebuggingGraphics};
|
Category::DebuggingGraphics};
|
||||||
Setting<bool> disable_macro_hle{linkage, false, "disable_macro_hle",
|
Setting<bool> disable_macro_hle{linkage, false, "disable_macro_hle",
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
#include "common/fs/path_util.h"
|
#include "common/fs/path_util.h"
|
||||||
#include "common/hex_util.h"
|
#include "common/hex_util.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
|
#include "common/settings.h"
|
||||||
#include "common/string_util.h"
|
#include "common/string_util.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"
|
||||||
|
|
@ -642,8 +643,15 @@ void KeyManager::ReloadKeys() {
|
||||||
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
|
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
|
||||||
if (!Common::FS::CreateDir(keys_dir))
|
if (!Common::FS::CreateDir(keys_dir))
|
||||||
LOG_ERROR(Core, "Failed to create the keys directory.");
|
LOG_ERROR(Core, "Failed to create the keys directory.");
|
||||||
LoadFromFile(keys_dir / "prod.keys_autogenerated", false);
|
if (Settings::values.use_dev_keys.GetValue()) {
|
||||||
LoadFromFile(keys_dir / "prod.keys", false);
|
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_autogenerated", true);
|
||||||
LoadFromFile(keys_dir / "title.keys", true);
|
LoadFromFile(keys_dir / "title.keys", true);
|
||||||
LoadFromFile(keys_dir / "console.keys_autogenerated", false);
|
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";
|
std::string filename = "title.keys_autogenerated";
|
||||||
if (category == KeyCategory::Standard) {
|
if (category == KeyCategory::Standard) {
|
||||||
filename = "prod.keys_autogenerated";
|
filename = dev_mode ? "dev.keys_autogenerated" : "prod.keys_autogenerated";
|
||||||
} else if (category == KeyCategory::Console) {
|
} else if (category == KeyCategory::Console) {
|
||||||
filename = "console.keys_autogenerated";
|
filename = "console.keys_autogenerated";
|
||||||
}
|
}
|
||||||
|
|
@ -936,6 +944,8 @@ bool KeyManager::KeyFileExists(bool title) {
|
||||||
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
|
const auto keys_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::KeysDir);
|
||||||
if (title)
|
if (title)
|
||||||
return Common::FS::Exists(keys_dir / "title.keys");
|
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");
|
return Common::FS::Exists(keys_dir / "prod.keys");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
|
|
@ -314,6 +314,7 @@ private:
|
||||||
std::array<u8, 576> eticket_extended_kek{};
|
std::array<u8, 576> eticket_extended_kek{};
|
||||||
RSAKeyPair<2048> eticket_rsa_keypair{};
|
RSAKeyPair<2048> eticket_rsa_keypair{};
|
||||||
|
|
||||||
|
bool dev_mode;
|
||||||
void LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys);
|
void LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys);
|
||||||
|
|
||||||
template <size_t Size>
|
template <size_t Size>
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
#include "common/logging/filter.h"
|
#include "common/logging/filter.h"
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
|
#include "core/crypto/key_manager.h"
|
||||||
#include "ui_configure_debug.h"
|
#include "ui_configure_debug.h"
|
||||||
#include "yuzu/configuration/configure_debug.h"
|
#include "yuzu/configuration/configure_debug.h"
|
||||||
#include "yuzu/debugger/console.h"
|
#include "yuzu/debugger/console.h"
|
||||||
|
|
@ -45,6 +46,7 @@ void ConfigureDebug::SetConfiguration() {
|
||||||
ui->reporting_services->setChecked(Settings::values.reporting_services.GetValue());
|
ui->reporting_services->setChecked(Settings::values.reporting_services.GetValue());
|
||||||
ui->dump_audio_commands->setChecked(Settings::values.dump_audio_commands.GetValue());
|
ui->dump_audio_commands->setChecked(Settings::values.dump_audio_commands.GetValue());
|
||||||
ui->quest_flag->setChecked(Settings::values.quest_flag.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_debug_asserts->setChecked(Settings::values.use_debug_asserts.GetValue());
|
||||||
ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue());
|
ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue());
|
||||||
ui->enable_all_controllers->setChecked(Settings::values.enable_all_controllers.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.reporting_services = ui->reporting_services->isChecked();
|
||||||
Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked();
|
Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked();
|
||||||
Settings::values.quest_flag = ui->quest_flag->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_debug_asserts = ui->use_debug_asserts->isChecked();
|
||||||
Settings::values.use_auto_stub = ui->use_auto_stub->isChecked();
|
Settings::values.use_auto_stub = ui->use_auto_stub->isChecked();
|
||||||
Settings::values.enable_all_controllers = ui->enable_all_controllers->isChecked();
|
Settings::values.enable_all_controllers = ui->enable_all_controllers->isChecked();
|
||||||
|
|
@ -126,6 +129,7 @@ void ConfigureDebug::ApplyConfiguration() {
|
||||||
Common::Log::Filter filter;
|
Common::Log::Filter filter;
|
||||||
filter.ParseFilterString(Settings::values.log_filter.GetValue());
|
filter.ParseFilterString(Settings::values.log_filter.GetValue());
|
||||||
Common::Log::SetGlobalFilter(filter);
|
Common::Log::SetGlobalFilter(filter);
|
||||||
|
Core::Crypto::KeyManager::Instance().ReloadKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigureDebug::changeEvent(QEvent* event) {
|
void ConfigureDebug::changeEvent(QEvent* event) {
|
||||||
|
|
|
||||||
|
|
@ -435,6 +435,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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">
|
<item row="2" column="0">
|
||||||
<widget class="QCheckBox" name="use_debug_asserts">
|
<widget class="QCheckBox" name="use_debug_asserts">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,8 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
|
||||||
|
|
||||||
#include "core/perf_stats.h"
|
#include "core/perf_stats.h"
|
||||||
|
|
||||||
|
#include "core/crypto/key_manager.h"
|
||||||
|
|
||||||
// Input //
|
// Input //
|
||||||
#include "hid_core/hid_core.h"
|
#include "hid_core/hid_core.h"
|
||||||
#include "hid_core/frontend/emulated_controller.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
|
// Check for orphaned profiles and reset profile data if necessary
|
||||||
QtCommon::Content::FixProfiles();
|
QtCommon::Content::FixProfiles();
|
||||||
|
|
||||||
|
if (Settings::values.use_dev_keys.GetValue()) {
|
||||||
|
Core::Crypto::KeyManager::Instance().ReloadKeys();
|
||||||
|
}
|
||||||
game_list->LoadCompatibilityList();
|
game_list->LoadCompatibilityList();
|
||||||
game_list->PopulateAsync(UISettings::values.game_dirs);
|
game_list->PopulateAsync(UISettings::values.game_dirs);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue