Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir do .NET 10, primitivos criptográficos suportados por OpenSSL não são mais suportados no macOS. System.Security.Cryptography.AesCcm e classes que são específicas para OpenSSL, como System.Security.Cryptography.RSAOpenSsl, agora lançam um PlatformNotSupportedException no macOS.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, as classes que são específicas do OpenSSL, como System.Security.Cryptography.RSAOpenSsl, funcionavam no macOS se o OpenSSL estivesse disponível.
System.Security.Cryptography.AesCcm funcionou no macOS se o OpenSSL estivesse disponível.
Novo comportamento
A partir do .NET 10, as classes específicas do OpenSSL, como RSAOpenSsl, não funcionam no macOS, mesmo que o OpenSSL esteja disponível, e uma PlatformNotSupportedException exceção é lançada.
AesCcm lança uma PlatformNotSupportedException exceção.
Tipo de mudança disruptiva
Trata-se de uma mudança de comportamento.
Motivo da mudança
O suporte para as primitivas suportadas por OpenSSL originou-se do .NET Core 1.0, onde a criptografia no macOS foi implementada com OpenSSL. Isso não era ideal porque uma versão recente do OpenSSL não vem no macOS, e adquirir e configurar o OpenSSL no macOS era problemático. No período de tempo do .NET Core 2.0, a criptografia foi movida para a funcionalidade integrada da Apple, de modo que a funcionalidade criptográfica "simplesmente funcionou" sem a necessidade de adquirir componentes adicionais.
Os tipos que são sufixados como OpenSsl foram deixados como sendo implementados pelo OpenSSL, e AesCcm não tem uma implementação nas bibliotecas criptográficas da Apple.
Suportar essas primitivas apoiadas por OpenSSL no macOS tornou-se mais difícil, pois a Apple tornou mais difícil carregar bibliotecas de certos caminhos e complica a distribuição de software no macOS.
Ação recomendada
Se você estiver usando primitivos apoiados por OpenSSL sem qualquer intenção específica de usar 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 uma primitiva criptográfica 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 (toda a turma)