card_image: Add functions to query gamecard update partition
Includes version and meta title ID, used by fsp-srv/IDeviceOperator
This commit is contained in:
		@@ -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];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user