mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-12 16:11:35 -06:00
Normalize all the line endings
This commit is contained in:
@@ -1,112 +1,112 @@
|
||||
// Crypto/MyAes.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "../../../C/CpuArch.h"
|
||||
|
||||
#include "MyAes.h"
|
||||
|
||||
namespace NCrypto {
|
||||
|
||||
static struct CAesTabInit { CAesTabInit() { AesGenTables();} } g_AesTabInit;
|
||||
|
||||
CAesCbcCoder::CAesCbcCoder(bool encodeMode, unsigned keySize):
|
||||
_keySize(keySize),
|
||||
_keyIsSet(false),
|
||||
_encodeMode(encodeMode)
|
||||
{
|
||||
_offset = ((0 - (unsigned)(ptrdiff_t)_aes) & 0xF) / sizeof(UInt32);
|
||||
memset(_iv, 0, AES_BLOCK_SIZE);
|
||||
SetFunctions(0);
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::Init()
|
||||
{
|
||||
AesCbc_Init(_aes + _offset, _iv);
|
||||
return _keyIsSet ? S_OK : E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(UInt32) CAesCbcCoder::Filter(Byte *data, UInt32 size)
|
||||
{
|
||||
if (!_keyIsSet)
|
||||
return 0;
|
||||
if (size == 0)
|
||||
return 0;
|
||||
if (size < AES_BLOCK_SIZE)
|
||||
return AES_BLOCK_SIZE;
|
||||
size >>= 4;
|
||||
_codeFunc(_aes + _offset, data, size);
|
||||
return size << 4;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetKey(const Byte *data, UInt32 size)
|
||||
{
|
||||
if ((size & 0x7) != 0 || size < 16 || size > 32)
|
||||
return E_INVALIDARG;
|
||||
if (_keySize != 0 && size != _keySize)
|
||||
return E_INVALIDARG;
|
||||
AES_SET_KEY_FUNC setKeyFunc = _encodeMode ? Aes_SetKey_Enc : Aes_SetKey_Dec;
|
||||
setKeyFunc(_aes + _offset + 4, data, size);
|
||||
_keyIsSet = true;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetInitVector(const Byte *data, UInt32 size)
|
||||
{
|
||||
if (size != AES_BLOCK_SIZE)
|
||||
return E_INVALIDARG;
|
||||
memcpy(_iv, data, size);
|
||||
CAesCbcCoder::Init(); // don't call virtual function here !!!
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
EXTERN_C_BEGIN
|
||||
|
||||
void MY_FAST_CALL AesCbc_Encode(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCbc_Decode(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCtr_Code(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
|
||||
void MY_FAST_CALL AesCbc_Encode_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCbc_Decode_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCtr_Code_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
|
||||
EXTERN_C_END
|
||||
|
||||
bool CAesCbcCoder::SetFunctions(UInt32 algo)
|
||||
{
|
||||
_codeFunc = _encodeMode ?
|
||||
g_AesCbc_Encode :
|
||||
g_AesCbc_Decode;
|
||||
if (algo == 1)
|
||||
{
|
||||
_codeFunc = _encodeMode ?
|
||||
AesCbc_Encode:
|
||||
AesCbc_Decode;
|
||||
}
|
||||
if (algo == 2)
|
||||
{
|
||||
#ifdef MY_CPU_X86_OR_AMD64
|
||||
if (g_AesCbc_Encode != AesCbc_Encode_Intel)
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetCoderProperties(const PROPID *propIDs, const PROPVARIANT *coderProps, UInt32 numProps)
|
||||
{
|
||||
for (UInt32 i = 0; i < numProps; i++)
|
||||
{
|
||||
const PROPVARIANT &prop = coderProps[i];
|
||||
if (propIDs[i] == NCoderPropID::kDefaultProp)
|
||||
{
|
||||
if (prop.vt != VT_UI4)
|
||||
return E_INVALIDARG;
|
||||
if (!SetFunctions(prop.ulVal))
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
}
|
||||
// Crypto/MyAes.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "../../../C/CpuArch.h"
|
||||
|
||||
#include "MyAes.h"
|
||||
|
||||
namespace NCrypto {
|
||||
|
||||
static struct CAesTabInit { CAesTabInit() { AesGenTables();} } g_AesTabInit;
|
||||
|
||||
CAesCbcCoder::CAesCbcCoder(bool encodeMode, unsigned keySize):
|
||||
_keySize(keySize),
|
||||
_keyIsSet(false),
|
||||
_encodeMode(encodeMode)
|
||||
{
|
||||
_offset = ((0 - (unsigned)(ptrdiff_t)_aes) & 0xF) / sizeof(UInt32);
|
||||
memset(_iv, 0, AES_BLOCK_SIZE);
|
||||
SetFunctions(0);
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::Init()
|
||||
{
|
||||
AesCbc_Init(_aes + _offset, _iv);
|
||||
return _keyIsSet ? S_OK : E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP_(UInt32) CAesCbcCoder::Filter(Byte *data, UInt32 size)
|
||||
{
|
||||
if (!_keyIsSet)
|
||||
return 0;
|
||||
if (size == 0)
|
||||
return 0;
|
||||
if (size < AES_BLOCK_SIZE)
|
||||
return AES_BLOCK_SIZE;
|
||||
size >>= 4;
|
||||
_codeFunc(_aes + _offset, data, size);
|
||||
return size << 4;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetKey(const Byte *data, UInt32 size)
|
||||
{
|
||||
if ((size & 0x7) != 0 || size < 16 || size > 32)
|
||||
return E_INVALIDARG;
|
||||
if (_keySize != 0 && size != _keySize)
|
||||
return E_INVALIDARG;
|
||||
AES_SET_KEY_FUNC setKeyFunc = _encodeMode ? Aes_SetKey_Enc : Aes_SetKey_Dec;
|
||||
setKeyFunc(_aes + _offset + 4, data, size);
|
||||
_keyIsSet = true;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetInitVector(const Byte *data, UInt32 size)
|
||||
{
|
||||
if (size != AES_BLOCK_SIZE)
|
||||
return E_INVALIDARG;
|
||||
memcpy(_iv, data, size);
|
||||
CAesCbcCoder::Init(); // don't call virtual function here !!!
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
EXTERN_C_BEGIN
|
||||
|
||||
void MY_FAST_CALL AesCbc_Encode(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCbc_Decode(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCtr_Code(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
|
||||
void MY_FAST_CALL AesCbc_Encode_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCbc_Decode_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
void MY_FAST_CALL AesCtr_Code_Intel(UInt32 *ivAes, Byte *data, size_t numBlocks);
|
||||
|
||||
EXTERN_C_END
|
||||
|
||||
bool CAesCbcCoder::SetFunctions(UInt32 algo)
|
||||
{
|
||||
_codeFunc = _encodeMode ?
|
||||
g_AesCbc_Encode :
|
||||
g_AesCbc_Decode;
|
||||
if (algo == 1)
|
||||
{
|
||||
_codeFunc = _encodeMode ?
|
||||
AesCbc_Encode:
|
||||
AesCbc_Decode;
|
||||
}
|
||||
if (algo == 2)
|
||||
{
|
||||
#ifdef MY_CPU_X86_OR_AMD64
|
||||
if (g_AesCbc_Encode != AesCbc_Encode_Intel)
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
STDMETHODIMP CAesCbcCoder::SetCoderProperties(const PROPID *propIDs, const PROPVARIANT *coderProps, UInt32 numProps)
|
||||
{
|
||||
for (UInt32 i = 0; i < numProps; i++)
|
||||
{
|
||||
const PROPVARIANT &prop = coderProps[i];
|
||||
if (propIDs[i] == NCoderPropID::kDefaultProp)
|
||||
{
|
||||
if (prop.vt != VT_UI4)
|
||||
return E_INVALIDARG;
|
||||
if (!SetFunctions(prop.ulVal))
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user