diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-08-23 18:53:13 -0400 |
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-08-23 18:53:13 -0400 |
| commit | 4f18c17df77e791d30cc8c919108315610f315ef (patch) | |
| tree | fc7b487b8ab4311f8a09c73197f2c8e7cfdc546f /src/core/file_sys/content_archive.cpp | |
| parent | ccfd17638211140b97cbf43b8486a80221f47c9d (diff) | |
content_archive: Add update title detection
This is needed because the title IDs of update NCAs will not use the update title ID. The only sure way to tell is to look for a partition with BKTR crypto.
Diffstat (limited to 'src/core/file_sys/content_archive.cpp')
| -rw-r--r-- | src/core/file_sys/content_archive.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp index 008e11d8c..e8b5d6ece 100644 --- a/src/core/file_sys/content_archive.cpp +++ b/src/core/file_sys/content_archive.cpp @@ -258,6 +258,10 @@ NCA::NCA(VirtualFile file_) : file(std::move(file_)) { file->ReadBytes(sections.data(), length_sections, SECTION_HEADER_OFFSET); } + is_update = std::find_if(sections.begin(), sections.end(), [](const NCASectionHeader& header) { + return header.raw.header.crypto_type == NCASectionCryptoType::BKTR; + }) != sections.end(); + for (std::ptrdiff_t i = 0; i < number_sections; ++i) { auto section = sections[i]; @@ -358,6 +362,10 @@ VirtualFile NCA::GetBaseFile() const { return file; } +bool NCA::IsUpdate() const { + return is_update; +} + bool NCA::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) { return false; } |
