Comparing bouncycastle x509 with x509certificate2

本文关键字:x509certificate2 with x509 bouncycastle Comparing | 更新日期: 2023-09-27 18:05:37

我的用例:我收到来自不同交易对手的电子邮件,它们总是签名的。在我们开始沟通之前,我已经收到了他们的证书,所以我的证书是正确的。

我需要用他们发送签名电子邮件给我时使用的证书来验证他们最初发给我的证书。

我看过stackoverflow和其他论坛,他们似乎都建议拇指纹或"GetEncoded"(这与DEREncoded相同?!)

然而,我没有找到任何"官方来源"表明这是正确的。

所以我需要的是一些官方来源,说明X509Certificate2。GetRawCertData或Org.BouncyCastle.X509。x509证书是唯一的,因此可以比较以检查是否有正确的证书。

我说的官方来源是指书籍、标准、微软网站等。

这是我用来验证Org.BouncyCastle.X509的代码。x509certificates . x509certificate2:

Org.BouncyCastle.X509.X509Certificate signerCertificate = ((SecureMimeDigitalCertificate)signature.SignerCertificate).Certificate;
System.Security.Cryptography.X509Certificates.X509Certificate2 localCertificate = new X509Certificate2(@"xxx.crt");
bool areEqual =
    StructuralComparisons.StructuralEqualityComparer.Equals(signerCertificate.GetEncoded(),
                                                            localCertificate.GetRawCertData());

你能帮我找到这样的来源或指给我正确的方向吗?

Comparing bouncycastle x509 with x509certificate2

比较证书的确切用例是什么?

接收签名电子邮件时的正常用例是希望验证签名以确保消息的真实性。这不是通过将收到的证书与存储的证书进行比较来完成的。您应该做的是验证数字签名,验证它们链接到(由您)信任的根的证书。如果事先有发送方证书,当然可以认为这是可信的,只需使用存储的证书来验证收到的消息的签名。在这种情况下,您可以忽略签名电子邮件中的证书。

您所做的就是通过使用您信任的公钥(在证书中)验证数字签名来验证用于签名消息的私钥实际上属于您认为它属于的人。