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};
|