枚举证书和 CAPI读取证书总结

本文介绍如何使用 CAPI 函数枚举系统证书存储区中的 X509 证书,并提供了示例代码。通过调用 CertOpenSystemStore 和 CertEnumCertificatesInStore 函数,可以遍历并获取证书上下文。

枚举证书

以下几点介绍下面的示例代码的关键部分。

  • 调用以获取句柄 CertOpenSystemStore 函数

uint hCertStore = Crypt32.CertOpenSystemStore(0, "My");

用户的个人证书存储区。

  • 调用 CertEnumCertificatesInStore 函数,以获取证书上下文指针到

while (0 != (pCertContext = Crypt32.CertEnumCertificatesInStore(hCertStore, (uint)pCertContext)))

证书。

  • 从创建 x509 证书 对象

X509Certificate x509 = new X509Certificate((IntPtr)pCertContext);

证书上下文指针。

  • 调用 CertDuplicateCertificateContext 函数以增加引用计数在证书上下文指针,以便您可以稍后使用该值

CertDuplicateCertificateContext((IntPtr)pCertContext);

您可以使用下面的代码来枚举证书。

若要汇总该代码,您枚举 "my" 证书存储区中的证书、 填充 ListView 控件与每个的证书的主题和颁发者名称,然后附加到 ListView 的每个项的 Tag 属性的证书上下文的指针

private void button1_Click(object sender, System.EventArgs e)

{

listView1.Items.Clear();

uint hCertStore = Crypt32.CertOpenSystemStore(0, "My");

if (hCertStore == 0)

{

MessageBox.Show("CertOpenSystemStore failed: " + Marshal.GetLastWin32Error().ToString());

return;

}

uint pCertContext = Crypt32.CertEnumCertificatesInStore(hCertStore, (uint)0);

while (pCertContext != 0)

{

X509Certificate x509 = new X509Certificate((IntPtr)pCertContext);

ListViewItem NewItem = listView1.Items.Add(x509.GetName());

NewItem.SubItems.Add(x509.GetIssuerName());

 

// Increment the reference count so that you can use this value later.

 

NewItem.Tag = Crypt32.CertDuplicateCertificateContext(pCertContext);

pCertContext = Crypt32.CertEnumCertificatesInStore(hCertStore, pCertContext);

}

}

 

◆CAPI读取证书总结

系统证书库中存在的证书按下面的方法打开
1.CryptAcquireContext获取HCRYPTPROV
2.CertOpenStore得到证书库句柄HCERTSTORE
3.CertFindCertificateInStore得到PCCERT_CONTEXT
如果X509格式的文件证书
1.首先读入文件二进制byte
2.CertCreateCertificateContext获取PCCERT_CONTEXT

http://chinaitpower.com/A200507/2005-07-27/175806.html

内容概要:本文档聚焦于“基于粒子群算法(PSO)的路径规划问题研究”,结合Matlab代码实现,系统阐述了PSO算法在路径规划中的应用原理与实践方法。文档不仅提供了详细的算法实现流程,还拓展介绍了智能优化算法、机器学习、信号处理、电力系统、无人机路径规划等多个前沿科研方向的技术服务内容,涵盖多种复杂优化问题的建模范例与仿真案例。特别强调在科研过程中“借力”的重要性,提倡借助成熟算法与仿真工具推动创新研究。文档附有多个网盘链接,便于读者获取完整的代码、模型及复现资料,支持对高水平论文(如博士/硕士论文、EI/SCI期刊)的算法复现与技术延伸。; 适合人群:具备一定Matlab编程基础,从事自动化、电气工程、控制科学、计算机、通信工程、机械电子等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入学习粒子群算法在路径规划中的建模与实现过程;②掌握多种智能优化算法(如GWO、PSO、DWA等)与机器学习模型在复杂工程问题中的集成应用;③复现高水平学术论文中的算法模型,提升科研创新能力与仿真实践水平。; 阅读建议:建议按照文档结构顺序系统阅读,优先关注与自身研究方向紧密相关的技术模块,结合提供的Matlab代码与Simulink仿真模型进行动手实践,充分利用网盘资源开展算法调试、模型优化与论文复现工作,以实现从理论到应用的有效转化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值