X509Certificate 和 PublicKey 密钥参数可以为 null

X509CertificatePublicKey 的行为已发生变化。 当这些对象包含没有算法参数的键时,它们现在返回 null 而不是空数组。

已引入的版本

.NET 10

以前的行为

以前, X509CertificatePublicKey 包含不带算法参数的键的对象在访问密钥算法参数时返回空数组。

byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters would be an empty array if no algorithm parameters were present

新行为

从 .NET 10 开始,当访问密钥算法参数时,X509CertificatePublicKey 对象包含没有算法参数的键将返回 null

byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters will be null if no algorithm parameters are present

破坏性变更的类型

这是关于行为源兼容性的变更。

更改原因

X509CertificateX509Certificate2PublicKey类公开有关主题公钥信息的信息。 使用者公钥信息的属性之一是算法的参数。 使用者公钥信息 不需要包含算法参数。 以前,这表示为空字节数组,而这在ASN.1中是无效的。 尝试对它进行编码或解码将导致异常。 为了更清楚地表示缺少的键参数, null 现在返回,返回算法参数的成员已被批注以返回可为 null 的值。

访问返回主题公钥信息算法参数信息的成员时,预期该成员可能会返回 null 并相应地处理 null 该值。

byte[] parameters = certificate.GetKeyAlgorithmParameters();
if (parameters == null)
{
    // Handle the absence of algorithm parameters
}

受影响的 API