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.