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