X509Certificate 和 PublicKey 的行为已发生变化。 当这些对象包含没有算法参数的键时,它们现在返回 null 而不是空数组。
已引入的版本
.NET 10
以前的行为
以前, X509Certificate 或 PublicKey 包含不带算法参数的键的对象在访问密钥算法参数时返回空数组。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters would be an empty array if no algorithm parameters were present
新行为
从 .NET 10 开始,当访问密钥算法参数时,X509Certificate 或 PublicKey 对象包含没有算法参数的键将返回 null。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters will be null if no algorithm parameters are present
破坏性变更的类型
更改原因
X509Certificate、X509Certificate2和PublicKey类公开有关主题公钥信息的信息。
使用者公钥信息的属性之一是算法的参数。
使用者公钥信息 不需要包含算法参数。 以前,这表示为空字节数组,而这在ASN.1中是无效的。 尝试对它进行编码或解码将导致异常。 为了更清楚地表示缺少的键参数, null 现在返回,返回算法参数的成员已被批注以返回可为 null 的值。
建议的措施
访问返回主题公钥信息算法参数信息的成员时,预期该成员可能会返回 null 并相应地处理 null 该值。
byte[] parameters = certificate.GetKeyAlgorithmParameters();
if (parameters == null)
{
// Handle the absence of algorithm parameters
}
受影响的 API
- System.Security.Cryptography.X509Certificates.X509Certificate.GetKeyAlgorithmParameters()
- System.Security.Cryptography.X509Certificates.X509Certificate.GetKeyAlgorithmParametersString()
- System.Security.Cryptography.X509Certificates.PublicKey.PublicKey(Oid, AsnEncodedData, AsnEncodedData)
- System.Security.Cryptography.X509Certificates.PublicKey.EncodedParameters