我正在尝试使用Ionic中的SubtleCrypto Web来使用公钥加密数据。我将导入PEM格式的密钥,然后将其传递到window.crypto.subtle.importKey,然后将结果使用到window.crypto.subtle.encrypt中。
看起来window.crypto.subtle.importKey有一个问题--当我试图导入密钥时,我得到了一个Uncaught (in promise): DataError。
我目前正在使用以下方法导入密钥:
//Get the public key in CryptoKey format
let importedPublicKey = await window.crypto.subtle.importKey(
"pkcs8",
this.pemPublicToArrayBuffer(serverPublicKey),
{
name: "RSA-OAEP",
hash: {name: "SHA-256"}
},
true,
[]
);
private pemPublicToArrayBuffer(pem) {
var b64Lines = this.removeLines(pem);
var b64Prefix = b64Lines.replace('-----BEGIN PUBLIC KEY-----', '');
var b64Final = b64Prefix.replace('-----END PUBLIC KEY-----', '');
return this.base64ToArrayBuffer(b64Final);
}
private base64ToArrayBuffer(b64) {
var byteString = window.atob(b64);
var byteArray = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
byteArray[i] = byteString.charCodeAt(i);
}
return byteArray;
}有人可能知道为什么密钥导入与PEM公钥失败吗?
发布于 2019-12-13 09:01:15
我自己花了相当长的时间来克服这个错误,现在我可以给你(和其他人)一些好的建议。
希望这能帮上忙。伊万
https://stackoverflow.com/questions/54742554
复制相似问题