From 69fe21d6e2262d6fb2b14278b7a20364468cbdcf Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Fri, 12 Oct 2012 09:56:01 +0000 Subject: Dbx_tree: folders restructurization git-svn-id: http://svn.miranda-ng.org/main/trunk@1883 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Dbx_tree/src/EncryptionManager.h | 107 +++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 plugins/Dbx_tree/src/EncryptionManager.h (limited to 'plugins/Dbx_tree/src/EncryptionManager.h') diff --git a/plugins/Dbx_tree/src/EncryptionManager.h b/plugins/Dbx_tree/src/EncryptionManager.h new file mode 100644 index 0000000000..768ea19efa --- /dev/null +++ b/plugins/Dbx_tree/src/EncryptionManager.h @@ -0,0 +1,107 @@ +/* + +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 + +#ifndef _MSC_VER +#include +#else +#include "stdint.h" +#endif +#include "sigslot.h" + +#define __INTERFACE_ONLY__ +#include "../encryption/Common/Cipher.h" +#undef __INTERFACE_ONLY__ + +#include "SHA256.h" +#include "Interface.h" +//#include "Thread.h" +#include +#include + +static const uint32_t cEncryptionChangingFlag = 0x80000000; + +#pragma pack(push, 1) + +typedef struct TFileEncryption { + uint32_t CipherID; + uint32_t CipherOldID; + uint32_t ConversionProcess; + uint8_t SHA[32]; + uint8_t SHAOld[32]; + uint32_t Reserved[2]; +} TFileEncryption, *PFileEncryption; + +#pragma pack(pop) + +typedef struct TEncryption { + uint32_t CipherID; + wchar_t * Password; +} TEncryption, *PEncryption; + +class CEncryptionManager +{ +public: + CEncryptionManager(); + ~CEncryptionManager(); + + typedef struct { + TCHAR * FilePath; + TCHAR * FileName; + uint32_t ID; + wchar_t * Name; + wchar_t * Description; + } TCipherItem; + typedef std::map TCipherList; + + static TCipherList* CipherList; // = NULL; see cpp + static uint32_t CipherListRefCount; // = 0; see cpp + static void LoadCipherList(); + + bool InitEncryption(TFileEncryption & Enc); + + bool AlignData(uint32_t ID, uint32_t & Start, uint32_t & End); + uint32_t AlignSize(uint32_t ID, uint32_t Size); + bool IsEncrypted(uint32_t ID); + void Encrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte); + void Decrypt(void* Data, uint32_t DataLength, uint32_t ID, uint32_t StartByte); + + bool CanChangeCipher(); + bool ChangeCipher(TEncryption & Encryption); +private: + bool m_Changing; + uint32_t m_ChangingProcess; + + typedef enum TUsedCiphers { + CURRENT = 0, + OLD = 1, + COUNT = 2 + } TUsedCiphers; + + struct + { + CCipher * Cipher; + HMODULE CipherDLL; + } m_Ciphers[COUNT]; + +}; -- cgit v1.2.3