summaryrefslogtreecommitdiffstats
path: root/src/core/crypto/key_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-11-15 18:08:50 +0100
committerGitHub <noreply@github.com>2019-11-15 18:08:50 +0100
commit3e0e4f146b3f2ad7f1935a61141c38cdce87e04f (patch)
tree75f29ce4bb9d84f9d9722b7aa86d71e805cac8cc /src/core/crypto/key_manager.cpp
parentMerge pull request #3113 from lioncash/semi (diff)
parentexternals: Update httplib (diff)
downloadyuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar.gz
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar.bz2
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar.lz
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar.xz
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.tar.zst
yuzu-3e0e4f146b3f2ad7f1935a61141c38cdce87e04f.zip
Diffstat (limited to 'src/core/crypto/key_manager.cpp')
-rw-r--r--src/core/crypto/key_manager.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp
index 487b57053..87e6a1fd3 100644
--- a/src/core/crypto/key_manager.cpp
+++ b/src/core/crypto/key_manager.cpp
@@ -22,6 +22,7 @@
#include "common/file_util.h"
#include "common/hex_util.h"
#include "common/logging/log.h"
+#include "common/string_util.h"
#include "core/core.h"
#include "core/crypto/aes_util.h"
#include "core/crypto/key_manager.h"
@@ -378,8 +379,9 @@ std::vector<Ticket> GetTicketblob(const FileUtil::IOFile& ticket_save) {
template <size_t size>
static std::array<u8, size> operator^(const std::array<u8, size>& lhs,
const std::array<u8, size>& rhs) {
- std::array<u8, size> out{};
- std::transform(lhs.begin(), lhs.end(), rhs.begin(), out.begin(), std::bit_xor<>());
+ std::array<u8, size> out;
+ std::transform(lhs.begin(), lhs.end(), rhs.begin(), out.begin(),
+ [](u8 lhs, u8 rhs) { return u8(lhs ^ rhs); });
return out;
}
@@ -538,7 +540,7 @@ void KeyManager::LoadFromFile(const std::string& filename, bool is_title_keys) {
Key128 key = Common::HexStringToArray<16>(out[1]);
s128_keys[{S128KeyType::Titlekey, rights_id[1], rights_id[0]}] = key;
} else {
- std::transform(out[0].begin(), out[0].end(), out[0].begin(), ::tolower);
+ out[0] = Common::ToLower(out[0]);
if (s128_file_id.find(out[0]) != s128_file_id.end()) {
const auto index = s128_file_id.at(out[0]);
Key128 key = Common::HexStringToArray<16>(out[1]);
@@ -948,12 +950,10 @@ void KeyManager::DeriveETicket(PartitionDataManager& data) {
return;
}
- Key128 rsa_oaep_kek{};
- std::transform(seed3.begin(), seed3.end(), mask0.begin(), rsa_oaep_kek.begin(),
- std::bit_xor<>());
-
- if (rsa_oaep_kek == Key128{})
+ const Key128 rsa_oaep_kek = seed3 ^ mask0;
+ if (rsa_oaep_kek == Key128{}) {
return;
+ }
SetKey(S128KeyType::Source, rsa_oaep_kek,
static_cast<u64>(SourceKeyType::RSAOaepKekGeneration));