ECDH鍵ペアを生成し、そこから公開鍵を取得しました。 nodejsと暗号ライブラリを使用する。暗号化ECDH公開鍵をWebCryptoで使用するためにJWKフォーマットに解析する
const ecdh = crypto.createECDH('secp384r1');
ecdh.generateKeys();
const publicKey = ecdh.getPublicKey('hex');
私は、この公開鍵、ECDHアルゴリズムとWebCryptoからSubtleCryptoインタフェースを使用してデータを暗号化するために、クライアント側ライブラリを実装しています。
これを実現するには公開鍵(nodejs暗号で生成)をインポートする必要があります.WebCrypto importKey methodにはいくつかの書式オプションがありますが、それ以外のものでも動作させることができます。私はjwk
が他のものより多く使用されていることに気づいた。
jwk
の例は、どのように私はjwk
オブジェクトに私の公開鍵を解析することができます
{
kty: "EC",
crv: "P-256",
x: "kgR_PqO07L8sZOBbw6rvv7O_f7clqDeiE3WnMkb5EoI",
y: "djI-XqCqSyO9GFk_QT_stROMCAROIvU8KOORBgQUemE",
d: "5aPFSt0UFVXYGu-ZKyC9FQIUOAMmnjzdIwkxCMe3Iok",
ext: true,
}
です。私の公開鍵は次のようになります: 04f8b2a6e9d2ffa424c3e7b6addf23112153920fd0209390da460f99e03bf8665052e72df4a0b7927381f1b026c98a3a2b348fdd10969875e6b0e86cb1f093a5fc07e49fbbbf091922ce71af17f4a79de03f6069836a7143b137be34451f162235
ありがとう@rmhriskが、ライブラリがjwkに鍵を解析しません。 https://github.com/PeculiarVentures/node-webcrypto-ossl/blob/master/lib/subtle.ts#L424私もRAW形式を使ってみましたが、 'DOMException'が返ってきました:'アルゴリズムのサポートされていないインポートキー形式 ' –
あなたはどのブラウザですか? SafariにimportKeyに関する問題があります – rmhrisk
私はChromeとCanaryを使用していますので、それは問題ではないと思います。 –