Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da .NET 10, le primitive crittografiche supportate da OpenSSL non sono più supportate in macOS. System.Security.Cryptography.AesCcm e classi specifiche di OpenSSL, ad esempio System.Security.Cryptography.RSAOpenSsl, ora generano un'eccezione PlatformNotSupportedException su macOS.
Versione introdotta
.NET 10
Comportamento precedente
In precedenza, le classi specifiche di OpenSSL, ad esempio System.Security.Cryptography.RSAOpenSsl, funzionavano in macOS se OpenSSL era disponibile.
System.Security.Cryptography.AesCcm ha lavorato su macOS se OpenSSL era disponibile.
Nuovo comportamento
A partire da .NET 10, le classi specifiche di OpenSSL, ad esempio RSAOpenSsl, non funzionano in macOS anche se OpenSSL è disponibile e viene generata un'eccezione PlatformNotSupportedException .
AesCcm genera un'eccezione PlatformNotSupportedException .
Tipo di cambiamento che interrompe la compatibilità
Si tratta di una modifica comportamentale .
Motivo della modifica
Il supporto per le primitive supportate da OpenSSL ha origine da .NET Core 1.0, in cui la crittografia in macOS È stata implementata con OpenSSL. Questo non era l'ideale perché una versione recente di OpenSSL non è disponibile in macOS e l'acquisizione e la configurazione di OpenSSL in macOS era problematico. Nell'intervallo di tempo di .NET Core 2.0, la crittografia è stata spostata nella funzionalità predefinita di Apple, quindi la funzionalità di crittografia "funzionava" senza dover acquisire componenti aggiuntivi.
I tipi che hanno il suffisso OpenSsl sono lasciati come implementati da OpenSSL e AesCcm non hanno un'implementazione nelle librerie di crittografia di Apple.
Il supporto di queste primitive basate su OpenSSL in macOS è diventato più difficile perché Apple ha reso più difficile caricare librerie da determinati percorsi e complica la distribuzione del software in macOS.
Azione consigliata
Se si usano primitive basate su OpenSSL senza alcuna intenzione specifica di usare OpenSSL, è consigliabile usare le factory che forniscono un'implementazione macOS:
-
new DSAOpenSsl(...)->DSA.Create(...) -
new ECDiffieHellmanOpenSsl(...)->ECDiffieHellman.Create(...) -
new ECDsaOpenSsl(...)->ECDsa.Create(...) -
new RSAOpenSsl(...)->RSA.Create(...)
System.Security.Cryptography.AesCcm non ha un equivalente funzionale in macOS. Prendere in considerazione l'uso di una primitiva crittografica diversa, ad esempio System.Security.Cryptography.AesGcm, .
Le API interessate
- System.Security.Cryptography.AesCcm (tutti i costruttori)
- System.Security.Cryptography.DSAOpenSsl (tutti i costruttori)
- System.Security.Cryptography.ECDiffieHellmanOpenSsl (tutti i costruttori)
- System.Security.Cryptography.ECDsaOpenSsl (tutti i costruttori)
- System.Security.Cryptography.RSAOpenSsl (tutti i costruttori)
- System.Security.Cryptography.SafeEvpPKeyHandle (intera classe)