summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Crypto/AES.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Crypto/AES.cpp')
-rw-r--r--Source/Core/Common/Crypto/AES.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/Source/Core/Common/Crypto/AES.cpp b/Source/Core/Common/Crypto/AES.cpp
index e12ba2481c..00685beba4 100644
--- a/Source/Core/Common/Crypto/AES.cpp
+++ b/Source/Core/Common/Crypto/AES.cpp
@@ -10,15 +10,30 @@ namespace Common
{
namespace AES
{
-std::vector<u8> Decrypt(const u8* key, u8* iv, const u8* src, size_t size)
+std::vector<u8> DecryptEncrypt(const u8* key, u8* iv, const u8* src, size_t size, Mode mode)
{
mbedtls_aes_context aes_ctx;
std::vector<u8> buffer(size);
- mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
- mbedtls_aes_crypt_cbc(&aes_ctx, MBEDTLS_AES_DECRYPT, size, iv, src, buffer.data());
+ if (mode == Mode::Encrypt)
+ mbedtls_aes_setkey_enc(&aes_ctx, key, 128);
+ else
+ mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
+
+ mbedtls_aes_crypt_cbc(&aes_ctx, mode == Mode::Encrypt ? MBEDTLS_AES_ENCRYPT : MBEDTLS_AES_DECRYPT,
+ size, iv, src, buffer.data());
return buffer;
}
+
+std::vector<u8> Decrypt(const u8* key, u8* iv, const u8* src, size_t size)
+{
+ return DecryptEncrypt(key, iv, src, size, Mode::Decrypt);
+}
+
+std::vector<u8> Encrypt(const u8* key, u8* iv, const u8* src, size_t size)
+{
+ return DecryptEncrypt(key, iv, src, size, Mode::Encrypt);
+}
} // namespace AES
} // namespace Common