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

core: crypto: key_manager: Add methods to reload & validate keys.

bunnei 3 лет назад
Родитель
Сommit
93bad47edb
2 измененных файлов с 11 добавлено и 0 удалено
  1. 8 0
      src/core/crypto/key_manager.cpp
  2. 3 0
      src/core/crypto/key_manager.h

+ 8 - 0
src/core/crypto/key_manager.cpp

@@ -569,6 +569,10 @@ std::optional<std::pair<Key128, Key128>> ParseTicket(const Ticket& ticket,
 }
 
 KeyManager::KeyManager() {
+    ReloadKeys();
+}
+
+void KeyManager::ReloadKeys() {
     // Initialize keys
     const auto yuzu_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir);
 
@@ -702,6 +706,10 @@ void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_ti
     }
 }
 
+bool KeyManager::IsKeysLoaded() const {
+    return !s128_keys.empty() && !s256_keys.empty();
+}
+
 bool KeyManager::BaseDeriveNecessary() const {
     const auto check_key_existence = [this](auto key_type, u64 index1 = 0, u64 index2 = 0) {
         return !HasKey(key_type, index1, index2);

+ 3 - 0
src/core/crypto/key_manager.h

@@ -267,6 +267,9 @@ public:
     bool AddTicketCommon(Ticket raw);
     bool AddTicketPersonalized(Ticket raw);
 
+    void ReloadKeys();
+    bool IsKeysLoaded() const;
+
 private:
     KeyManager();