gpt4 book ai didi

c# - 如何判断证书是否有私钥

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:14 24 4
gpt4 key购买 nike

我有一个装满证书的 keystore 。另一个人告诉我证书有一个私钥,但是当我检查我的代码时,我从来没有看到任何私钥。所有这些 key 都用于 vs6 和 cryptapi,我使用的是 c#。

我创建了自己的证书并使用此处的方法确保它具有私钥 http://www.source-code.biz/snippets/vbasic/3.htm

当我将它导入同一个 keystore 然后运行我的代码时,证书显示它确实有一个私钥, keystore 中的所有其他证书都没有(根据我的代码)。

是否有一些标志或我需要设置的东西以便能够在这个 keystore 的证书中使用私钥?

public void testForPrivateKey(string keystorename)
{
X509Store teststore = new X509Store(keystorename);

teststore.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in teststore.Certificates)
{
if(cert.HasPrivateKey)
{
System.Diagnostics.Debug.WriteLine("Private key found certificate name: {0}", cert.Subject);
}

}
store.Close();

}

最佳答案

我遇到了同样的问题,但在调查后解决了:如果证书有私钥,它也有属性 CERT_KEY_SPEC_PROP_ID。

DWORD  keySpec;
DWORD len = 4;
BOOL ret = CertGetCertificateContextProperty(pCertContext, CERT_KEY_SPEC_PROP_ID, &keySpec, &len);
if ( !ret ){
//has no private key
}

关于c# - 如何判断证书是否有私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com