Я пытаюсь импортировать Base64 PublicKey с помощью функции API-ключа Web Crypto importKey. Цель состоит в том, чтобы создать простой модал для парсинга PublicKey и включения шифрования пароля.
Я пытался импортировать PublicKey как Uint8Array, используя метод «raw» для функции importKey - см. Скрипт ниже:
import buffer from 'buffer'
let kpub = "U6uvqoxXGj17tFS5C05tSWohDQl2u1ugiHyNKXB9WF0UiYaxa5FxiLX/LxGeDUPMyLmWBGBUjpTzh1owF9RWug=="
let buff = new Buffer(kpub, 'base64');
window.crypto.subtle.importKey(
"raw",
buff,
{
name: "ECDH",
namedCurve: "P-256",
},
false,
[]
)
.then(function(publicKey){
console.log(publicKey);
})
.catch(function(err){
console.error(err);
});
Я ожидал, что это создаст импортированную версию ввода, kpub. Однако вывод не отображается в консоли - и когда обработка ошибок включена, вместо этого я получаю DOMException.
Есть идеи, какую часть я делаю не так?
В качестве альтернативы может быть проще преобразовать publicKey в формат JWK. В качестве примера я подтвердил, что приведенный ниже JWK работает так, как задумано в функции importKey. Однако, если я буду использовать это, я буду бороться с тем, как преобразовать мой входной kpub в координаты x и y:
const jwkKey = {
"kty":"EC",
"crv":"P-256",
"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",
"kid":"Id that can be uniquely Identified"
}
Любая помощь очень ценится.