INNER CODE UNIT · TypeScript
left
paulmillr/noble-ciphers · benchmark/thirdparty/index.ts:80
let left = c.blockSize - (buf.length % c.blockSize);
if (!left) left = c.blockSize;
const out = new Uint8Array(buf.length + left);
let prev = opts.iv.slice();
let b = buf,
o = out;
while (b.length) {
for (let i = 0; i < c.blockSize; i++) prev[i] ^= b[i];
if (b.length < c.blockSize) break;
c.encryptBlock(prev, prev);
o.set(prev, 0);
b = b.subarray(c.blockSize);
o = o.subarray(c.blockSize);
}
// pcks7 padding
for (let i = c.blockSize - left; i < c.blockSize; i++) prev[i] ^= left;
c.encryptBlock(prev, o);
return out;