Compartilhar via


APIs System.Security.Cryptography não possuem suporte no Blazor WebAssembly

As APIs System.Security.Cryptography geram um PlatformNotSupportedException em tempo de execução quando executadas em um navegador.

Descrição das alterações

Nas versões anteriores do .NET, a maioria das APIs System.Security.Cryptography não estava disponível para aplicativos Blazor WebAssembly. A partir do .NET 5, os aplicativos Blazor WebAssembly têm como destino a área de superfície completa da API do .NET 5. No entanto, nem todas as APIs do .NET 5 têm suporte devido a restrições de área restrita do navegador. No .NET 5 e versões posteriores, as APIs System.Security.Cryptography sem suporte geram um PlatformNotSupportedException quando são executadas no WebAssembly.

Dica

O analisador de compatibilidade da plataforma sinalizará todas as chamadas para as APIs afetadas ao criar um projeto que dê suporte à plataforma do navegador. Esse analisador é executado por padrão em aplicativos .NET 5 e posteriores.

Motivo da alteração

A Microsoft não consegue enviar o OpenSSL como uma dependência na configuração do Blazor WebAssembly. Tentamos contornar isso tentando nos integrar à API SubtleCrypto do navegador. Infelizmente, isso exigiu mudanças significativas na API que dificultaram a integração.

Versão introduzida

5,0

Não há boas soluções alternativas para sugerir no momento.

APIs afetadas

Todas as APIs System.Security.Cryptography, exceto as seguintes:

  • System.Security.Cryptography.RandomNumberGenerator
  • System.Security.Cryptography.IncrementalHash
  • System.Security.Cryptography.SHA1
  • System.Security.Cryptography.SHA256
  • System.Security.Cryptography.SHA384
  • System.Security.Cryptography.SHA512
  • System.Security.Cryptography.SHA1Managed
  • System.Security.Cryptography.SHA256Managed
  • System.Security.Cryptography.SHA384Managed
  • System.Security.Cryptography.SHA512Managed