Condividi tramite


I parametri di chiave X509Certificate e PublicKey possono essere Null

Il comportamento di X509Certificate e PublicKey è cambiato. Quando questi oggetti contengono una chiave senza parametri di algoritmo, ora restituiscono null anziché una matrice vuota.

Versione introdotta

.NET 10

Comportamento precedente

In precedenza, X509Certificate o PublicKey gli oggetti che contengono una chiave senza parametri di algoritmo restituivano una matrice vuota durante l'accesso ai parametri dell'algoritmo di chiave.

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

Nuovo comportamento

A partire da .NET 10 X509Certificate o PublicKey oggetti che contengono una chiave senza parametri di algoritmo restituisce null quando si accede ai parametri dell'algoritmo della chiave.

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

Tipo di modifica che causa un'interruzione

Si tratta sia di un comportamentaleche di compatibilità dell'origine modifica.

Motivo della modifica

Le classi X509Certificate, X509Certificate2e PublicKey espongono informazioni sulle chiavi pubbliche del soggetto . Una delle proprietà del Subject Public Key Info è i parametri per l'algoritmo. Non è necessario che le Informazioni sulla chiave pubblica del soggetto contengano i parametri dell'algoritmo. In precedenza, questo è stato rappresentato come una matrice di byte vuota, che non è valida ASN.1. Il tentativo di codificare o decodificarlo genera un'eccezione. Per rappresentare in modo più chiaro i parametri chiave assenti, null viene ora restituito e i membri che restituiscono parametri dell'algoritmo sono stati annotati per restituire valori annullabili.

Quando si accede a un membro che restituisce informazioni sui parametri dell'algoritmo delle informazioni sulla chiave pubblica dell'oggetto, si prevede che il membro restituisca null e gestisca di conseguenza il valore null.

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

API interessate