summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/crypto/partition_data_manager.cpp1
-rw-r--r--src/core/file_sys/bis_factory.cpp1
-rw-r--r--src/core/file_sys/bis_factory.h3
-rw-r--r--src/core/file_sys/card_image.cpp5
-rw-r--r--src/core/file_sys/card_image.h7
-rw-r--r--src/core/file_sys/content_archive.cpp5
-rw-r--r--src/core/file_sys/content_archive.h2
-rw-r--r--src/core/file_sys/control_metadata.cpp1
-rw-r--r--src/core/file_sys/control_metadata.h2
-rw-r--r--src/core/file_sys/kernel_executable.cpp3
-rw-r--r--src/core/file_sys/kernel_executable.h9
-rw-r--r--src/core/file_sys/nca_metadata.cpp1
-rw-r--r--src/core/file_sys/nca_metadata.h2
-rw-r--r--src/core/file_sys/partition_filesystem.cpp8
-rw-r--r--src/core/file_sys/partition_filesystem.h8
-rw-r--r--src/core/file_sys/patch_manager.cpp3
-rw-r--r--src/core/file_sys/patch_manager.h5
-rw-r--r--src/core/file_sys/program_metadata.cpp1
-rw-r--r--src/core/file_sys/program_metadata.h2
-rw-r--r--src/core/file_sys/romfs.h1
-rw-r--r--src/core/file_sys/sdmc_factory.cpp2
-rw-r--r--src/core/file_sys/sdmc_factory.h2
-rw-r--r--src/core/file_sys/submission_package.cpp2
-rw-r--r--src/core/file_sys/submission_package.h6
-rw-r--r--src/core/file_sys/xts_archive.cpp10
-rw-r--r--src/core/file_sys/xts_archive.h10
-rw-r--r--src/core/hle/service/ns/ns.cpp1
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
30using Common::AsArray; 31using 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
13namespace FileSys { 12namespace 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
11namespace FileSys { 12namespace 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
32XCI::XCI(VirtualFile file_) 32XCI::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
14namespace Core::Crypto {
15class KeyManager;
16}
17
15namespace Loader { 18namespace Loader {
16enum class ResultStatus : u16; 19enum 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
121NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_offset) 121NCA::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
9namespace FileSys { 10namespace 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
15namespace FileSys { 15namespace 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
9namespace FileSys { 12namespace 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
15namespace Loader {
16enum class ResultStatus : u16;
17}
11 18
12namespace FileSys { 19namespace 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
11namespace FileSys { 12namespace 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
15namespace FileSys { 15namespace FileSys {
16class CNMT; 16class 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
24PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) { 24PartitionFilesystem::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
92std::vector<std::shared_ptr<VfsFile>> PartitionFilesystem::GetFiles() const { 92std::vector<VirtualFile> PartitionFilesystem::GetFiles() const {
93 return pfs_files; 93 return pfs_files;
94} 94}
95 95
96std::vector<std::shared_ptr<VfsDirectory>> PartitionFilesystem::GetSubdirectories() const { 96std::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
104std::shared_ptr<VfsDirectory> PartitionFilesystem::GetParentDirectory() const { 104VirtualDir 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 */
25class PartitionFilesystem : public ReadOnlyVfsDirectory { 25class PartitionFilesystem : public ReadOnlyVfsDirectory {
26public: 26public:
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
41private: 41private:
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
52std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir, 52VirtualDir 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
15namespace Core { 15namespace 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.
34std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir, 34VirtualDir 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.
38class PatchManager { 37class 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
12namespace FileSys { 13namespace 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
14namespace Loader { 14namespace Loader {
15enum class ResultStatus : u16; 15enum 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
10namespace FileSys { 9namespace 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
11namespace FileSys { 11namespace 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
11namespace FileSys { 11namespace 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
55NSP::NSP(VirtualFile file_) 55NSP::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
13namespace Core::Crypto {
14class KeyManager;
15}
16
13namespace Loader { 17namespace Loader {
14enum class ResultStatus : u16; 18enum 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
46NAX::NAX(VirtualFile file_) : header(std::make_unique<NAXHeader>()), file(std::move(file_)) { 47NAX::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
62NAX::NAX(VirtualFile file_, std::array<u8, 0x10> nca_id) 65NAX::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
14namespace Loader {
15enum class ResultStatus : u16;
16}
15 17
16namespace FileSys { 18namespace FileSys {
17 19
20class NCA;
21
18struct NAXHeader { 22struct 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"