2016-07-01 4 views
1

Я создал пару ключей ECDH и получаю от него открытый ключ. Использование nodejs и крипто библиотеки.Parsing crypto Открытый ключ ECDH в формате JWK для использования с WebCrypto

const ecdh = crypto.createECDH('secp384r1'); 
ecdh.generateKeys(); 
const publicKey = ecdh.getPublicKey('hex'); 

Я реализует на стороне клиента библиотеки для шифрования данных с помощью этого открытого ключа, алгоритм ECDH и интерфейс SubtleCrypto от WebCrypto.

Чтобы выполнить это, мне нужно импортировать открытый ключ (сгенерированный с помощью шифрования nodejs), для WebCrypto importKey method есть некоторые варианты форматирования, но я могу заставить его работать с ними. Я заметил, что jwk больше используется, чем другие.

Примером jwk является

{ 
    kty: "EC", 
    crv: "P-256", 
    x: "kgR_PqO07L8sZOBbw6rvv7O_f7clqDeiE3WnMkb5EoI", 
    y: "djI-XqCqSyO9GFk_QT_stROMCAROIvU8KOORBgQUemE", 
    d: "5aPFSt0UFVXYGu-ZKyC9FQIUOAMmnjzdIwkxCMe3Iok", 
    ext: true, 
} 

Так как я могу разобрать мой открытый ключ в jwk объекта. Мой открытый ключ выглядит следующим образом: 04f8b2a6e9d2ffa424c3e7b6addf23112153920fd0209390da460f99e03bf8665052e72df4a0b7927381f1b026c98a3a2b348fdd10969875e6b0e86cb1f093a5fc07e49fbbbf091922ce71af17f4a79de03f6069836a7143b137be34451f162235

ответ

1

У меня нет прямого ответа для вас, но вы можете посмотреть на https://github.com/PeculiarVentures/node-webcrypto-ossl который предоставляет вам интерфейс webcrypto в узле. Если вы не хотите использовать его напрямую, вы можете найти ответ на свой вопрос в своей обработке 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» - реальная помощь во время разработки. Можно легко клонировать экспортированные ключи следующим образом:

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

 Смежные вопросы

  • Нет связанных вопросов^_^