gpt4 book ai didi

c# - 如何在 C# 证书回调中查看 "Signature hash algorithm"?

转载 作者:行者123 更新时间:2023-12-03 17:49:13 24 4
gpt4 key购买 nike

我有一台使用以下证书进行 SSL/TLS 通信的服务器:

Cert viewer

在我的 C# 代码中,我使用自定义证书验证回调以编程方式查看此证书的属性,如下所示:

private static bool CertificateValidationCallBack(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// Certificate2 is better than Certificate1, right?
X509Certificate2 cert = (X509Certificate2)certificate;

Console.WriteLine("Certificate Subject : " + cert.Subject);
Console.WriteLine("Certificate Issuer : " + cert.Issuer);
// So on and so forth...
}

但是,我的问题是我似乎看不到“签名哈希算法”属性。 cert.SignatureAlgorithm.FriendlyName返回 RSASSA-PSS , 和
new System.Security.Cryptography.Oid(cert.GetKeyAlgorithm()).FriendlyName)
简单返回 RSA .这些属性似乎都没有给我在 GUI 中看到的“sha256”属性。我如何归还该属性(property)?

编辑:我找到了 this Cryptography.SE 上的相关问题解释了 Microsoft 的证书查看器 GUI 有点不稳定且不符合标准,但如果是这种情况,那么我也想变得不稳定。我想知道如何以与 GUI 相同的方式报告“sha256”。

08/13 更新:从另一个角度来看,当我使用命令时
certutil.exe -dump cert.cer

结果摘录:
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.10 RSASSA-PSS
Algorithm Parameters:
0000 30 34 a0 0f 30 0d 06 09 60 86 48 01 65 03 04 02
0010 01 05 00 a1 1c 30 1a 06 09 2a 86 48 86 f7 0d 01
0020 01 08 30 0d 06 09 60 86 48 01 65 03 04 02 01 05
0030 00 a2 03 02 01 20
2.16.840.1.101.3.4.2.1 sha256 (sha256NoSign)
05 00
1.2.840.113549.1.1.8 mgf1
2.16.840.1.101.3.4.2.1 sha256 (sha256NoSign)
05 00
0x20 (32)

我当然希望我知道如何为自己找到那些 OID(sha256 的)……而不用解析实际的 certutil 命令的输出。

最佳答案

从您的 DER 字节来看,这些是签名算法。

2a 86 48 86 f7 0d 01 01 08

我知道这些是签名算法。
但是,我不知道如何分析这些字节。

我认为最后一个字节表示哈希算法。
我用openssl测试,最后一个字节从0b->0c->0d改变,
当我使用 sha256、sha384、sha5512 生成证书时。
请让我知道,当你想通了。

关于c# - 如何在 C# 证书回调中查看 "Signature hash algorithm"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230179/

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