Compartir a través de


Los parámetros clave X509Certificate y PublicKey pueden ser null

El comportamiento de X509Certificate y PublicKey ha cambiado. Cuando estos objetos contienen una clave sin parámetros de algoritmo, ahora devuelven null en lugar de una matriz vacía.

Versión introducida

.NET 10

Comportamiento anterior

Anteriormente, X509Certificate o PublicKey los objetos que contenían una clave sin parámetros de algoritmo devolvieron una matriz vacía al acceder a los parámetros del algoritmo de clave.

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

Nuevo comportamiento

A partir de .NET 10, X509Certificate o PublicKey los objetos que contienen una clave sin parámetros de algoritmo devuelven null al acceder a los parámetros del algoritmo de clave.

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

Tipo de cambio disruptivo

Se trata de un cambio de comportamiento y compatibilidad de origen .

Motivo del cambio

Las X509Certificateclases , X509Certificate2y PublicKey exponen información sobre la información de clave pública del sujeto. Una de las propiedades de la información de clave pública del sujeto son los parámetros del algoritmo. No es necesario que una información de clave pública del firmante contenga parámetros de algoritmo. Anteriormente, esto se representaba como una matriz de bytes vacía, que no es válida como ASN.1. Si se intenta codificar o descodificar, se producirá una excepción. Para representar más claramente los parámetros clave ausentes, null se devuelve ahora, y los miembros que devuelven parámetros de algoritmo se han anotado para devolver valores anulables.

Al acceder a un miembro que devuelve información sobre los parámetros del algoritmo de la información de clave pública de un sujeto, es posible que el miembro devuelva null y gestione el valor de null en consecuencia.

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

Las APIs afectadas