diff --git a/.gitmodules b/.gitmodules index 247aac535da878aca9b4dc4e8c04a8e023372a69..4f4e8690bf9d065add1b3c301b71abcc1396d3de 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,9 +25,9 @@ [submodule "unicorn"] path = externals/unicorn url = https://github.com/yuzu-emu/unicorn -[submodule "externals/mbedtls"] - path = externals/mbedtls - url = https://github.com/DarkLordZach/mbedtls +[submodule "mbedtls"] + path = externals/mbedtls + url = https://github.com/DarkLordZach/mbedtls [submodule "opus"] - path = externals/opus - url = https://github.com/ogniK5377/opus.git + path = externals/opus + url = https://github.com/ogniK5377/opus.git diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 528d96a58bc9c0ce776ff9d60440172915934e9e..22fad97a37f58385a96f8c6c8001cc4eece2eaaa 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -348,7 +348,7 @@ add_library(core STATIC create_target_directory_groups(core) target_link_libraries(core PUBLIC common PRIVATE audio_core video_core) -target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt lz4_static opus unicorn) +target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt lz4_static mbedtls opus unicorn) if (ARCHITECTURE_x86_64) target_sources(core PRIVATE diff --git a/src/core/loader/xci.cpp b/src/core/loader/xci.cpp index d757862f0f4d1700a61c88f68f9f05369a353032..eb4dee2c259a4adc117cb04df2ee9cb9cc05cdaf 100644 --- a/src/core/loader/xci.cpp +++ b/src/core/loader/xci.cpp @@ -49,6 +49,8 @@ ResultStatus AppLoader_XCI::Load(Kernel::SharedPtr<Kernel::Process>& process) { } if (xci->GetNCAFileByType(FileSys::NCAContentType::Program) == nullptr) { + if (!Core::Crypto::KeyManager::KeyFileExists(false)) + return ResultStatus::ErrorMissingKeys; return ResultStatus::ErrorDecrypting; } diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 5bdf41ea4fbfc10c29ebc4a59286a607ea59baf8..34d4f0754c85bf7700ffc7d1631b0d0b60446a93 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -456,7 +456,7 @@ bool GMainWindow::LoadROM(const QString& filename) { this, tr("Error while loading ROM!"), tr(("The game you are trying to load is encrypted and the required keys to load " "the game could not be found in your configuration. " + - file_text + " Please refer to <a href=''>How to Dump Keys</a> for help.") + file_text + " Please refer to the yuzu wiki for help.") .c_str())); break; } @@ -465,8 +465,8 @@ bool GMainWindow::LoadROM(const QString& filename) { this, tr("Error while loading ROM!"), tr("There was a general error while decrypting the game. This means that the keys " "necessary were found, but were either incorrect, the game itself was not a " - "valid game or the game uses an unhandled cryptographic scheme. Please refer to " - "<a href=''>How to Dump Keys</a> to double check that you have the correct " + "valid game or the game uses an unhandled cryptographic scheme. Please double " + "check that you have the correct " "keys.")); break; } diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 5970cdb4ed9ba2974bdf157633f9501b1e9de12c..c3b0d9f1f68e418ffb150f673ad6172e35c36df6 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -175,13 +175,13 @@ int main(int argc, char** argv) { return -1; case Core::System::ResultStatus::ErrorLoader_ErrorMissingKeys: LOG_CRITICAL(Frontend, "The game you are trying to load is encrypted and the keys required " - "could not be found. Please refer to <LINK> for help"); + "could not be found. Please refer to the yuzu wiki for help"); return -1; case Core::System::ResultStatus::ErrorLoader_ErrorDecrypting: LOG_CRITICAL(Frontend, "The game you are trying to load is encrypted and there was a " "general error while decrypting. This could mean that the keys are " "incorrect, game is invalid or game uses an unsupported method of " - "crypto. Please refer to <LINK> to double-check your keys"); + "crypto. Please double-check your keys"); return -1; case Core::System::ResultStatus::ErrorLoader_ErrorInvalidFormat: LOG_CRITICAL(Frontend, "Error while loading ROM: The ROM format is not supported.");