我正在尝试使用 Web Crypto API 函数 importKey 导入 Base64 PublicKey。目的是创建一个简单的模式来解析 PublicKey 并启用密码加密。
我尝试使用 importKey 函数的“原始”方法将 PublicKey 作为 Uint8Array 导入 - 请参见以下脚本:
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"
}
任何帮助是极大的赞赏。