From 01a4e696b3d2c973cdd1fb4345d747bd10e93ad9 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Mon, 8 Mar 2021 16:37:36 +0000 Subject: Do protocol decryption in-place (with CryptoAPI on Windows) (#5145) --- src/mbedTLS++/AesCfb128Decryptor.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/mbedTLS++/AesCfb128Decryptor.h') diff --git a/src/mbedTLS++/AesCfb128Decryptor.h b/src/mbedTLS++/AesCfb128Decryptor.h index 601699998..a2c9d6a05 100644 --- a/src/mbedTLS++/AesCfb128Decryptor.h +++ b/src/mbedTLS++/AesCfb128Decryptor.h @@ -9,7 +9,11 @@ #pragma once +#ifdef _WIN32 +#include +#else #include "mbedtls/aes.h" +#endif @@ -26,14 +30,20 @@ public: /** Initializes the decryptor with the specified Key / IV */ void Init(const Byte a_Key[16], const Byte a_IV[16]); - /** Decrypts a_Length bytes of the encrypted data; produces a_Length output bytes */ - void ProcessData(std::byte * a_DecryptedOut, const Byte * a_EncryptedIn, size_t a_Length); + /** Decrypts a_Length bytes of the encrypted data in-place; produces a_Length output bytes */ + void ProcessData(std::byte * a_EncryptedIn, size_t a_Length); /** Returns true if the object has been initialized with the Key / IV */ bool IsValid(void) const { return m_IsValid; } protected: + +#ifdef _WIN32 + HCRYPTPROV m_Aes; + HCRYPTKEY m_Key; +#else mbedtls_aes_context m_Aes; +#endif /** The InitialVector, used by the CFB mode decryption */ Byte m_IV[16]; @@ -41,8 +51,3 @@ protected: /** Indicates whether the object has been initialized with the Key / IV */ bool m_IsValid; } ; - - - - - -- cgit v1.2.3