From 9f82a9a2444a232e746992fa89084b928255cb63 Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Wed, 20 May 2020 21:28:16 +0200 Subject: crypto: Make KeyManager a singleton class Previously, we were reading the keys everytime a KeyManager object was created, causing yuzu to reread the keys file multiple hundreds of times when loading the game list. With this change, it is only loaded once. On my system, this decreased game list loading times by a factor of 20. --- src/core/hle/service/es/es.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core/hle/service/es') diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index f8e9df4b1..ad6841a64 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -263,7 +263,7 @@ private: rb.Push(write_size); } - Core::Crypto::KeyManager keys; + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); }; void InstallInterfaces(SM::ServiceManager& service_manager) { -- cgit v1.2.3 From 3828aa4927d604804f09bd2b8a307f3e50a8c986 Mon Sep 17 00:00:00 2001 From: VolcaEM <63682805+VolcaEM@users.noreply.github.com> Date: Sat, 27 Jun 2020 02:17:51 +0200 Subject: es: Update function table This was based on Switchbrew page: https://switchbrew.org/wiki/ETicket_services --- src/core/hle/service/es/es.cpp | 43 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src/core/hle/service/es') diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index f8e9df4b1..593772ee2 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -27,8 +27,8 @@ public: {8, &ETicket::GetTitleKey, "GetTitleKey"}, {9, &ETicket::CountCommonTicket, "CountCommonTicket"}, {10, &ETicket::CountPersonalizedTicket, "CountPersonalizedTicket"}, - {11, &ETicket::ListCommonTicket, "ListCommonTicket"}, - {12, &ETicket::ListPersonalizedTicket, "ListPersonalizedTicket"}, + {11, &ETicket::ListCommonTicket, "ListCommonTicketRightsIds"}, + {12, &ETicket::ListPersonalizedTicket, "ListPersonalizedTicketRightsIds"}, {13, nullptr, "ListMissingPersonalizedTicket"}, {14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"}, {15, &ETicket::GetPersonalizedTicketSize, "GetPersonalizedTicketSize"}, @@ -55,7 +55,46 @@ public: {36, nullptr, "DeleteAllInactiveELicenseRequiredPersonalizedTicket"}, {37, nullptr, "OwnTicket2"}, {38, nullptr, "OwnTicket3"}, + {501, nullptr, "Unknown"}, + {502, nullptr, "Unknown2"}, {503, nullptr, "GetTitleKey"}, + {504, nullptr, "Unknown3"}, + {508, nullptr, "Unknown4"}, + {509, nullptr, "Unknown5"}, + {510, nullptr, "Unknown6"}, + {511, nullptr, "Unknown7"}, + {1001, nullptr, "Unknown8"}, + {1002, nullptr, "Unknown9"}, + {1003, nullptr, "Unknown10"}, + {1004, nullptr, "Unknown11"}, + {1005, nullptr, "Unknown12"}, + {1006, nullptr, "Unknown13"}, + {1007, nullptr, "Unknown14"}, + {1009, nullptr, "Unknown15"}, + {1010, nullptr, "Unknown16"}, + {1011, nullptr, "Unknown17"}, + {1012, nullptr, "Unknown18"}, + {1013, nullptr, "Unknown19"}, + {1014, nullptr, "Unknown20"}, + {1015, nullptr, "Unknown21"}, + {1016, nullptr, "Unknown22"}, + {1017, nullptr, "Unknown23"}, + {1018, nullptr, "Unknown24"}, + {1019, nullptr, "Unknown25"}, + {1020, nullptr, "Unknown26"}, + {1021, nullptr, "Unknown27"}, + {1501, nullptr, "Unknown28"}, + {1502, nullptr, "Unknown29"}, + {1503, nullptr, "Unknown30"}, + {1504, nullptr, "Unknown31"}, + {1505, nullptr, "Unknown32"}, + {2000, nullptr, "Unknown33"}, + {2001, nullptr, "Unknown34"}, + {2100, nullptr, "Unknown35"}, + {2501, nullptr, "Unknown36"}, + {2502, nullptr, "Unknown37"}, + {3001, nullptr, "Unknown38"}, + {3002, nullptr, "Unknown39"}, }; // clang-format on RegisterHandlers(functions); -- cgit v1.2.3 From bc51a9365ba20303452792429a4ae611938f8d9c Mon Sep 17 00:00:00 2001 From: VolcaEM <63682805+VolcaEM@users.noreply.github.com> Date: Sat, 27 Jun 2020 02:43:22 +0200 Subject: Update function names --- src/core/hle/service/es/es.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/core/hle/service/es') diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index 593772ee2..884c818da 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -27,8 +27,8 @@ public: {8, &ETicket::GetTitleKey, "GetTitleKey"}, {9, &ETicket::CountCommonTicket, "CountCommonTicket"}, {10, &ETicket::CountPersonalizedTicket, "CountPersonalizedTicket"}, - {11, &ETicket::ListCommonTicket, "ListCommonTicketRightsIds"}, - {12, &ETicket::ListPersonalizedTicket, "ListPersonalizedTicketRightsIds"}, + {11, &ETicket::ListCommonTicketRightsIds, "ListCommonTicketRightsIds"}, + {12, &ETicket::ListPersonalizedTicketRightsIds, "ListPersonalizedTicketRightsIds"}, {13, nullptr, "ListMissingPersonalizedTicket"}, {14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"}, {15, &ETicket::GetPersonalizedTicketSize, "GetPersonalizedTicketSize"}, @@ -186,7 +186,7 @@ private: rb.Push(count); } - void ListCommonTicket(Kernel::HLERequestContext& ctx) { + void ListCommonTicketRightsIds(Kernel::HLERequestContext& ctx) { u32 out_entries; if (keys.GetCommonTickets().empty()) out_entries = 0; @@ -209,7 +209,7 @@ private: rb.Push(out_entries); } - void ListPersonalizedTicket(Kernel::HLERequestContext& ctx) { + void ListPersonalizedTicketRightsIds(Kernel::HLERequestContext& ctx) { u32 out_entries; if (keys.GetPersonalizedTickets().empty()) out_entries = 0; -- cgit v1.2.3 From 2d82b7f1a1eb43e3f0c9a1695a8ada3db2728462 Mon Sep 17 00:00:00 2001 From: VolcaEM <63682805+VolcaEM@users.noreply.github.com> Date: Sat, 27 Jun 2020 02:48:29 +0200 Subject: Use better names for "Unknown"s --- src/core/hle/service/es/es.cpp | 78 +++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 39 deletions(-) (limited to 'src/core/hle/service/es') diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index 884c818da..9365f27e1 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -55,46 +55,46 @@ public: {36, nullptr, "DeleteAllInactiveELicenseRequiredPersonalizedTicket"}, {37, nullptr, "OwnTicket2"}, {38, nullptr, "OwnTicket3"}, - {501, nullptr, "Unknown"}, - {502, nullptr, "Unknown2"}, + {501, nullptr, "Unknown501"}, + {502, nullptr, "Unknown502"}, {503, nullptr, "GetTitleKey"}, - {504, nullptr, "Unknown3"}, - {508, nullptr, "Unknown4"}, - {509, nullptr, "Unknown5"}, - {510, nullptr, "Unknown6"}, - {511, nullptr, "Unknown7"}, - {1001, nullptr, "Unknown8"}, - {1002, nullptr, "Unknown9"}, - {1003, nullptr, "Unknown10"}, - {1004, nullptr, "Unknown11"}, - {1005, nullptr, "Unknown12"}, - {1006, nullptr, "Unknown13"}, - {1007, nullptr, "Unknown14"}, - {1009, nullptr, "Unknown15"}, - {1010, nullptr, "Unknown16"}, - {1011, nullptr, "Unknown17"}, - {1012, nullptr, "Unknown18"}, - {1013, nullptr, "Unknown19"}, - {1014, nullptr, "Unknown20"}, - {1015, nullptr, "Unknown21"}, - {1016, nullptr, "Unknown22"}, - {1017, nullptr, "Unknown23"}, - {1018, nullptr, "Unknown24"}, - {1019, nullptr, "Unknown25"}, - {1020, nullptr, "Unknown26"}, - {1021, nullptr, "Unknown27"}, - {1501, nullptr, "Unknown28"}, - {1502, nullptr, "Unknown29"}, - {1503, nullptr, "Unknown30"}, - {1504, nullptr, "Unknown31"}, - {1505, nullptr, "Unknown32"}, - {2000, nullptr, "Unknown33"}, - {2001, nullptr, "Unknown34"}, - {2100, nullptr, "Unknown35"}, - {2501, nullptr, "Unknown36"}, - {2502, nullptr, "Unknown37"}, - {3001, nullptr, "Unknown38"}, - {3002, nullptr, "Unknown39"}, + {504, nullptr, "Unknown504"}, + {508, nullptr, "Unknown508"}, + {509, nullptr, "Unknown509"}, + {510, nullptr, "Unknown510"}, + {511, nullptr, "Unknown511"}, + {1001, nullptr, "Unknown1001"}, + {1002, nullptr, "Unknown1001"}, + {1003, nullptr, "Unknown1003"}, + {1004, nullptr, "Unknown1004"}, + {1005, nullptr, "Unknown1005"}, + {1006, nullptr, "Unknown1006"}, + {1007, nullptr, "Unknown1007"}, + {1009, nullptr, "Unknown1009"}, + {1010, nullptr, "Unknown1010"}, + {1011, nullptr, "Unknown1011"}, + {1012, nullptr, "Unknown1012"}, + {1013, nullptr, "Unknown1013"}, + {1014, nullptr, "Unknown1014"}, + {1015, nullptr, "Unknown1015"}, + {1016, nullptr, "Unknown1016"}, + {1017, nullptr, "Unknown1017"}, + {1018, nullptr, "Unknown1018"}, + {1019, nullptr, "Unknown1019"}, + {1020, nullptr, "Unknown1020"}, + {1021, nullptr, "Unknown1021"}, + {1501, nullptr, "Unknown1501"}, + {1502, nullptr, "Unknown1502"}, + {1503, nullptr, "Unknown1503"}, + {1504, nullptr, "Unknown1504"}, + {1505, nullptr, "Unknown1505"}, + {2000, nullptr, "Unknown2000"}, + {2001, nullptr, "Unknown2001"}, + {2100, nullptr, "Unknown2100"}, + {2501, nullptr, "Unknown2501"}, + {2502, nullptr, "Unknown2502"}, + {3001, nullptr, "Unknown3001"}, + {3002, nullptr, "Unknown3002"}, }; // clang-format on RegisterHandlers(functions); -- cgit v1.2.3 From fb13f053bb6ef304bc7656b521727c87eff697f1 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 1 Jul 2020 00:28:49 -0400 Subject: key_manager: Correct casing of instance() Our codebase uppercases member function names. --- src/core/crypto/key_manager.h | 2 +- src/core/file_sys/bis_factory.cpp | 2 +- src/core/file_sys/card_image.h | 2 +- src/core/file_sys/content_archive.h | 2 +- src/core/file_sys/registered_cache.h | 2 +- src/core/file_sys/submission_package.cpp | 2 +- src/core/file_sys/submission_package.h | 2 +- src/core/file_sys/xts_archive.h | 2 +- src/core/hle/service/es/es.cpp | 2 +- src/yuzu/main.cpp | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/core/hle/service/es') diff --git a/src/core/crypto/key_manager.h b/src/core/crypto/key_manager.h index 44e7c5bb5..9269a73f2 100644 --- a/src/core/crypto/key_manager.h +++ b/src/core/crypto/key_manager.h @@ -223,7 +223,7 @@ bool operator<(const KeyIndex& lhs, const KeyIndex& rhs) { class KeyManager { public: - static KeyManager& instance() { + static KeyManager& Instance() { static KeyManager instance; return instance; } diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp index 464ca6503..8935a62c3 100644 --- a/src/core/file_sys/bis_factory.cpp +++ b/src/core/file_sys/bis_factory.cpp @@ -79,7 +79,7 @@ VirtualDir BISFactory::OpenPartition(BisPartitionId id) const { } VirtualFile BISFactory::OpenPartitionStorage(BisPartitionId id) const { - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + auto& keys = Core::Crypto::KeyManager::Instance(); Core::Crypto::PartitionDataManager pdm{ Core::System::GetInstance().GetFilesystem()->OpenDirectory( FileUtil::GetUserPath(FileUtil::UserPath::SysDataDir), Mode::Read)}; diff --git a/src/core/file_sys/card_image.h b/src/core/file_sys/card_image.h index a09d504ae..e1b136426 100644 --- a/src/core/file_sys/card_image.h +++ b/src/core/file_sys/card_image.h @@ -140,6 +140,6 @@ private: u64 update_normal_partition_end; - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); }; } // namespace FileSys diff --git a/src/core/file_sys/content_archive.h b/src/core/file_sys/content_archive.h index e6c887b32..d25cbcf91 100644 --- a/src/core/file_sys/content_archive.h +++ b/src/core/file_sys/content_archive.h @@ -158,7 +158,7 @@ private: bool encrypted = false; bool is_update = false; - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); }; } // namespace FileSys diff --git a/src/core/file_sys/registered_cache.h b/src/core/file_sys/registered_cache.h index 4b2fb08cb..f339cd17b 100644 --- a/src/core/file_sys/registered_cache.h +++ b/src/core/file_sys/registered_cache.h @@ -88,7 +88,7 @@ public: protected: // A single instance of KeyManager to be used by GetEntry() - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); }; class PlaceholderCache { diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp index c35a0d10b..175a8266a 100644 --- a/src/core/file_sys/submission_package.cpp +++ b/src/core/file_sys/submission_package.cpp @@ -21,7 +21,7 @@ namespace FileSys { namespace { void SetTicketKeys(const std::vector& files) { - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + auto& keys = Core::Crypto::KeyManager::Instance(); for (const auto& ticket_file : files) { if (ticket_file == nullptr) { diff --git a/src/core/file_sys/submission_package.h b/src/core/file_sys/submission_package.h index bd577f6e5..cf89de6a9 100644 --- a/src/core/file_sys/submission_package.h +++ b/src/core/file_sys/submission_package.h @@ -73,7 +73,7 @@ private: std::map, std::shared_ptr>> ncas; std::vector ticket_files; - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); VirtualFile romfs; VirtualDir exefs; diff --git a/src/core/file_sys/xts_archive.h b/src/core/file_sys/xts_archive.h index 95da907bc..563531bb6 100644 --- a/src/core/file_sys/xts_archive.h +++ b/src/core/file_sys/xts_archive.h @@ -62,6 +62,6 @@ private: VirtualFile dec_file; - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); }; } // namespace FileSys diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index da6b74a22..a41c73c48 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -302,7 +302,7 @@ private: rb.Push(write_size); } - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); }; void InstallInterfaces(SM::ServiceManager& service_manager) { diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index f586950e7..fb299a39b 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -2226,7 +2226,7 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) { "title.keys_autogenerated"); } - Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::instance(); + Core::Crypto::KeyManager& keys = Core::Crypto::KeyManager::Instance(); if (keys.BaseDeriveNecessary()) { Core::Crypto::PartitionDataManager pdm{vfs->OpenDirectory( FileUtil::GetUserPath(FileUtil::UserPath::SysDataDir), FileSys::Mode::Read)}; -- cgit v1.2.3