

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# の互換性 AWS Encryption SDK for JavaScript
<a name="javascript-compatibility"></a>

 AWS Encryption SDK for JavaScript は、 の他の言語実装と相互運用できるように設計されています AWS Encryption SDK。ほとんどの場合、 でデータを暗号化 AWS Encryption SDK for JavaScript し、 [AWS Encryption SDK コマンドラインインターフェイス](crypto-cli.md)を含む他の言語実装で復号できます。また、 を使用して AWS Encryption SDK for JavaScript 、 の他の言語実装によって生成された[暗号化されたメッセージを](concepts.md#message)復号できます AWS Encryption SDK。

ただし、 を使用する場合は AWS Encryption SDK for JavaScript、JavaScript 言語の実装とウェブブラウザにおけるいくつかの互換性の問題に注意する必要があります。

また、他の言語の実装を使用する場合は、必ず互換性のあるマスターキープロバイダー、マスターキー、キーリングを設定してください。詳細については、「[キーリングの互換性](choose-keyring.md#keyring-compatibility)」を参照してください。

## AWS Encryption SDK for JavaScript 互換性
<a name="javascript-language-compatibility"></a>

の JavaScript 実装は、次の点で他の言語実装 AWS Encryption SDK とは異なります。
+ の暗号化オペレーション AWS Encryption SDK for JavaScript は、フレーム化されていない暗号文を返しません。ただし、 AWS Encryption SDK for JavaScript は、 の他の言語実装によって返されるフレーム暗号文と非フレーム暗号文を復号します AWS Encryption SDK。
+ Node.js のバージョン 12.9.0 以降で、以下の RSA キーのラッピングオプションをサポートしています。
  + OAEP と SHA1、SHA256、SHA384、SHA512
  + OAEP と SHA1 および MGF1 と SHA1
  + PKCS1v15
+ バージョン 12.9.0 より前の Node.js では、以下の RSA キーのラッピングオプションのみをサポートしています。
  + OAEP と SHA1 および MGF1 と SHA1
  + PKCS1v15

## ブラウザの互換性
<a name="javascript-browser-compatibility"></a>

ウェブブラウザによっては、 AWS Encryption SDK for JavaScript が必要とする基本的な暗号化オペレーションがサポートされていません。ブラウザが実装している WebCrypto API のフォールバックを設定することで、不足しているオペレーションの一部を補うことができます。

**ウェブブラウザの制限事項**

以下の制限は、すべてのウェブブラウザに共通です。
+ WebCrypto API では、PKCS1v15 のキーのラッピングはサポートされていません。
+ ブラウザでは、192 ビットキーはサポートされていません。

**必要な暗号化オペレーション**

では、ウェブブラウザで以下のオペレーション AWS Encryption SDK for JavaScript が必要です。ブラウザでこれらのオペレーションがサポートされていない場合は、 AWS Encryption SDK for JavaScriptとの互換性がありません。
+ ブラウザには、暗号化の乱数を生成するメソッドである `crypto.getRandomValues()` が含まれている必要があります。`crypto.getRandomValues()` をサポートしているウェブブラウザのバージョンについては、「[Can I Use crypto.getRandomValues()?](https://caniuse.com/#feat=getrandomvalues)」を参照してください。

**必要なフォールバック**

には、ウェブブラウザで次のライブラリとオペレーション AWS Encryption SDK for JavaScript が必要です。これらの要件を満たしていないウェブブラウザをサポートする場合は、フォールバックを設定する必要があります。そうしないと、ブラウザ AWS Encryption SDK for JavaScript で を使用しようとすると失敗します。
+ ウェブアプリケーションで基本的な暗号化オペレーションを行う WebCrypto API は、すべてのブラウザで使用できるわけではありません。ウェブでの暗号化をサポートしているウェブブラウザのバージョンについては、「[Can I Use Web Cryptography?](https://caniuse.com/#feat=cryptography)」を参照してください。
+ Safari ウェブブラウザの最新バージョンは、 が AWS Encryption SDK 必要とする 0 バイトの AES-GCM 暗号化をサポートしていません。ブラウザが WebCrypto API を実装しているが、AES-GCM を使用してゼロバイトを暗号化できない場合、 はゼロバイト暗号化にのみフォールバックライブラリ AWS Encryption SDK for JavaScript を使用します。他のすべてのオペレーションには、WebCrypto API を使用します。

いずれかの制限のフォールバックを設定するには、コードに次のステートメントを追加します。[configureFallback](https://github.com/aws/aws-encryption-sdk-javascript/blob/master/modules/web-crypto-backend/src/backend-factory.ts#L78) 関数に不足している機能をサポートするライブラリを指定します。この例では、マイクロソフトリサーチの JavaScript 暗号化ライブラリ (`msrcrypto`) を使用していますが、互換性のあるライブラリに置き換えることができます。詳しい例については、[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)
```