我已经连接到MS PKI证书撤销列表分发点并获得了CRL
在不使用第三方库中提取序列号列表的最直接方法是什么?
您将必须使用未管理的加密函数(当然是通过p/indoke)来展开CRL。通常,您必须逐步进行以下高级高级:
- certCreateCrlContext-此功能将返回指针到crl_context结构。
- 使用
Marshal.PtrToStructure
.NET方法将CRL_CONTEXT
结构的pCrlInfo
指针转换为CRL_INFO
结构。 -
rgCRLEntry
是指针的数组(数组大小由cCRLEntry
的CC_6成员确定)。 - 通过通过
CRL_ENTRY
结构的大小来启动指针来迭代该数组。 -
CRL_ENTRY
的SerialNumber
成员是一个字节数组。您可以直接使用Marshal.Copy(IntPtr, Byte[], Int32, Int32)
方法将非托管数组复制为托管。这将为您提供序列号。重复每个CRL条目的步骤4-5。
不要忘记通过调用CERTFREECRLCONTEXT函数来释放指向CRL_CONTEXT
结构的指针,以防止内存泄漏。