1
0
Fork 0
forked from suyu/suyu

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.
This commit is contained in:
Lioncash 2018-08-04 16:52:19 -04:00
parent b25468b498
commit 64c8212ae1
2 changed files with 10 additions and 12 deletions

View file

@ -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

View file

@ -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