diff options
Diffstat (limited to 'installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/Crypto/MyAes.cpp')
-rw-r--r-- | installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/Crypto/MyAes.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/Crypto/MyAes.cpp b/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/Crypto/MyAes.cpp new file mode 100644 index 000000000..5b0d1e8a4 --- /dev/null +++ b/installerbuilder/libinstaller/3rdparty/p7zip_9.04/unix/CPP/7zip/Crypto/MyAes.cpp @@ -0,0 +1,57 @@ +// Crypto/MyAes.cpp + +#include "StdAfx.h" + +#include "MyAes.h" + +namespace NCrypto { + +struct CAesTabInit { CAesTabInit() { AesGenTables();} } g_AesTabInit; + +STDMETHODIMP CAesCbcEncoder::Init() { return S_OK; } + +STDMETHODIMP_(UInt32) CAesCbcEncoder::Filter(Byte *data, UInt32 size) +{ + return (UInt32)AesCbc_Encode(&Aes, data, size); +} + +STDMETHODIMP CAesCbcEncoder::SetKey(const Byte *data, UInt32 size) +{ + if ((size & 0x7) != 0 || size < 16 || size > 32) + return E_INVALIDARG; + Aes_SetKeyEncode(&Aes.aes, data, size); + return S_OK; +} + +STDMETHODIMP CAesCbcEncoder::SetInitVector(const Byte *data, UInt32 size) +{ + if (size != AES_BLOCK_SIZE) + return E_INVALIDARG; + AesCbc_Init(&Aes, data); + return S_OK; +} + +STDMETHODIMP CAesCbcDecoder::Init() { return S_OK; } + +STDMETHODIMP_(UInt32) CAesCbcDecoder::Filter(Byte *data, UInt32 size) +{ + return (UInt32)AesCbc_Decode(&Aes, data, size); +} + +STDMETHODIMP CAesCbcDecoder::SetKey(const Byte *data, UInt32 size) +{ + if ((size & 0x7) != 0 || size < 16 || size > 32) + return E_INVALIDARG; + Aes_SetKeyDecode(&Aes.aes, data, size); + return S_OK; +} + +STDMETHODIMP CAesCbcDecoder::SetInitVector(const Byte *data, UInt32 size) +{ + if (size != AES_BLOCK_SIZE) + return E_INVALIDARG; + AesCbc_Init(&Aes, data); + return S_OK; +} + +} |