diff options
Diffstat (limited to 'src')
27 files changed, 66 insertions, 37 deletions
diff --git a/src/core/crypto/partition_data_manager.cpp b/src/core/crypto/partition_data_manager.cpp index 46136d04a..5f1c86a09 100644 --- a/src/core/crypto/partition_data_manager.cpp +++ b/src/core/crypto/partition_data_manager.cpp | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include "core/file_sys/vfs.h" | 26 | #include "core/file_sys/vfs.h" |
| 27 | #include "core/file_sys/vfs_offset.h" | 27 | #include "core/file_sys/vfs_offset.h" |
| 28 | #include "core/file_sys/vfs_vector.h" | 28 | #include "core/file_sys/vfs_vector.h" |
| 29 | #include "core/loader/loader.h" | ||
| 29 | 30 | ||
| 30 | using Common::AsArray; | 31 | using Common::AsArray; |
| 31 | 32 | ||
diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp index 9ffda2e14..e04a54c3c 100644 --- a/src/core/file_sys/bis_factory.cpp +++ b/src/core/file_sys/bis_factory.cpp | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | #include "core/file_sys/bis_factory.h" | 8 | #include "core/file_sys/bis_factory.h" |
| 9 | #include "core/file_sys/mode.h" | 9 | #include "core/file_sys/mode.h" |
| 10 | #include "core/file_sys/registered_cache.h" | 10 | #include "core/file_sys/registered_cache.h" |
| 11 | #include "core/settings.h" | ||
| 12 | 11 | ||
| 13 | namespace FileSys { | 12 | namespace FileSys { |
| 14 | 13 | ||
diff --git a/src/core/file_sys/bis_factory.h b/src/core/file_sys/bis_factory.h index 8f0451c98..438d3f8d8 100644 --- a/src/core/file_sys/bis_factory.h +++ b/src/core/file_sys/bis_factory.h | |||
| @@ -6,7 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | 8 | ||
| 9 | #include "core/file_sys/vfs.h" | 9 | #include "common/common_types.h" |
| 10 | #include "core/file_sys/vfs_types.h" | ||
| 10 | 11 | ||
| 11 | namespace FileSys { | 12 | namespace FileSys { |
| 12 | 13 | ||
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp index 664a47e7f..956da68f7 100644 --- a/src/core/file_sys/card_image.cpp +++ b/src/core/file_sys/card_image.cpp | |||
| @@ -8,11 +8,11 @@ | |||
| 8 | #include <fmt/ostream.h> | 8 | #include <fmt/ostream.h> |
| 9 | 9 | ||
| 10 | #include "common/logging/log.h" | 10 | #include "common/logging/log.h" |
| 11 | #include "core/crypto/key_manager.h" | ||
| 11 | #include "core/file_sys/card_image.h" | 12 | #include "core/file_sys/card_image.h" |
| 12 | #include "core/file_sys/content_archive.h" | 13 | #include "core/file_sys/content_archive.h" |
| 13 | #include "core/file_sys/nca_metadata.h" | 14 | #include "core/file_sys/nca_metadata.h" |
| 14 | #include "core/file_sys/partition_filesystem.h" | 15 | #include "core/file_sys/partition_filesystem.h" |
| 15 | #include "core/file_sys/romfs.h" | ||
| 16 | #include "core/file_sys/submission_package.h" | 16 | #include "core/file_sys/submission_package.h" |
| 17 | #include "core/file_sys/vfs_concat.h" | 17 | #include "core/file_sys/vfs_concat.h" |
| 18 | #include "core/file_sys/vfs_offset.h" | 18 | #include "core/file_sys/vfs_offset.h" |
| @@ -31,7 +31,8 @@ constexpr std::array partition_names{ | |||
| 31 | 31 | ||
| 32 | XCI::XCI(VirtualFile file_) | 32 | XCI::XCI(VirtualFile file_) |
| 33 | : file(std::move(file_)), program_nca_status{Loader::ResultStatus::ErrorXCIMissingProgramNCA}, | 33 | : file(std::move(file_)), program_nca_status{Loader::ResultStatus::ErrorXCIMissingProgramNCA}, |
| 34 | partitions(partition_names.size()), partitions_raw(partition_names.size()) { | 34 | partitions(partition_names.size()), |
| 35 | partitions_raw(partition_names.size()), keys{Core::Crypto::KeyManager::Instance()} { | ||
| 35 | if (file->ReadObject(&header) != sizeof(GamecardHeader)) { | 36 | if (file->ReadObject(&header) != sizeof(GamecardHeader)) { |
| 36 | status = Loader::ResultStatus::ErrorBadXCIHeader; | 37 | status = Loader::ResultStatus::ErrorBadXCIHeader; |
| 37 | return; | 38 | return; |
diff --git a/src/core/file_sys/card_image.h b/src/core/file_sys/card_image.h index e1b136426..2d0a0f285 100644 --- a/src/core/file_sys/card_image.h +++ b/src/core/file_sys/card_image.h | |||
| @@ -9,9 +9,12 @@ | |||
| 9 | #include <vector> | 9 | #include <vector> |
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "common/swap.h" | 11 | #include "common/swap.h" |
| 12 | #include "core/crypto/key_manager.h" | ||
| 13 | #include "core/file_sys/vfs.h" | 12 | #include "core/file_sys/vfs.h" |
| 14 | 13 | ||
| 14 | namespace Core::Crypto { | ||
| 15 | class KeyManager; | ||
| 16 | } | ||
| 17 | |||
| 15 | namespace Loader { | 18 | namespace Loader { |
| 16 | enum class ResultStatus : u16; | 19 | enum class ResultStatus : u16; |
| 17 | } | 20 | } |
| @@ -140,6 +143,6 @@ private: | |||
| 140 | 143 | ||
| 141 | u64 update_normal_partition_end; | 144 | u64 update_normal_partition_end; |
| 142 | 145 | ||
| 143 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); | 146 | Core::Crypto::KeyManager& keys; |
| 144 | }; | 147 | }; |
| 145 | } // namespace FileSys | 148 | } // namespace FileSys |
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp index 5039341c7..426fb6bb5 100644 --- a/src/core/file_sys/content_archive.cpp +++ b/src/core/file_sys/content_archive.cpp | |||
| @@ -10,10 +10,10 @@ | |||
| 10 | #include "common/logging/log.h" | 10 | #include "common/logging/log.h" |
| 11 | #include "core/crypto/aes_util.h" | 11 | #include "core/crypto/aes_util.h" |
| 12 | #include "core/crypto/ctr_encryption_layer.h" | 12 | #include "core/crypto/ctr_encryption_layer.h" |
| 13 | #include "core/crypto/key_manager.h" | ||
| 13 | #include "core/file_sys/content_archive.h" | 14 | #include "core/file_sys/content_archive.h" |
| 14 | #include "core/file_sys/nca_patch.h" | 15 | #include "core/file_sys/nca_patch.h" |
| 15 | #include "core/file_sys/partition_filesystem.h" | 16 | #include "core/file_sys/partition_filesystem.h" |
| 16 | #include "core/file_sys/romfs.h" | ||
| 17 | #include "core/file_sys/vfs_offset.h" | 17 | #include "core/file_sys/vfs_offset.h" |
| 18 | #include "core/loader/loader.h" | 18 | #include "core/loader/loader.h" |
| 19 | 19 | ||
| @@ -119,7 +119,8 @@ static bool IsValidNCA(const NCAHeader& header) { | |||
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_offset) | 121 | NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_offset) |
| 122 | : file(std::move(file_)), bktr_base_romfs(std::move(bktr_base_romfs_)) { | 122 | : file(std::move(file_)), |
| 123 | bktr_base_romfs(std::move(bktr_base_romfs_)), keys{Core::Crypto::KeyManager::Instance()} { | ||
| 123 | if (file == nullptr) { | 124 | if (file == nullptr) { |
| 124 | status = Loader::ResultStatus::ErrorNullFile; | 125 | status = Loader::ResultStatus::ErrorNullFile; |
| 125 | return; | 126 | return; |
diff --git a/src/core/file_sys/content_archive.h b/src/core/file_sys/content_archive.h index d25cbcf91..69292232a 100644 --- a/src/core/file_sys/content_archive.h +++ b/src/core/file_sys/content_archive.h | |||
| @@ -158,7 +158,7 @@ private: | |||
| 158 | bool encrypted = false; | 158 | bool encrypted = false; |
| 159 | bool is_update = false; | 159 | bool is_update = false; |
| 160 | 160 | ||
| 161 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); | 161 | Core::Crypto::KeyManager& keys; |
| 162 | }; | 162 | }; |
| 163 | 163 | ||
| 164 | } // namespace FileSys | 164 | } // namespace FileSys |
diff --git a/src/core/file_sys/control_metadata.cpp b/src/core/file_sys/control_metadata.cpp index 63cd2eead..b0a130345 100644 --- a/src/core/file_sys/control_metadata.cpp +++ b/src/core/file_sys/control_metadata.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include "common/string_util.h" | 5 | #include "common/string_util.h" |
| 6 | #include "common/swap.h" | 6 | #include "common/swap.h" |
| 7 | #include "core/file_sys/control_metadata.h" | 7 | #include "core/file_sys/control_metadata.h" |
| 8 | #include "core/file_sys/vfs.h" | ||
| 8 | 9 | ||
| 9 | namespace FileSys { | 10 | namespace FileSys { |
| 10 | 11 | ||
diff --git a/src/core/file_sys/control_metadata.h b/src/core/file_sys/control_metadata.h index e37b2fadf..9ab86e35b 100644 --- a/src/core/file_sys/control_metadata.h +++ b/src/core/file_sys/control_metadata.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include "common/common_funcs.h" | 10 | #include "common/common_funcs.h" |
| 11 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| 12 | #include "common/swap.h" | 12 | #include "common/swap.h" |
| 13 | #include "core/file_sys/vfs.h" | 13 | #include "core/file_sys/vfs_types.h" |
| 14 | 14 | ||
| 15 | namespace FileSys { | 15 | namespace FileSys { |
| 16 | 16 | ||
diff --git a/src/core/file_sys/kernel_executable.cpp b/src/core/file_sys/kernel_executable.cpp index 76313679d..ef93ef3ed 100644 --- a/src/core/file_sys/kernel_executable.cpp +++ b/src/core/file_sys/kernel_executable.cpp | |||
| @@ -2,9 +2,12 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cstring> | ||
| 6 | |||
| 5 | #include "common/string_util.h" | 7 | #include "common/string_util.h" |
| 6 | #include "core/file_sys/kernel_executable.h" | 8 | #include "core/file_sys/kernel_executable.h" |
| 7 | #include "core/file_sys/vfs_offset.h" | 9 | #include "core/file_sys/vfs_offset.h" |
| 10 | #include "core/loader/loader.h" | ||
| 8 | 11 | ||
| 9 | namespace FileSys { | 12 | namespace FileSys { |
| 10 | 13 | ||
diff --git a/src/core/file_sys/kernel_executable.h b/src/core/file_sys/kernel_executable.h index 324a57384..044c554d3 100644 --- a/src/core/file_sys/kernel_executable.h +++ b/src/core/file_sys/kernel_executable.h | |||
| @@ -4,10 +4,17 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 8 | #include <vector> | ||
| 9 | |||
| 7 | #include "common/common_funcs.h" | 10 | #include "common/common_funcs.h" |
| 11 | #include "common/common_types.h" | ||
| 8 | #include "common/swap.h" | 12 | #include "common/swap.h" |
| 9 | #include "core/file_sys/vfs_types.h" | 13 | #include "core/file_sys/vfs_types.h" |
| 10 | #include "core/loader/loader.h" | 14 | |
| 15 | namespace Loader { | ||
| 16 | enum class ResultStatus : u16; | ||
| 17 | } | ||
| 11 | 18 | ||
| 12 | namespace FileSys { | 19 | namespace FileSys { |
| 13 | 20 | ||
diff --git a/src/core/file_sys/nca_metadata.cpp b/src/core/file_sys/nca_metadata.cpp index 93d0df6b9..2d1476e3a 100644 --- a/src/core/file_sys/nca_metadata.cpp +++ b/src/core/file_sys/nca_metadata.cpp | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 8 | #include "common/swap.h" | 8 | #include "common/swap.h" |
| 9 | #include "core/file_sys/nca_metadata.h" | 9 | #include "core/file_sys/nca_metadata.h" |
| 10 | #include "core/file_sys/vfs.h" | ||
| 10 | 11 | ||
| 11 | namespace FileSys { | 12 | namespace FileSys { |
| 12 | 13 | ||
diff --git a/src/core/file_sys/nca_metadata.h b/src/core/file_sys/nca_metadata.h index 1f82fff0a..53535e5f5 100644 --- a/src/core/file_sys/nca_metadata.h +++ b/src/core/file_sys/nca_metadata.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include "common/common_funcs.h" | 10 | #include "common/common_funcs.h" |
| 11 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
| 12 | #include "common/swap.h" | 12 | #include "common/swap.h" |
| 13 | #include "core/file_sys/vfs.h" | 13 | #include "core/file_sys/vfs_types.h" |
| 14 | 14 | ||
| 15 | namespace FileSys { | 15 | namespace FileSys { |
| 16 | class CNMT; | 16 | class CNMT; |
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp index 846986736..48a2ed4d4 100644 --- a/src/core/file_sys/partition_filesystem.cpp +++ b/src/core/file_sys/partition_filesystem.cpp | |||
| @@ -21,7 +21,7 @@ bool PartitionFilesystem::Header::HasValidMagicValue() const { | |||
| 21 | magic == Common::MakeMagic('P', 'F', 'S', '0'); | 21 | magic == Common::MakeMagic('P', 'F', 'S', '0'); |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) { | 24 | PartitionFilesystem::PartitionFilesystem(VirtualFile file) { |
| 25 | // At least be as large as the header | 25 | // At least be as large as the header |
| 26 | if (file->GetSize() < sizeof(Header)) { | 26 | if (file->GetSize() < sizeof(Header)) { |
| 27 | status = Loader::ResultStatus::ErrorBadPFSHeader; | 27 | status = Loader::ResultStatus::ErrorBadPFSHeader; |
| @@ -89,11 +89,11 @@ std::map<std::string, u64> PartitionFilesystem::GetFileSizes() const { | |||
| 89 | return sizes; | 89 | return sizes; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | std::vector<std::shared_ptr<VfsFile>> PartitionFilesystem::GetFiles() const { | 92 | std::vector<VirtualFile> PartitionFilesystem::GetFiles() const { |
| 93 | return pfs_files; | 93 | return pfs_files; |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | std::vector<std::shared_ptr<VfsDirectory>> PartitionFilesystem::GetSubdirectories() const { | 96 | std::vector<VirtualDir> PartitionFilesystem::GetSubdirectories() const { |
| 97 | return {}; | 97 | return {}; |
| 98 | } | 98 | } |
| 99 | 99 | ||
| @@ -101,7 +101,7 @@ std::string PartitionFilesystem::GetName() const { | |||
| 101 | return is_hfs ? "HFS0" : "PFS0"; | 101 | return is_hfs ? "HFS0" : "PFS0"; |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | std::shared_ptr<VfsDirectory> PartitionFilesystem::GetParentDirectory() const { | 104 | VirtualDir PartitionFilesystem::GetParentDirectory() const { |
| 105 | // TODO(DarkLordZach): Add support for nested containers. | 105 | // TODO(DarkLordZach): Add support for nested containers. |
| 106 | return nullptr; | 106 | return nullptr; |
| 107 | } | 107 | } |
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h index 279193b19..0f831148e 100644 --- a/src/core/file_sys/partition_filesystem.h +++ b/src/core/file_sys/partition_filesystem.h | |||
| @@ -24,7 +24,7 @@ namespace FileSys { | |||
| 24 | */ | 24 | */ |
| 25 | class PartitionFilesystem : public ReadOnlyVfsDirectory { | 25 | class PartitionFilesystem : public ReadOnlyVfsDirectory { |
| 26 | public: | 26 | public: |
| 27 | explicit PartitionFilesystem(std::shared_ptr<VfsFile> file); | 27 | explicit PartitionFilesystem(VirtualFile file); |
| 28 | ~PartitionFilesystem() override; | 28 | ~PartitionFilesystem() override; |
| 29 | 29 | ||
| 30 | Loader::ResultStatus GetStatus() const; | 30 | Loader::ResultStatus GetStatus() const; |
| @@ -32,10 +32,10 @@ public: | |||
| 32 | std::map<std::string, u64> GetFileOffsets() const; | 32 | std::map<std::string, u64> GetFileOffsets() const; |
| 33 | std::map<std::string, u64> GetFileSizes() const; | 33 | std::map<std::string, u64> GetFileSizes() const; |
| 34 | 34 | ||
| 35 | std::vector<std::shared_ptr<VfsFile>> GetFiles() const override; | 35 | std::vector<VirtualFile> GetFiles() const override; |
| 36 | std::vector<std::shared_ptr<VfsDirectory>> GetSubdirectories() const override; | 36 | std::vector<VirtualDir> GetSubdirectories() const override; |
| 37 | std::string GetName() const override; | 37 | std::string GetName() const override; |
| 38 | std::shared_ptr<VfsDirectory> GetParentDirectory() const override; | 38 | VirtualDir GetParentDirectory() const override; |
| 39 | void PrintDebugInfo() const; | 39 | void PrintDebugInfo() const; |
| 40 | 40 | ||
| 41 | private: | 41 | private: |
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index 729dbb5f4..c228d253e 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp | |||
| @@ -49,8 +49,7 @@ std::string FormatTitleVersion(u32 version, TitleVersionFormat format) { | |||
| 49 | return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]); | 49 | return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir, | 52 | VirtualDir FindSubdirectoryCaseless(const VirtualDir dir, std::string_view name) { |
| 53 | std::string_view name) { | ||
| 54 | #ifdef _WIN32 | 53 | #ifdef _WIN32 |
| 55 | return dir->GetSubdirectory(name); | 54 | return dir->GetSubdirectory(name); |
| 56 | #else | 55 | #else |
diff --git a/src/core/file_sys/patch_manager.h b/src/core/file_sys/patch_manager.h index f4cb918dd..f12d0629f 100644 --- a/src/core/file_sys/patch_manager.h +++ b/src/core/file_sys/patch_manager.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include <string> | 9 | #include <string> |
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "core/file_sys/nca_metadata.h" | 11 | #include "core/file_sys/nca_metadata.h" |
| 12 | #include "core/file_sys/vfs.h" | 12 | #include "core/file_sys/vfs_types.h" |
| 13 | #include "core/memory/dmnt_cheat_types.h" | 13 | #include "core/memory/dmnt_cheat_types.h" |
| 14 | 14 | ||
| 15 | namespace Core { | 15 | namespace Core { |
| @@ -31,8 +31,7 @@ std::string FormatTitleVersion(u32 version, | |||
| 31 | 31 | ||
| 32 | // Returns a directory with name matching name case-insensitive. Returns nullptr if directory | 32 | // Returns a directory with name matching name case-insensitive. Returns nullptr if directory |
| 33 | // doesn't have a directory with name. | 33 | // doesn't have a directory with name. |
| 34 | std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir, | 34 | VirtualDir FindSubdirectoryCaseless(VirtualDir dir, std::string_view name); |
| 35 | std::string_view name); | ||
| 36 | 35 | ||
| 37 | // A centralized class to manage patches to games. | 36 | // A centralized class to manage patches to games. |
| 38 | class PatchManager { | 37 | class PatchManager { |
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp index 43169bf9f..9cf49bf44 100644 --- a/src/core/file_sys/program_metadata.cpp +++ b/src/core/file_sys/program_metadata.cpp | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | #include "common/logging/log.h" | 8 | #include "common/logging/log.h" |
| 9 | #include "core/file_sys/program_metadata.h" | 9 | #include "core/file_sys/program_metadata.h" |
| 10 | #include "core/file_sys/vfs.h" | ||
| 10 | #include "core/loader/loader.h" | 11 | #include "core/loader/loader.h" |
| 11 | 12 | ||
| 12 | namespace FileSys { | 13 | namespace FileSys { |
diff --git a/src/core/file_sys/program_metadata.h b/src/core/file_sys/program_metadata.h index 35069972b..455532567 100644 --- a/src/core/file_sys/program_metadata.h +++ b/src/core/file_sys/program_metadata.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include "common/bit_field.h" | 9 | #include "common/bit_field.h" |
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "common/swap.h" | 11 | #include "common/swap.h" |
| 12 | #include "core/file_sys/vfs.h" | 12 | #include "core/file_sys/vfs_types.h" |
| 13 | 13 | ||
| 14 | namespace Loader { | 14 | namespace Loader { |
| 15 | enum class ResultStatus : u16; | 15 | enum class ResultStatus : u16; |
diff --git a/src/core/file_sys/romfs.h b/src/core/file_sys/romfs.h index 2fd07ed04..82e683782 100644 --- a/src/core/file_sys/romfs.h +++ b/src/core/file_sys/romfs.h | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 8 | #include "core/file_sys/vfs.h" | 7 | #include "core/file_sys/vfs.h" |
| 9 | 8 | ||
| 10 | namespace FileSys { | 9 | namespace FileSys { |
diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp index 6f732e4d8..cb56d8f2d 100644 --- a/src/core/file_sys/sdmc_factory.cpp +++ b/src/core/file_sys/sdmc_factory.cpp | |||
| @@ -5,8 +5,8 @@ | |||
| 5 | #include <memory> | 5 | #include <memory> |
| 6 | #include "core/file_sys/registered_cache.h" | 6 | #include "core/file_sys/registered_cache.h" |
| 7 | #include "core/file_sys/sdmc_factory.h" | 7 | #include "core/file_sys/sdmc_factory.h" |
| 8 | #include "core/file_sys/vfs.h" | ||
| 8 | #include "core/file_sys/xts_archive.h" | 9 | #include "core/file_sys/xts_archive.h" |
| 9 | #include "core/settings.h" | ||
| 10 | 10 | ||
| 11 | namespace FileSys { | 11 | namespace FileSys { |
| 12 | 12 | ||
diff --git a/src/core/file_sys/sdmc_factory.h b/src/core/file_sys/sdmc_factory.h index 42dc4e08a..2bb92ba93 100644 --- a/src/core/file_sys/sdmc_factory.h +++ b/src/core/file_sys/sdmc_factory.h | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include "core/file_sys/vfs.h" | 8 | #include "core/file_sys/vfs_types.h" |
| 9 | #include "core/hle/result.h" | 9 | #include "core/hle/result.h" |
| 10 | 10 | ||
| 11 | namespace FileSys { | 11 | namespace FileSys { |
diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp index 175a8266a..b9ce93b7c 100644 --- a/src/core/file_sys/submission_package.cpp +++ b/src/core/file_sys/submission_package.cpp | |||
| @@ -54,7 +54,7 @@ void SetTicketKeys(const std::vector<VirtualFile>& files) { | |||
| 54 | 54 | ||
| 55 | NSP::NSP(VirtualFile file_) | 55 | NSP::NSP(VirtualFile file_) |
| 56 | : file(std::move(file_)), status{Loader::ResultStatus::Success}, | 56 | : file(std::move(file_)), status{Loader::ResultStatus::Success}, |
| 57 | pfs(std::make_shared<PartitionFilesystem>(file)) { | 57 | pfs(std::make_shared<PartitionFilesystem>(file)), keys{Core::Crypto::KeyManager::Instance()} { |
| 58 | if (pfs->GetStatus() != Loader::ResultStatus::Success) { | 58 | if (pfs->GetStatus() != Loader::ResultStatus::Success) { |
| 59 | status = pfs->GetStatus(); | 59 | status = pfs->GetStatus(); |
| 60 | return; | 60 | return; |
diff --git a/src/core/file_sys/submission_package.h b/src/core/file_sys/submission_package.h index cf89de6a9..2db5e46b8 100644 --- a/src/core/file_sys/submission_package.h +++ b/src/core/file_sys/submission_package.h | |||
| @@ -10,6 +10,10 @@ | |||
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "core/file_sys/vfs.h" | 11 | #include "core/file_sys/vfs.h" |
| 12 | 12 | ||
| 13 | namespace Core::Crypto { | ||
| 14 | class KeyManager; | ||
| 15 | } | ||
| 16 | |||
| 13 | namespace Loader { | 17 | namespace Loader { |
| 14 | enum class ResultStatus : u16; | 18 | enum class ResultStatus : u16; |
| 15 | } | 19 | } |
| @@ -73,7 +77,7 @@ private: | |||
| 73 | std::map<u64, std::map<std::pair<TitleType, ContentRecordType>, std::shared_ptr<NCA>>> ncas; | 77 | std::map<u64, std::map<std::pair<TitleType, ContentRecordType>, std::shared_ptr<NCA>>> ncas; |
| 74 | std::vector<VirtualFile> ticket_files; | 78 | std::vector<VirtualFile> ticket_files; |
| 75 | 79 | ||
| 76 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); | 80 | Core::Crypto::KeyManager& keys; |
| 77 | 81 | ||
| 78 | VirtualFile romfs; | 82 | VirtualFile romfs; |
| 79 | VirtualDir exefs; | 83 | VirtualDir exefs; |
diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp index ccf5966d0..24c58e7ae 100644 --- a/src/core/file_sys/xts_archive.cpp +++ b/src/core/file_sys/xts_archive.cpp | |||
| @@ -15,8 +15,9 @@ | |||
| 15 | #include "common/hex_util.h" | 15 | #include "common/hex_util.h" |
| 16 | #include "common/string_util.h" | 16 | #include "common/string_util.h" |
| 17 | #include "core/crypto/aes_util.h" | 17 | #include "core/crypto/aes_util.h" |
| 18 | #include "core/crypto/key_manager.h" | ||
| 18 | #include "core/crypto/xts_encryption_layer.h" | 19 | #include "core/crypto/xts_encryption_layer.h" |
| 19 | #include "core/file_sys/partition_filesystem.h" | 20 | #include "core/file_sys/content_archive.h" |
| 20 | #include "core/file_sys/vfs_offset.h" | 21 | #include "core/file_sys/vfs_offset.h" |
| 21 | #include "core/file_sys/xts_archive.h" | 22 | #include "core/file_sys/xts_archive.h" |
| 22 | #include "core/loader/loader.h" | 23 | #include "core/loader/loader.h" |
| @@ -43,7 +44,9 @@ static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t | |||
| 43 | return true; | 44 | return true; |
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | NAX::NAX(VirtualFile file_) : header(std::make_unique<NAXHeader>()), file(std::move(file_)) { | 47 | NAX::NAX(VirtualFile file_) |
| 48 | : header(std::make_unique<NAXHeader>()), | ||
| 49 | file(std::move(file_)), keys{Core::Crypto::KeyManager::Instance()} { | ||
| 47 | std::string path = Common::FS::SanitizePath(file->GetFullPath()); | 50 | std::string path = Common::FS::SanitizePath(file->GetFullPath()); |
| 48 | static const std::regex nax_path_regex("/registered/(000000[0-9A-F]{2})/([0-9A-F]{32})\\.nca", | 51 | static const std::regex nax_path_regex("/registered/(000000[0-9A-F]{2})/([0-9A-F]{32})\\.nca", |
| 49 | std::regex_constants::ECMAScript | | 52 | std::regex_constants::ECMAScript | |
| @@ -60,7 +63,8 @@ NAX::NAX(VirtualFile file_) : header(std::make_unique<NAXHeader>()), file(std::m | |||
| 60 | } | 63 | } |
| 61 | 64 | ||
| 62 | NAX::NAX(VirtualFile file_, std::array<u8, 0x10> nca_id) | 65 | NAX::NAX(VirtualFile file_, std::array<u8, 0x10> nca_id) |
| 63 | : header(std::make_unique<NAXHeader>()), file(std::move(file_)) { | 66 | : header(std::make_unique<NAXHeader>()), |
| 67 | file(std::move(file_)), keys{Core::Crypto::KeyManager::Instance()} { | ||
| 64 | Core::Crypto::SHA256Hash hash{}; | 68 | Core::Crypto::SHA256Hash hash{}; |
| 65 | mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0); | 69 | mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0); |
| 66 | status = Parse(fmt::format("/registered/000000{:02X}/{}.nca", hash[0], | 70 | status = Parse(fmt::format("/registered/000000{:02X}/{}.nca", hash[0], |
diff --git a/src/core/file_sys/xts_archive.h b/src/core/file_sys/xts_archive.h index 563531bb6..c472e226e 100644 --- a/src/core/file_sys/xts_archive.h +++ b/src/core/file_sys/xts_archive.h | |||
| @@ -9,12 +9,16 @@ | |||
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "common/swap.h" | 10 | #include "common/swap.h" |
| 11 | #include "core/crypto/key_manager.h" | 11 | #include "core/crypto/key_manager.h" |
| 12 | #include "core/file_sys/content_archive.h" | ||
| 13 | #include "core/file_sys/vfs.h" | 12 | #include "core/file_sys/vfs.h" |
| 14 | #include "core/loader/loader.h" | 13 | |
| 14 | namespace Loader { | ||
| 15 | enum class ResultStatus : u16; | ||
| 16 | } | ||
| 15 | 17 | ||
| 16 | namespace FileSys { | 18 | namespace FileSys { |
| 17 | 19 | ||
| 20 | class NCA; | ||
| 21 | |||
| 18 | struct NAXHeader { | 22 | struct NAXHeader { |
| 19 | std::array<u8, 0x20> hmac; | 23 | std::array<u8, 0x20> hmac; |
| 20 | u64_le magic; | 24 | u64_le magic; |
| @@ -62,6 +66,6 @@ private: | |||
| 62 | 66 | ||
| 63 | VirtualFile dec_file; | 67 | VirtualFile dec_file; |
| 64 | 68 | ||
| 65 | Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); | 69 | Core::Crypto::KeyManager& keys; |
| 66 | }; | 70 | }; |
| 67 | } // namespace FileSys | 71 | } // namespace FileSys |
diff --git a/src/core/hle/service/ns/ns.cpp b/src/core/hle/service/ns/ns.cpp index 886450be2..58ee1f712 100644 --- a/src/core/hle/service/ns/ns.cpp +++ b/src/core/hle/service/ns/ns.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include "common/logging/log.h" | 5 | #include "common/logging/log.h" |
| 6 | #include "core/file_sys/control_metadata.h" | 6 | #include "core/file_sys/control_metadata.h" |
| 7 | #include "core/file_sys/patch_manager.h" | 7 | #include "core/file_sys/patch_manager.h" |
| 8 | #include "core/file_sys/vfs.h" | ||
| 8 | #include "core/hle/ipc_helpers.h" | 9 | #include "core/hle/ipc_helpers.h" |
| 9 | #include "core/hle/kernel/hle_ipc.h" | 10 | #include "core/hle/kernel/hle_ipc.h" |
| 10 | #include "core/hle/service/ns/errors.h" | 11 | #include "core/hle/service/ns/errors.h" |