`
love19820823
  • 浏览: 934099 次
文章分类
社区版块
存档分类
最新评论

一段 CryptAPI 取得 证书序列号 的代码

 
阅读更多

CryptAPI 取得 证书序列号 的操作

cheungmine

通过Win32 CryptAPI查找个人证书库(MY)中的指定的证书的序列号。显示之。证书的序列号经过处理,和IE中显示的一样(只是人为地去掉了空格)。

==========================

如下代码调用:

------------------------------------------------------------------------------------------------------------

HCERTSTORE hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,
PKCS_7_ASN_ENCODING|X509_ASN_ENCODING,
0,
CERT_SYSTEM_STORE_CURRENT_USER,
L"MY");
if (hStore==NULL){
throw"Fail to open my cert store";

}

// 要查找的证书
char szBuf[512];
szBuf[511]=0;

BOOL bRet;
DWORD cbSize;

PCCERT_CONTEXT hCert = 0;

charSerialNumber[48];// 必须是48

while((hCert=CertEnumCertificatesInStore(hStore, hCert)) != NULL){
// 发行者名称

cbSize = CertGetNameString(hCert,

CERT_NAME_SIMPLE_DISPLAY_TYPE,

CERT_NAME_ISSUER_FLAG,

0,

szBuf,

128);

// 取出序列号
if (!parseX509CertSerialNumber(hCert, SerialNumber)){
bRet = CertCloseStore(hStore, 0);
throw "Fail to get serial number";
}

// SerialNumber存放了你想要的序列号,如:

// ‎"df48a548cef576bb4ae7a726b6938424"

// 做你喜欢的事

......

}

// 关掉这个家伙

bRet = CertCloseStore(hStore, 0);

------------------------------------------------------------------------------------------------------------

补充:很讨厌这套API。真的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics