Я создал пару ключей 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
Спасибо @rmhrisk, но библиотека не анализирует ключ для jwk. https://github.com/PeculiarVentures/node-webcrypto-ossl/blob/master/lib/subtle.ts#L424. Я также пробовал использовать формат raw, но получил сообщение «DOMException»: «Неподдерживаемый формат ключа импорта для алгоритма» –
В каком браузере вы работаете? У Safari есть проблемы с importKey – rmhrisk
Я использую Chrome и Canary, поэтому я полагаю, что это не проблема. –