Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zachowanie X509Certificate i PublicKey uległo zmianie. Gdy te obiekty zawierają klucz bez parametrów algorytmu, zwracają teraz null zamiast pustej tablicy.
Wersja wprowadzona
.NET 10
Poprzednie zachowanie
Wcześniej obiekty X509Certificate lub PublicKey, które zawierały klucz bez parametrów algorytmu, zwracały pustą tablicę podczas dostępu do parametrów algorytmu klucza.
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters would be an empty array if no algorithm parameters were present
Nowe zachowanie
Począwszy od platformy .NET 10, obiekty X509Certificate lub PublicKey zawierające klucz bez parametrów algorytmu zwracają null w wyniku próby uzyskania dostępu do parametrów algorytmu klucza.
byte[] parameters = certificate.GetKeyAlgorithmParameters();
// parameters will be null if no algorithm parameters are present
Typ zmiany powodującej naruszenie zgodności
Jest to zarówno zmiana behawioralna, jak i zmiana zgodności źródłowej.
Przyczyna zmiany
Klasy X509Certificate, X509Certificate2i PublicKey ujawniają informacje o Informacjach o przedmiocie klucza publicznego. Jedną z właściwości Informacji o kluczu publicznym podmiotu są parametry algorytmu.
Informacje o kluczu publicznym podmiotu nie są wymagane do zawierania parametrów algorytmu. Wcześniej była ona reprezentowana jako pusta tablica bajtów, która nie jest prawidłowa jako ASN.1. Próba zakodowania lub dekodowania spowodowałoby wyjątek. Aby wyraźniej reprezentować nieobecne kluczowe parametry, null jest teraz zwracany, a elementy członkowskie zwracające parametry algorytmu zostały oznaczone do zwracania wartości nullable.
Zalecana akcja
Podczas uzyskiwania dostępu do elementu, który zwraca informacje o parametrach algorytmu klucza publicznego podmiotu, można się spodziewać, że element może zwrócić null i odpowiednio obsłużyć wartość null.
byte[] parameters = certificate.GetKeyAlgorithmParameters();
if (parameters == null)
{
// Handle the absence of algorithm parameters
}
Interfejsy API, których dotyczy problem
- 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