INNER CODE UNIT · TypeScript
nodeGCM
paulmillr/noble-ciphers · benchmark/thirdparty/index.ts:33
const nodeGCM = (name) => {
return {
encrypt: (buf, opts) => {
const res = [];
const c = createCipheriv(name, opts.key, opts.iv);
if (opts.aad) c.setAAD(opts.aad);
res.push(c.update(buf));
res.push(c.final());
res.push(c.getAuthTag());
return concatBytes(...res.map((i) => Uint8Array.from(i)));
},
decrypt: (buf, opts) => {
const ciphertext = buf.slice(0, -16);
const authTag = buf.slice(-16);
const decipher = createDecipheriv(name, opts.key, opts.iv);
if (opts.aad) c.setAAD(opts.aad);
decipher.setAuthTag(authTag);
return concatBytes(