Reputation: 21440
Following code works fine when I encrypt 190 bytes or less. But if I try 191 or more, an exception is thrown. What is the right way of encrypting larger pieces of data?
async function go(size) {
var { publicKey, privateKey } = await crypto.subtle.generateKey({
name: "RSA-OAEP",
modulusLength: 2048,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
}, true, ["encrypt", "decrypt"])
try {
var res = await window.crypto.subtle.encrypt(
{ name: "RSA-OAEP" },
publicKey,
new Uint8Array(size),
)
console.log(`${size} - OK: ${res.byteLength}`)
} catch (ex) {
console.log(`${size} - ERROR: ${ex.constructor.name} ${ex}`)
}
}
go(10) // Ok
go(100) // Ok
go(190) // Ok
go(191) // Error
go(200) // Error
go(500) // Error
Upvotes: 1
Views: 516