From e413d7f5ece44fd22b9deb7a192cdfcfdef8a0dd Mon Sep 17 00:00:00 2001 From: SketchMaster2001 Date: Sun, 18 Sep 2022 23:09:20 -0400 Subject: Add initial WiiConnect24 support --- Source/Core/Common/Crypto/AES.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Source/Core/Common/Crypto/AES.cpp') diff --git a/Source/Core/Common/Crypto/AES.cpp b/Source/Core/Common/Crypto/AES.cpp index fe8f4ec728..82f7d1a9c2 100644 --- a/Source/Core/Common/Crypto/AES.cpp +++ b/Source/Core/Common/Crypto/AES.cpp @@ -408,4 +408,21 @@ std::unique_ptr CreateContextDecrypt(const u8* key) return CreateContext(key); } +// OFB encryption and decryption are the exact same. We don't encrypt though. +void CryptOFB(const u8* key, const u8* iv, u8* iv_out, const u8* buf_in, u8* buf_out, size_t size) +{ + mbedtls_aes_context aes_ctx; + size_t iv_offset = 0; + + std::array iv_tmp{}; + if (iv) + std::memcpy(&iv_tmp[0], iv, 16); + + ASSERT(!mbedtls_aes_setkey_enc(&aes_ctx, key, 128)); + mbedtls_aes_crypt_ofb(&aes_ctx, size, &iv_offset, &iv_tmp[0], buf_in, buf_out); + + if (iv_out) + std::memcpy(iv_out, &iv_tmp[0], 16); +} + } // namespace Common::AES -- cgit v1.2.3