2016-07-01 3 views
1

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

答えて

1

私はあなたに直接答えはありませんが、ノードにWeb暗号化インターフェイスを提供するhttps://github.com/PeculiarVentures/node-webcrypto-osslを見てください。直接使用したくない場合は、JWKの取り扱いで質問に対する答えを見つけることができます。

+0

ありがとう@rmhriskが、ライブラリがjwkに鍵を解析しません。 https://github.com/PeculiarVentures/node-webcrypto-ossl/blob/master/lib/subtle.ts#L424私もRAW形式を使ってみましたが、 'DOMException'が返ってきました:'アルゴリズムのサポートされていないインポートキー形式 ' –

+0

あなたはどのブラウザですか? SafariにimportKeyに関する問題があります – rmhrisk

+0

私はChromeとCanaryを使用していますので、それは問題ではないと思います。 –

1

多分key-encoder-libraryが役立ちます。 PEMとしてエクスポートし、動作しているかどうかを確認してください。 node-webcrypto-ossl-libを使用して鍵を作成することを検討してください。 'jwk'形式はdevの間の本当の助けです。一つは、簡単にそうようにエクスポートし、キーのクローンを作成することができます

​​
関連する問題