Я пытаюсь importkey
с window.msCrypto
. Эта функция работает в IE, когда я вызываю ее напрямую в целевом окне, но отбрасывает ошибку «Объект не поддерживает свойство или метод , тогда", когда я открываю приложение с этой функцией из iframe .
export async function importPublicKey(message, pem) {
let crypto = window.crypto || window.msCrypto;
const binaryDerString = window.atob(pem);
const binaryDer = str2ab(binaryDerString);
return crypto.subtle.importkey(
"spki",
binaryDer,
{
name: "RSA-OAEP",
modulusLength: 2048,
hash: {
name: 'SHA-1'
}
},
true,
["encrypt"]
).then(async (publicKey)=> {
return await encryptMessage(message, publicKey);
}).catch(..not important part..)
}
Я вызываю эту функцию внутри функции
await Promise.all(list.map(async (obj)=> {
const newObj = await importPublicKey(message, pem)
}))
str2ab
, если она необходимо:
function str2ab(str) {
const buf = new ArrayBuffer(str.length);
const bufView = new Unit8Array(buf);
for (let i = 0; i < str.length; i++) {
bufView[i] = str.charCodeAr(i);
}
return buf
}