【发布时间】:2019-07-11 13:23:53
【问题描述】:
我正在尝试使用 Ionic 中的 SubtleCrypto Web API 来使用公钥加密数据。我正在导入 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 公钥导入密钥失败?
【问题讨论】:
标签: javascript ionic-framework