From 55db5f110fdbab0c381ae4f9d97f630410fc694b Mon Sep 17 00:00:00 2001 From: Pengfei Date: Fri, 16 Jul 2021 21:46:10 +0800 Subject: [PATCH] Simplify TitleKeysBin implementation to a simple function --- src/core/ncch/cia_builder.cpp | 7 ++++--- src/core/title_keys_bin.cpp | 14 ++------------ src/core/title_keys_bin.h | 16 +++------------- 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/core/ncch/cia_builder.cpp b/src/core/ncch/cia_builder.cpp index b8d5ca3..4a5de41 100644 --- a/src/core/ncch/cia_builder.cpp +++ b/src/core/ncch/cia_builder.cpp @@ -154,10 +154,11 @@ bool CIABuilder::WriteTicket(const std::string& ticket_db_path, ticket.body.common_key_index = legit_ticket.body.common_key_index; ticket.body.title_key = legit_ticket.body.title_key; - } else if (TitleKeysBin enc_title_keys(enc_title_keys_bin_path); - enc_title_keys.IsGood() && enc_title_keys.entries.count(title_id)) { // support files + } else if (TitleKeysMap enc_title_keys; + LoadTitleKeysBin(enc_title_keys, enc_title_keys_bin_path) && + enc_title_keys.count(title_id)) { // support files - const auto& entry = enc_title_keys.entries.at(title_id); + const auto& entry = enc_title_keys.at(title_id); ticket.body.common_key_index = entry.common_key_index; ticket.body.title_key = entry.title_key; } else { diff --git a/src/core/title_keys_bin.cpp b/src/core/title_keys_bin.cpp index f0dd02c..e4a885a 100644 --- a/src/core/title_keys_bin.cpp +++ b/src/core/title_keys_bin.cpp @@ -7,17 +7,7 @@ namespace Core { -TitleKeysBin::TitleKeysBin(const std::string& path) { - is_good = Load(path); -} - -TitleKeysBin::~TitleKeysBin() = default; - -bool TitleKeysBin::IsGood() const { - return is_good; -} - -bool TitleKeysBin::Load(const std::string& path) { +bool LoadTitleKeysBin(TitleKeysMap& out, const std::string& path) { FileUtil::IOFile file(path, "rb"); if (!file) { LOG_ERROR(Core, "Could not open file {}", path); @@ -36,7 +26,7 @@ bool TitleKeysBin::Load(const std::string& path) { LOG_ERROR(Core, "Could not read entry {} from {}", i, path); return false; } - entries.emplace(entry.title_id, entry); + out.emplace(entry.title_id, entry); } if (file.Tell() != file.GetSize()) { diff --git a/src/core/title_keys_bin.h b/src/core/title_keys_bin.h index f1b0110..b5e12f8 100644 --- a/src/core/title_keys_bin.h +++ b/src/core/title_keys_bin.h @@ -26,19 +26,9 @@ struct TitleKeysBinEntry { }; static_assert(sizeof(TitleKeysBinEntry) == 32); +using TitleKeysMap = std::unordered_map; + // GM9 support files encTitleKeys.bin and decTitleKeys.bin. -class TitleKeysBin { -public: - explicit TitleKeysBin(const std::string& path); - ~TitleKeysBin(); - - bool IsGood() const; - - std::unordered_map entries; - -private: - bool Load(const std::string& path); - bool is_good = false; -}; +bool LoadTitleKeysBin(TitleKeysMap& out, const std::string& path); } // namespace Core