mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #4564 from lioncash/file-include
file_sys: Replace inclusions with forward declarations where applicable
This commit is contained in:
		
						commit
						57e43682ed
					
				@ -26,6 +26,7 @@
 | 
				
			|||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/file_sys/vfs_offset.h"
 | 
					#include "core/file_sys/vfs_offset.h"
 | 
				
			||||||
#include "core/file_sys/vfs_vector.h"
 | 
					#include "core/file_sys/vfs_vector.h"
 | 
				
			||||||
 | 
					#include "core/loader/loader.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using Common::AsArray;
 | 
					using Common::AsArray;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@
 | 
				
			|||||||
#include "core/file_sys/bis_factory.h"
 | 
					#include "core/file_sys/bis_factory.h"
 | 
				
			||||||
#include "core/file_sys/mode.h"
 | 
					#include "core/file_sys/mode.h"
 | 
				
			||||||
#include "core/file_sys/registered_cache.h"
 | 
					#include "core/file_sys/registered_cache.h"
 | 
				
			||||||
#include "core/settings.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,11 +8,11 @@
 | 
				
			|||||||
#include <fmt/ostream.h>
 | 
					#include <fmt/ostream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
 | 
					#include "core/crypto/key_manager.h"
 | 
				
			||||||
#include "core/file_sys/card_image.h"
 | 
					#include "core/file_sys/card_image.h"
 | 
				
			||||||
#include "core/file_sys/content_archive.h"
 | 
					#include "core/file_sys/content_archive.h"
 | 
				
			||||||
#include "core/file_sys/nca_metadata.h"
 | 
					#include "core/file_sys/nca_metadata.h"
 | 
				
			||||||
#include "core/file_sys/partition_filesystem.h"
 | 
					#include "core/file_sys/partition_filesystem.h"
 | 
				
			||||||
#include "core/file_sys/romfs.h"
 | 
					 | 
				
			||||||
#include "core/file_sys/submission_package.h"
 | 
					#include "core/file_sys/submission_package.h"
 | 
				
			||||||
#include "core/file_sys/vfs_concat.h"
 | 
					#include "core/file_sys/vfs_concat.h"
 | 
				
			||||||
#include "core/file_sys/vfs_offset.h"
 | 
					#include "core/file_sys/vfs_offset.h"
 | 
				
			||||||
@ -31,7 +31,8 @@ constexpr std::array partition_names{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
XCI::XCI(VirtualFile file_)
 | 
					XCI::XCI(VirtualFile file_)
 | 
				
			||||||
    : file(std::move(file_)), program_nca_status{Loader::ResultStatus::ErrorXCIMissingProgramNCA},
 | 
					    : file(std::move(file_)), program_nca_status{Loader::ResultStatus::ErrorXCIMissingProgramNCA},
 | 
				
			||||||
      partitions(partition_names.size()), partitions_raw(partition_names.size()) {
 | 
					      partitions(partition_names.size()),
 | 
				
			||||||
 | 
					      partitions_raw(partition_names.size()), keys{Core::Crypto::KeyManager::Instance()} {
 | 
				
			||||||
    if (file->ReadObject(&header) != sizeof(GamecardHeader)) {
 | 
					    if (file->ReadObject(&header) != sizeof(GamecardHeader)) {
 | 
				
			||||||
        status = Loader::ResultStatus::ErrorBadXCIHeader;
 | 
					        status = Loader::ResultStatus::ErrorBadXCIHeader;
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
				
			|||||||
@ -9,9 +9,12 @@
 | 
				
			|||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/crypto/key_manager.h"
 | 
					 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Core::Crypto {
 | 
				
			||||||
 | 
					class KeyManager;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Loader {
 | 
					namespace Loader {
 | 
				
			||||||
enum class ResultStatus : u16;
 | 
					enum class ResultStatus : u16;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -140,6 +143,6 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    u64 update_normal_partition_end;
 | 
					    u64 update_normal_partition_end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance();
 | 
					    Core::Crypto::KeyManager& keys;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
} // namespace FileSys
 | 
					} // namespace FileSys
 | 
				
			||||||
 | 
				
			|||||||
@ -10,10 +10,10 @@
 | 
				
			|||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "core/crypto/aes_util.h"
 | 
					#include "core/crypto/aes_util.h"
 | 
				
			||||||
#include "core/crypto/ctr_encryption_layer.h"
 | 
					#include "core/crypto/ctr_encryption_layer.h"
 | 
				
			||||||
 | 
					#include "core/crypto/key_manager.h"
 | 
				
			||||||
#include "core/file_sys/content_archive.h"
 | 
					#include "core/file_sys/content_archive.h"
 | 
				
			||||||
#include "core/file_sys/nca_patch.h"
 | 
					#include "core/file_sys/nca_patch.h"
 | 
				
			||||||
#include "core/file_sys/partition_filesystem.h"
 | 
					#include "core/file_sys/partition_filesystem.h"
 | 
				
			||||||
#include "core/file_sys/romfs.h"
 | 
					 | 
				
			||||||
#include "core/file_sys/vfs_offset.h"
 | 
					#include "core/file_sys/vfs_offset.h"
 | 
				
			||||||
#include "core/loader/loader.h"
 | 
					#include "core/loader/loader.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -119,7 +119,8 @@ static bool IsValidNCA(const NCAHeader& header) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_offset)
 | 
					NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_offset)
 | 
				
			||||||
    : file(std::move(file_)), bktr_base_romfs(std::move(bktr_base_romfs_)) {
 | 
					    : file(std::move(file_)),
 | 
				
			||||||
 | 
					      bktr_base_romfs(std::move(bktr_base_romfs_)), keys{Core::Crypto::KeyManager::Instance()} {
 | 
				
			||||||
    if (file == nullptr) {
 | 
					    if (file == nullptr) {
 | 
				
			||||||
        status = Loader::ResultStatus::ErrorNullFile;
 | 
					        status = Loader::ResultStatus::ErrorNullFile;
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
				
			|||||||
@ -158,7 +158,7 @@ private:
 | 
				
			|||||||
    bool encrypted = false;
 | 
					    bool encrypted = false;
 | 
				
			||||||
    bool is_update = false;
 | 
					    bool is_update = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance();
 | 
					    Core::Crypto::KeyManager& keys;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace FileSys
 | 
					} // namespace FileSys
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include "common/string_util.h"
 | 
					#include "common/string_util.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/control_metadata.h"
 | 
					#include "core/file_sys/control_metadata.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
#include "common/common_funcs.h"
 | 
					#include "common/common_funcs.h"
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,9 +2,12 @@
 | 
				
			|||||||
// Licensed under GPLv2 or any later version
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <cstring>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/string_util.h"
 | 
					#include "common/string_util.h"
 | 
				
			||||||
#include "core/file_sys/kernel_executable.h"
 | 
					#include "core/file_sys/kernel_executable.h"
 | 
				
			||||||
#include "core/file_sys/vfs_offset.h"
 | 
					#include "core/file_sys/vfs_offset.h"
 | 
				
			||||||
 | 
					#include "core/loader/loader.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -4,10 +4,17 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <array>
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/common_funcs.h"
 | 
					#include "common/common_funcs.h"
 | 
				
			||||||
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/vfs_types.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
#include "core/loader/loader.h"
 | 
					
 | 
				
			||||||
 | 
					namespace Loader {
 | 
				
			||||||
 | 
					enum class ResultStatus : u16;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@
 | 
				
			|||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/nca_metadata.h"
 | 
					#include "core/file_sys/nca_metadata.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
#include "common/common_funcs.h"
 | 
					#include "common/common_funcs.h"
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
class CNMT;
 | 
					class CNMT;
 | 
				
			||||||
 | 
				
			|||||||
@ -21,7 +21,7 @@ bool PartitionFilesystem::Header::HasValidMagicValue() const {
 | 
				
			|||||||
           magic == Common::MakeMagic('P', 'F', 'S', '0');
 | 
					           magic == Common::MakeMagic('P', 'F', 'S', '0');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) {
 | 
					PartitionFilesystem::PartitionFilesystem(VirtualFile file) {
 | 
				
			||||||
    // At least be as large as the header
 | 
					    // At least be as large as the header
 | 
				
			||||||
    if (file->GetSize() < sizeof(Header)) {
 | 
					    if (file->GetSize() < sizeof(Header)) {
 | 
				
			||||||
        status = Loader::ResultStatus::ErrorBadPFSHeader;
 | 
					        status = Loader::ResultStatus::ErrorBadPFSHeader;
 | 
				
			||||||
@ -89,11 +89,11 @@ std::map<std::string, u64> PartitionFilesystem::GetFileSizes() const {
 | 
				
			|||||||
    return sizes;
 | 
					    return sizes;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::vector<std::shared_ptr<VfsFile>> PartitionFilesystem::GetFiles() const {
 | 
					std::vector<VirtualFile> PartitionFilesystem::GetFiles() const {
 | 
				
			||||||
    return pfs_files;
 | 
					    return pfs_files;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::vector<std::shared_ptr<VfsDirectory>> PartitionFilesystem::GetSubdirectories() const {
 | 
					std::vector<VirtualDir> PartitionFilesystem::GetSubdirectories() const {
 | 
				
			||||||
    return {};
 | 
					    return {};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -101,7 +101,7 @@ std::string PartitionFilesystem::GetName() const {
 | 
				
			|||||||
    return is_hfs ? "HFS0" : "PFS0";
 | 
					    return is_hfs ? "HFS0" : "PFS0";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::shared_ptr<VfsDirectory> PartitionFilesystem::GetParentDirectory() const {
 | 
					VirtualDir PartitionFilesystem::GetParentDirectory() const {
 | 
				
			||||||
    // TODO(DarkLordZach): Add support for nested containers.
 | 
					    // TODO(DarkLordZach): Add support for nested containers.
 | 
				
			||||||
    return nullptr;
 | 
					    return nullptr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@ namespace FileSys {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
class PartitionFilesystem : public ReadOnlyVfsDirectory {
 | 
					class PartitionFilesystem : public ReadOnlyVfsDirectory {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    explicit PartitionFilesystem(std::shared_ptr<VfsFile> file);
 | 
					    explicit PartitionFilesystem(VirtualFile file);
 | 
				
			||||||
    ~PartitionFilesystem() override;
 | 
					    ~PartitionFilesystem() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Loader::ResultStatus GetStatus() const;
 | 
					    Loader::ResultStatus GetStatus() const;
 | 
				
			||||||
@ -32,10 +32,10 @@ public:
 | 
				
			|||||||
    std::map<std::string, u64> GetFileOffsets() const;
 | 
					    std::map<std::string, u64> GetFileOffsets() const;
 | 
				
			||||||
    std::map<std::string, u64> GetFileSizes() const;
 | 
					    std::map<std::string, u64> GetFileSizes() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::vector<std::shared_ptr<VfsFile>> GetFiles() const override;
 | 
					    std::vector<VirtualFile> GetFiles() const override;
 | 
				
			||||||
    std::vector<std::shared_ptr<VfsDirectory>> GetSubdirectories() const override;
 | 
					    std::vector<VirtualDir> GetSubdirectories() const override;
 | 
				
			||||||
    std::string GetName() const override;
 | 
					    std::string GetName() const override;
 | 
				
			||||||
    std::shared_ptr<VfsDirectory> GetParentDirectory() const override;
 | 
					    VirtualDir GetParentDirectory() const override;
 | 
				
			||||||
    void PrintDebugInfo() const;
 | 
					    void PrintDebugInfo() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
				
			|||||||
@ -49,8 +49,7 @@ std::string FormatTitleVersion(u32 version, TitleVersionFormat format) {
 | 
				
			|||||||
    return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]);
 | 
					    return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir,
 | 
					VirtualDir FindSubdirectoryCaseless(const VirtualDir dir, std::string_view name) {
 | 
				
			||||||
                                                       std::string_view name) {
 | 
					 | 
				
			||||||
#ifdef _WIN32
 | 
					#ifdef _WIN32
 | 
				
			||||||
    return dir->GetSubdirectory(name);
 | 
					    return dir->GetSubdirectory(name);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@
 | 
				
			|||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "core/file_sys/nca_metadata.h"
 | 
					#include "core/file_sys/nca_metadata.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
#include "core/memory/dmnt_cheat_types.h"
 | 
					#include "core/memory/dmnt_cheat_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Core {
 | 
					namespace Core {
 | 
				
			||||||
@ -31,8 +31,7 @@ std::string FormatTitleVersion(u32 version,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Returns a directory with name matching name case-insensitive. Returns nullptr if directory
 | 
					// Returns a directory with name matching name case-insensitive. Returns nullptr if directory
 | 
				
			||||||
// doesn't have a directory with name.
 | 
					// doesn't have a directory with name.
 | 
				
			||||||
std::shared_ptr<VfsDirectory> FindSubdirectoryCaseless(const std::shared_ptr<VfsDirectory> dir,
 | 
					VirtualDir FindSubdirectoryCaseless(VirtualDir dir, std::string_view name);
 | 
				
			||||||
                                                       std::string_view name);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A centralized class to manage patches to games.
 | 
					// A centralized class to manage patches to games.
 | 
				
			||||||
class PatchManager {
 | 
					class PatchManager {
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "core/file_sys/program_metadata.h"
 | 
					#include "core/file_sys/program_metadata.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/loader/loader.h"
 | 
					#include "core/loader/loader.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@
 | 
				
			|||||||
#include "common/bit_field.h"
 | 
					#include "common/bit_field.h"
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Loader {
 | 
					namespace Loader {
 | 
				
			||||||
enum class ResultStatus : u16;
 | 
					enum class ResultStatus : u16;
 | 
				
			||||||
 | 
				
			|||||||
@ -4,7 +4,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <array>
 | 
					 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,8 @@
 | 
				
			|||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include "core/file_sys/registered_cache.h"
 | 
					#include "core/file_sys/registered_cache.h"
 | 
				
			||||||
#include "core/file_sys/sdmc_factory.h"
 | 
					#include "core/file_sys/sdmc_factory.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/file_sys/xts_archive.h"
 | 
					#include "core/file_sys/xts_archive.h"
 | 
				
			||||||
#include "core/settings.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs_types.h"
 | 
				
			||||||
#include "core/hle/result.h"
 | 
					#include "core/hle/result.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ void SetTicketKeys(const std::vector<VirtualFile>& files) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NSP::NSP(VirtualFile file_)
 | 
					NSP::NSP(VirtualFile file_)
 | 
				
			||||||
    : file(std::move(file_)), status{Loader::ResultStatus::Success},
 | 
					    : file(std::move(file_)), status{Loader::ResultStatus::Success},
 | 
				
			||||||
      pfs(std::make_shared<PartitionFilesystem>(file)) {
 | 
					      pfs(std::make_shared<PartitionFilesystem>(file)), keys{Core::Crypto::KeyManager::Instance()} {
 | 
				
			||||||
    if (pfs->GetStatus() != Loader::ResultStatus::Success) {
 | 
					    if (pfs->GetStatus() != Loader::ResultStatus::Success) {
 | 
				
			||||||
        status = pfs->GetStatus();
 | 
					        status = pfs->GetStatus();
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,10 @@
 | 
				
			|||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Core::Crypto {
 | 
				
			||||||
 | 
					class KeyManager;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Loader {
 | 
					namespace Loader {
 | 
				
			||||||
enum class ResultStatus : u16;
 | 
					enum class ResultStatus : u16;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -73,7 +77,7 @@ private:
 | 
				
			|||||||
    std::map<u64, std::map<std::pair<TitleType, ContentRecordType>, std::shared_ptr<NCA>>> ncas;
 | 
					    std::map<u64, std::map<std::pair<TitleType, ContentRecordType>, std::shared_ptr<NCA>>> ncas;
 | 
				
			||||||
    std::vector<VirtualFile> ticket_files;
 | 
					    std::vector<VirtualFile> ticket_files;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance();
 | 
					    Core::Crypto::KeyManager& keys;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    VirtualFile romfs;
 | 
					    VirtualFile romfs;
 | 
				
			||||||
    VirtualDir exefs;
 | 
					    VirtualDir exefs;
 | 
				
			||||||
 | 
				
			|||||||
@ -15,8 +15,9 @@
 | 
				
			|||||||
#include "common/hex_util.h"
 | 
					#include "common/hex_util.h"
 | 
				
			||||||
#include "common/string_util.h"
 | 
					#include "common/string_util.h"
 | 
				
			||||||
#include "core/crypto/aes_util.h"
 | 
					#include "core/crypto/aes_util.h"
 | 
				
			||||||
 | 
					#include "core/crypto/key_manager.h"
 | 
				
			||||||
#include "core/crypto/xts_encryption_layer.h"
 | 
					#include "core/crypto/xts_encryption_layer.h"
 | 
				
			||||||
#include "core/file_sys/partition_filesystem.h"
 | 
					#include "core/file_sys/content_archive.h"
 | 
				
			||||||
#include "core/file_sys/vfs_offset.h"
 | 
					#include "core/file_sys/vfs_offset.h"
 | 
				
			||||||
#include "core/file_sys/xts_archive.h"
 | 
					#include "core/file_sys/xts_archive.h"
 | 
				
			||||||
#include "core/loader/loader.h"
 | 
					#include "core/loader/loader.h"
 | 
				
			||||||
@ -43,7 +44,9 @@ static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t
 | 
				
			|||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NAX::NAX(VirtualFile file_) : header(std::make_unique<NAXHeader>()), file(std::move(file_)) {
 | 
					NAX::NAX(VirtualFile file_)
 | 
				
			||||||
 | 
					    : header(std::make_unique<NAXHeader>()),
 | 
				
			||||||
 | 
					      file(std::move(file_)), keys{Core::Crypto::KeyManager::Instance()} {
 | 
				
			||||||
    std::string path = Common::FS::SanitizePath(file->GetFullPath());
 | 
					    std::string path = Common::FS::SanitizePath(file->GetFullPath());
 | 
				
			||||||
    static const std::regex nax_path_regex("/registered/(000000[0-9A-F]{2})/([0-9A-F]{32})\\.nca",
 | 
					    static const std::regex nax_path_regex("/registered/(000000[0-9A-F]{2})/([0-9A-F]{32})\\.nca",
 | 
				
			||||||
                                           std::regex_constants::ECMAScript |
 | 
					                                           std::regex_constants::ECMAScript |
 | 
				
			||||||
@ -60,7 +63,8 @@ NAX::NAX(VirtualFile file_) : header(std::make_unique<NAXHeader>()), file(std::m
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NAX::NAX(VirtualFile file_, std::array<u8, 0x10> nca_id)
 | 
					NAX::NAX(VirtualFile file_, std::array<u8, 0x10> nca_id)
 | 
				
			||||||
    : header(std::make_unique<NAXHeader>()), file(std::move(file_)) {
 | 
					    : header(std::make_unique<NAXHeader>()),
 | 
				
			||||||
 | 
					      file(std::move(file_)), keys{Core::Crypto::KeyManager::Instance()} {
 | 
				
			||||||
    Core::Crypto::SHA256Hash hash{};
 | 
					    Core::Crypto::SHA256Hash hash{};
 | 
				
			||||||
    mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0);
 | 
					    mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0);
 | 
				
			||||||
    status = Parse(fmt::format("/registered/000000{:02X}/{}.nca", hash[0],
 | 
					    status = Parse(fmt::format("/registered/000000{:02X}/{}.nca", hash[0],
 | 
				
			||||||
 | 
				
			|||||||
@ -9,12 +9,16 @@
 | 
				
			|||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
#include "common/swap.h"
 | 
					#include "common/swap.h"
 | 
				
			||||||
#include "core/crypto/key_manager.h"
 | 
					#include "core/crypto/key_manager.h"
 | 
				
			||||||
#include "core/file_sys/content_archive.h"
 | 
					 | 
				
			||||||
#include "core/file_sys/vfs.h"
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/loader/loader.h"
 | 
					
 | 
				
			||||||
 | 
					namespace Loader {
 | 
				
			||||||
 | 
					enum class ResultStatus : u16;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace FileSys {
 | 
					namespace FileSys {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class NCA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct NAXHeader {
 | 
					struct NAXHeader {
 | 
				
			||||||
    std::array<u8, 0x20> hmac;
 | 
					    std::array<u8, 0x20> hmac;
 | 
				
			||||||
    u64_le magic;
 | 
					    u64_le magic;
 | 
				
			||||||
@ -62,6 +66,6 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    VirtualFile dec_file;
 | 
					    VirtualFile dec_file;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance();
 | 
					    Core::Crypto::KeyManager& keys;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
} // namespace FileSys
 | 
					} // namespace FileSys
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@
 | 
				
			|||||||
#include "common/logging/log.h"
 | 
					#include "common/logging/log.h"
 | 
				
			||||||
#include "core/file_sys/control_metadata.h"
 | 
					#include "core/file_sys/control_metadata.h"
 | 
				
			||||||
#include "core/file_sys/patch_manager.h"
 | 
					#include "core/file_sys/patch_manager.h"
 | 
				
			||||||
 | 
					#include "core/file_sys/vfs.h"
 | 
				
			||||||
#include "core/hle/ipc_helpers.h"
 | 
					#include "core/hle/ipc_helpers.h"
 | 
				
			||||||
#include "core/hle/kernel/hle_ipc.h"
 | 
					#include "core/hle/kernel/hle_ipc.h"
 | 
				
			||||||
#include "core/hle/service/ns/errors.h"
 | 
					#include "core/hle/service/ns/errors.h"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user