From 6503a9f53879f0a82ece1299397106b2ba088157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 12 Jun 2017 02:01:10 +0200 Subject: [PATCH] Allow the user to ignore signature issues during WAD import Improves usability with signature checks. --- Source/Core/UICommon/WiiUtils.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Source/Core/UICommon/WiiUtils.cpp b/Source/Core/UICommon/WiiUtils.cpp index d576dbcdd0..994079f623 100644 --- a/Source/Core/UICommon/WiiUtils.cpp +++ b/Source/Core/UICommon/WiiUtils.cpp @@ -5,6 +5,7 @@ #include "UICommon/WiiUtils.h" #include "Common/CommonTypes.h" #include "Common/MsgHandler.h" +#include "Core/ConfigManager.h" #include "Core/IOS/ES/ES.h" #include "Core/IOS/ES/Formats.h" #include "Core/IOS/IOS.h" @@ -27,12 +28,23 @@ bool InstallWAD(const std::string& wad_path) const auto es = ios.GetES(); IOS::HLE::Device::ES::Context context; - if (es->ImportTicket(wad.GetTicket().GetBytes(), wad.GetCertificateChain()) < 0 || - es->ImportTitleInit(context, tmd.GetBytes(), wad.GetCertificateChain()) < 0) + IOS::HLE::ReturnCode ret; + const bool checks_enabled = SConfig::GetInstance().m_enable_signature_checks; + while ((ret = es->ImportTicket(wad.GetTicket().GetBytes(), wad.GetCertificateChain())) < 0 || + (ret = es->ImportTitleInit(context, tmd.GetBytes(), wad.GetCertificateChain())) < 0) { + if (checks_enabled && ret == IOS::HLE::IOSC_FAIL_CHECKVALUE && + AskYesNoT("This WAD has not been signed by Nintendo. Continue to import?")) + { + SConfig::GetInstance().m_enable_signature_checks = false; + continue; + } + + SConfig::GetInstance().m_enable_signature_checks = checks_enabled; PanicAlertT("WAD installation failed: Could not initialise title import."); return false; } + SConfig::GetInstance().m_enable_signature_checks = checks_enabled; const bool contents_imported = [&]() { const u64 title_id = tmd.GetTitleId();