Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do .NET 10, primitivos criptográficos com suporte do OpenSSL não têm mais suporte no macOS. System.Security.Cryptography.AesCcm e classes específicas do OpenSSL, como System.Security.Cryptography.RSAOpenSsl, lançam agora um PlatformNotSupportedException no macOS.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, classes específicas do OpenSSL, como System.Security.Cryptography.RSAOpenSsl, funcionavam no macOS se o OpenSSL estava disponível.
System.Security.Cryptography.AesCcm funcionou no macOS desde que o OpenSSL estivesse disponível.
Novo comportamento
A partir do .NET 10, classes específicas do OpenSSL, como RSAOpenSsl, não funcionam no macOS mesmo que o OpenSSL esteja disponível e uma PlatformNotSupportedException exceção seja gerada.
AesCcm gera uma PlatformNotSupportedException exceção.
Tipo de mudança disruptiva
Essa é uma mudança comportamental.
Motivo da alteração
O suporte para os primitivos com suporte openSSL originou-se do .NET Core 1.0, onde a criptografia no macOS foi implementada com o OpenSSL. Isso não foi ideal porque uma versão recente do OpenSSL não vem no macOS, e adquirir e configurar o OpenSSL no macOS foi problemático. No período do .NET Core 2.0, a criptografia foi movida para a funcionalidade interna da Apple, portanto, a funcionalidade criptográfica "simplesmente funcionou" sem a necessidade de adquirir nenhum componente adicional.
Os tipos que são sufixados como OpenSsl foram mantidos como sendo implementados pelo OpenSSL, e AesCcm não tem uma implementação nas bibliotecas criptográficas da Apple.
O suporte a esses primitivos com suporte do OpenSSL no macOS tornou-se mais difícil, pois a Apple tornou mais difícil carregar bibliotecas de determinados caminhos e complica a distribuição de software no macOS.
Ação recomendada
Se você estiver usando primitivos com suporte do OpenSSL sem qualquer intenção específica de usar o OpenSSL, a recomendação é usar as fábricas que fornecem uma implementação do macOS:
-
new DSAOpenSsl(...)->DSA.Create(...) -
new ECDiffieHellmanOpenSsl(...)->ECDiffieHellman.Create(...) -
new ECDsaOpenSsl(...)->ECDsa.Create(...) -
new RSAOpenSsl(...)->RSA.Create(...)
System.Security.Cryptography.AesCcm não tem equivalente funcional no macOS. Considere usar um primitivo criptográfico diferente, como System.Security.Cryptography.AesGcm, em vez disso.
APIs afetadas
- System.Security.Cryptography.AesCcm (todos os construtores)
- System.Security.Cryptography.DSAOpenSsl (todos os construtores)
- System.Security.Cryptography.ECDiffieHellmanOpenSsl (todos os construtores)
- System.Security.Cryptography.ECDsaOpenSsl (todos os construtores)
- System.Security.Cryptography.RSAOpenSsl (todos os construtores)
- System.Security.Cryptography.SafeEvpPKeyHandle (classe inteira)