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

📄 certcreate.h

📁 用于处理证书请求,生成证书的CA服务器源码,
💻 H
字号:
#include <stdio.h>
#include <windows.h>


/***************************************************************
* 函数名:		CACreateCertificate
* 功能:		生成根证书并导出相关文件。
* 输入/输出参数:	szCertFile		in 根证书导出到该证书文件
*				szKeyFile		in 签名公私钥保存文件
*				szXCHGKeyFile	in 交换公私钥保存文件
*				szXCHGPubFile	in 交换公钥保存文件
*				szPassword		in 密钥文件口令
* 返回值:		正确返回0,其他返回负数。
* 程序员:		徐锋		编程日期:2004/09/10
* 修改人员:				修改日期:
* 修改原因:
*****************************************************************/
int CACreateCertificate(
		LPSTR szCertFile,	//根证书导出到该证书文件
        LPSTR szKeyFile,	//签名公私钥保存文件
		LPSTR szXCHGKeyFile,	//交换公私钥保存文件
		LPSTR szXCHGPubFile,	//交换公钥保存文件
        LPSTR szPassword);	//密钥文件口令



/***************************************************************
* 函数名:		SignP10
* 功能:		签发PKCS#10证书。
* 输入/输出参数:	szUserSubject	主题名
*				szP10			in BASE64编码的pkcs10字符串
*				dwSerialNum		in 系列号
*				dwValid			in 有效期(现在开始的月数)
*				pbCert			in 证书,二进制方式
*				cbSize			in/out pbCert缓冲区长度/证书长度
* 返回值:		正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int SignP10(LPSTR szUserSubject,	//in 主题名
			 LPSTR szP10,		//in  BASE64编码的pkcs10字符串
			 DWORD dwSerialNum, //in 系列号
			 DWORD dwValid,		//in 有效期(现在开始的月数)
			 BYTE* pbCert,		//out 证书,二进制方式
			 DWORD *cbSize);	//in-out pbCert缓冲区长度/证书长度



/***************************************************************
* 函数名:		GenP7
* 功能:		将用户证书和根证书编码成PKCS#7格式。
* 输入/输出参数:	pbCert			in 用户证书
*				cbSize			in 用户证书长度
*				pbData			in base64编码后的p7内容
*				cbData			in/out pbData缓冲区长度
* 返回值:		正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int GenP7(BYTE* pbCert,	//in 用户证书
		   DWORD cbSize,	//in 用户证书长度
		   BYTE* pbData,	//out base64编码后的p7内容
		   DWORD* cbData);	//in/out pbData缓冲区长度/返回长度


//生成根证书的p7格式
/***************************************************************
* 函数名:		GenCAP7
* 功能:		将根证书编码成PKCS#7格式,并保存到当前目录的CAcert.p7b文件中
* 输入/输出参数:无
* 返回值:		正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int GenCAP7();



//解密用户密码的密文
/***************************************************************
* 函数名:			DecryptPwd
* 功能:			解密用户密码的密文(CA的交换公钥加密).
* 输入/输出参数:	szPWD	in,out 用户密码的密文(base64编码)/明文(base64编码)
*					szSign	in 数据长度
*					nBufLen	in 缓冲区长度
* 返回值:		正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int DecryptPwd(char *szPWD,	//in,out 用户密码的密文/明文(base64编码)
			   int *nDataLen,//in,out 数据长度
			   int  nBufLen);//in缓冲区长度	



/***************************************************************
* 函数名:			VerifySign
* 功能:			验证用户的签名.
* 输入/输出参数:	pUserCert	in 用户证书,base64编码
*					szSign		in 签名值
*					szRandom	in 随机数
* 返回值:		验证签名正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int VerifySign(unsigned char * pUserCert, //in 用户证书,base64编码
			   LPSTR szSign,//in 签名值
			   LPSTR szRandom); //in 随机数




//生成PKCS10文件
/***************************************************************
* 函数名:			CreatePKCS10
* 功能:			生成PKCS10文件.
* 输入/输出参数:	szX509Name	in X509名字
*					pkcs10str	out PKCS10字符串,以BASE64编码
*					pkcs10len	in/out pkcs10str缓冲区长度/返回字符串长度
* 返回值:			正确返回0,其他返回负数。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int CreatePKCS10(char* szX509Name, //X509名字
				  char* pkcs10str,  //PKCS10字符串,以BASE64编码
				  DWORD* pkcs10len);//in-pkcs10str缓冲区长度,out-返回字符串长度



//安装pkcs7证书
/***************************************************************
* 函数名:			InstallCert
* 功能:			安装pkcs7证书.
* 输入/输出参数:	pPKS7	in	base64编码后的pkcs7证书,安装在CERT_STORE_PROV_SYSTEM,
*								CERT_SYSTEM_STORE_CURRENT_USER,SIGNCERTNAME为STORE名
* 返回值:			正确返回0,其他返回负数。
* 程序员:			徐锋			编程日期:2004/09/10
* 修改人员:						修改日期:
* 修改原因:
*****************************************************************/
int InstallCert (BYTE* pPKS7); //base64编码后的pkcs7证书,安装在CERT_STORE_PROV_SYSTEM,,CERT_SYSTEM_STORE_CURRENT_USER
								//SIGNCERTNAME为STORE名


/***************************************************************
* 函数名:			GenSignCert
* 功能:			生成、签署、安装签名控件证书.其中包含CreatePKCS10,SignP10,InstallCert三个函数
* 输入/输出参数:	无
* 返回值:			正确返回0,其他返回负数。
* 程序员:			徐锋			编程日期:2004/09/10
* 修改人员:						修改日期:
* 修改原因:
*****************************************************************/
int GenSignCert();


/***************************************************************
* 函数名:			RestoreKey
* 功能:			恢复CA密钥对
* 输入/输出参数:	KEYBIN	in 密钥对BLOB数据
*					pKeyPwd in 保护密钥对的密码
*					nKeyFlag in 密钥类型(1--签名密钥,2--交换密钥)
* 返回值:			正确返回0,其他返回负数。
* 程序员:			徐锋			编程日期:2004/10/10
* 修改人员:						修改日期:
* 修改原因:
*****************************************************************/
int RestoreKey(BYTE* KEYBIN,int nKeyLen,char *pKeyPwd,int nKeyFlag);


/***************************************************************
* 函数名:			RestoreKey
* 功能:			恢复CA证书到szIssuerStore
* 输入/输出参数:	CERTBIN	in CA证书BLOB数据
* 返回值:			正确返回0,其他返回负数。
* 程序员:			徐锋			编程日期:2004/10/10
* 修改人员:						修改日期:
* 修改原因:
*****************************************************************/
int RestoreCert(BYTE* CERTBIN,int nKeyLen);

⌨️ 快捷键说明

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