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.
Począwszy od platformy .NET 10, kryptograficzne elementy pierwotne oparte na systemie OpenSSL nie są już obsługiwane w systemie macOS. System.Security.Cryptography.AesCcm i klasy specyficzne dla protokołu OpenSSL, takie jak System.Security.Cryptography.RSAOpenSsl, teraz zgłaszają element PlatformNotSupportedException w systemie macOS.
Wersja wprowadzona
.NET 10
Poprzednie zachowanie
Wcześniej klasy specyficzne dla protokołu OpenSSL, takie jak System.Security.Cryptography.RSAOpenSsl, działały w systemie macOS, jeśli biblioteka OpenSSL była dostępna.
System.Security.Cryptography.AesCcm działał w systemie macOS, jeśli biblioteka OpenSSL była dostępna.
Nowe zachowanie
Od wersji .NET 10, klasy specyficzne dla OpenSSL, takie jak RSAOpenSsl, nie działają w systemie macOS, nawet jeśli OpenSSL jest dostępny, i wyrzucany jest wyjątek PlatformNotSupportedException.
AesCcm zgłasza wyjątek PlatformNotSupportedException .
Typ zmiany przełamującej
Jest to zmiana zachowania.
Przyczyna zmiany
Obsługa elementów pierwotnych opartych na technologii OpenSSL pochodzi z platformy .NET Core 1.0, gdzie kryptografia w systemie macOS została zaimplementowana za pomocą biblioteki OpenSSL. Nie było to idealne rozwiązanie, ponieważ najnowsza wersja biblioteki OpenSSL nie jest dostępna w systemie macOS, a uzyskiwanie i konfigurowanie biblioteki OpenSSL w systemie macOS było kłopotliwe. W przedziale czasowym platformy .NET Core 2.0 kryptografia została przeniesiona do wbudowanych funkcji firmy Apple, więc funkcje kryptograficzne "po prostu zadziałały" bez konieczności uzyskiwania dodatkowych składników.
Typy z sufiksami OpenSsl zostały zaimplementowane przez OpenSSL, a AesCcm nie mają implementacji w bibliotekach kryptograficznych Apple.
Obsługa tych prymitywów wspieranych przez OpenSSL w systemie macOS stała się trudniejsza, ponieważ firma Apple utrudniła ładowanie bibliotek z niektórych ścieżek, co skomplikowało dystrybucję oprogramowania w systemie macOS.
Zalecana akcja
Jeśli używasz prymitywów kryptograficznych opartych na OpenSSL bez konkretnego zamiaru korzystania z OpenSSL, zaleca się użycie fabryk, które oferują implementację kompatybilną z macOS.
-
new DSAOpenSsl(...)—>DSA.Create(...) -
new ECDiffieHellmanOpenSsl(...)—>ECDiffieHellman.Create(...) -
new ECDsaOpenSsl(...)—>ECDsa.Create(...) -
new RSAOpenSsl(...)—>RSA.Create(...)
System.Security.Cryptography.AesCcm nie ma odpowiednika funkcjonalnego w systemie macOS. Rozważ użycie innego kryptograficznego elementu pierwotnego, takiego jak System.Security.Cryptography.AesGcm, zamiast tego.
Interfejsy API, których dotyczy problem
- System.Security.Cryptography.AesCcm (wszystkie konstruktory)
- System.Security.Cryptography.DSAOpenSsl (wszystkie konstruktory)
- System.Security.Cryptography.ECDiffieHellmanOpenSsl (wszystkie konstruktory)
- System.Security.Cryptography.ECDsaOpenSsl (wszystkie konstruktory)
- System.Security.Cryptography.RSAOpenSsl (wszystkie konstruktory)
- System.Security.Cryptography.SafeEvpPKeyHandle (cała klasa)