Qwertiy
Qwertiy

Reputation: 21440

Encrypt large data

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

Answers (0)

Related Questions