Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Acción recomendada
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
- 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