Freigeben über


X509Certificate- und PublicKey-Schlüsselparameter können null sein

Das Verhalten von X509Certificate und PublicKey hat sich geändert. Wenn diese Objekte einen Schlüssel ohne Algorithmusparameter enthalten, geben sie jetzt null anstelle eines leeren Arrays zurück.

Eingeführt in Version

.NET 10

Vorheriges Verhalten

Zuvor haben Objekte X509Certificate oder PublicKey, die einen Schlüssel ohne Algorithmusparameter enthielten, beim Zugriff auf die Schlüsselalgorithmusparameter ein leeres Array zurückgegeben.

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

Neues Verhalten

Ab .NET 10 geben X509Certificate oder PublicKey Objekte, die einen Schlüssel ohne Algorithmusparameter enthalten, null zurück, wenn auf die Schlüsselalgorithmusparameter zugegriffen wird.

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

Art der einschneidenden Änderung

Dies ist sowohl eine Änderung des Verhaltens als auch der Quellkompatibilität.

Grund für Änderung

Die Klassen X509Certificate, X509Certificate2 und PublicKey stellen die Informationen zum öffentlichen Schlüssel des Antragstellers zur Verfügung. Eine der Eigenschaften der Subject Public Key Info ist die Parameter für den Algorithmus. Die Informationen zum öffentlichen Schlüssel des Antragstellers sind nicht erforderlich, um Algorithmusparameter zu enthalten. Zuvor wurde dies als leeres Bytearray dargestellt, das ungültig ist ASN.1. Wenn Sie versuchen, sie zu codieren oder zu decodieren, würde dies zu einer Ausnahme führen. Um fehlende Schlüsselparameter deutlicher darzustellen, wird null jetzt zurückgegeben, und die Elemente, die Algorithmusparameter zurückgeben, wurden kommentiert, um nullwerte zurückzugeben.

Wenn Sie auf ein Element zugreifen, das Algorithmusparameter der Informationen zum öffentlichen Schlüssel eines Antragsteller zurückgibt, gibt das Element voraussichtlich null zurück. Behandeln Sie den null-Wert dann entsprechend.

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

Betroffene APIs