API Web Crypto не может импортировать ключи openssl

Прямо сейчас я тестирую Web Crypto API, выполняя простой тест. Итак, у меня есть открытый ключ пользователя (в виде строки), и я хочу, чтобы он передавал свой закрытый ключ (также в виде строки), чтобы мое приложение могло выполнить некоторое шифрование / дешифрование. Итак, я пытаюсь импортировать его ключи в API Web Crypto, выполнив:

var textEncoder = new TextEncoder();
var alg = {
    name: "RSA-OAEP",
    hash: {name: "SHA-256"}
}
window.crypto.subtle.importKey('raw', textEncoder.encode(myPublicKey), alg, false, ['encrypt'])

Ключи генерируются

openssl genrsa -out mykey.pem 4096
openssl rsa -in mykey.pem -pbout > mykey.pub

WCAPI броски

Unsupported import key format for algorithm

Я пробовал другие хэши в alg, но все равно безуспешно.

Помощь с примером была бы хороша.

1 ответ

Решение

У вас есть несколько ошибок:

  • + Изменить raw в spki (указал Джеймс К Полк)

  • TextEncoder.encode() не подходит для двоичных ключей. Смотрите TextEncoder

    Возвращает массив Uint8Array, содержащий текст в кодировке utf-8.

  • Преобразовать ключ PEM, сгенерированный OpenSSL, в двоичный ArrayBuffer. использование convertPemToBinary(pemKey) отсюда /questions/13149588/kak-zagruzit-otkryityij-klyuch-v-formate-pem-dlya-shifrovaniya/13149599#13149599.

Другие вопросы по тегам