bis_factory: Add accessors for BIS partitions
This commit is contained in:
parent
97b8c9d2c3
commit
3a1899d143
|
@ -39,4 +39,45 @@ VirtualDir BISFactory::GetModificationDumpRoot(u64 title_id) const {
|
||||||
return GetOrCreateDirectoryRelative(dump_root, fmt::format("/{:016X}", title_id));
|
return GetOrCreateDirectoryRelative(dump_root, fmt::format("/{:016X}", title_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VirtualDir BISFactory::OpenPartition(BisPartitionId id) const {
|
||||||
|
switch (id) {
|
||||||
|
case BisPartitionId::CalibrationFile:
|
||||||
|
return GetOrCreateDirectoryRelative(nand_root, "/prodinfof");
|
||||||
|
case BisPartitionId::SafeMode:
|
||||||
|
return GetOrCreateDirectoryRelative(nand_root, "/safe");
|
||||||
|
case BisPartitionId::System:
|
||||||
|
return GetOrCreateDirectoryRelative(nand_root, "/system");
|
||||||
|
case BisPartitionId::User:
|
||||||
|
return GetOrCreateDirectoryRelative(nand_root, "/user");
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VirtualFile BISFactory::OpenPartitionStorage(BisPartitionId id) const {
|
||||||
|
Core::Crypto::KeyManager keys;
|
||||||
|
Core::Crypto::PartitionDataManager pdm{
|
||||||
|
Core::System::GetInstance().GetFilesystem()->OpenDirectory(
|
||||||
|
FileUtil::GetUserPath(FileUtil::UserPath::SysDataDir), Mode::Read)};
|
||||||
|
keys.PopulateFromPartitionData(pdm);
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case BisPartitionId::CalibrationBinary:
|
||||||
|
return pdm.GetDecryptedProdInfo();
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part1:
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part2:
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part3:
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part4:
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part5:
|
||||||
|
case BisPartitionId::BootConfigAndPackage2Part6: {
|
||||||
|
const auto new_id = static_cast<u8>(id) -
|
||||||
|
static_cast<u8>(BisPartitionId::BootConfigAndPackage2Part1) +
|
||||||
|
static_cast<u8>(Core::Crypto::Package2Type::NormalMain);
|
||||||
|
return pdm.GetPackage2Raw(static_cast<Core::Crypto::Package2Type>(new_id));
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -10,6 +10,23 @@
|
||||||
|
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
|
enum class BisPartitionId : u32 {
|
||||||
|
UserDataRoot = 20,
|
||||||
|
CalibrationBinary = 27,
|
||||||
|
CalibrationFile = 28,
|
||||||
|
BootConfigAndPackage2Part1 = 21,
|
||||||
|
BootConfigAndPackage2Part2 = 22,
|
||||||
|
BootConfigAndPackage2Part3 = 23,
|
||||||
|
BootConfigAndPackage2Part4 = 24,
|
||||||
|
BootConfigAndPackage2Part5 = 25,
|
||||||
|
BootConfigAndPackage2Part6 = 26,
|
||||||
|
SafeMode = 29,
|
||||||
|
System = 31,
|
||||||
|
SystemProperEncryption = 32,
|
||||||
|
SystemProperPartition = 33,
|
||||||
|
User = 30,
|
||||||
|
};
|
||||||
|
|
||||||
class RegisteredCache;
|
class RegisteredCache;
|
||||||
|
|
||||||
/// File system interface to the Built-In Storage
|
/// File system interface to the Built-In Storage
|
||||||
|
@ -26,6 +43,9 @@ public:
|
||||||
VirtualDir GetModificationLoadRoot(u64 title_id) const;
|
VirtualDir GetModificationLoadRoot(u64 title_id) const;
|
||||||
VirtualDir GetModificationDumpRoot(u64 title_id) const;
|
VirtualDir GetModificationDumpRoot(u64 title_id) const;
|
||||||
|
|
||||||
|
VirtualDir OpenPartition(BisPartitionId id) const;
|
||||||
|
VirtualFile OpenPartitionStorage(BisPartitionId id) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VirtualDir nand_root;
|
VirtualDir nand_root;
|
||||||
VirtualDir load_root;
|
VirtualDir load_root;
|
||||||
|
|
Reference in New Issue