diff options
Diffstat (limited to 'plugins/Dbx_tree/encryption/ARC4')
| -rw-r--r-- | plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj | 168 | ||||
| -rw-r--r-- | plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj.filters | 30 | ||||
| -rw-r--r-- | plugins/Dbx_tree/encryption/ARC4/src/ARC4.cpp | 129 | ||||
| -rw-r--r-- | plugins/Dbx_tree/encryption/ARC4/src/ARC4.h | 65 | 
4 files changed, 392 insertions, 0 deletions
diff --git a/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj b/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj new file mode 100644 index 0000000000..3fcc596e3a --- /dev/null +++ b/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="utf-8"?>
 +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 +  <ItemGroup Label="ProjectConfigurations">
 +    <ProjectConfiguration Include="Debug|Win32">
 +      <Configuration>Debug</Configuration>
 +      <Platform>Win32</Platform>
 +    </ProjectConfiguration>
 +    <ProjectConfiguration Include="Debug|x64">
 +      <Configuration>Debug</Configuration>
 +      <Platform>x64</Platform>
 +    </ProjectConfiguration>
 +    <ProjectConfiguration Include="Release|Win32">
 +      <Configuration>Release</Configuration>
 +      <Platform>Win32</Platform>
 +    </ProjectConfiguration>
 +    <ProjectConfiguration Include="Release|x64">
 +      <Configuration>Release</Configuration>
 +      <Platform>x64</Platform>
 +    </ProjectConfiguration>
 +  </ItemGroup>
 +  <PropertyGroup Label="Globals">
 +    <ProjectName>Dbx_tree_ARC4</ProjectName>
 +    <ProjectGUID>{F60935E3-8F27-46E2-8598-013E7D4C90E7}</ProjectGUID>
 +  </PropertyGroup>
 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 +  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 +    <ConfigurationType>DynamicLibrary</ConfigurationType>
 +    <CharacterSet>Unicode</CharacterSet>
 +  </PropertyGroup>
 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 +    <ConfigurationType>DynamicLibrary</ConfigurationType>
 +    <CharacterSet>Unicode</CharacterSet>
 +  </PropertyGroup>
 +  <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 +    <ConfigurationType>DynamicLibrary</ConfigurationType>
 +    <CharacterSet>Unicode</CharacterSet>
 +    <WholeProgramOptimization>true</WholeProgramOptimization>
 +  </PropertyGroup>
 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 +    <ConfigurationType>DynamicLibrary</ConfigurationType>
 +    <CharacterSet>Unicode</CharacterSet>
 +    <WholeProgramOptimization>true</WholeProgramOptimization>
 +  </PropertyGroup>
 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
 +  <ImportGroup Label="ExtensionSettings">
 +  </ImportGroup>
 +  <ImportGroup Label="PropertySheets">
 +    <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" />
 +  </ImportGroup>
 +  <PropertyGroup Label="UserMacros" />
 +  <PropertyGroup>
 +    <_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\Plugins\Encryption\</OutDir>
 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64\Plugins\Encryption\</OutDir>
 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\Plugins\Encryption\</OutDir>
 +    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64\Plugins\Encryption\</OutDir>
 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
 +    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
 +    <IgnoreImportLibrary>true</IgnoreImportLibrary>
 +    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ARC4</TargetName>
 +    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ARC4</TargetName>
 +    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ARC4</TargetName>
 +    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ARC4</TargetName>
 +  </PropertyGroup>
 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 +    <ClCompile>
 +      <Optimization>Disabled</Optimization>
 +      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 +      <MinimalRebuild>true</MinimalRebuild>
 +      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
 +      <WarningLevel>Level3</WarningLevel>
 +      <AdditionalIncludeDirectories>..\Common</AdditionalIncludeDirectories>
 +      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
 +      <StringPooling>true</StringPooling>
 +      <FunctionLevelLinking>true</FunctionLevelLinking>
 +      <FloatingPointModel>Fast</FloatingPointModel>
 +    </ClCompile>
 +    <Link>
 +      <GenerateDebugInformation>true</GenerateDebugInformation>
 +      <SubSystem>Windows</SubSystem>
 +      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
 +      <RandomizedBaseAddress>false</RandomizedBaseAddress>
 +      <AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
 +    </Link>
 +  </ItemDefinitionGroup>
 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 +    <ClCompile>
 +      <Optimization>Disabled</Optimization>
 +      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 +      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
 +      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
 +      <WarningLevel>Level3</WarningLevel>
 +      <AdditionalIncludeDirectories>..\Common</AdditionalIncludeDirectories>
 +      <StringPooling>true</StringPooling>
 +      <MinimalRebuild>true</MinimalRebuild>
 +      <FunctionLevelLinking>true</FunctionLevelLinking>
 +      <FloatingPointModel>Fast</FloatingPointModel>
 +    </ClCompile>
 +    <Link>
 +      <GenerateDebugInformation>true</GenerateDebugInformation>
 +      <SubSystem>Windows</SubSystem>
 +      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
 +      <RandomizedBaseAddress>false</RandomizedBaseAddress>
 +      <AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
 +    </Link>
 +  </ItemDefinitionGroup>
 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 +    <ClCompile>
 +      <Optimization>Full</Optimization>
 +      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
 +      <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
 +      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 +      <FunctionLevelLinking>true</FunctionLevelLinking>
 +      <WarningLevel>Level3</WarningLevel>
 +      <AdditionalIncludeDirectories>..\Common</AdditionalIncludeDirectories>
 +      <StringPooling>true</StringPooling>
 +      <MinimalRebuild>true</MinimalRebuild>
 +      <FloatingPointModel>Fast</FloatingPointModel>
 +    </ClCompile>
 +    <Link>
 +      <GenerateDebugInformation>true</GenerateDebugInformation>
 +      <SubSystem>Windows</SubSystem>
 +      <OptimizeReferences>true</OptimizeReferences>
 +      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 +      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
 +      <RandomizedBaseAddress>false</RandomizedBaseAddress>
 +      <AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
 +      <AdditionalOptions>/PDBALTPATH:%_PDB%</AdditionalOptions>
 +    </Link>
 +  </ItemDefinitionGroup>
 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 +    <ClCompile>
 +      <Optimization>Full</Optimization>
 +      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
 +      <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
 +      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;DBX_TREE_ENCRYPTION_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 +      <FunctionLevelLinking>true</FunctionLevelLinking>
 +      <WarningLevel>Level3</WarningLevel>
 +      <AdditionalIncludeDirectories>..\Common</AdditionalIncludeDirectories>
 +      <StringPooling>true</StringPooling>
 +      <MinimalRebuild>true</MinimalRebuild>
 +      <FloatingPointModel>Fast</FloatingPointModel>
 +    </ClCompile>
 +    <Link>
 +      <GenerateDebugInformation>true</GenerateDebugInformation>
 +      <SubSystem>Windows</SubSystem>
 +      <OptimizeReferences>true</OptimizeReferences>
 +      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 +      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
 +      <RandomizedBaseAddress>false</RandomizedBaseAddress>
 +      <AdditionalLibraryDirectories>$(SolutionDir)\lib</AdditionalLibraryDirectories>
 +      <AdditionalOptions>/PDBALTPATH:%_PDB%</AdditionalOptions>
 +    </Link>
 +  </ItemDefinitionGroup>
 +  <ItemGroup>
 +    <ClInclude Include="src\ARC4.h" />
 +    <ClInclude Include="..\Common\Cipher.h" />
 +  </ItemGroup>
 +  <ItemGroup>
 +    <ClCompile Include="src\ARC4.cpp" />
 +  </ItemGroup>
 +  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 +  <ImportGroup Label="ExtensionTargets">
 +  </ImportGroup>
 +</Project>
\ No newline at end of file diff --git a/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj.filters b/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj.filters new file mode 100644 index 0000000000..125c2ecc43 --- /dev/null +++ b/plugins/Dbx_tree/encryption/ARC4/ARC4.vcxproj.filters @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?>
 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 +  <ItemGroup>
 +    <Filter Include="Header Files">
 +      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
 +      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
 +    </Filter>
 +    <Filter Include="Resource Files">
 +      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
 +      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
 +    </Filter>
 +    <Filter Include="Source Files">
 +      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
 +      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 +    </Filter>
 +  </ItemGroup>
 +  <ItemGroup>
 +    <ClInclude Include="src\ARC4.h">
 +      <Filter>Header Files</Filter>
 +    </ClInclude>
 +    <ClInclude Include="..\Common\Cipher.h">
 +      <Filter>Header Files</Filter>
 +    </ClInclude>
 +  </ItemGroup>
 +  <ItemGroup>
 +    <ClCompile Include="src\ARC4.cpp">
 +      <Filter>Source Files</Filter>
 +    </ClCompile>
 +  </ItemGroup>
 +</Project>
\ No newline at end of file diff --git a/plugins/Dbx_tree/encryption/ARC4/src/ARC4.cpp b/plugins/Dbx_tree/encryption/ARC4/src/ARC4.cpp new file mode 100644 index 0000000000..7f3780e6a2 --- /dev/null +++ b/plugins/Dbx_tree/encryption/ARC4/src/ARC4.cpp @@ -0,0 +1,129 @@ +/*
 +
 +dbx_tree: tree database driver for Miranda IM
 +
 +Copyright 2007-2008 Michael "Protogenes" Kunz,
 +
 +This program is free software; you can redistribute it and/or
 +modify it under the terms of the GNU General Public License
 +as published by the Free Software Foundation; either version 2
 +of the License, or (at your option) any later version.
 +
 +This program is distributed in the hope that it will be useful,
 +but WITHOUT ANY WARRANTY; without even the implied warranty of
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
 +along with this program; if not, write to the Free Software
 +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 +
 +*/
 +
 +#include "ARC4.h"
 +#include <string.h>
 +
 +const wchar_t * ARC4::Name()
 +{
 +	return cName;
 +}
 +const wchar_t * ARC4::Description()
 +{
 +	return cDescription;
 +}
 +const uint32_t  ARC4::BlockSizeBytes()
 +{
 +	return cBlockSizeBytes;
 +}
 +const bool      ARC4::IsStreamCipher()
 +{
 +	return cIsStreamCipher;
 +}
 +
 +ARC4::ARC4()
 +{
 +
 +}
 +ARC4::~ARC4()
 +{
 +
 +}
 +
 +CCipher::TCipherInterface* ARC4::Create() 
 +{
 +	return (new ARC4())->m_Interface;
 +}
 +
 +void ARC4::SetKey(void* Key, uint32_t KeyLength)
 +{	
 +	uint8_t swapbyte;
 +	uint8_t index1;
 +	uint8_t index2;
 +	unsigned int i;
 +
 +	uint8_t * k = (uint8_t *) Key;
 +
 +	for (i = 0; i < 256; ++i)
 +		State[i] = i;
 +
 +	x = 0;
 +	y = 0;
 +	index1 = 0;
 +	index2 = 0;
 +	for (i = 0; i < 256; ++i)
 +	{
 +		index2 = (k[index1] + State[i] + index2) & 0xff;
 +		swapbyte = State[i];
 +		State[i] = State[index2];
 +		State[index2] = swapbyte;
 +		index1 = (index1 + 1) % KeyLength;
 +	}
 +
 +	for (i = 0; i < 3742; ++i)
 +		Stream();
 +
 +	Backx = x;
 +	Backy = y;
 +	memcpy(BackState, State, sizeof(State));
 +}
 +
 +inline uint8_t ARC4::Stream()
 +{
 +	uint8_t swapbyte;
 +
 +	x = (x + 1) & 0xff;
 +	y = (State[x] + y) & 0xff;
 +
 +	swapbyte = State[x];
 +	State[x] = State[y];
 +	State[y] = swapbyte;
 +
 +	return State[ (State[x] + State[y]) & 0xff ];
 +}
 +
 +void ARC4::Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte)
 +{	
 +	uint8_t * dat = (uint8_t *) Data;
 +	x = Backx;
 +	y = Backy;
 +	memcpy(State, BackState, sizeof(State));
 +
 +	for (unsigned int i = (Nonce + (Nonce >> 8) + (Nonce >> 16) + (Nonce >> 24)) & 0x1ff; i > 0; --i)
 +		Stream();
 +
 +	while (Size > 0)
 +	{
 +		(*dat) = (*dat) ^ Stream();
 +		--Size;
 +		++dat;
 +	}
 +}
 +void ARC4::Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte)
 +{
 +	Encrypt(Data, Size, Nonce, StartByte);
 +}
 +
 +extern "C" __declspec(dllexport) const TCipherInfo* CipherInfo(void * Reserved)
 +{
 +	return &ARC4::cCipherInfo;
 +}
 diff --git a/plugins/Dbx_tree/encryption/ARC4/src/ARC4.h b/plugins/Dbx_tree/encryption/ARC4/src/ARC4.h new file mode 100644 index 0000000000..48fdc35312 --- /dev/null +++ b/plugins/Dbx_tree/encryption/ARC4/src/ARC4.h @@ -0,0 +1,65 @@ +/*
 +
 +dbx_tree: tree database driver for Miranda IM
 +
 +Copyright 2007-2008 Michael "Protogenes" Kunz,
 +
 +This program is free software; you can redistribute it and/or
 +modify it under the terms of the GNU General Public License
 +as published by the Free Software Foundation; either version 2
 +of the License, or (at your option) any later version.
 +
 +This program is distributed in the hope that it will be useful,
 +but WITHOUT ANY WARRANTY; without even the implied warranty of
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
 +along with this program; if not, write to the Free Software
 +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 +
 +*/
 +
 +#pragma once
 +
 +#include "Cipher.h"
 +
 +class ARC4 : public CCipher
 +{
 +private:	
 +	uint8_t x;
 +	uint8_t y;
 +	uint8_t State[256];
 +
 +	uint8_t Backx;
 +	uint8_t Backy;
 +	uint8_t BackState[256];
 +
 +	uint8_t Stream();
 +
 +  static const wchar_t* cName;
 +  static const wchar_t* cDescription;
 +	static const uint32_t cBlockSizeBytes = 1;
 +	static const bool     cIsStreamCipher = true;
 +
 +public:
 +	const wchar_t * __cdecl Name();
 +	const wchar_t * __cdecl Description();
 +	const uint32_t  __cdecl BlockSizeBytes();
 +	const bool      __cdecl IsStreamCipher();
 +
 +	static const TCipherInfo cCipherInfo;
 +
 +	ARC4();
 +	~ARC4();
 +	static CCipher::TCipherInterface* __cdecl Create();
 +
 +	void __cdecl SetKey(void* Key, uint32_t KeyLength);
 +	void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte);
 +	void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte);
 +
 +};
 +
 +const wchar_t* ARC4::cName          = L"ARC4";
 +const wchar_t* ARC4::cDescription   = L"Streamcipher - 8bit step, fast, Ron Rivest 1987";
 +const TCipherInfo ARC4::cCipherInfo = {sizeof(TCipherInfo), 'ARC4', cName, cDescription, &ARC4::Create};
  | 
