Mercurial > vba-linux
comparison 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 |
comparison
equal
deleted
inserted
replaced
0:8ced16adf2e1 | 1:f9f4f1b99eed |
---|---|
1 // Crypto/MyAes.cpp | |
2 | |
3 #include "StdAfx.h" | |
4 | |
5 #include "MyAes.h" | |
6 | |
7 namespace NCrypto { | |
8 | |
9 struct CAesTabInit { CAesTabInit() { AesGenTables();} } g_AesTabInit; | |
10 | |
11 STDMETHODIMP CAesCbcEncoder::Init() { return S_OK; } | |
12 | |
13 STDMETHODIMP_(UInt32) CAesCbcEncoder::Filter(Byte *data, UInt32 size) | |
14 { | |
15 return (UInt32)AesCbc_Encode(&Aes, data, size); | |
16 } | |
17 | |
18 STDMETHODIMP CAesCbcEncoder::SetKey(const Byte *data, UInt32 size) | |
19 { | |
20 if ((size & 0x7) != 0 || size < 16 || size > 32) | |
21 return E_INVALIDARG; | |
22 Aes_SetKeyEncode(&Aes.aes, data, size); | |
23 return S_OK; | |
24 } | |
25 | |
26 STDMETHODIMP CAesCbcEncoder::SetInitVector(const Byte *data, UInt32 size) | |
27 { | |
28 if (size != AES_BLOCK_SIZE) | |
29 return E_INVALIDARG; | |
30 AesCbc_Init(&Aes, data); | |
31 return S_OK; | |
32 } | |
33 | |
34 STDMETHODIMP CAesCbcDecoder::Init() { return S_OK; } | |
35 | |
36 STDMETHODIMP_(UInt32) CAesCbcDecoder::Filter(Byte *data, UInt32 size) | |
37 { | |
38 return (UInt32)AesCbc_Decode(&Aes, data, size); | |
39 } | |
40 | |
41 STDMETHODIMP CAesCbcDecoder::SetKey(const Byte *data, UInt32 size) | |
42 { | |
43 if ((size & 0x7) != 0 || size < 16 || size > 32) | |
44 return E_INVALIDARG; | |
45 Aes_SetKeyDecode(&Aes.aes, data, size); | |
46 return S_OK; | |
47 } | |
48 | |
49 STDMETHODIMP CAesCbcDecoder::SetInitVector(const Byte *data, UInt32 size) | |
50 { | |
51 if (size != AES_BLOCK_SIZE) | |
52 return E_INVALIDARG; | |
53 AesCbc_Init(&Aes, data); | |
54 return S_OK; | |
55 } | |
56 | |
57 } |