Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab .NET 10 werden openSSL-gesicherte kryptografische Grundtypen unter macOS nicht mehr unterstützt. System.Security.Cryptography.AesCcm und Klassen, die spezifisch für OpenSSL sind, wie z. B. System.Security.Cryptography.RSAOpenSsl, lösen unter macOS jetzt ein PlatformNotSupportedException aus.
Eingeführt in Version
.NET 10
Vorheriges Verhalten
Zuvor haben Klassen, die für OpenSSL spezifisch sind, z System.Security.Cryptography.RSAOpenSsl. B. auf macOS gearbeitet, wenn OpenSSL verfügbar war.
System.Security.Cryptography.AesCcm funktionierte unter macOS, wenn OpenSSL verfügbar war.
Neues Verhalten
Ab .NET 10 funktionieren Klassen, die spezifisch für OpenSSL sind, wie RSAOpenSsl, unter macOS nicht, auch wenn OpenSSL verfügbar ist, und es wird eine PlatformNotSupportedException-Ausnahme ausgelöst.
AesCcm löst eine PlatformNotSupportedException Ausnahme aus.
Art der einschneidenden Änderung
Dies ist eine Verhaltensänderung.
Grund für Änderung
Die Unterstützung für die openSSL-unterstützten Grundtypen stammt aus .NET Core 1.0, wobei Kryptografie unter macOS mit OpenSSL implementiert wurde. Dies war nicht ideal, da eine aktuelle Version von OpenSSL nicht auf macOS verfügbar ist, und das Abrufen und Konfigurieren von OpenSSL unter macOS war problematisch. Im Zeitraum von .NET Core 2.0 wurde die Kryptografie in die integrierten Funktionen von Apple verlagert, sodass kryptografische Funktionen "einfach funktionierten", ohne dass zusätzliche Komponenten erworben werden mussten.
Die Typen, die mit OpenSsl als Suffix versehen sind, wurden von OpenSSL implementiert, während AesCcm keine Implementierung in den Kryptografiebibliotheken von Apple hat.
Die Unterstützung dieser openSSL-gesicherten Grundtypen auf macOS ist schwieriger geworden, da Apple das Laden von Bibliotheken aus bestimmten Pfaden erschwert hat und die Verteilung von Software auf macOS erschwert.
Empfohlene Aktion
Wenn Sie OpenSSL-gestützte Primitive verwenden, ohne die Absicht zu haben, OpenSSL zu nutzen, empfehlen wir Ihnen, die Factories zu verwenden, die eine macOS-Implementierung bieten:
-
new DSAOpenSsl(...)->DSA.Create(...) -
new ECDiffieHellmanOpenSsl(...)->ECDiffieHellman.Create(...) -
new ECDsaOpenSsl(...)->ECDsa.Create(...) -
new RSAOpenSsl(...)->RSA.Create(...)
System.Security.Cryptography.AesCcm hat keine funktionale Entsprechung unter macOS. Erwägen Sie stattdessen die Verwendung eines anderen kryptografischen Grundtyps, wie System.Security.Cryptography.AesGcm.
Betroffene APIs
- System.Security.Cryptography.AesCcm (alle Konstruktoren)
- System.Security.Cryptography.DSAOpenSsl (alle Konstruktoren)
- System.Security.Cryptography.ECDiffieHellmanOpenSsl (alle Konstruktoren)
- System.Security.Cryptography.ECDsaOpenSsl (alle Konstruktoren)
- System.Security.Cryptography.RSAOpenSsl (alle Konstruktoren)
- System.Security.Cryptography.SafeEvpPKeyHandle (gesamte Klasse)