Udostępnij za pośrednictwem


SafeEvpPKeyHandle.DuplicateHandle up-refs uchwytu

Oprócz pracy w celu włączenia obsługi dostawców openSSL wprowadzono SafeEvpPKeyHandle.DuplicateHandle() zmianę metody, która ma wpływ na ECDsaOpenSsl konstruktory i RSAOpenSsl , które przyjmują SafeEvpPKeyHandleelement . Zewnętrzne modyfikacje przekazanego dojścia mają teraz również wpływ na uchwyt przechowywany w wystąpieniach tych klas.

Poprzednie zachowanie

DuplicateHandle() utworzono nowe EVP_PKEY wystąpienie. Modyfikacje zduplikowanego klucza (czyli za pośrednictwem wywołań bezpośrednich interfejsów API OpenSSL) nie miały wpływu na oryginalny klucz. SafeEvpPKeyHandle.DuplicateHandle została wywołana przez konstruktory ECDsaOpenSsl klasy i RSAOpenSsl przyjmuje element SafeEvpPKeyHandle.

Nowe zachowanie

DuplicateHandle() Zwiększa liczbę odwołań istniejących EVP_PKEY i zwraca uchwyt do tego samego klucza. Oznacza to, że wywołania zewnętrzne interfejsów API biblioteki OpenSSL, które modyfikują EVP_PKEY teraz również wpływają na wystąpienia zduplikowanego SafeEvpPKeyHandleelementu . Te interfejsy API obejmują ECDsaOpenSsl wystąpienia utworzone RSAOpenSsl na podstawie takich dojść.

Wprowadzona wersja

.NET 9 (wersja zapoznawcza 7)

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu włączenia obsługi dostawców openSSL. Jako efekt uboczny istnieją również pewne ulepszenia wydajności.

Unikaj modyfikacji przekazywanych EVP_PKEY do interfejsów API platformy .NET. Jeśli nie możesz uniknąć modyfikacji elementu EVP_PKEY, utwórz kopię EVP_PKEY siebie (czyli skopiuj parametry do nowego EVP_PKEY wystąpienia).

Dotyczy interfejsów API

Dotyczy to również każdego interfejsu RSA API, który akceptuje wystąpienie pochodzące z usługi SafeEvpPKeyHandle lubECDsa.