crypto: Resolve sign-conversion warnings

This commit is contained in:
Lioncash 2019-11-12 04:13:17 -05:00
parent 27ab99490e
commit 581d2e36e5
2 changed files with 12 additions and 11 deletions

View file

@ -21,6 +21,7 @@
#include "common/common_paths.h" #include "common/common_paths.h"
#include "common/file_util.h" #include "common/file_util.h"
#include "common/hex_util.h" #include "common/hex_util.h"
#include "common/string_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h" #include "core/core.h"
#include "core/crypto/aes_util.h" #include "core/crypto/aes_util.h"
@ -378,8 +379,9 @@ std::vector<Ticket> GetTicketblob(const FileUtil::IOFile& ticket_save) {
template <size_t size> template <size_t size>
static std::array<u8, size> operator^(const std::array<u8, size>& lhs, static std::array<u8, size> operator^(const std::array<u8, size>& lhs,
const std::array<u8, size>& rhs) { const std::array<u8, size>& rhs) {
std::array<u8, size> out{}; std::array<u8, size> out;
std::transform(lhs.begin(), lhs.end(), rhs.begin(), out.begin(), std::bit_xor<>()); std::transform(lhs.begin(), lhs.end(), rhs.begin(), out.begin(),
[](u8 lhs, u8 rhs) { return u8(lhs ^ rhs); });
return out; return out;
} }
@ -538,7 +540,7 @@ void KeyManager::LoadFromFile(const std::string& filename, bool is_title_keys) {
Key128 key = Common::HexStringToArray<16>(out[1]); Key128 key = Common::HexStringToArray<16>(out[1]);
s128_keys[{S128KeyType::Titlekey, rights_id[1], rights_id[0]}] = key; s128_keys[{S128KeyType::Titlekey, rights_id[1], rights_id[0]}] = key;
} else { } 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()) { if (s128_file_id.find(out[0]) != s128_file_id.end()) {
const auto index = s128_file_id.at(out[0]); const auto index = s128_file_id.at(out[0]);
Key128 key = Common::HexStringToArray<16>(out[1]); Key128 key = Common::HexStringToArray<16>(out[1]);
@ -944,12 +946,10 @@ void KeyManager::DeriveETicket(PartitionDataManager& data) {
return; return;
} }
Key128 rsa_oaep_kek{}; const Key128 rsa_oaep_kek = seed3 ^ mask0;
std::transform(seed3.begin(), seed3.end(), mask0.begin(), rsa_oaep_kek.begin(), if (rsa_oaep_kek == Key128{}) {
std::bit_xor<>());
if (rsa_oaep_kek == Key128{})
return; return;
}
SetKey(S128KeyType::Source, rsa_oaep_kek, SetKey(S128KeyType::Source, rsa_oaep_kek,
static_cast<u64>(SourceKeyType::RSAOaepKekGeneration)); static_cast<u64>(SourceKeyType::RSAOaepKekGeneration));

View file

@ -204,12 +204,13 @@ static std::array<Key128, 0x20> FindEncryptedMasterKeyFromHex(const std::vector<
FileSys::VirtualFile FindFileInDirWithNames(const FileSys::VirtualDir& dir, FileSys::VirtualFile FindFileInDirWithNames(const FileSys::VirtualDir& dir,
const std::string& name) { const std::string& name) {
auto upper = name; const auto upper = Common::ToUpper(name);
std::transform(upper.begin(), upper.end(), upper.begin(), [](u8 c) { return std::toupper(c); });
for (const auto& fname : {name, name + ".bin", upper, upper + ".BIN"}) { for (const auto& fname : {name, name + ".bin", upper, upper + ".BIN"}) {
if (dir->GetFile(fname) != nullptr) if (dir->GetFile(fname) != nullptr) {
return dir->GetFile(fname); return dir->GetFile(fname);
} }
}
return nullptr; return nullptr;
} }