2016-07-01 3 views
1

ECDH 키 쌍을 생성하고 공개 키를 가져 왔습니다. nodejs와 암호화 라이브러리 사용.WebCDrypto와 함께 사용하기 위해 Crypto ECDH 공개 키를 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

직접 대답은 없지만 노드에 webcrypto 인터페이스를 제공하는 https://github.com/PeculiarVentures/node-webcrypto-ossl을보고 싶을 수 있습니다. 직접 사용하고 싶지 않으면 JWK 처리에서 질문에 대한 답을 찾을 수 있습니다.

+0

고마워요. @rmhrisk, 라이브러리는 jwk의 키를 구문 분석하지 않습니다. https://github.com/PeculiarVentures/node-webcrypto-ossl/blob/master/lib/subtle.ts#L424. 나는 또한 원시 형식을 사용하려고 시도했지만'DOMException'이라는 말을 들었습니다 :'알고리즘을 지원하지 않는 가져 오기 키 형식' –

+0

어떤 브라우저를 사용하고 있습니까? 사파리에 importKey 문제가 있습니다. – rmhrisk

+0

크롬과 카나리아를 사용하고 있습니다. 문제가 아닌 것 같습니다. –

1

아마도 key-encoder-library이 도움이 될 수 있습니다. PEM으로 내보내고 작동하는지 확인하십시오. node-webcrypto-ossl-lib를 사용하여 키를 작성하십시오. 'jwk'형식은 개발자의 실질적인 도움입니다. 다음과 같이 내 보낸 키를 쉽게 복제 할 수 있습니다.

cloneK = JSON.parse(JSON.stringify(exportedKey))