mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import { bench, run } from "../runner.mjs";
|
|
import crypto from "node:crypto";
|
|
import { Buffer } from "node:buffer";
|
|
|
|
const keylen = { "aes-128-gcm": 16, "aes-192-gcm": 24, "aes-256-gcm": 32 };
|
|
const sizes = [4 * 1024, 1024 * 1024];
|
|
const ciphers = ["aes-128-gcm", "aes-192-gcm", "aes-256-gcm"];
|
|
|
|
const messages = {};
|
|
sizes.forEach(size => {
|
|
messages[size] = Buffer.alloc(size, "b");
|
|
});
|
|
|
|
const keys = {};
|
|
ciphers.forEach(cipher => {
|
|
keys[cipher] = crypto.randomBytes(keylen[cipher]);
|
|
});
|
|
|
|
// Fixed IV and AAD
|
|
const iv = crypto.randomBytes(12);
|
|
const associate_data = Buffer.alloc(16, "z");
|
|
|
|
for (const cipher of ciphers) {
|
|
for (const size of sizes) {
|
|
const message = messages[size];
|
|
const key = keys[cipher];
|
|
|
|
bench(`${cipher} ${size / 1024}KB`, () => {
|
|
const alice = crypto.createCipheriv(cipher, key, iv);
|
|
alice.setAAD(associate_data);
|
|
const enc = alice.update(message);
|
|
alice.final();
|
|
const tag = alice.getAuthTag();
|
|
|
|
const bob = crypto.createDecipheriv(cipher, key, iv);
|
|
bob.setAuthTag(tag);
|
|
bob.setAAD(associate_data);
|
|
bob.update(enc);
|
|
bob.final();
|
|
});
|
|
}
|
|
}
|
|
|
|
await run();
|