⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dll.cpp

📁 lots Elliptic curve cryptography codes. Use Visual c++ to compile
💻 CPP
字号:
// dll.cpp - written and placed in the public domain by Wei Dai#define CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES#define CRYPTOPP_DEFAULT_NO_DLL#include "dll.h"#pragma warning(default: 4660)#if defined(CRYPTOPP_EXPORTS) && defined(CRYPTOPP_WIN32_AVAILABLE)#include <windows.h>#endif#ifndef CRYPTOPP_IMPORTSNAMESPACE_BEGIN(CryptoPP)template<> const byte PKCS_DigestDecoration<SHA1>::decoration[] = {0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04,0x14};template<> const unsigned int PKCS_DigestDecoration<SHA1>::length = sizeof(PKCS_DigestDecoration<SHA1>::decoration);template<> const byte PKCS_DigestDecoration<SHA224>::decoration[] = {0x30,0x2d,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x04,0x05,0x00,0x04,0x1c};template<> const unsigned int PKCS_DigestDecoration<SHA224>::length = sizeof(PKCS_DigestDecoration<SHA224>::decoration);template<> const byte PKCS_DigestDecoration<SHA256>::decoration[] = {0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x01,0x05,0x00,0x04,0x20};template<> const unsigned int PKCS_DigestDecoration<SHA256>::length = sizeof(PKCS_DigestDecoration<SHA256>::decoration);template<> const byte PKCS_DigestDecoration<SHA384>::decoration[] = {0x30,0x41,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x02,0x05,0x00,0x04,0x30};template<> const unsigned int PKCS_DigestDecoration<SHA384>::length = sizeof(PKCS_DigestDecoration<SHA384>::decoration);template<> const byte PKCS_DigestDecoration<SHA512>::decoration[] = {0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x03,0x05,0x00,0x04,0x40};template<> const unsigned int PKCS_DigestDecoration<SHA512>::length = sizeof(PKCS_DigestDecoration<SHA512>::decoration);template<> const byte EMSA2HashId<SHA>::id = 0x33;template<> const byte EMSA2HashId<SHA224>::id = 0x38;template<> const byte EMSA2HashId<SHA256>::id = 0x34;template<> const byte EMSA2HashId<SHA384>::id = 0x36;template<> const byte EMSA2HashId<SHA512>::id = 0x35;NAMESPACE_END#endif#ifdef CRYPTOPP_EXPORTSUSING_NAMESPACE(CryptoPP)#if !(defined(_MSC_VER) && (_MSC_VER < 1300))using std::set_new_handler;#endifstatic PNew s_pNew = NULL;static PDelete s_pDelete = NULL;static void * New (size_t size){	void *p;	while (!(p = malloc(size)))		CallNewHandler();	return p;}static void SetNewAndDeleteFunctionPointers(){	void *p = NULL;	HMODULE hModule = NULL;	MEMORY_BASIC_INFORMATION mbi;	while (true)	{		VirtualQuery(p, &mbi, sizeof(mbi));		if (p >= (char *)mbi.BaseAddress + mbi.RegionSize)			break;		p = (char *)mbi.BaseAddress + mbi.RegionSize;		if (!mbi.AllocationBase || mbi.AllocationBase == hModule)			continue;		hModule = HMODULE(mbi.AllocationBase);		PGetNewAndDelete pGetNewAndDelete = (PGetNewAndDelete)GetProcAddress(hModule, "GetNewAndDeleteForCryptoPP");		if (pGetNewAndDelete)		{			pGetNewAndDelete(s_pNew, s_pDelete);			return;		}		PSetNewAndDelete pSetNewAndDelete = (PSetNewAndDelete)GetProcAddress(hModule, "SetNewAndDeleteFromCryptoPP");		if (pSetNewAndDelete)		{			s_pNew = &New;			s_pDelete = &free;			pSetNewAndDelete(s_pNew, s_pDelete, &set_new_handler);			return;		}	}	// try getting these directly using mangled names of new and delete operators	hModule = GetModuleHandle("msvcrtd");	if (!hModule)		hModule = GetModuleHandle("msvcrt");	if (hModule)	{		// 32-bit versions		s_pNew = (PNew)GetProcAddress(hModule, "??2@YAPAXI@Z");		s_pDelete = (PDelete)GetProcAddress(hModule, "??3@YAXPAX@Z");		if (s_pNew && s_pDelete)			return;		// 64-bit versions		s_pNew = (PNew)GetProcAddress(hModule, "??2@YAPEAX_K@Z");		s_pDelete = (PDelete)GetProcAddress(hModule, "??3@YAXPEAX@Z");		if (s_pNew && s_pDelete)			return;	}	OutputDebugString("Crypto++ was not able to obtain new and delete function pointers.\n");	throw 0;}void * operator new (size_t size){	if (!s_pNew)		SetNewAndDeleteFunctionPointers();	return s_pNew(size);}void operator delete (void * p){	s_pDelete(p);}void * operator new [] (size_t size){	return operator new (size);}void operator delete [] (void * p){	operator delete (p);}#endif	// #ifdef CRYPTOPP_EXPORTS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -