| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- // IEncryption.h: interface for the IEncryption class.
 
- //
 
- //////////////////////////////////////////////////////////////////////
 
- #if !defined(AFX_IENCRYPTION_H__7741547B_BA15_4851_A41B_2B4EC1DC12D5__INCLUDED_)
 
- #define AFX_IENCRYPTION_H__7741547B_BA15_4851_A41B_2B4EC1DC12D5__INCLUDED_
 
- #if _MSC_VER > 1000
 
- #pragma once
 
- #endif // _MSC_VER > 1000
 
- // function to be exported from dll to create instance of interface
 
- #ifdef _EXPORTING // declare this in project settings for dll _only_
 
- #	define DLL_DECLSPEC __declspec(dllexport)
 
- #else
 
- #	define DLL_DECLSPEC __declspec(dllimport)
 
- #endif 
 
- #define IENCRYPTION_VERSION 0x0000
 
- class IEncryption;
 
- typedef IEncryption* (*PFNCREATE)(); // function prototype
 
- extern "C" DLL_DECLSPEC IEncryption* CreateEncryptionInterface();
 
- typedef int (*PFNGETVERSION)(); // function prototype
 
- extern "C" DLL_DECLSPEC int GetInterfaceVersion();
 
- // helper method
 
- static IEncryption* CreateEncryptionInterface(const TCHAR* szDllPath)
 
- {
 
-     IEncryption* pInterface = NULL;
 
-     HMODULE hDll = LoadLibrary(szDllPath);
 
- 	
 
-     if (hDll)
 
-     {
 
-         PFNCREATE pCreate = (PFNCREATE)GetProcAddress(hDll, "CreateEncryptionInterface");
 
- 		
 
-         if (pCreate)
 
- 		{
 
- 			// check version
 
- 			PFNGETVERSION pVersion = (PFNGETVERSION)GetProcAddress(hDll, "GetInterfaceVersion");
 
- 			if (!IENCRYPTION_VERSION || (pVersion && pVersion() >= IENCRYPTION_VERSION))
 
- 				pInterface = pCreate();
 
- 		}
 
-     }
 
- 	
 
-     return pInterface;
 
- }
 
- static BOOL IsEncryptionDll(const TCHAR* szDllPath)
 
- {
 
-     HMODULE hDll = LoadLibrary(szDllPath);
 
- 	
 
-     if (hDll)
 
-     {
 
-         PFNCREATE pCreate = (PFNCREATE)GetProcAddress(hDll, "CreateEncryptionInterface");
 
- 		FreeLibrary(hDll);
 
- 		return (NULL != pCreate);
 
- 	}
 
- 	return FALSE;
 
- }
 
- class IEncryption
 
- {
 
- public:
 
-     virtual void Release() = 0; // releases the interface
 
- 	
 
-     // returns a dynamically allocated buffer to the encrypted text
 
-     // caller responsible for calling FreeBuffer on the returned buffer
 
-     virtual bool Encrypt(const unsigned char* pInput, int nLenInput, const char* szPassword, 
 
- 						 unsigned char*& pOutput, int& nLenOutput) = 0;
 
- 	
 
-     // returns a dynamically allocated buffer to the decrypted text
 
-     // caller responsible for calling FreeBuffer on the returned buffer
 
-     virtual bool Decrypt(const unsigned char* pInput, int nLenInput, const char* szPassword,
 
- 						 unsigned char*& pOutput, int& nLenOutput) = 0;
 
- 	
 
-     // frees a previously returned buffer and sets the ptr to NULL
 
-     // eg for buffer allocated with 'new' use 'delete []'
 
-     // eg for buffer allocated with 'strdup' use 'free'
 
-     virtual void FreeBuffer(unsigned char*& pBuffer) = 0;
 
- 	
 
- };
 
- static void ReleaseEncryptionInterface(IEncryption*& pInterface)
 
- {
 
-     if (pInterface)
 
-     {
 
-         pInterface->Release();
 
-         pInterface = NULL;
 
-     }
 
- }
 
- #endif // !defined(AFX_IENCRYPTION_H__7741547B_BA15_4851_A41B_2B4EC1DC12D5__INCLUDED_)
 
 
  |