在Mac OS X上访问钥匙串的私钥

问题描述

我正在C#上实现Windows / Mac OS X的应用程序,该应用程序使用证书对文件进行数字签名。为此,我使用的是BouncyCastle和iText库。在Windows上完美运行,无需任何特殊代码。我可以使用此代码读取计算机上存储的证书。

X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 certificate in store.Certificates)
{
    if (certificate.HasPrivateKey && certificate.NotAfter >= DateTime.Now)
    {
        // USE CERTIFICATE
    }
}

我面临的问题是对存储在钥匙串中的证书的访问。因为我可以获取证书的信息,但不能获取其私钥。我想应该有一种访问该信息的方法(在用户确认允许访问之后),但是我看不到如何。 我当前用于获取证书信息的实现是:

var query = new SecRecord(SecKind.Certificate)
{
    MatchValidOnDate = DatetimetoNSDate(DateTime.Now),CanSign = true,};

var certList = Security.SecKeyChain.QueryAsRecord(query,100,out var result);
foreach(var cert in certLis)
{
    SecCertificate tempCertificate = new SecCertificate(cert);
    X509Certificate2 certificateObj = tempCertificate.ToX509Certificate2();
}

certificateObj是有效的X509证书,但其privateKey为空。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)