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.
Zalecana akcja
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
- System.Security.Cryptography.SafeEvpPKeyHandle.DuplicateHandle()
- ECDsaOpenSsl(SafeEvpPKeyHandle)
- RSAOpenSsl(SafeEvpPKeyHandle)
Dotyczy to również każdego interfejsu RSA API, który akceptuje wystąpienie pochodzące z usługi SafeEvpPKeyHandle lubECDsa.