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

📄 certtools.h

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


/***************************************************************
* 函数名:			FindCertificate
* 功能:			用证书名查找证书.
* 输入/输出参数:	szCertName	in 证书名
*					szStore		in STORE名
*					dwFlags		in STORE标志
*					KeyId		out 密钥标识
*					hProv		out CSP句柄
*					dwKeyType	out 密钥类型
* 返回值:			正确返回指向证书上下文的指针,其他返回NULL。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
PCCERT_CONTEXT FindCertificate(LPSTR szCertName, LPSTR szStore,DWORD dwFlags, PCRYPT_DATA_BLOB *KeyId,HCRYPTPROV *hProv, LPDWORD dwKeyType);

/***************************************************************
* 函数名:			GetPubKeyFromP10
* 功能:			从PKCS#10内容中获取公钥信息.
* 输入/输出参数:	hHeap				in 堆指针
*					szP10				in PKCS#10内容
*					pvCertReqInfo		out 公钥信息
* 返回值:			正确返回0,其他返回NULL。
* 程序员:		徐锋			编程日期:2004/09/10
* 修改人员:					修改日期:
* 修改原因:
*****************************************************************/
int GetPubKeyFromP10(HANDLE hHeap,LPSTR szP10,CERT_REQUEST_INFO ** pvCertReqInfo);

//从指定的hCryptProv中获取公钥信息
int GetPublicKey (HCRYPTPROV hCryptProv, HANDLE hHeap,CERT_PUBLIC_KEY_INFO** keyinfo);

//从指定的hCryptProv中获取公钥的HASH信息
int GetPubKeyHash(HCRYPTPROV hCryptProv,HANDLE hHeap,CERT_PUBLIC_KEY_INFO* PublicKeyInfo,DWORD *pdwSize,BYTE** pbKeyIdentifier);

//将X509名字编码成Name BLOB结构
BOOL XFCertStrToName(HANDLE hHeap,DWORD dwCertEncodingType,
  LPCTSTR pszX500,
  DWORD dwStrType,
  void* pvReserved,
  BYTE** pbEncoded,
  DWORD* pcbEncoded,
  LPCTSTR* ppszError);

//ASN.1编码
BOOL XFCryptEncodeObject(
  HANDLE hHeap,
  DWORD dwCertEncodingType,
  LPCSTR lpszStructType,
  const void* pvStructInfo,
  BYTE** pbEncoded,
  DWORD* pcbEncoded
);


//写数据到文件
int WriteToFile(const void* pBuf,DWORD nLen,char *FileName);

//从文件读数据
int ReadFromFile(void* pBuf,DWORD nLen,char *FileName);

//base64 编码
void XFBase64encode(const unsigned char* input,size_t l,unsigned char * output, bool add_crlf);

//base64 解码
void XFBase64decode(const unsigned char * input, unsigned char *output, unsigned long& sz);


//从证书中获取公钥
BOOL GetRSAKeyFromCert(PCCERT_CONTEXT pCertContext,
                       BOOL fSign,
                       HCRYPTPROV *hProv,
                       HCRYPTKEY *hPubKey,
                       DWORD *dwKeySpec,
                       BOOL *fFreeProv);


//获取本机的格林威治时间
bool ReadTime(unsigned char *pTimeBuf,int nBufLen);

⌨️ 快捷键说明

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