前面通过一系列文章,讲述了如使用CryptoAPI解析证书的基本项,现在我们来看看如何获取证书的扩展项。
目前CA中心颁发的证书,都有一些扩展项属性,用来限定证书的用途、提供颁发者信息、以及CRL的下载地址等等。在下图中,红色区域内的属性都为证书的扩展属性。
在CryptoAPI中,提供了获取这些扩展属性的方法。今天,我们先看看如何获取证书扩展属性中的“基本约束”属性。具体可以通过以下步骤来实现:
1、调用函数CertFindExtension()找到扩展对象
该函数的定义如下:
PCERT_EXTENSION WINAPI CertFindExtension(
_In_ LPCSTR pszObjId,
_In_ DWORD cExtensions,
_In_ CERT_EXTENSION rgExtensions[]
);
其中:
第一个参数pszObjId为对象的ID,要获取“基本约束”扩展对象需要指定为szOID_BASIC_CONSTRAINTS2;
第二个参数是指扩展属性数组的成员个数,由证书信息结构体中的cExtension成员指定;
第三个参数为扩展属性数组,由证书信息结构体中的rgExte