問題タブ [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 - Web Crypto API: importKey が Firefox で機能しない
Google Chrome 46 および Firefox 41 ( JSBin )で importKey のこの例を試しました。
Chrome では動作しますが、Firefox では無効または不正な文字列が指定されましたというエラーが表示されます。無効または違法な文字列とその理由は?
javascript - WebCrypto で生成された ECDSA 公開鍵をインポートして検証操作を行う
OpenSSL を使用して C++ でECDSA公開鍵をインポートしようとしていますが (署名を検証するため)、 d2i_ECPKParametersは NULL を返します。
Web Cryptograph API で生成されたキー。spki形式でエクスポートされた公開鍵(キーをエクスポートするときの ASN.1 構造、および spki の DER エンコーディングについて W3 TR doc が説明しています)。
私は OpenSSL を初めて使用します。何が間違っていましたか?
輸入:
更新: 他のインポートを試してください (ただし、まだ機能しません):
書き出す:
更新 2:
(JS でエクスポートされたキーから) PEM キーを生成しましたが、基本的には PEM キーを使用しません。JavaScript で公開鍵をエクスポートした後、ArrayBuffer から新しい Uint8Array を作成し、それを WebSocket (バイナリ フレーム) 経由でサーバーに送信し、解析を試みます。受信した uint8_t 配列は常に 158 バイト長です。私は P-521 -- secp521r1 を使用しています。
pkcs8でエクスポートされた秘密鍵!
詳細:
o2i_ECPublicKey 呼び出し時のエラー コード:
(同じデータで呼び出しますが、エラーは毎回異なります。とにかく繰り返されます。)
更新 3:
C++ から、受信したデータ (キー) をファイルに書き出しました。
16 進数でエンコードされたエクスポートされた SPKI (WebCrypto エクスポートの結果):
プライベート:
公衆:
更新 4:
秘密鍵の jwk 形式:
javascript - UInt8 変換中に顔文字と дей のような文字が壊れる
... タイトルのようなフィールドを持つ JS オブジェクトを取得するという問題があります。
変換を処理するコードは次のようになります (そして、一般的なケースでは適切に機能します ...)
ただし、これらの状況では、次のような入力があります。 =K9 ¹j¶»¶ HH®¾¨Í¯®¾ÑêÕçã"
なぜこれが起こるのか分かりますか?ありがとうございました!
javascript - Web Crypto を使用して PKCS#7 からの RSA 署名を検証する
JavaScript を使用して PKCS#7 署名を検証しようとしています。PKCS#7 が Web Cryptography API でサポートされていないことは知っていますが、完全な PKCS#7 構造ではなく、未加工の RSA 署名のみを検証しようとしています。
PKCS#7 を解析し、証明書チェーンを検証し、署名されたデータを抽出し、forgeを使用して署名を検証することができました。Web Cryptography API を使用してこの署名を検証できない理由がわかりません。
次の例を検討してください。
forge を使用した検証は成功しますが、Web Cryptography API を使用した検証は失敗します。同じアルゴリズム仕様を使用しているため、これがどのようになるかわかりません。
OpenSSL を使用して、Web Cryptography API によって生成された署名を検証できます。OpenSSL を使用して 2 つの署名を調べると、わずかな違いがあります。
これが問題の原因でしょうか?その場合、外部署名を Web Cryptography API で使用されるエンコーディングに変換できますか?
encryption - WebCrypto を使用して、暗号化と署名の両方に役立つキー ペアを生成する
Chrome では、これは失敗します。
なぜこれが不可能なのですか?暗号化と署名の両方に使用できる鍵ペアを作成できないのはなぜですか? RSA キー自体には、この制限はありません。
javascript - 暗号化、復号化、署名、検証のための Webcrypto API/アルゴリズム
非対称暗号化を実現しようとしていて、安全でないトランスポート チャネル経由で文字列を送信しようとしています。RSA-OAEP アルゴリズムを使用してデータを暗号化しています。公開鍵を使用して文字列を暗号化しますが、受信側で、暗号化された文字列が (転送中に) 変更されていないことを確認したいと思います。
API を見ると、RSA-OAEP アルゴリズムで使用できる機能を検証する署名がないことがわかります。文字列にハッシュ (潜在的に SHA ベース) を追加し、受信側でこれを検証することを考えていました。これはセキュリティの観点からは適切ですか? 同じアルゴリズムを使用して暗号化、復号化、署名、検証機能を実行できる API (RSA を使用する) はありますか?