aes_util: Make CalculateNintendoTweak() an internally linked function

This function doesn't directly depend on class state, so it can be
hidden entirely from the interface in the cpp file.
master
Lioncash 2018-08-04 16:52:19 +07:00
parent b25468b498
commit 64c8212ae1
2 changed files with 10 additions and 12 deletions

@ -9,6 +9,16 @@
#include "core/crypto/key_manager.h" #include "core/crypto/key_manager.h"
namespace Core::Crypto { namespace Core::Crypto {
namespace {
std::vector<u8> CalculateNintendoTweak(size_t sector_id) {
std::vector<u8> out(0x10);
for (size_t i = 0xF; i <= 0xF; --i) {
out[i] = sector_id & 0xFF;
sector_id >>= 8;
}
return out;
}
} // Anonymous namespace
static_assert(static_cast<size_t>(Mode::CTR) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_CTR), static_assert(static_cast<size_t>(Mode::CTR) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_CTR),
"CTR has incorrect value."); "CTR has incorrect value.");
@ -100,16 +110,6 @@ void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest,
} }
} }
template <typename Key, size_t KeySize>
std::vector<u8> AESCipher<Key, KeySize>::CalculateNintendoTweak(size_t sector_id) {
std::vector<u8> out(0x10);
for (size_t i = 0xF; i <= 0xF; --i) {
out[i] = sector_id & 0xFF;
sector_id >>= 8;
}
return out;
}
template class AESCipher<Key128>; template class AESCipher<Key128>;
template class AESCipher<Key256>; template class AESCipher<Key256>;
} // namespace Core::Crypto } // namespace Core::Crypto

@ -56,7 +56,5 @@ public:
private: private:
std::unique_ptr<CipherContext> ctx; std::unique_ptr<CipherContext> ctx;
static std::vector<u8> CalculateNintendoTweak(size_t sector_id);
}; };
} // namespace Core::Crypto } // namespace Core::Crypto