mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-11-01 20:01:53 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fbfe0c95fa |
@@ -60,20 +60,17 @@ NCA::NCA(VirtualFile file_, const NCA* base_nca, bool allow_missing_base)
|
|||||||
auto titlekey =
|
auto titlekey =
|
||||||
keys.GetKey(Core::Crypto::S128KeyType::Titlekey, rights_id_u128[1], rights_id_u128[0]);
|
keys.GetKey(Core::Crypto::S128KeyType::Titlekey, rights_id_u128[1], rights_id_u128[0]);
|
||||||
if (titlekey == Core::Crypto::Key128{}) {
|
if (titlekey == Core::Crypto::Key128{}) {
|
||||||
status = Loader::ResultStatus::ErrorMissingTitlekey;
|
// Fallback: use rights_id as TitleKey for direct dumps without tickets/keys.
|
||||||
return;
|
std::memcpy(titlekey.data(), rights_id.data(), rights_id.size());
|
||||||
|
LOG_DEBUG(Loader, "TitleKey not found for {}, falling back to RightsId.",
|
||||||
|
file->GetName());
|
||||||
|
} else if (keys.HasKey(Core::Crypto::S128KeyType::Titlekek, master_key_id)) {
|
||||||
|
auto titlekek = keys.GetKey(Core::Crypto::S128KeyType::Titlekek, master_key_id);
|
||||||
|
Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(titlekek, Core::Crypto::Mode::ECB);
|
||||||
|
cipher.Transcode(titlekey.data(), titlekey.size(), titlekey.data(),
|
||||||
|
Core::Crypto::Op::Decrypt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!keys.HasKey(Core::Crypto::S128KeyType::Titlekek, master_key_id)) {
|
|
||||||
status = Loader::ResultStatus::ErrorMissingTitlekek;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto titlekek = keys.GetKey(Core::Crypto::S128KeyType::Titlekek, master_key_id);
|
|
||||||
Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(titlekek, Core::Crypto::Mode::ECB);
|
|
||||||
cipher.Transcode(titlekey.data(), titlekey.size(), titlekey.data(),
|
|
||||||
Core::Crypto::Op::Decrypt);
|
|
||||||
|
|
||||||
reader->SetExternalDecryptionKey(titlekey.data(), titlekey.size());
|
reader->SetExternalDecryptionKey(titlekey.data(), titlekey.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user