Mercurial > vba-linux
annotate src/win32/7zip/7z/CPP/7zip/Crypto/MyAes.cpp @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
rev | line source |
---|---|
rlm@1 | 1 // Crypto/MyAes.cpp |
rlm@1 | 2 |
rlm@1 | 3 #include "StdAfx.h" |
rlm@1 | 4 |
rlm@1 | 5 #include "MyAes.h" |
rlm@1 | 6 |
rlm@1 | 7 namespace NCrypto { |
rlm@1 | 8 |
rlm@1 | 9 struct CAesTabInit { CAesTabInit() { AesGenTables();} } g_AesTabInit; |
rlm@1 | 10 |
rlm@1 | 11 STDMETHODIMP CAesCbcEncoder::Init() { return S_OK; } |
rlm@1 | 12 |
rlm@1 | 13 STDMETHODIMP_(UInt32) CAesCbcEncoder::Filter(Byte *data, UInt32 size) |
rlm@1 | 14 { |
rlm@1 | 15 return (UInt32)AesCbc_Encode(&Aes, data, size); |
rlm@1 | 16 } |
rlm@1 | 17 |
rlm@1 | 18 STDMETHODIMP CAesCbcEncoder::SetKey(const Byte *data, UInt32 size) |
rlm@1 | 19 { |
rlm@1 | 20 if ((size & 0x7) != 0 || size < 16 || size > 32) |
rlm@1 | 21 return E_INVALIDARG; |
rlm@1 | 22 Aes_SetKeyEncode(&Aes.aes, data, size); |
rlm@1 | 23 return S_OK; |
rlm@1 | 24 } |
rlm@1 | 25 |
rlm@1 | 26 STDMETHODIMP CAesCbcEncoder::SetInitVector(const Byte *data, UInt32 size) |
rlm@1 | 27 { |
rlm@1 | 28 if (size != AES_BLOCK_SIZE) |
rlm@1 | 29 return E_INVALIDARG; |
rlm@1 | 30 AesCbc_Init(&Aes, data); |
rlm@1 | 31 return S_OK; |
rlm@1 | 32 } |
rlm@1 | 33 |
rlm@1 | 34 STDMETHODIMP CAesCbcDecoder::Init() { return S_OK; } |
rlm@1 | 35 |
rlm@1 | 36 STDMETHODIMP_(UInt32) CAesCbcDecoder::Filter(Byte *data, UInt32 size) |
rlm@1 | 37 { |
rlm@1 | 38 return (UInt32)AesCbc_Decode(&Aes, data, size); |
rlm@1 | 39 } |
rlm@1 | 40 |
rlm@1 | 41 STDMETHODIMP CAesCbcDecoder::SetKey(const Byte *data, UInt32 size) |
rlm@1 | 42 { |
rlm@1 | 43 if ((size & 0x7) != 0 || size < 16 || size > 32) |
rlm@1 | 44 return E_INVALIDARG; |
rlm@1 | 45 Aes_SetKeyDecode(&Aes.aes, data, size); |
rlm@1 | 46 return S_OK; |
rlm@1 | 47 } |
rlm@1 | 48 |
rlm@1 | 49 STDMETHODIMP CAesCbcDecoder::SetInitVector(const Byte *data, UInt32 size) |
rlm@1 | 50 { |
rlm@1 | 51 if (size != AES_BLOCK_SIZE) |
rlm@1 | 52 return E_INVALIDARG; |
rlm@1 | 53 AesCbc_Init(&Aes, data); |
rlm@1 | 54 return S_OK; |
rlm@1 | 55 } |
rlm@1 | 56 |
rlm@1 | 57 } |