summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-13 08:52:34 -0400
committerLioncash <mathew1800@gmail.com>2018-10-13 08:52:37 -0400
commitf56a8da46a58c0a4a1ce2570038a7060de29a18c (patch)
treeeb2ae3a6b559401ec98a137984ca5bd1fe8e70a0 /src/core
parentd257a3b56cac582fe296994b98f050e7b8f39056 (diff)
partition_data_manager: Dehardcode array bounds
Instead, we can make it part of the type and make named variables for them, so they only require one definition (and if they ever change for whatever reason, they only need to be changed in one spot).
Diffstat (limited to 'src/core')
-rw-r--r--src/core/crypto/partition_data_manager.cpp10
-rw-r--r--src/core/crypto/partition_data_manager.h9
2 files changed, 12 insertions, 7 deletions
diff --git a/src/core/crypto/partition_data_manager.cpp b/src/core/crypto/partition_data_manager.cpp
index ff46aad7c..bef8cdaf0 100644
--- a/src/core/crypto/partition_data_manager.cpp
+++ b/src/core/crypto/partition_data_manager.cpp
@@ -332,18 +332,18 @@ FileSys::VirtualFile PartitionDataManager::GetBoot0Raw() const {
return boot0;
}
-std::array<u8, 176> PartitionDataManager::GetEncryptedKeyblob(u8 index) const {
- if (HasBoot0() && index < 32)
+PartitionDataManager::EncryptedKeyBlob PartitionDataManager::GetEncryptedKeyblob(u8 index) const {
+ if (HasBoot0() && index < NUM_ENCRYPTED_KEYBLOBS)
return GetEncryptedKeyblobs()[index];
return {};
}
-std::array<std::array<u8, 176>, 32> PartitionDataManager::GetEncryptedKeyblobs() const {
+PartitionDataManager::EncryptedKeyBlobs PartitionDataManager::GetEncryptedKeyblobs() const {
if (!HasBoot0())
return {};
- std::array<std::array<u8, 176>, 32> out{};
- for (size_t i = 0; i < 0x20; ++i)
+ EncryptedKeyBlobs out{};
+ for (size_t i = 0; i < out.size(); ++i)
boot0->Read(out[i].data(), out[i].size(), 0x180000 + i * 0x200);
return out;
}
diff --git a/src/core/crypto/partition_data_manager.h b/src/core/crypto/partition_data_manager.h
index c5a492a92..7c9c4410a 100644
--- a/src/core/crypto/partition_data_manager.h
+++ b/src/core/crypto/partition_data_manager.h
@@ -22,6 +22,11 @@ enum class Package2Type {
class PartitionDataManager {
public:
static const u8 MAX_KEYBLOB_SOURCE_HASH;
+ static constexpr std::size_t NUM_ENCRYPTED_KEYBLOBS = 32;
+ static constexpr std::size_t ENCRYPTED_KEYBLOB_SIZE = 0xB0;
+
+ using EncryptedKeyBlob = std::array<u8, ENCRYPTED_KEYBLOB_SIZE>;
+ using EncryptedKeyBlobs = std::array<EncryptedKeyBlob, NUM_ENCRYPTED_KEYBLOBS>;
explicit PartitionDataManager(const FileSys::VirtualDir& sysdata_dir);
~PartitionDataManager();
@@ -29,8 +34,8 @@ public:
// BOOT0
bool HasBoot0() const;
FileSys::VirtualFile GetBoot0Raw() const;
- std::array<u8, 0xB0> GetEncryptedKeyblob(u8 index) const;
- std::array<std::array<u8, 0xB0>, 0x20> GetEncryptedKeyblobs() const;
+ EncryptedKeyBlob GetEncryptedKeyblob(u8 index) const;
+ EncryptedKeyBlobs GetEncryptedKeyblobs() const;
std::vector<u8> GetSecureMonitor() const;
std::array<u8, 0x10> GetPackage2KeySource() const;
std::array<u8, 0x10> GetAESKekGenerationSource() const;