Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Från och med .NET 10 stöds inte längre OpenSSL-understödda kryptografiska primiter på macOS. System.Security.Cryptography.AesCcm och klasser som är specifika för OpenSSL, till exempel System.Security.Cryptography.RSAOpenSsl, kastar nu en PlatformNotSupportedException på macOS.
Version lanserad
.NET 10
Tidigare beteende
Tidigare arbetade klasser som är specifika för OpenSSL, till exempel System.Security.Cryptography.RSAOpenSsl, på macOS om OpenSSL var tillgängligt.
System.Security.Cryptography.AesCcm fungerade på macOS om OpenSSL var tillgängligt.
Nytt beteende
Från och med .NET 10 fungerar klasser som är specifika för OpenSSL, till exempel RSAOpenSsl, inte på macOS även om OpenSSL är tillgängligt och ett PlatformNotSupportedException undantag genereras.
AesCcm genererar ett PlatformNotSupportedException undantag.
Typ av brytande ändring
Det här är en beteendeförändring.
Orsak till ändring
Stöd för OpenSSL-stödda primitiver kommer från .NET Core 1.0, där kryptografi på macOS implementerades med OpenSSL. Detta var inte idealiskt eftersom en ny version av OpenSSL inte finns på macOS, och det var besvärligt att skaffa och konfigurera OpenSSL på macOS. Inom tidsramen för .NET Core 2.0 flyttades kryptografi till Apples inbyggda funktioner, så kryptografiska funktioner "fungerade bara" utan att behöva hämta några ytterligare komponenter.
De typer som har suffixet OpenSsl lämnades som implementerade av OpenSSL, och AesCcm har ingen implementering i Apples kryptografiska bibliotek.
Att stödja dessa OpenSSL-stödda primitiver på macOS har blivit svårare eftersom Apple har gjort det svårare att läsa in bibliotek från vissa vägar, och det komplicerar distributionen av programvara på macOS.
Rekommenderad åtgärd
Om du använder OpenSSL-backade primitiver utan någon specifik avsikt att använda OpenSSL är rekommendationen att använda de fabriker som tillhandahåller en macOS-implementering:
-
new DSAOpenSsl(...)->DSA.Create(...) -
new ECDiffieHellmanOpenSsl(...)->ECDiffieHellman.Create(...) -
new ECDsaOpenSsl(...)->ECDsa.Create(...) -
new RSAOpenSsl(...)->RSA.Create(...)
System.Security.Cryptography.AesCcm har ingen funktionell motsvarighet på macOS. Överväg att använda en annan kryptografisk primitiv, till exempel System.Security.Cryptography.AesGcm, i stället.
Berörda API:er
- System.Security.Cryptography.AesCcm (alla konstruktorer)
- System.Security.Cryptography.DSAOpenSsl (alla konstruktorer)
- System.Security.Cryptography.ECDiffieHellmanOpenSsl (alla konstruktorer)
- System.Security.Cryptography.ECDsaOpenSsl (alla konstruktorer)
- System.Security.Cryptography.RSAOpenSsl (alla konstruktorer)
- System.Security.Cryptography.SafeEvpPKeyHandle (hela klassen)