Параметры ключа X509Certificate и PublicKey могут иметь значение NULL

Поведение 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