/* Standard encryption plugin for Miranda NG Copyright (C) 2012-16 George Hazan 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "stdafx.h" int LoadSslModule(void); void UnloadSslModule(void); HMODULE g_hOpenSSL; HMODULE g_hOpenSSLCrypto; HMODULE g_hWinCrypt; FARPROC WINAPI delayHook(unsigned dliNotify, PDelayLoadInfo dli) { switch (dliNotify) { case dliNotePreLoadLibrary: if (!strcmpi(dli->szDll, "libeay32.dll")) return (FARPROC)g_hOpenSSLCrypto; else if (!strcmpi(dli->szDll, "ssleay32.dll")) return (FARPROC)g_hOpenSSL; else if (!strcmpi(dli->szDll, "crypt32.dll")) return (FARPROC)g_hWinCrypt; } return NULL; } extern "C" PfnDliHook __pfnDliNotifyHook2 = delayHook; HINSTANCE hInst; int hLangpack; PLUGININFOEX pluginInfo = { sizeof(PLUGININFOEX), __PLUGIN_NAME, __VERSION_DWORD, __DESCRIPTION, __AUTHOR, __AUTHOREMAIL, __COPYRIGHT, __AUTHORWEB, UNICODE_AWARE | STATIC_PLUGIN, // {B649702C-13DE-408A-B6C2-FB8FED2A2C90} { 0xb649702c, 0x13de, 0x408a, { 0xb6, 0xc2, 0xfb, 0x8f, 0xed, 0x2a, 0x2c, 0x90 } } }; BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) { hInst = hinstDLL; return TRUE; } extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) { return &pluginInfo; } extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_SSL, MIID_LAST }; extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); return LoadSslModule(); } extern "C" int __declspec(dllexport) Unload(void) { UnloadSslModule(); return 0; }