Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Action recommandée
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
- 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