Partager via


Les paramètres de clé X509Certificate et PublicKey peuvent être null

Le comportement de X509Certificate et PublicKey a changé. Lorsque ces objets contiennent une clé sans paramètres d’algorithme, ils retournent null désormais au lieu d’un tableau vide.

Version introduite

.NET 10

Comportement précédent

Auparavant, X509Certificate ou PublicKey les objets qui contenaient une clé sans paramètres d’algorithme renvoyaient un tableau vide lors de l’accès aux paramètres de l’algorithme de clé.

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

Nouveau comportement

À partir de .NET 10, les objets X509Certificate ou PublicKey qui contiennent une clé sans paramètres d'algorithme renvoient null lorsqu'on accède aux paramètres d'algorithme de la clé.

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

Type de changement cassant

Il s’agit à la fois d’une modification de compatibilité comportementale et source .

Raison de la modification

Les classes X509Certificate, X509Certificate2 et PublicKey exposent des informations sur les Informations sur la clé publique de l'objet. L’une des propriétés des informations de clé publique de l’objet est les paramètres de l’algorithme. Les informations de clé publique de l’objet ne sont pas requises pour contenir des paramètres d’algorithme. Auparavant, il s’agissait d’un tableau d’octets vide, qui n’est pas valide ASN.1. Une tentative d’encodage ou de décodage entraîne une exception. Pour représenter plus clairement les paramètres clés absents, null est maintenant retourné et les membres qui retournent des paramètres d’algorithme ont été annotés pour retourner des valeurs nullables.

Lorsque vous accédez à un membre qui renvoie des informations sur les paramètres de l'algorithme d'une info clé publique, attendez-vous à ce que le membre renvoie éventuellement null et traitez la valeur null en conséquence.

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

API affectées