diff options
Diffstat (limited to 'src/core/file_sys')
-rw-r--r-- | src/core/file_sys/content_manager.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/file_sys/content_manager.cpp b/src/core/file_sys/content_manager.cpp new file mode 100644 index 000000000..fd53978fc --- /dev/null +++ b/src/core/file_sys/content_manager.cpp @@ -0,0 +1,25 @@ +#include "core/system.h" +#include "core/file_sys/registered_cache.h" +#include "core/file_sys/content_archive.h" +#include "core/crypto/key_manager.h" + +bool ContentManager::IsFirmwareAvailable() { + constexpr u64 MiiEditId = 0x0100000000001009; // Mii Edit applet ID + constexpr u64 QLaunchId = 0x0100000000001000; // Home Menu applet ID + + auto& system = Core::System::GetInstance(); + auto bis_system = system.GetFileSystemController().GetSystemNANDContents(); + if (!bis_system) { + return false; + } + + auto mii_applet_nca = bis_system->GetEntry(MiiEditId, FileSys::ContentRecordType::Program); + auto qlaunch_nca = bis_system->GetEntry(QLaunchId, FileSys::ContentRecordType::Program); + + if (!mii_applet_nca || !qlaunch_nca) { + return false; + } + + // Also check for essential keys + return Core::Crypto::KeyManager::Instance().IsFirmwareAvailable(); +}
\ No newline at end of file |