diff options
Diffstat (limited to 'plugins/Dbx_tree/src')
| -rw-r--r-- | plugins/Dbx_tree/src/Cipher.h | 180 | ||||
| -rw-r--r-- | plugins/Dbx_tree/src/EncryptionManager.h | 2 | 
2 files changed, 181 insertions, 1 deletions
diff --git a/plugins/Dbx_tree/src/Cipher.h b/plugins/Dbx_tree/src/Cipher.h new file mode 100644 index 0000000000..26cd7424bb --- /dev/null +++ b/plugins/Dbx_tree/src/Cipher.h @@ -0,0 +1,180 @@ +/*
 +
 +dbx_tree: tree database driver for Miranda IM
 +
 +Copyright 2007-2010 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
 +
 +#ifdef _MSC_VER
 +#include "stdint.h"
 +#else
 +#include <stdint.h>
 +#endif
 +
 +#include <wchar.h>
 +
 +#pragma pack(push, 1)
 +
 +#ifdef __INTERFACE_ONLY__
 +#define __INTERFACE_VIRTUAL__
 +#else
 +#define __INTERFACE_VIRTUAL__ virtual
 +#endif
 +
 +class CCipher
 +{
 +public:
 +	typedef struct TCipherInterface
 +	{
 +		CCipher * self;
 +		uint32_t Size;
 +		void           (__cdecl CCipher::*Destroy)();
 +
 +		const wchar_t* (__cdecl CCipher::*Name)();
 +		const wchar_t* (__cdecl CCipher::*Description)();
 +		const uint32_t (__cdecl CCipher::*BlockSizeBytes)();
 +		const bool     (__cdecl CCipher::*IsStreamCipher)();
 +
 +		void           (__cdecl CCipher::*SetKey)(void* Key, uint32_t KeyLength);
 +		void           (__cdecl CCipher::*Encrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte);
 +		void           (__cdecl CCipher::*Decrypt)(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte);
 +
 +	} TCipherInterface;
 +	TCipherInterface * m_Interface;
 +
 +#ifndef __INTERFACE_ONLY__
 +	virtual void __cdecl Destroy()
 +	{
 +		delete this;
 +	}
 +
 +	CCipher()
 +	{
 +		m_Interface = new TCipherInterface;
 +		m_Interface->Size = sizeof(TCipherInterface);
 +		m_Interface->self = this;
 +		m_Interface->Destroy        = &CCipher::Destroy;
 +		m_Interface->Name           = &CCipher::Name;
 +		m_Interface->Description    = &CCipher::Description;
 +		m_Interface->BlockSizeBytes = &CCipher::BlockSizeBytes;
 +		m_Interface->IsStreamCipher = &CCipher::IsStreamCipher;
 +		m_Interface->SetKey         = &CCipher::SetKey;
 +		m_Interface->Encrypt        = &CCipher::Encrypt;
 +		m_Interface->Decrypt        = &CCipher::Decrypt;
 +	};
 +#endif
 +
 +#ifdef __INTERFACE_ONLY__
 +	CCipher(TCipherInterface * Interface)
 +	{
 +		m_Interface = Interface;
 +	};
 +#endif
 +
 +	__INTERFACE_VIRTUAL__ ~CCipher()
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		(m_Interface->self->*(m_Interface->Destroy))();
 +	}
 +#else
 +	{	}
 +#endif
 +	;
 +
 +	__INTERFACE_VIRTUAL__ const wchar_t* __cdecl Name()
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->Name))();
 +	}
 +#else
 +	= 0
 +#endif
 +		;
 +
 +	__INTERFACE_VIRTUAL__ const wchar_t* __cdecl Description()
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->Description))();
 +	}
 +#else
 +	= 0
 +#endif
 +		;
 +
 +	__INTERFACE_VIRTUAL__ const uint32_t __cdecl BlockSizeBytes()
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->BlockSizeBytes))();
 +	}
 +#else
 +		= 0
 +#endif
 +		;
 +
 +	__INTERFACE_VIRTUAL__ const bool __cdecl IsStreamCipher()
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->IsStreamCipher))();
 +	}
 +#else
 +		= 0
 +#endif
 +		;
 +
 +	__INTERFACE_VIRTUAL__ void __cdecl SetKey(void* Key, uint32_t KeyLength)
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->SetKey))(Key, KeyLength);
 +	}
 +#else
 +		= 0
 +#endif
 +		;
 +	__INTERFACE_VIRTUAL__ void __cdecl Encrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte)
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->Encrypt))(Data, Size, Nonce, StartByte);
 +	}
 +#else
 +		= 0
 +#endif
 +		;
 +	__INTERFACE_VIRTUAL__ void __cdecl Decrypt(void* Data, uint32_t Size, uint32_t Nonce, uint32_t StartByte)
 +#ifdef __INTERFACE_ONLY__
 +	{
 +		return (m_Interface->self->*(m_Interface->Decrypt))(Data, Size, Nonce, StartByte);
 +	}
 +#else
 +		= 0
 +#endif
 +		;
 +
 +};
 +
 +typedef struct TCipherInfo
 +{
 +	uint32_t cbSize;
 +	const uint32_t ID;
 +	const wchar_t* Name;
 +	const wchar_t* Description;
 +	CCipher::TCipherInterface * (__cdecl *Create)();
 +} TCipherInfo;
 +
 +#pragma pack(pop)
 diff --git a/plugins/Dbx_tree/src/EncryptionManager.h b/plugins/Dbx_tree/src/EncryptionManager.h index a90a47c960..5bd04360a2 100644 --- a/plugins/Dbx_tree/src/EncryptionManager.h +++ b/plugins/Dbx_tree/src/EncryptionManager.h @@ -26,7 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.  #include "sigslot.h"
  #define __INTERFACE_ONLY__
 -#include "../encryption/Common/Cipher.h"
 +#include "Cipher.h"
  #undef __INTERFACE_ONLY__
  #include "SHA256.h"
  | 
