問題タブ [webcrypto-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - WebCrypto AES で IV を送信する
AES-CBC を使用して、安全でないトランスポート境界を越えてメッセージを転送しようとしています。crypto.getRandomValues を使用して (送信側で) IV を生成しました。次に、crypto.subtle.encrypt を使用してメッセージを暗号化しています。メッセージの一部として、IV を追加して受信者に送信する予定です。IV を (AES-CBC を使用しながら) 暗号化せずに転送することは、セキュリティの観点から安全ですか?
javascript - 暗号化のために公開鍵を PEM 形式でロードする方法は?
これまでは、PEM 形式の文字列から公開鍵をロードできる JSEncrypt を使用していました。次に、文字列を暗号化するために RSA で使用します。例えば :
その後:
WebCrypto でも同じことをしたいのですが、やり方がわかりません。次の手順を試しました。
- PEM ヘッダーを削除する
- PEM フッターを削除する
- CR/LFを削除
- トリムストリング
- Base64 文字列をデコードする
- 結果を ArrayBuffer に変換します
次に、キーをインポートしようとしました:
私は多くの方法を試しました (ASN/DER 形式を展開するなど)。しかし、さまざまなエラー (DOMException データなど) が発生します。PEM 形式がサポートされている形式として受け入れられるかどうか、またはキーを JSON Web Key 形式などに変換する必要があるかどうかはわかりません。
サードパーティの JS ライブラリを使わずに簡単な方法はありますか?
javascript - Javascript WebCrypto API を使用して PKCS#12 デジタル証明書をロードする方法
WebCrypto API を使用してデータに署名しようとしていますが、秘密/公開キーを作成して pkcs#1 または 8 にエクスポートする代わりに、ユーザーの PKCS#12 を使用してデータに署名したいと考えています。私は W3C 仕様を読みましたが、それをあまり理解できず、これを行う方法に関する適切な資料が見つかりません。今のところ、ActiveX と Java アプレットは脇に置きたいと思います。以下を微調整する方法はありますか?
ポインタはありますか?
更新 これが私が取り組んできたコードです
javascript - ブラウザ化されたノード暗号モジュールの代わりに WebCryptoAPI を介してブラウザで ECDH キーを生成する
公開鍵/秘密鍵を作成するための非常に小さなノード スクリプトがあります。ホール暗号モジュールをブラウザ化することなく、クライアント側でそれを行う方法はありますか?
私はこれまでにこれを試しました:
しかし、ログに記録すると、ノードのバージョンのようには見えません
javascript - webcrypto API を使用して CMS 署名付きメッセージを検証できない
JavaScript webcrypto API を使用して、CMS 署名付きメッセージを検証したいと考えています。メッセージは、RFC 3161 によるタイムスタンプ応答の一部です。
そこで、署名、コンテンツ (encapContentInfo から)、および公開鍵を取得し、鍵をインポートして署名を検証する次の関数に渡します。
出力は次のとおりです。
ご覧のとおり、検証は失敗しますが、このタイムスタンプ サーバーは多くの人が使用しているため、署名は有効であると確信しています。
私の実装に問題はありますか?
Firefox 拡張機能内でこれを実行しようとしています。
編集: signedAttrs フィールドの DER 値を使用し、それをハッシュしてから、証明書で検証する必要があるようです。
javascript - Javascript RSA-OAEP が任意の入力長で機能しない
SubtleCrypto を使用して、javascript (firefox) で文字列を暗号化しようとしています。問題は、暗号化が短い入力に対してのみ機能することです。文字列 (testdata) が 190 文字を超えると、OperationError で失敗します。SubtleCrypto がそのように動作するのはなぜですか?どうすれば解決できますか?
コード:
javascript - 秘密鍵を使用して Web Cryptography API でデータを暗号化する方法
チュートリアルに従って、公開鍵を使用してデータを暗号化し、秘密鍵を使用してブラウザーでデータを復号化しました。
しかし、秘密鍵を使用してデータを暗号化しようとすると、Uncaught (in promise) DOMException: key.usages does not permit this operation
.
秘密鍵を使用して Web Cryptography API でデータを暗号化するには?
また、RSAキーペアを生成し、ブラウザでデータを暗号化および復号化できるjavascriptライブラリも探しています。いくつかの RSA JavaScript ライブラリを見つけましたが、それらはすべて open-ssl コマンドを使用して RSA キー ペアを生成する必要があります。