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

📄 certlib.cpp

📁 实现证书的生成和验证
💻 CPP
字号:
#include "stdafx.h"
#include "CertLib.h"

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	if (ul_reason_for_call == DLL_PROCESS_ATTACH)
  	{
		apps_startup ();
	} 
	else if (ul_reason_for_call == DLL_PROCESS_DETACH)
	{
		apps_shutdown ();
	} 
	return TRUE;
}

int PASCAL Initialize_Dll ( unsigned char * pszXML, int nLen,
					CError::LPERRORHANDLE pErrHandle,
					CCertMng::LPGENERATEKEY pGenKeyHandle,
					CCertMng::LPPASSWORD_CALLBACK pPassword,
					CCertMng::LPGET_DN_VALUE pGetDnValue,
					CCertMng::LPVERIFY_CALLBACK pVerify,
					void * lpVoid )
{
	int ret = -1;

	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, ( char *)pszXML, nLen, NULL ) == 0 )
	{
		if ( 0 == CCertMng::Interface ()->Initialize ( mapOpts, pGenKeyHandle,
			pPassword, pGetDnValue, pVerify, lpVoid ) )
		{
			CError::Interface()->Initialize ( pErrHandle, lpVoid );
			ret = 0;
		}
	}
		
	return ret;
}

int PASCAL GenerateKey ( xmlChar * pszXML, int nLen, xmlChar ** ppXML, int * pnLen )
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
	{
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	}
	else
		ret = CCertMng::Interface () ->Generate_Key ( mapOpts, ppXML, pnLen );
	return ret;
}

int PASCAL GenerateReq ( unsigned char * pszXML, int nLen, xmlChar ** ppXML, int * pnLen)
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
	{
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	}
	else
		ret = CCertMng::Interface () ->Generate_Req ( mapOpts, ppXML, pnLen );
	return ret;
}

int PASCAL CA_Sign ( unsigned char * pszXML, int nLen,
					xmlChar ** ppszXML, int * pnLen )
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
	{
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	}
	else
		ret = CCertMng::Interface () ->Sign_Cert ( mapOpts, ppszXML, pnLen );
	return ret;
}

int PASCAL Encript_Fingermark (unsigned char * pszXML, int nLen, xmlChar ** ppszXML, int * pnLen )
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	else
	{
		CBrief brief;
		ret = brief.Encript_brief (mapOpts, ppszXML, pnLen );
	}
	return ret;
}
int PASCAL Decript_Fingermark(unsigned char * pszXML, int nLen,
							  xmlChar **ppszXML, int *pnLen )
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	else
	{
		CBrief brief;
		ret = brief.Decript_brief(mapOpts, ppszXML, pnLen );
	}
	return ret;
}
int PASCAL Verify_Brief(const char * src, const char * dest )
{
	CBrief brief;
	return brief.Verify_brief (src, dest);
}

int PASCAL Verify_Cert(unsigned char * pszXML, int nLen)
{
	int ret = -1;
	conv_tool::OPERATORS_MAP mapOpts;
	if ( conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen ) < 0 )
		CError::Interface ()->Handle_Error ( 0, "XML转换失败" );
	else
		ret = CCertMng::Interface()->Verify_Cert(mapOpts);
	return ret;
}
//检查证书和密钥的匹配情况,0,不匹配,1匹配
int PASCAL IsMatchCert(unsigned char * pszXML, int nLen)
{
	conv_tool::OPERATORS_MAP mapOpts;
	conv_tool::XML2Map ( mapOpts, (char*)pszXML, nLen );
	return CCertMng::Interface()->IsMatch(mapOpts);
}
int PASCAL Uninitialize_Dll ()
{
	CCertMng::Interface ()->Uninitialize ();
	CCertMng::Free_Interface();
	CError::Free_Interface();
	return 0;
}

⌨️ 快捷键说明

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