📄 certcreate.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 + -