

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Compatibilidade do AWS Encryption SDK para JavaScript
<a name="javascript-compatibility"></a>

O foi AWS Encryption SDK para JavaScript projetado para ser interoperável com outras implementações de linguagem do. AWS Encryption SDK[Na maioria dos casos, você pode criptografar dados com o AWS Encryption SDK para JavaScript e descriptografá-los com qualquer outra implementação de linguagem, incluindo a AWS Encryption SDK interface de linha de comando.](crypto-cli.md) E você pode usar o AWS Encryption SDK para JavaScript para descriptografar [mensagens criptografadas](concepts.md#message) produzidas por outras implementações de linguagem do. AWS Encryption SDK

No entanto, ao usar o AWS Encryption SDK para JavaScript, você precisa estar ciente de alguns problemas de compatibilidade na implementação da JavaScript linguagem e nos navegadores da Web.

Além disso, ao usar implementações de linguagem diferentes, configure provedores de chaves mestras, chaves mestras e tokens de autenticação compatíveis. Para obter detalhes, consulte [Compatibilidade dos tokens de autenticação](choose-keyring.md#keyring-compatibility).

## AWS Encryption SDK para JavaScript compatibilidade
<a name="javascript-language-compatibility"></a>

A JavaScript implementação do AWS Encryption SDK difere das implementações de outras linguagens das seguintes maneiras:
+ A operação de criptografia do AWS Encryption SDK para JavaScript não retorna texto cifrado sem moldura. No entanto, o AWS Encryption SDK para JavaScript decifrará o texto cifrado emoldurado e não emoldurado retornado por outras implementações de linguagem do. AWS Encryption SDK
+ Começando com o Node.js versão 12.9.0, o Node.js é compatível com as seguintes opções de empacotamento de chave RSA:
  + OAEP com SHA1, SHA256, ou SHA384 SHA512
  + OAEP com e com SHA1 MGF1 SHA1
  + PKCS1v15
+ Antes da versão 12.9.0, o Node.js era compatível apenas com as seguintes opções de empacotamento de chave RSA:
  + OAEP com e com SHA1 MGF1 SHA1
  + PKCS1v15

## Compatibilidade do navegador
<a name="javascript-browser-compatibility"></a>

Alguns navegadores da Web não são compatíveis com operações de criptografia básicas exigidas pelo AWS Encryption SDK para JavaScript . Você pode compensar algumas das operações ausentes configurando um substituto para a WebCrypto API que o navegador implementa.

**Limitações de navegador da Web**

As seguintes limitações são comuns a todos os navegadores da Web:
+ A WebCrypto API não oferece suporte ao encapsulamento de PKCS1v15 chaves.
+ Os navegadores não são compatíveis com chaves de 192 bits.

**Operações de criptografia necessárias**

 AWS Encryption SDK para JavaScript Isso requer as seguintes operações em navegadores da web. Se um navegador não for compatível com estas operações, ele será incompatível com o AWS Encryption SDK para JavaScript.
+ O navegador deve incluir `crypto.getRandomValues()`, que é um método para gerar valores de criptografia aleatórios. Para obter informações sobre as versões do navegador da Web compatíveis`crypto.getRandomValues()`, consulte [Posso usar criptografia. getRandomValues()?](https://caniuse.com/#feat=getrandomvalues) .

**Fallback necessário**

O AWS Encryption SDK para JavaScript requer as seguintes bibliotecas e operações em navegadores da web. Se você oferecer suporte a um navegador da Web que não atenda a esses requisitos, deverá configurar um fallback. Caso contrário, as tentativas de usar o AWS Encryption SDK para JavaScript com o navegador falharão.
+ A WebCrypto API, que executa operações criptográficas básicas em aplicativos da web, não está disponível para todos os navegadores. Para obter informações sobre as versões do navegador da Web compatíveis com a criptografia da Web, consulte [Posso usar criptografia da Web?](https://caniuse.com/#feat=cryptography).
+ As versões modernas do navegador Safari não oferecem suporte à criptografia AES-GCM de zero bytes, o que é necessário. AWS Encryption SDK Se o navegador implementa a WebCrypto API, mas não consegue usar o AES-GCM para criptografar zero bytes, ele AWS Encryption SDK para JavaScript usa a biblioteca de fallback somente para criptografia de zero bytes. Ele usa a WebCrypto API para todas as outras operações.

Para configurar um fallback para qualquer limitação, adicione as seguintes instruções ao seu código. Na função [configureFallback](https://github.com/aws/aws-encryption-sdk-javascript/blob/master/modules/web-crypto-backend/src/backend-factory.ts#L78) especifique uma biblioteca que seja compatível com os recursos ausentes. O exemplo a seguir usa a Microsoft Research JavaScript Cryptography Library (`msrcrypto`), mas você pode substituí-la por uma biblioteca compatível. Para obter um exemplo completo, consulte [fallback.ts](https://github.com/aws/aws-encryption-sdk-javascript/blob/master/modules/example-browser/src/fallback.ts).

```
import { configureFallback } from '@aws-crypto/client-browser'
configureFallback(msrCrypto)
```