?? 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 + -