summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Zach Hilman2019-04-10 12:12:49 -0400
committerGravatar Zach Hilman2019-09-21 16:43:10 -0400
commit77f9ecd32b075fb8986103de5e446fa330210526 (patch)
treed1d7010fb7d0f2785f260700722e7e7498ad6ac4 /src
parentcontent_archive: Add accessors for Rights ID and SDK Version (diff)
downloadyuzu-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.cpp20
-rw-r--r--src/core/file_sys/card_image.h4
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
178VirtualDir 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
192std::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
178Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { 198Loader::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