X509AsymmetricSecurityKey

X509AsymmetricSecurityKey

您可以使用X509AsymmetricSecurityKey(X509Certificate2)构造函数从X509AsymmetricSecurityKey实例构造X509Certificate2。但是可以从安全密钥获取X509Certificate2实例吗?

作为一个并行示例,InMemorySymmetricSecurityKey类公开了一个GetSymmetricKey()方法,该方法可用于检索对称密钥。

我曾希望看到X509AsymmetricSecurityKey类公开的等效方法,例如GetCertificate(),但我看到的最接近的方法是GetAsymmetricAlgorithm(字符串算法,布尔型privateKey)。

我真正想要的是能够验证使用证书的私钥签名的消息的数字签名的能力,这意味着使用证书的公钥来验证签名。

有没有一种使用安全密钥的非对称算法来验证签名的方法?

最佳答案

当从X509Certificate2构造X509AsymmetricSecurityKey时,证书实例引用实际上位于密钥实例上名为certificate的私有属性内。

您自己的答案可以满足您的特定用例,但不能满足您的问题,对您问题的真正答案是:


  没有直接的方法,但是您可以通过反射来实现。


X509AsymmetricSecurityKey x509Key = ...

X509Certificate2 cert = typeof(X509AsymmetricSecurityKey).GetField("certificate", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(x509Key) as X509Certificate2;

关于c# - 如何检索用于构造X509AsymmetricSecurityKey的X.509证书?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12756957/

10-11 17:24