summaryrefslogtreecommitdiff
path: root/src/core/crypto/aes_util.cpp
diff options
context:
space:
mode:
authorGravatar Zach Hilman2018-08-16 17:00:35 -0400
committerGravatar Zach Hilman2018-08-23 11:52:44 -0400
commit10e5356e9ac5756d8a48498cd1270862d3013476 (patch)
treeb09c587d60e6b209c08b2ec2c4a7cdc65fab1005 /src/core/crypto/aes_util.cpp
parentctr_encryption_layer: Fix bug when transcoding small data (diff)
downloadyuzu-10e5356e9ac5756d8a48498cd1270862d3013476.tar.gz
yuzu-10e5356e9ac5756d8a48498cd1270862d3013476.tar.xz
yuzu-10e5356e9ac5756d8a48498cd1270862d3013476.zip
aes_util: Make XTSTranscode stricter about sizes
XTS with Nintendo Tweak will fail mysteriously if the sector size is not 0x4000. Upgrade the critical log to an assert to prevent undefined behavior.
Diffstat (limited to 'src/core/crypto/aes_util.cpp')
-rw-r--r--src/core/crypto/aes_util.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/core/crypto/aes_util.cpp b/src/core/crypto/aes_util.cpp
index a9876c83e..72e4bed67 100644
--- a/src/core/crypto/aes_util.cpp
+++ b/src/core/crypto/aes_util.cpp
@@ -99,10 +99,7 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op
99template <typename Key, size_t KeySize> 99template <typename Key, size_t KeySize>
100void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id, 100void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id,
101 size_t sector_size, Op op) { 101 size_t sector_size, Op op) {
102 if (size % sector_size > 0) { 102 ASSERT_MSG(size % sector_size == 0, "XTS decryption size must be a multiple of sector size.");
103 LOG_CRITICAL(Crypto, "Data size must be a multiple of sector size.");
104 return;
105 }
106 103
107 for (size_t i = 0; i < size; i += sector_size) { 104 for (size_t i = 0; i < size; i += sector_size) {
108 SetIV(CalculateNintendoTweak(sector_id++)); 105 SetIV(CalculateNintendoTweak(sector_id++));
@@ -112,4 +109,4 @@ void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest,
112 109
113template class AESCipher<Key128>; 110template class AESCipher<Key128>;
114template class AESCipher<Key256>; 111template class AESCipher<Key256>;
115} // namespace Core::Crypto \ No newline at end of file 112} // namespace Core::Crypto