Просмотр исходного кода

card_image: Add functions to query gamecard update partition

Includes version and meta title ID, used by fsp-srv/IDeviceOperator
Zach Hilman 7 лет назад
Родитель
Сommit
77f9ecd32b
2 измененных файлов с 24 добавлено и 0 удалено
  1. 20 0
      src/core/file_sys/card_image.cpp
  2. 4 0
      src/core/file_sys/card_image.h

+ 20 - 0
src/core/file_sys/card_image.cpp

@@ -175,6 +175,26 @@ VirtualDir XCI::GetParentDirectory() const {
     return file->GetContainingDirectory();
     return file->GetContainingDirectory();
 }
 }
 
 
+VirtualDir XCI::ConcatenatedPseudoDirectory() {
+    const auto out = std::make_shared<VectorVfsDirectory>();
+    for (const auto& part_id : {XCIPartition::Normal, XCIPartition::Logo, XCIPartition::Secure}) {
+        const auto& part = GetPartition(part_id);
+        if (part == nullptr)
+            continue;
+
+        for (const auto& file : part->GetFiles())
+            out->AddFile(file);
+    }
+
+    return out;
+}
+
+std::array<u8, 0x200> XCI::GetCertificate() const {
+    std::array<u8, 0x200> out;
+    file->Read(out.data(), out.size(), GAMECARD_CERTIFICATE_OFFSET);
+    return out;
+}
+
 Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) {
 Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) {
     const auto partition_index = static_cast<std::size_t>(part);
     const auto partition_index = static_cast<std::size_t>(part);
     const auto& partition = partitions[partition_index];
     const auto& partition = partitions[partition_index];

+ 4 - 0
src/core/file_sys/card_image.h

@@ -91,6 +91,8 @@ public:
     VirtualDir GetLogoPartition() const;
     VirtualDir GetLogoPartition() const;
 
 
     u64 GetProgramTitleID() const;
     u64 GetProgramTitleID() const;
+    u32 GetSystemUpdateVersion();
+    u64 GetSystemUpdateTitleID() const;
 
 
     bool HasProgramNCA() const;
     bool HasProgramNCA() const;
     VirtualFile GetProgramNCAFile() const;
     VirtualFile GetProgramNCAFile() const;
@@ -120,6 +122,8 @@ private:
     std::shared_ptr<NCA> program;
     std::shared_ptr<NCA> program;
     std::vector<std::shared_ptr<NCA>> ncas;
     std::vector<std::shared_ptr<NCA>> ncas;
 
 
+    u64 update_normal_partition_end;
+
     Core::Crypto::KeyManager keys;
     Core::Crypto::KeyManager keys;
 };
 };
 } // namespace FileSys
 } // namespace FileSys