diff options
| author | 2019-04-10 12:12:49 -0400 | |
|---|---|---|
| committer | 2019-09-21 16:43:10 -0400 | |
| commit | 77f9ecd32b075fb8986103de5e446fa330210526 (patch) | |
| tree | d1d7010fb7d0f2785f260700722e7e7498ad6ac4 /src | |
| parent | content_archive: Add accessors for Rights ID and SDK Version (diff) | |
| download | yuzu-77f9ecd32b075fb8986103de5e446fa330210526.tar.gz yuzu-77f9ecd32b075fb8986103de5e446fa330210526.tar.xz yuzu-77f9ecd32b075fb8986103de5e446fa330210526.zip | |
card_image: Add functions to query gamecard update partition
Includes version and meta title ID, used by fsp-srv/IDeviceOperator
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/file_sys/card_image.cpp | 20 | ||||
| -rw-r--r-- | src/core/file_sys/card_image.h | 4 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp index 626ed0042..9fb6e0178 100644 --- a/src/core/file_sys/card_image.cpp +++ b/src/core/file_sys/card_image.cpp | |||
| @@ -175,6 +175,26 @@ VirtualDir XCI::GetParentDirectory() const { | |||
| 175 | return file->GetContainingDirectory(); | 175 | return file->GetContainingDirectory(); |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | VirtualDir XCI::ConcatenatedPseudoDirectory() { | ||
| 179 | const auto out = std::make_shared<VectorVfsDirectory>(); | ||
| 180 | for (const auto& part_id : {XCIPartition::Normal, XCIPartition::Logo, XCIPartition::Secure}) { | ||
| 181 | const auto& part = GetPartition(part_id); | ||
| 182 | if (part == nullptr) | ||
| 183 | continue; | ||
| 184 | |||
| 185 | for (const auto& file : part->GetFiles()) | ||
| 186 | out->AddFile(file); | ||
| 187 | } | ||
| 188 | |||
| 189 | return out; | ||
| 190 | } | ||
| 191 | |||
| 192 | std::array<u8, 0x200> XCI::GetCertificate() const { | ||
| 193 | std::array<u8, 0x200> out; | ||
| 194 | file->Read(out.data(), out.size(), GAMECARD_CERTIFICATE_OFFSET); | ||
| 195 | return out; | ||
| 196 | } | ||
| 197 | |||
| 178 | Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { | 198 | Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { |
| 179 | const auto partition_index = static_cast<std::size_t>(part); | 199 | const auto partition_index = static_cast<std::size_t>(part); |
| 180 | const auto& partition = partitions[partition_index]; | 200 | const auto& partition = partitions[partition_index]; |
diff --git a/src/core/file_sys/card_image.h b/src/core/file_sys/card_image.h index a350496f7..5a83acc1c 100644 --- a/src/core/file_sys/card_image.h +++ b/src/core/file_sys/card_image.h | |||
| @@ -91,6 +91,8 @@ public: | |||
| 91 | VirtualDir GetLogoPartition() const; | 91 | VirtualDir GetLogoPartition() const; |
| 92 | 92 | ||
| 93 | u64 GetProgramTitleID() const; | 93 | u64 GetProgramTitleID() const; |
| 94 | u32 GetSystemUpdateVersion(); | ||
| 95 | u64 GetSystemUpdateTitleID() const; | ||
| 94 | 96 | ||
| 95 | bool HasProgramNCA() const; | 97 | bool HasProgramNCA() const; |
| 96 | VirtualFile GetProgramNCAFile() const; | 98 | VirtualFile GetProgramNCAFile() const; |
| @@ -120,6 +122,8 @@ private: | |||
| 120 | std::shared_ptr<NCA> program; | 122 | std::shared_ptr<NCA> program; |
| 121 | std::vector<std::shared_ptr<NCA>> ncas; | 123 | std::vector<std::shared_ptr<NCA>> ncas; |
| 122 | 124 | ||
| 125 | u64 update_normal_partition_end; | ||
| 126 | |||
| 123 | Core::Crypto::KeyManager keys; | 127 | Core::Crypto::KeyManager keys; |
| 124 | }; | 128 | }; |
| 125 | } // namespace FileSys | 129 | } // namespace FileSys |