From 5e27b18ad0a32556984e6f5518aa38d3df0f7272 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 07:00:39 -0800 Subject: [PATCH 01/12] chore(quest): claim quest/m2/speed/x86-rsa2048-sign.md Quest-Claim: a9f2aceb99c045e6 From 87d5b1ff24e776787791e91d2200c1911b6db3f6 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 07:06:29 -0800 Subject: [PATCH 02/12] feat(bench-report): add two OVH VPSes as report hosts, under their lease Co-Authored-By: Claude Opus 5.5 --- BENCHMARKS.md | 2 +- admin/bench-report | 119 +++++++++++++++++++++++++++++++--------- admin/bench-report-test | 28 +++++++++- 3 files changed, 120 insertions(+), 29 deletions(-) diff --git a/BENCHMARKS.md b/BENCHMARKS.md index 0371d5e2d..3c1fdd836 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -12,7 +12,7 @@ How long rind and the usual Rust crypto libraries take for the same operations, | `desktop` | Intel(R) Core(TM) Ultra 7 270K Plus | Ubuntu 26.04.1 LTS (Linux 7.0.0-42-generic) | 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086) | | `nixos2` | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz | NixOS 26.11 (Zokor) (Linux 6.18.56) | 2026-11-04 at [`a6d9bd72`](https://github.com/moq-dev/rind/commit/a6d9bd7210fc2352f8dec4aa2078230f779398eb) | -Not measured yet: `kixtop`. +Not measured yet: `kixtop`, `ovh-iad`, `ovh-sea`. Each host builds with the pinned toolchain, in the Nix dev shell on Linux, and runs `admin/bench-report` only when idle. Times are criterion's estimates. diff --git a/admin/bench-report b/admin/bench-report index 7b07287d5..e5430a984 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -50,12 +50,29 @@ import time import tomllib # The report's hosts, in the order they run. `jobs` caps the build: nixos2 is -# a shared 15 GB machine that more jobs run out of memory. +# a shared 15 GB machine that more jobs run out of memory. `ssh` is the +# destination where it isn't the name, and `note` describes the machine in the +# report. Other work on a host with a `lease` holds that lock file with +# flock(1) for its whole run, so collect holds it too, or skips the host as +# busy, and leaves no copy, build, or download cache behind. +VPS_NOTE = "OVH VPS in {}, 4 shared vCPUs: other tenants add noise that a dedicated host's times lack." HOSTS = { "nixos": {"jobs": 16}, "desktop": {"jobs": 12}, "nixos2": {"jobs": 3}, "kixtop": {"jobs": 4}, + "ovh-iad": { + "jobs": 4, + "ssh": "root@vps-bcb7229a.vps.ovh.us", + "lease": "/run/lock/moq-perf.lock", + "note": VPS_NOTE.format("Virginia"), + }, + "ovh-sea": { + "jobs": 4, + "ssh": "root@vps-39a0ff2a.vps.ovh.us", + "lease": "/run/lock/moq-perf.lock", + "note": VPS_NOTE.format("Oregon"), + }, } # A host is busy when other work keeps more than this share of its logical @@ -461,16 +478,46 @@ def is_local(host): return host == socket.gethostname().split(".")[0] +def ssh(host): + # ServerAlive ends a session whose link died, which would otherwise hang + # collect, or keep a lease it no longer holds looking held. + options = ["BatchMode=yes", "ConnectTimeout=10", "ServerAliveInterval=15", "ServerAliveCountMax=4"] + return ["ssh", *(arg for o in options for arg in ("-o", o)), HOSTS[host].get("ssh", host)] + + def on_host(host, script, **kwargs): """Runs a shell script on `host`, here or over ssh.""" if is_local(host): return subprocess.run(["sh", "-c", script], **kwargs) - return subprocess.run(["ssh", "-o", "BatchMode=yes", "-o", "ConnectTimeout=10", host, script], **kwargs) + return subprocess.run(ssh(host) + [script], **kwargs) + + +# The exit status of a lease that another run holds. +LEASE_HELD = 73 + + +def take_lease(host): + """An ssh session holding the host's lease until its stdin closes, or the + reason it couldn't take it.""" + lock = shlex.quote(HOSTS[host]["lease"]) + lease = subprocess.Popen( + ssh(host) + [f"exec 9>{lock} && {{ flock -n 9 || exit {LEASE_HELD}; }} && echo held && exec cat >/dev/null"], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + text=True, + ) + if lease.stdout.readline().strip() == "held": + return lease, None + lease.communicate() + if lease.returncode == LEASE_HELD: + return None, "another run holds its lease" + return None, f"could not take its lease, ssh exit {lease.returncode}" def collect_host(host, commit, out_dir): out = os.path.join(out_dir, f"{host}.json") work = os.path.join(ROOT, ".tmp", "bench-report", "host") if is_local(host) else REMOTE_DIR + leased = "lease" in HOSTS[host] q = shlex.quote def record(status, reason): @@ -484,30 +531,48 @@ def collect_host(host, commit, out_dir): return record("unreachable", probe.stderr.strip()) darwin = probe.stdout.strip() == "Darwin" - # A fresh copy of the commit; the build directory stays between runs. - archive = subprocess.run(["git", "-C", ROOT, "archive", "--format=tar", commit], capture_output=True, check=True) - copy = on_host( - host, - f"rm -rf {q(work)}/src && mkdir -p {q(work)}/src && tar -x -C {q(work)}/src", - input=archive.stdout, - ) - if copy.returncode != 0: - return record("failed", "could not copy the commit") + def measure(): + # A fresh copy of the commit; the build directory stays between runs + # unless the host is leased. + archive = subprocess.run(["git", "-C", ROOT, "archive", "--format=tar", commit], capture_output=True, check=True) + copy = on_host( + host, + f"rm -rf {q(work)}/src && mkdir -p {q(work)}/src && tar -x -C {q(work)}/src", + input=archive.stdout, + ) + if copy.returncode != 0: + return record("failed", "could not copy the commit") - cmd = ( - f"python3 admin/bench-report run --host {q(host)} --commit {q(commit)} " - f"--jobs {HOSTS[host]['jobs']} --target-dir ../target --out ../result.json" - ) - if not darwin: - cmd = f'nix develop "path:$PWD" --command {cmd}' - on_host(host, f"rm -f {q(work)}/result.json && cd {q(work)}/src && {cmd}") - fetched = on_host(host, f"cat {q(work)}/result.json", capture_output=True) - if fetched.returncode != 0: - return record("failed", "the run wrote no result; see its output above") - with open(out, "wb") as f: - f.write(fetched.stdout) - status = json.loads(fetched.stdout)["status"] - print(f"bench-report: {host}: {status}", file=sys.stderr) + cmd = ( + f"python3 admin/bench-report run --host {q(host)} --commit {q(commit)} " + f"--jobs {HOSTS[host]['jobs']} --target-dir ../target --out ../result.json" + ) + if not darwin: + cmd = f'nix develop "path:$PWD" --command {cmd}' + if leased: + # Crate downloads too, so that removing the work directory leaves nothing. + cmd = f'CARGO_HOME="$PWD/../cargo" {cmd}' + on_host(host, f"rm -f {q(work)}/result.json && cd {q(work)}/src && {cmd}") + fetched = on_host(host, f"cat {q(work)}/result.json", capture_output=True) + if fetched.returncode != 0: + return record("failed", "the run wrote no result; see its output above") + with open(out, "wb") as f: + f.write(fetched.stdout) + status = json.loads(fetched.stdout)["status"] + print(f"bench-report: {host}: {status}", file=sys.stderr) + + if not leased: + return measure() + lease, reason = take_lease(host) + if lease is None: + return record("busy", reason) + try: + measure() + if lease.poll() is not None: + record("failed", "lost its lease during the run") + finally: + on_host(host, f"rm -rf {q(work)}") + lease.communicate(timeout=60) def collect(args): @@ -1372,7 +1437,8 @@ def report(hosts, tiers, verified, gaps): files = {} shown = [name for name in HOSTS if name in hosts] missing = [f"`{name}`" for name in HOSTS if name not in hosts] - count = ["no", "one", "two", "three", "four"][len(shown)] if len(shown) <= 4 else str(len(shown)) + words = ["no", "one", "two", "three", "four", "five", "six"] + count = words[len(shown)] if len(shown) < len(words) else str(len(shown)) md = [ "# Benchmarks", "", @@ -1424,6 +1490,7 @@ def report(hosts, tiers, verified, gaps): "", f"Measured {measured(h)}, on {h['os']} with {h['toolchain']['rustc']}.", "", + *([HOSTS[name]["note"], ""] if "note" in HOSTS[name] else []), *([f"Not timed on `{name}`: {', '.join(untimed)}.", ""] if untimed else []), *picture(name, f"Times on {name}"), "", diff --git a/admin/bench-report-test b/admin/bench-report-test index 7513326e4..860ecdf64 100755 --- a/admin/bench-report-test +++ b/admin/bench-report-test @@ -1,9 +1,10 @@ #!/usr/bin/env python3 -"""Tests admin/bench-report's rendering on synthetic results. +"""Tests admin/bench-report's rendering on synthetic results, and its lease. Usage: admin/bench-report-test """ +import fcntl import importlib.machinery import importlib.util import json @@ -186,7 +187,7 @@ class Render(unittest.TestCase): md = files[br.REPORT] self.assertIn("on three machines", md) self.assertIn("Not timed on `kixtop`: full handshake, X25519MLKEM768, ", md) - self.assertIn("Not measured yet: `desktop`.", md) + self.assertIn("Not measured yet: `desktop`, `ovh-iad`, `ovh-sea`.", md) self.assertNotIn("`desktop` |", md) self.assertIn("No nightly results yet.", md) self.assertEqual( @@ -332,5 +333,28 @@ class Gaps(unittest.TestCase): br.load_gaps(br.load_hosts(br.DATA_DIR), json.load(f)) +class Lease(unittest.TestCase): + def test_skips_a_held_lease_and_takes_a_free_one(self): + with tempfile.TemporaryDirectory() as d: + lock = os.path.join(d, "lock") + hosts, ssh = br.HOSTS, br.ssh + br.HOSTS = {"vps": {"jobs": 1, "lease": lock}} + br.ssh = lambda host: ["sh", "-c"] + try: + with open(lock, "w") as held: + fcntl.flock(held, fcntl.LOCK_EX) + self.assertEqual(br.take_lease("vps"), (None, "another run holds its lease")) + lease, reason = br.take_lease("vps") + self.assertIsNone(reason) + with open(lock) as other: + with self.assertRaises(BlockingIOError): + fcntl.flock(other, fcntl.LOCK_EX | fcntl.LOCK_NB) + lease.communicate(timeout=10) + self.assertEqual(lease.returncode, 0) + fcntl.flock(other, fcntl.LOCK_EX | fcntl.LOCK_NB) + finally: + br.HOSTS, br.ssh = hosts, ssh + + if __name__ == "__main__": sys.exit(unittest.main()) From c8ac55bbfb95a4f9d0d7c0eb8e67d069cfa44a1b Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 08:31:45 -0800 Subject: [PATCH 03/12] fix(bench-report): leave out a library the host's CPU lacks required features for graviola panics without ADX, so a no-ADX host failed its whole run. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 41 +++++++++++++++++++++++++++++++++-------- admin/bench-report-test | 11 +++++++++++ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/admin/bench-report b/admin/bench-report index e5430a984..c2b6d36ea 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -181,6 +181,11 @@ LIBRARIES = { "openssl": "openssl", } +# The x86_64 CPU features, as rind-cpuid names them, without which a library +# panics on first use rather than run a slower path. Its BMI1 requirement +# comes with BMI2. +REQUIRED_X86 = {"graviola": ["aes", "pclmulqdq", "bmi2", "adx", "avx", "avx2"]} + # The crates whose versions a result records, by library. CRATES = { "rind": ["rind", "rind-rustls"], @@ -226,9 +231,14 @@ def fail(message): sys.exit(f"bench-report: {message}") -def operation_regex(): - """A criterion filter matching exactly the report's operations.""" - ops = "|".join(re.escape(op).replace(re.escape("{lib}"), "[^/]+") for op in OPERATIONS) +def operation_regex(refused=()): + """A criterion filter matching exactly the report's operations, without + the libraries in `refused`.""" + lib = "[^/]+" + if refused: + # The regex crate has no lookahead, so name the rest. + lib = "(" + "|".join(re.escape(row) for row, name in LIBRARIES.items() if name not in refused) + ")" + ops = "|".join(re.escape(op).replace(re.escape("{lib}"), lib) for op in OPERATIONS) return f"^({ops})$" @@ -389,6 +399,13 @@ def run(args): subprocess.run(bench + ["--no-run"], env=env, check=True) # The CPU features rind reads, which pick its paths on this host. result["rind_cpu"] = json.loads(output(cargo + ["run", "-q", "--release", "-p", "rind-cpuid"], env)) + # Each library this CPU lacks a required feature for, with the features. + cpuid = result["rind_cpu"]["cpuid"] + result["refused"] = { + lib: missing + for lib, features in REQUIRED_X86.items() + if platform.machine() == "x86_64" and (missing := [f for f in features if not cpuid[f]]) + } try: idle_before_run = check_idle("before the benchmarks") @@ -398,7 +415,7 @@ def run(args): criterion_dir = os.path.join(env["CARGO_TARGET_DIR"], "criterion") shutil.rmtree(criterion_dir, ignore_errors=True) - criterion_args = CRITERION_ARGS + [operation_regex()] + criterion_args = CRITERION_ARGS + [operation_regex(result["refused"])] wall0 = time.monotonic() ticks0 = cpu_times()[0] if sys.platform == "linux" else None ours0 = resource.getrusage(resource.RUSAGE_CHILDREN) @@ -450,19 +467,21 @@ def run(args): criterion_args=criterion_args, load=load, results=results, - build_cost=build_cost(env, args.jobs), + build_cost=build_cost(env, args.jobs, result["refused"]), ) -def build_cost(env, jobs): +def build_cost(env, jobs, refused): """admin/build-cost's measurements on this host, after the benchmarks so - that neither skews the other's times.""" + that neither skews the other's times, without the builds of libraries in + `refused`, whose binaries it runs.""" env = dict(env, CARGO_BUILD_JOBS=str(jobs)) if sys.platform == "darwin": env["RUSTUP_TOOLCHAIN"] = pinned_toolchain() started = datetime.datetime.now(datetime.timezone.utc).isoformat(timespec="seconds") + builds = [b for b in BUILDS if b not in refused] if refused else [] proc = subprocess.run( - [sys.executable, os.path.join(ROOT, "admin", "build-cost")], env=env, capture_output=True, text=True + [sys.executable, os.path.join(ROOT, "admin", "build-cost"), *builds], env=env, capture_output=True, text=True ) if proc.returncode != 0: lines = proc.stderr.strip().splitlines() or ["no output"] @@ -1492,6 +1511,12 @@ def report(hosts, tiers, verified, gaps): "", *([HOSTS[name]["note"], ""] if "note" in HOSTS[name] else []), *([f"Not timed on `{name}`: {', '.join(untimed)}.", ""] if untimed else []), + *( + f"{COLUMNS[lib]} isn't timed on `{name}`: it requires {and_list([f.upper() for f in missing])}, " + "which this CPU lacks." + for lib, missing in h.get("refused", {}).items() + ), + *([""] if h.get("refused") else []), *picture(name, f"Times on {name}"), "", "
", diff --git a/admin/bench-report-test b/admin/bench-report-test index 860ecdf64..6cc560c4b 100755 --- a/admin/bench-report-test +++ b/admin/bench-report-test @@ -197,6 +197,17 @@ class Render(unittest.TestCase): self.assertIn("| Operation | rind | aws-lc-rs | ring | OpenSSL |", md) self.assertIn("| X25519 | 30.00 µs ✓ | - | 33.00 µs ✓ | 300.00 µs |", md) + def test_leaves_out_a_library_the_cpu_lacks_features_for(self): + regex = re.compile(br.operation_regex({"graviola": ["adx"]})) + for row in ["x25519-ecdh/rind", "p256-ecdh/p256-rustcrypto", "aes128-gcm/openssl/32B"]: + self.assertTrue(regex.match(row), row) + for row in ["x25519-ecdh/graviola", "aes128-gcm/graviola/32B", "x25519-ecdh/rind/extra"]: + self.assertFalse(regex.match(row), row) + everyone = hosts() + everyone["nixos2"]["refused"] = {"graviola": ["bmi2", "adx"]} + md = br.report(everyone, None, VERIFIED, [])[br.REPORT] + self.assertIn("graviola isn't timed on `nixos2`: it requires BMI2 and ADX, which this CPU lacks.", md) + def test_headline_is_the_mean_over_hosts_and_says_what_is_missing(self): everyone = hosts() everyone["nixos"]["build_cost"] = { From 0088ab190278b8a01706c2f99008801cbbc12611 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 09:03:53 -0800 Subject: [PATCH 04/12] fix(bench): leave graviola out of the rustls bench on a CPU it refuses The setup handshakes every provider whatever the filter, and graviola panics without ADX. Co-Authored-By: Claude Opus 5.5 --- rind-bench/benches/rustls.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rind-bench/benches/rustls.rs b/rind-bench/benches/rustls.rs index 93eb9a83d..552987d3e 100644 --- a/rind-bench/benches/rustls.rs +++ b/rind-bench/benches/rustls.rs @@ -15,14 +15,34 @@ use rustls::{ RootCertStore, ServerConfig, ServerConnection, }; -/// The providers this build has: Graviola runs only on x86_64 and aarch64. +/// The providers this build and CPU have. The setup below runs every +/// provider, whatever criterion's filter, so it can't leave Graviola to it. fn providers() -> impl Iterator { ["ring", "aws-lc-rs", "rind"] .into_iter() - .chain(cfg!(any(target_arch = "x86_64", target_arch = "aarch64")).then_some("graviola")) + .chain(graviola_runs().then_some("graviola")) .chain(cfg!(all(feature = "__bench_openssl", target_family = "unix")).then_some("openssl")) } +/// Whether Graviola runs here: it panics on a CPU without the features it +/// asserts in its `verify_cpu_features`. +#[cfg(target_arch = "x86_64")] +fn graviola_runs() -> bool { + use std::arch::is_x86_feature_detected as has; + has!("aes") && has!("pclmulqdq") && has!("bmi1") && has!("adx") && has!("avx") && has!("avx2") +} + +#[cfg(target_arch = "aarch64")] +fn graviola_runs() -> bool { + use std::arch::is_aarch64_feature_detected as has; + has!("neon") && has!("aes") && has!("pmull") && has!("sha2") +} + +#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))] +fn graviola_runs() -> bool { + false +} + fn provider(name: &str) -> CryptoProvider { match name { "ring" => rustls::crypto::ring::default_provider(), From 6b185382a621d6ffe630db4118adc464bc4d158a Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 09:41:03 -0800 Subject: [PATCH 05/12] fix(build-cost): sample CPU use rather than the load average The load average still counts admin/bench-report's benchmarks, which alone reach the limit on a 4-CPU host. Co-Authored-By: Claude Opus 5.5 --- admin/build-cost | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/admin/build-cost b/admin/build-cost index 78a92a254..4b29929e1 100755 --- a/admin/build-cost +++ b/admin/build-cost @@ -63,8 +63,8 @@ TOOLS = { # A C compiler invocation with one of these compiles; any other links. COMPILE_FLAGS = ("-c", "-S", "-E") -# Above this 1-minute load average per CPU, other work would skew the times. -BUSY_LOAD = 0.25 +# Above this share of the CPUs busy, other work would skew the times. +BUSY_SHARE = 0.25 def log(message): @@ -93,6 +93,24 @@ def cpus(): return os.cpu_count() +def busy_cpus(): + """How many CPUs other work keeps busy. On Linux that is over the next + 5 s, since the load average still counts work that just ended, such as + admin/bench-report's benchmarks before it runs this.""" + if sys.platform != "linux": + return os.getloadavg()[0] + + def times(): + with open("/proc/stat") as f: + fields = [int(x) for x in f.readline().split()[1:]] + return sum(fields) - fields[3] - fields[4], sum(fields) + + busy0, total0 = times() + time.sleep(5) + busy1, total1 = times() + return (busy1 - busy0) / max(1, total1 - total0) * (os.cpu_count() or 1) + + def output(*cmd): return subprocess.run(cmd, check=True, capture_output=True, text=True).stdout.strip() @@ -266,9 +284,9 @@ def main(): if name not in BUILDS: parser.error(f"unknown build {name}; pick from {', '.join(BUILDS)}") - load = os.getloadavg()[0] - if load > BUSY_LOAD * cpus(): - sys.exit(f"error: host is busy (load average {load:.1f} on {cpus()} CPUs)") + busy = busy_cpus() + if busy > BUSY_SHARE * cpus(): + sys.exit(f"error: host is busy ({busy:.1f} of {cpus()} CPUs busy)") env = build_env() host = host_info(env) From 2dfd6e01813cf4658f650142d846f6a2259fd3f2 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 10:43:02 -0800 Subject: [PATCH 06/12] chore(quest): finish x86-rsa2048-sign Co-Authored-By: Claude Opus 5.5 --- quest/m2/adoption/README.md | 5 +++-- quest/m2/adoption/lemmy.md | 5 ++--- quest/m2/speed/README.md | 1 - quest/m2/speed/x86-rsa2048-sign.md | 11 ----------- 4 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 quest/m2/speed/x86-rsa2048-sign.md diff --git a/quest/m2/adoption/README.md b/quest/m2/adoption/README.md index d65c00505..8468e3a9a 100644 --- a/quest/m2/adoption/README.md +++ b/quest/m2/adoption/README.md @@ -52,8 +52,9 @@ don't ask again (✅ is the chosen option): [#375](https://github.com/moq-dev/rind/pull/375), which has the sizes): it is already smaller than aws-lc-rs's provider. - Whatever these consumers need from rind itself is planned now: the - [WebCrypto set](/quest/m2/adoption/webcrypto/README.md), platform coverage, - and [RSA-2048 speed](/quest/m2/speed/x86-rsa2048-sign.md) in the speed epic. + [WebCrypto set](/quest/m2/adoption/webcrypto/README.md) and platform + coverage. RSA-2048 signing, which JWT's RS256 needs, is level with the + fastest library on x86_64 in [BENCHMARKS.md](/BENCHMARKS.md). ## Required diff --git a/quest/m2/adoption/lemmy.md b/quest/m2/adoption/lemmy.md index a4493d127..477579891 100644 --- a/quest/m2/adoption/lemmy.md +++ b/quest/m2/adoption/lemmy.md @@ -16,9 +16,8 @@ Decided with the maintainer on 2026-11-04, in a planning interview. ([LemmyNet/lemmy#4900](https://github.com/LemmyNet/lemmy/issues/4900)); rind keeps the portability, and drops RUSTSEC-2023-0071 with it. - [BENCHMARKS.md](/BENCHMARKS.md)'s `nixos2` (an i7-8700) has rind verifying - RSA-2048 about 4.7x and signing about 2x faster than `rsa` 0.10; measure against the 0.9 they use. RSA signing - gains more once [RSA-2048 speed](/quest/m2/speed/x86-rsa2048-sign.md) lands, but - need not wait for it. + RSA-2048 about 4.7x and signing about 2.6x faster than `rsa` 0.10; measure + against the 0.9 they use. - Keys are stored as PEM (PKCS#8 and SPKI); existing keys must load unchanged. - Posting is the maintainer's call; prepare the branch and text, then ask. diff --git a/quest/m2/speed/README.md b/quest/m2/speed/README.md index 184951a03..19e835336 100644 --- a/quest/m2/speed/README.md +++ b/quest/m2/speed/README.md @@ -53,4 +53,3 @@ settled; don't ask them again. The chosen option is marked ✅. - [Only keys are wiped on drop](/quest/m2/speed/non-key-wipes.md) - per-call state stops paying for wipes - [Short hashes through digest::Context match the one-shot](/quest/m2/speed/digest-context-setup.md) - the context's setup and reset cost - [An x86_64 bench tier without AVX-512 IFMA](/quest/m2/speed/bench-no-ifma.md) - RSA A/Bs that measure the AVX2 path -- [Confirm x86_64 RSA-2048 signing level in the report](/quest/m2/speed/x86-rsa2048-sign.md) - a report refresh shows 2048-bit signing, and the RSA certificate handshake with it, level on x86_64, and drops its gap diff --git a/quest/m2/speed/x86-rsa2048-sign.md b/quest/m2/speed/x86-rsa2048-sign.md deleted file mode 100644 index 58f4f7cf5..000000000 --- a/quest/m2/speed/x86-rsa2048-sign.md +++ /dev/null @@ -1,11 +0,0 @@ -# [XS] Confirm x86_64 RSA-2048 signing level in the report - -## Goal - -A refresh of [BENCHMARKS.md](/BENCHMARKS.md) at or after [moq-dev/rind#351](https://github.com/moq-dev/rind/pull/351) shows RSA-2048 PKCS#1 and PSS signing, and the full handshake under an RSA-2048 certificate, within 10% of the fastest library on `nixos`, `desktop`, and `nixos2`, and this gap's entry leaves `benchmarks/gaps.toml`. JWT's RS256, the most common JWT algorithm, reaches the [adoption epic](/quest/m2/adoption/README.md)'s Bun, pyrind, and llrt through it. - -## Plan - -- #351 gathers each window entry by AVX2 rather than s2n-bignum's scalar `bignum_copy_row_from_table`, which spent a fifth of each 16-word exponentiation. Interleaved on `nixos`, signing fell from 494-520 µs to 417-431 µs, ahead of graviola (431-457 µs) and ring (431-483 µs). -- #351 could not refresh the report: `admin/bench-report collect` skips a busy host, and all three were busy. Run it when they are idle, then `render`, and drop the entry. -- If a host still shows the gap, time the CRT and fault-check glue next, as this quest planned before #351. From cacb216096843aae8317ea062310928f027e8efc Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 10:43:10 -0800 Subject: [PATCH 07/12] docs(benchmarks): refresh the report, with the two OVH VPSes Co-Authored-By: Claude Opus 5.5 --- BENCHMARKS.md | 605 ++++-- benchmarks/data/desktop.json | 2647 ++++++++++------------- benchmarks/data/nixos.json | 2647 ++++++++++------------- benchmarks/data/nixos2.json | 2434 +++++++++++---------- benchmarks/data/ovh-iad.json | 3901 ++++++++++++++++++++++++++++++++++ benchmarks/data/ovh-sea.json | 3901 ++++++++++++++++++++++++++++++++++ benchmarks/desktop-dark.svg | 1326 ++++++------ benchmarks/desktop.svg | 1336 ++++++------ benchmarks/gaps.toml | 32 +- benchmarks/headline-dark.svg | 144 +- benchmarks/headline.svg | 144 +- benchmarks/nixos-dark.svg | 1356 ++++++------ benchmarks/nixos.svg | 1360 ++++++------ benchmarks/nixos2-dark.svg | 1386 ++++++------ benchmarks/nixos2.svg | 1388 ++++++------ benchmarks/overview-dark.svg | 3032 ++++++++++++++++---------- benchmarks/overview.svg | 3032 ++++++++++++++++---------- benchmarks/ovh-iad-dark.svg | 716 +++++++ benchmarks/ovh-iad.svg | 716 +++++++ benchmarks/ovh-sea-dark.svg | 716 +++++++ benchmarks/ovh-sea.svg | 716 +++++++ 21 files changed, 22464 insertions(+), 11071 deletions(-) create mode 100644 benchmarks/data/ovh-iad.json create mode 100644 benchmarks/data/ovh-sea.json create mode 100644 benchmarks/ovh-iad-dark.svg create mode 100644 benchmarks/ovh-iad.svg create mode 100644 benchmarks/ovh-sea-dark.svg create mode 100644 benchmarks/ovh-sea.svg diff --git a/BENCHMARKS.md b/BENCHMARKS.md index 3c1fdd836..9faef7ee9 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -2,17 +2,19 @@ -How long rind and the usual Rust crypto libraries take for the same operations, on three machines, and what each costs to build. Every library runs its native path on each host. A ✓ marks an operation whose whole computation a published formal proof covers, as [Verified code](#verified-code) lists. +How long rind and the usual Rust crypto libraries take for the same operations, on five machines, and what each costs to build. Every library runs its native path on each host. A ✓ marks an operation whose whole computation a published formal proof covers, as [Verified code](#verified-code) lists. ## Hosts | Host | CPU | OS | Measured | |---|---|---|---| -| `nixos` | AMD Ryzen 9 5900XT 16-Core Processor | NixOS 26.11 (Zokor) (Linux 6.18.56) | 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086) | -| `desktop` | Intel(R) Core(TM) Ultra 7 270K Plus | Ubuntu 26.04.1 LTS (Linux 7.0.0-42-generic) | 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086) | -| `nixos2` | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz | NixOS 26.11 (Zokor) (Linux 6.18.56) | 2026-11-04 at [`a6d9bd72`](https://github.com/moq-dev/rind/commit/a6d9bd7210fc2352f8dec4aa2078230f779398eb) | +| `nixos` | AMD Ryzen 9 5900XT 16-Core Processor | NixOS 26.11 (Zokor) (Linux 6.18.56) | 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), noisy | +| `desktop` | Intel(R) Core(TM) Ultra 7 270K Plus | Ubuntu 26.04.1 LTS (Linux 7.0.0-42-generic) | 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), noisy | +| `nixos2` | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz | NixOS 26.11 (Zokor) (Linux 6.18.56) | 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47) | +| `ovh-iad` | Intel Core Processor (Haswell, no TSX) | NixOS 26.11 (Zokor) (Linux 6.18.40) | 2026-11-06 at [`0088ab19`](https://github.com/moq-dev/rind/commit/0088ab190278b8a01706c2f99008801cbbc12611) | +| `ovh-sea` | Intel Core Processor (Haswell, no TSX) | NixOS 26.11 (Zokor) (Linux 6.18.40) | 2026-11-06 at [`0088ab19`](https://github.com/moq-dev/rind/commit/0088ab190278b8a01706c2f99008801cbbc12611) | -Not measured yet: `kixtop`, `ovh-iad`, `ovh-sea`. +Not measured yet: `kixtop`. Each host builds with the pinned toolchain, in the Nix dev shell on Linux, and runs `admin/bench-report` only when idle. Times are criterion's estimates. @@ -27,7 +29,7 @@ Each row is one operation and each column one library. Each cell holds a square ### `nixos`: AMD Ryzen 9 5900XT 16-Core Processor -Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086), on NixOS 26.11 (Zokor) (Linux 6.18.56) with rustc 1.98.1 (48a229cea 2026-09-01). +Measured 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), noisy, on NixOS 26.11 (Zokor) (Linux 6.18.56) with rustc 1.98.1 (48a229cea 2026-09-01). @@ -39,71 +41,71 @@ Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d | Operation | rind | aws-lc-rs | ring | RustCrypto + dalek | graviola | libcrux | OpenSSL | |---|---|---|---|---|---|---|---| -| full handshake, X25519MLKEM768 | 239.83 µs | 308.49 µs | - | - | 258.62 µs | - | 805.54 µs | -| full handshake, X25519 | 215.61 µs | 277.77 µs | 296.66 µs | - | 225.37 µs | - | 578.47 µs | -| full handshake, P-256 | 248.67 µs | 312.54 µs | 296.53 µs | - | 266.19 µs | - | 639.58 µs | -| full handshake, Ed25519 certificate | 176.45 µs | 226.97 µs | 289.56 µs | - | 175.24 µs | - | 647.87 µs | -| full handshake, RSA-2048 certificate | 644.89 µs | 650.26 µs | 666.29 µs | - | 582.45 µs | - | 931.27 µs | -| resumed handshake, X25519 | 81.83 µs | 137.94 µs | 162.09 µs | - | 87.66 µs | - | 461.94 µs | -| 1 MB transfer, AES-128-GCM | 290.62 µs | 459.42 µs | 314.22 µs | - | 453.27 µs | - | 492.29 µs | -| 1 MB transfer, AES-256-GCM | 310.98 µs | 487.61 µs | 305.27 µs | - | 513.59 µs | - | 607.83 µs | -| 1 MB transfer, ChaCha20-Poly1305 | 739.91 µs | 739.12 µs | 747.52 µs | - | 1.49 ms | - | 855.61 µs | -| AES-128-GCM seal, 32 B | 40 ns | 81 ns | 54 ns | 95 ns | 67 ns | 308 ns | 114 ns | -| AES-128-GCM seal, 1350 B | 170 ns | 289 ns | 184 ns | 435 ns | 296 ns | 3.91 µs | 323 ns | -| AES-128-GCM seal, 16 KB | 1.39 µs | 2.58 µs | 1.43 µs | 4.18 µs | 2.58 µs | 44.41 µs | 2.62 µs | -| AES-128-GCM open, 32 B | 47 ns | 72 ns | 58 ns | 102 ns | 65 ns | 320 ns | 118 ns | -| AES-128-GCM open, 1350 B | 175 ns | 295 ns | 185 ns | 448 ns | 307 ns | 3.93 µs | 332 ns | -| AES-128-GCM open, 16 KB | 1.45 µs | 2.71 µs | 1.48 µs | 4.28 µs | 2.66 µs | 44.58 µs | 2.75 µs | -| AES-256-GCM seal, 32 B | 44 ns | 81 ns | 58 ns | 101 ns | 73 ns | 426 ns | 119 ns | -| AES-256-GCM seal, 1350 B | 188 ns | 313 ns | 206 ns | 488 ns | 338 ns | 6.96 µs | 345 ns | -| AES-256-GCM seal, 16 KB | 1.54 µs | 2.79 µs | 1.56 µs | 4.83 µs | 3.00 µs | 80.86 µs | 2.82 µs | -| AES-256-GCM open, 32 B | 52 ns | 82 ns | 62 ns | 111 ns | 68 ns | 442 ns | 121 ns | -| AES-256-GCM open, 1350 B | 194 ns | 320 ns | 205 ns | 507 ns | 342 ns | 6.39 µs | 358 ns | -| AES-256-GCM open, 16 KB | 1.62 µs | 2.89 µs | 1.65 µs | 4.92 µs | 3.05 µs | 74.38 µs | 2.96 µs | -| ChaCha20-Poly1305 seal, 32 B | 114 ns | 119 ns | 113 ns | 1.18 µs | 216 ns | 218 ns ✓ | 255 ns | -| ChaCha20-Poly1305 seal, 1350 B | 530 ns | 535 ns | 531 ns | 1.92 µs | 1.08 µs | 2.33 µs ✓ | 742 ns | -| ChaCha20-Poly1305 seal, 16 KB | 4.58 µs | 4.62 µs | 4.55 µs | 9.81 µs | 9.87 µs | 26.03 µs ✓ | 5.10 µs | -| XChaCha20-Poly1305 seal, 32 B | 242 ns | 263 ns | - | 1.35 µs | 348 ns | 336 ns | - | -| XChaCha20-Poly1305 seal, 1350 B | 653 ns | 673 ns | - | 2.06 µs | 1.20 µs | 2.45 µs | - | -| XChaCha20-Poly1305 seal, 16 KB | 4.76 µs | 4.74 µs | - | 9.95 µs | 10.02 µs | 26.08 µs | - | +| full handshake, X25519MLKEM768 | 260.78 µs | 331.87 µs | - | - | 342.68 µs | - | 802.57 µs | +| full handshake, X25519 | 227.82 µs | 292.13 µs | 328.46 µs | - | 238.70 µs | - | 574.28 µs | +| full handshake, P-256 | 242.76 µs | 304.37 µs | 281.93 µs | - | 270.05 µs | - | 624.35 µs | +| full handshake, Ed25519 certificate | 186.73 µs | 233.43 µs | 292.96 µs | - | 186.05 µs | - | 640.40 µs | +| full handshake, RSA-2048 certificate | 550.14 µs | 646.28 µs | 647.36 µs | - | 567.91 µs | - | 992.05 µs | +| resumed handshake, X25519 | 77.19 µs | 132.67 µs | 158.11 µs | - | 77.33 µs | - | 370.51 µs | +| 1 MB transfer, AES-128-GCM | 289.43 µs | 458.21 µs | 282.22 µs | - | 424.38 µs | - | 469.84 µs | +| 1 MB transfer, AES-256-GCM | 292.74 µs | 461.28 µs | 289.90 µs | - | 490.29 µs | - | 533.20 µs | +| 1 MB transfer, ChaCha20-Poly1305 | 688.78 µs | 687.53 µs | 693.01 µs | - | 1.37 ms | - | 782.98 µs | +| AES-128-GCM seal, 32 B | 39 ns | 78 ns | 56 ns | 97 ns | 70 ns | 321 ns | 115 ns | +| AES-128-GCM seal, 1350 B | 165 ns | 291 ns | 191 ns | 434 ns | 295 ns | 4.72 µs | 326 ns | +| AES-128-GCM seal, 16 KB | 1.38 µs | 2.63 µs | 1.39 µs | 4.28 µs | 2.57 µs | 53.90 µs | 2.61 µs | +| AES-128-GCM open, 32 B | 44 ns | 72 ns | 58 ns | 102 ns | 65 ns | 317 ns | 118 ns | +| AES-128-GCM open, 1350 B | 174 ns | 298 ns | 185 ns | 451 ns | 305 ns | 3.92 µs | 333 ns | +| AES-128-GCM open, 16 KB | 1.44 µs | 2.72 µs | 1.45 µs | 4.29 µs | 2.65 µs | 44.29 µs | 2.77 µs | +| AES-256-GCM seal, 32 B | 41 ns | 82 ns | 57 ns | 101 ns | 74 ns | 426 ns | 118 ns | +| AES-256-GCM seal, 1350 B | 184 ns | 311 ns | 205 ns | 489 ns | 337 ns | 6.91 µs | 345 ns | +| AES-256-GCM seal, 16 KB | 1.51 µs | 2.78 µs | 1.53 µs | 4.78 µs | 2.98 µs | 80.61 µs | 2.82 µs | +| AES-256-GCM open, 32 B | 48 ns | 79 ns | 61 ns | 109 ns | 68 ns | 441 ns | 122 ns | +| AES-256-GCM open, 1350 B | 192 ns | 322 ns | 204 ns | 508 ns | 341 ns | 6.79 µs | 354 ns | +| AES-256-GCM open, 16 KB | 1.60 µs | 2.92 µs | 1.62 µs | 4.93 µs | 3.04 µs | 79.19 µs | 2.98 µs | +| ChaCha20-Poly1305 seal, 32 B | 114 ns | 119 ns | 113 ns | 1.18 µs | 216 ns | 220 ns ✓ | 257 ns | +| ChaCha20-Poly1305 seal, 1350 B | 533 ns | 532 ns | 527 ns | 1.93 µs | 1.08 µs | 2.34 µs ✓ | 745 ns | +| ChaCha20-Poly1305 seal, 16 KB | 4.68 µs | 4.78 µs | 4.68 µs | 10.09 µs | 10.15 µs | 26.70 µs ✓ | 5.14 µs | +| XChaCha20-Poly1305 seal, 32 B | 243 ns | 267 ns | - | 1.36 µs | 357 ns | 351 ns | - | +| XChaCha20-Poly1305 seal, 1350 B | 775 ns | 723 ns | - | 2.18 µs | 1.31 µs | 2.70 µs | - | +| XChaCha20-Poly1305 seal, 16 KB | 5.23 µs | 5.37 µs | - | 11.38 µs | 10.80 µs | 28.66 µs | - | | AES-128 header protection | 4 ns | 6 ns | 7 ns | - | - | - | - | -| AES-256 header protection | 6 ns | 8 ns | 9 ns | - | - | - | - | -| ChaCha20 header protection | 61 ns ✓ | 81 ns | 75 ns | - | - | - | - | -| X25519 | 24.80 µs ✓ | 25.24 µs | 47.40 µs | 53.79 µs | 24.65 µs | 64.51 µs ✓ | 49.46 µs | -| P-256 ECDH | 39.18 µs | 41.12 µs | 41.79 µs | 256.63 µs | 41.91 µs | 246.51 µs ✓ | 68.12 µs | -| Ed25519 sign | 5.79 µs | 6.10 µs | 17.26 µs | 13.36 µs | 5.79 µs | 40.33 µs ✓ | 23.40 µs | -| Ed25519 verify | 27.18 µs | 27.25 µs | 34.90 µs | 24.97 µs | 27.14 µs | 54.65 µs ✓ | 79.44 µs | -| P-256 ECDSA sign | 8.98 µs | 11.96 µs | 12.76 µs | 64.84 µs | 10.48 µs | 87.54 µs ✓ | 16.42 µs | -| P-256 ECDSA verify | 38.23 µs | 38.71 µs | 39.16 µs | 217.96 µs | 40.39 µs | 208.08 µs ✓ | 57.01 µs | -| SHA-256, 64 B | 80 ns | 101 ns | 86 ns | 58 ns | 67 ns | 355 ns ✓ | 243 ns | -| SHA-256, 1350 B | 653 ns | 669 ns | 662 ns | 631 ns | 642 ns | 3.77 µs ✓ | 827 ns | -| SHA-256, 16 KB | 7.24 µs | 7.38 µs | 7.40 µs | 7.32 µs | 7.31 µs | 45.19 µs ✓ | 7.52 µs | -| SHA-512, 64 B | 195 ns | 233 ns | 202 ns | 203 ns | 185 ns | 268 ns ✓ | 390 ns | -| SHA-512, 1350 B | 2.75 µs | 2.31 µs | 1.97 µs | 2.66 µs | 1.96 µs | 2.80 µs ✓ | 1.50 µs | -| SHA-512, 16 KB | 20.37 µs | 20.45 µs | 20.63 µs | 20.78 µs | 21.56 µs | 29.02 µs ✓ | 14.83 µs | -| HMAC-SHA256, 64 B | 153 ns | 263 ns | 214 ns | 155 ns | 170 ns | 823 ns ✓ | 2.49 µs | -| HMAC-SHA256, 1350 B | 678 ns | 794 ns | 749 ns | 681 ns | 696 ns | 4.05 µs ✓ | 3.03 µs | -| HKDF-SHA256 extract and expand | 304 ns | 376 ns | 398 ns | 310 ns | - | 1.37 µs ✓ | 2.77 µs | -| HKDF-SHA256 expand | 104 ns | 178 ns | 142 ns | 103 ns | - | 706 ns ✓ | 1.96 µs | -| RSA-2048 PKCS#1 sign | 474.44 µs | 435.90 µs | 423.03 µs | 987.29 µs | 411.78 µs | - | 437.30 µs | -| RSA-2048 PKCS#1 verify | 14.79 µs | 13.65 µs | 15.38 µs | 50.57 µs | 24.70 µs | - | 22.22 µs | -| RSA-2048 PSS sign | 475.37 µs | 436.71 µs | 424.64 µs | 995.72 µs | 413.56 µs | 4.79 ms ✓ | 439.05 µs | -| RSA-2048 PSS verify | 11.82 µs | 14.33 µs | 16.27 µs | 96.98 µs | 21.66 µs | 465.38 µs ✓ | 23.36 µs | -| ML-KEM-768 key generation | 8.05 µs | 9.20 µs | - | 58.01 µs | 8.74 µs | 17.51 µs | 26.11 µs | -| ML-KEM-768 encapsulate | 8.33 µs | 9.38 µs | - | 67.87 µs | 10.25 µs | 14.93 µs | 27.30 µs | -| ML-KEM-768 decapsulate | 5.93 µs | 11.29 µs | - | 87.75 µs | 7.10 µs | 15.64 µs | 22.36 µs | -| P-384 ECDH | 129.00 µs | 145.14 µs | 580.80 µs | 782.25 µs | 206.07 µs | - | 451.93 µs | -| P-384 ECDSA sign | 33.91 µs | 64.48 µs | 313.48 µs | 183.17 µs | 110.14 µs | - | 151.27 µs | -| P-384 ECDSA verify | 121.08 µs | 151.44 µs | 560.90 µs | 670.20 µs | 204.92 µs | - | 371.49 µs | -| P-521 ECDH | 221.05 µs | 235.94 µs | - | 604.98 µs | - | - | 390.71 µs | -| P-521 ECDSA sign | 56.66 µs | 125.99 µs | - | 144.49 µs | - | - | 186.41 µs | -| P-521 ECDSA verify | 191.80 µs | 257.70 µs | - | 481.75 µs | - | - | 379.62 µs | +| AES-256 header protection | 6 ns | 8 ns | 10 ns | - | - | - | - | +| ChaCha20 header protection | 61 ns ✓ | 82 ns | 74 ns | - | - | - | - | +| X25519 | 23.97 µs ✓ | 24.61 µs | 46.72 µs | 52.09 µs | 23.94 µs | 64.60 µs ✓ | 49.70 µs | +| P-256 ECDH | 42.82 µs | 42.60 µs | 46.05 µs | 268.62 µs | 47.87 µs | 268.70 µs ✓ | 71.25 µs | +| Ed25519 sign | 5.72 µs | 6.13 µs | 17.23 µs | 13.30 µs | 5.83 µs | 41.37 µs ✓ | 23.38 µs | +| Ed25519 verify | 27.15 µs | 27.03 µs | 34.76 µs | 24.83 µs | 27.08 µs | 54.52 µs ✓ | 79.25 µs | +| P-256 ECDSA sign | 9.62 µs | 12.66 µs | 13.68 µs | 70.62 µs | 11.49 µs | 95.47 µs ✓ | 18.04 µs | +| P-256 ECDSA verify | 39.25 µs | 40.24 µs | 41.25 µs | 226.27 µs | 41.92 µs | 215.83 µs ✓ | 60.27 µs | +| SHA-256, 64 B | 69 ns | 96 ns | 78 ns | 59 ns | 67 ns | 385 ns ✓ | 244 ns | +| SHA-256, 1350 B | 620 ns | 740 ns | 637 ns | 618 ns | 637 ns | 3.71 µs ✓ | 815 ns | +| SHA-256, 16 KB | 6.86 µs | 6.88 µs | 6.97 µs | 7.22 µs | 7.08 µs | 43.12 µs ✓ | 7.37 µs | +| SHA-512, 64 B | 138 ns | 224 ns | 198 ns | 192 ns | 206 ns | 246 ns ✓ | 355 ns | +| SHA-512, 1350 B | 1.77 µs | 1.90 µs | 1.87 µs | 1.92 µs | 1.98 µs | 2.94 µs ✓ | 1.76 µs | +| SHA-512, 16 KB | 16.28 µs | 25.17 µs | 25.38 µs | 24.12 µs | 21.04 µs | 29.75 µs ✓ | 15.14 µs | +| HMAC-SHA256, 64 B | 147 ns | 264 ns | 214 ns | 155 ns | 172 ns | 851 ns ✓ | 2.57 µs | +| HMAC-SHA256, 1350 B | 692 ns | 853 ns | 791 ns | 728 ns | 731 ns | 4.39 µs ✓ | 3.11 µs | +| HKDF-SHA256 extract and expand | 257 ns | 369 ns | 399 ns | 309 ns | - | 1.37 µs ✓ | 2.72 µs | +| HKDF-SHA256 expand | 89 ns | 179 ns | 142 ns | 103 ns | - | 714 ns ✓ | 2.00 µs | +| RSA-2048 PKCS#1 sign | 523.17 µs | 532.39 µs | 523.12 µs | 1.26 ms | 474.44 µs | - | 520.25 µs | +| RSA-2048 PKCS#1 verify | 12.28 µs | 14.60 µs | 16.56 µs | 54.06 µs | 19.25 µs | - | 23.59 µs | +| RSA-2048 PSS sign | 424.30 µs | 481.00 µs | 471.53 µs | 1.06 ms | 448.54 µs | 5.86 ms ✓ | 474.99 µs | +| RSA-2048 PSS verify | 12.67 µs | 15.94 µs | 18.03 µs | 64.70 µs | 19.63 µs | 312.23 µs ✓ | 23.60 µs | +| ML-KEM-768 key generation | 8.43 µs | 9.41 µs | - | 60.18 µs | 9.28 µs | 18.15 µs | 26.82 µs | +| ML-KEM-768 encapsulate | 8.53 µs | 10.41 µs | - | 72.03 µs | 10.95 µs | 16.03 µs | 30.02 µs | +| ML-KEM-768 decapsulate | 6.07 µs | 11.96 µs | - | 95.17 µs | 7.72 µs | 16.22 µs | 24.64 µs | +| P-384 ECDH | 179.71 µs | 180.49 µs | 601.49 µs | 1.04 ms | 302.57 µs | - | 656.67 µs | +| P-384 ECDSA sign | 53.07 µs | 97.47 µs | 474.64 µs | 238.31 µs | 185.15 µs | - | 235.52 µs | +| P-384 ECDSA verify | 157.33 µs | 199.21 µs | 727.10 µs | 872.06 µs | 315.99 µs | - | 551.89 µs | +| P-521 ECDH | 283.91 µs | 288.17 µs | - | 868.41 µs | - | - | 505.62 µs | +| P-521 ECDSA sign | 58.32 µs | 152.35 µs | - | 177.47 µs | - | - | 219.60 µs | +| P-521 ECDSA verify | 222.28 µs | 327.35 µs | - | 610.17 µs | - | - | 473.66 µs |
### `desktop`: Intel(R) Core(TM) Ultra 7 270K Plus -Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086), on Ubuntu 26.04.1 LTS (Linux 7.0.0-42-generic) with rustc 1.98.1 (48a229cea 2026-09-01). +Measured 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), noisy, on Ubuntu 26.04.1 LTS (Linux 7.0.0-42-generic) with rustc 1.98.1 (48a229cea 2026-09-01). @@ -115,73 +117,71 @@ Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d | Operation | rind | aws-lc-rs | ring | RustCrypto + dalek | graviola | libcrux | OpenSSL | |---|---|---|---|---|---|---|---| -| full handshake, X25519MLKEM768 | 176.38 µs | 237.01 µs | - | - | 188.12 µs | - | 435.26 µs | -| full handshake, X25519 | 152.03 µs | 205.12 µs | 221.18 µs | - | 161.32 µs | - | 365.01 µs | -| full handshake, P-256 | 175.55 µs | 227.34 µs | 223.24 µs | - | 194.81 µs | - | 403.92 µs | -| full handshake, Ed25519 certificate | 123.00 µs | 166.65 µs | 202.37 µs | - | 125.59 µs | - | 374.89 µs | -| full handshake, RSA-2048 certificate | 493.89 µs | 479.50 µs | 487.61 µs | - | 438.68 µs | - | 684.14 µs | -| resumed handshake, X25519 | 55.16 µs | 101.03 µs | 111.69 µs | - | 55.45 µs | - | 229.74 µs | -| 1 MB transfer, AES-128-GCM | 169.85 µs | 234.65 µs | 171.60 µs | - | 288.23 µs | - | 255.06 µs | -| 1 MB transfer, AES-256-GCM | 186.02 µs | 270.36 µs | 188.28 µs | - | 332.16 µs | - | 285.87 µs | -| 1 MB transfer, ChaCha20-Poly1305 | 587.48 µs | 586.46 µs | 588.81 µs | - | 1.16 ms | - | 658.14 µs | -| AES-128-GCM seal, 32 B | 19 ns | 37 ns | 42 ns | 73 ns | 42 ns | 171 ns | 55 ns | -| AES-128-GCM seal, 1350 B | 94 ns | 152 ns | 119 ns | 276 ns | 226 ns | 1.98 µs | 159 ns | -| AES-128-GCM seal, 16 KB | 772 ns | 1.33 µs | 795 ns | 2.45 µs | 2.05 µs | 22.01 µs | 1.34 µs | -| AES-128-GCM open, 32 B | 23 ns | 37 ns | 42 ns | 78 ns | 35 ns | 161 ns | 58 ns | -| AES-128-GCM open, 1350 B | 101 ns | 149 ns | 113 ns | 283 ns | 176 ns | 1.99 µs | 157 ns | -| AES-128-GCM open, 16 KB | 812 ns | 1.26 µs | 823 ns | 2.51 µs | 1.40 µs | 22.00 µs | 1.29 µs | -| AES-256-GCM seal, 32 B | 21 ns | 39 ns | 43 ns | 78 ns | 45 ns | 218 ns | 58 ns | -| AES-256-GCM seal, 1350 B | 109 ns | 176 ns | 135 ns | 312 ns | 261 ns | 2.86 µs | 184 ns | -| AES-256-GCM seal, 16 KB | 924 ns | 1.58 µs | 953 ns | 2.91 µs | 2.42 µs | 32.27 µs | 1.57 µs | -| AES-256-GCM open, 32 B | 24 ns | 37 ns | 44 ns | 81 ns | 38 ns | 218 ns | 61 ns | -| AES-256-GCM open, 1350 B | 110 ns | 174 ns | 123 ns | 323 ns | 203 ns | 2.86 µs | 188 ns | -| AES-256-GCM open, 16 KB | 926 ns | 1.58 µs | 939 ns | 2.97 µs | 1.75 µs | 32.50 µs | 1.60 µs | -| ChaCha20-Poly1305 seal, 32 B | 99 ns | 105 ns | 101 ns | 1.06 µs | 180 ns | 157 ns ✓ | 177 ns | -| ChaCha20-Poly1305 seal, 1350 B | 447 ns | 453 ns | 446 ns | 1.67 µs | 911 ns | 1.78 µs ✓ | 589 ns | -| ChaCha20-Poly1305 seal, 16 KB | 4.13 µs | 4.13 µs | 4.12 µs | 8.15 µs | 8.36 µs | 19.36 µs ✓ | 4.41 µs | -| XChaCha20-Poly1305 seal, 32 B | 188 ns | 196 ns | - | 1.15 µs | 259 ns | 243 ns | - | -| XChaCha20-Poly1305 seal, 1350 B | 528 ns | 541 ns | - | 1.76 µs | 987 ns | 1.83 µs | - | -| XChaCha20-Poly1305 seal, 16 KB | 4.20 µs | 4.29 µs | - | 8.25 µs | 8.30 µs | 19.58 µs | - | +| full handshake, X25519MLKEM768 | 174.97 µs | 235.60 µs | - | - | 191.49 µs | - | 437.46 µs | +| full handshake, X25519 | 152.75 µs | 203.62 µs | 222.88 µs | - | 162.55 µs | - | 367.79 µs | +| full handshake, P-256 | 175.68 µs | 228.85 µs | 221.72 µs | - | 193.10 µs | - | 406.49 µs | +| full handshake, Ed25519 certificate | 123.11 µs | 168.12 µs | 205.53 µs | - | 125.46 µs | - | 373.29 µs | +| full handshake, RSA-2048 certificate | 428.67 µs | 485.87 µs | 493.81 µs | - | 440.23 µs | - | 682.29 µs | +| resumed handshake, X25519 | 54.19 µs | 102.84 µs | 113.00 µs | - | 55.16 µs | - | 231.44 µs | +| 1 MB transfer, AES-128-GCM | 193.36 µs | 241.18 µs | 174.96 µs | - | 294.75 µs | - | 255.72 µs | +| 1 MB transfer, AES-256-GCM | 189.84 µs | 272.23 µs | 192.15 µs | - | 338.97 µs | - | 292.12 µs | +| 1 MB transfer, ChaCha20-Poly1305 | 621.49 µs | 609.72 µs | 594.88 µs | - | 1.17 ms | - | 661.80 µs | +| AES-128-GCM seal, 32 B | 18 ns | 37 ns | 42 ns | 73 ns | 42 ns | 168 ns | 55 ns | +| AES-128-GCM seal, 1350 B | 94 ns | 149 ns | 118 ns | 272 ns | 227 ns | 1.94 µs | 163 ns | +| AES-128-GCM seal, 16 KB | 781 ns | 1.33 µs | 799 ns | 2.49 µs | 2.02 µs | 22.02 µs | 1.34 µs | +| AES-128-GCM open, 32 B | 28 ns | 37 ns | 42 ns | 78 ns | 36 ns | 159 ns | 58 ns | +| AES-128-GCM open, 1350 B | 99 ns | 149 ns | 114 ns | 282 ns | 176 ns | 2.00 µs | 159 ns | +| AES-128-GCM open, 16 KB | 816 ns | 1.28 µs | 829 ns | 2.54 µs | 1.42 µs | 22.31 µs | 1.30 µs | +| AES-256-GCM seal, 32 B | 20 ns | 40 ns | 43 ns | 77 ns | 44 ns | 216 ns | 58 ns | +| AES-256-GCM seal, 1350 B | 106 ns | 173 ns | 133 ns | 313 ns | 258 ns | 2.83 µs | 186 ns | +| AES-256-GCM seal, 16 KB | 925 ns | 1.56 µs | 946 ns | 2.91 µs | 2.46 µs | 32.69 µs | 1.59 µs | +| AES-256-GCM open, 32 B | 28 ns | 38 ns | 45 ns | 82 ns | 38 ns | 218 ns | 62 ns | +| AES-256-GCM open, 1350 B | 107 ns | 173 ns | 124 ns | 322 ns | 203 ns | 2.85 µs | 189 ns | +| AES-256-GCM open, 16 KB | 917 ns | 1.57 µs | 921 ns | 2.96 µs | 1.74 µs | 32.51 µs | 1.60 µs | +| ChaCha20-Poly1305 seal, 32 B | 100 ns | 105 ns | 101 ns | 1.07 µs | 180 ns | 157 ns ✓ | 177 ns | +| ChaCha20-Poly1305 seal, 1350 B | 441 ns | 453 ns | 447 ns | 1.67 µs | 905 ns | 1.78 µs ✓ | 590 ns | +| ChaCha20-Poly1305 seal, 16 KB | 4.17 µs | 4.15 µs | 4.14 µs | 8.14 µs | 8.30 µs | 19.63 µs ✓ | 4.41 µs | +| XChaCha20-Poly1305 seal, 32 B | 188 ns | 199 ns | - | 889 ns | 259 ns | 248 ns | - | +| XChaCha20-Poly1305 seal, 1350 B | 838 ns | 687 ns | - | 1.74 µs | 1.35 µs | 2.56 µs | - | +| XChaCha20-Poly1305 seal, 16 KB | 6.26 µs | 6.27 µs | - | 12.28 µs | 12.79 µs | 27.40 µs | - | | AES-128 header protection | 2 ns | 3 ns | 3 ns | - | - | - | - | -| AES-256 header protection | 2 ns | 4 ns | 5 ns | - | - | - | - | +| AES-256 header protection | 2 ns | 5 ns | 5 ns | - | - | - | - | | ChaCha20 header protection | 54 ns ✓ | 69 ns | 61 ns | - | - | - | - | -| X25519 | 17.94 µs ✓ | 19.14 µs | 35.19 µs | 36.03 µs | 18.25 µs | 42.71 µs ✓ | 33.93 µs | -| P-256 ECDH | 29.99 µs | 32.02 µs | 34.21 µs | 120.66 µs | 32.86 µs | 168.88 µs ✓ | 52.96 µs | -| Ed25519 sign | 4.29 µs | 4.44 µs | 13.30 µs | 9.56 µs | 4.37 µs | 29.05 µs ✓ | 13.47 µs | -| Ed25519 verify | 21.87 µs | 21.82 µs | 26.51 µs | 22.15 µs | 21.56 µs | 41.91 µs ✓ | 45.62 µs | -| P-256 ECDSA sign | 7.08 µs | 12.42 µs | 12.38 µs | 31.49 µs | 8.81 µs | 60.93 µs ✓ | 14.37 µs | -| P-256 ECDSA verify | 30.78 µs | 30.34 µs | 33.20 µs | 102.68 µs | 32.93 µs | 146.39 µs ✓ | 46.07 µs | -| SHA-256, 64 B | 56 ns | 57 ns | 57 ns | 39 ns | 40 ns | 212 ns ✓ | 157 ns | -| SHA-256, 1350 B | 298 ns | 311 ns | 299 ns | 292 ns | 298 ns | 2.30 µs ✓ | 412 ns | -| SHA-256, 16 KB | 3.21 µs | 3.23 µs | 3.22 µs | 3.21 µs | 3.22 µs | 26.37 µs ✓ | 3.38 µs | -| SHA-512, 64 B | 132 ns | 133 ns ✓ | 139 ns | 125 ns | 146 ns | 163 ns ✓ | 227 ns | -| SHA-512, 1350 B | 1.23 µs | 1.26 µs ✓ | 1.26 µs | 1.17 µs | 1.50 µs | 1.72 µs ✓ | 1.19 µs | -| SHA-512, 16 KB | 14.31 µs | 14.09 µs ✓ | 14.09 µs | 13.36 µs | 17.62 µs | 19.80 µs ✓ | 12.30 µs | -| HMAC-SHA256, 64 B | 87 ns | 177 ns | 143 ns | 103 ns | 109 ns | 547 ns ✓ | 1.54 µs | -| HMAC-SHA256, 1350 B | 340 ns | 433 ns | 396 ns | 355 ns | 364 ns | 2.78 µs ✓ | 1.80 µs | -| HKDF-SHA256 extract and expand | 192 ns | 290 ns | 300 ns | 221 ns | - | 971 ns ✓ | 1.73 µs | -| HKDF-SHA256 expand | 81 ns | 126 ns | 120 ns | 84 ns | - | 456 ns ✓ | 1.24 µs | -| RSA-2048 PKCS#1 sign | 400.25 µs | 349.67 µs | 336.09 µs | 592.98 µs | 341.78 µs | - | 389.03 µs | -| RSA-2048 PKCS#1 verify | 8.99 µs | 10.99 µs | 12.56 µs | 29.03 µs | 13.94 µs | - | 15.50 µs | -| RSA-2048 PSS sign | 393.47 µs | 353.37 µs | 336.61 µs | 582.39 µs | 336.99 µs | 3.76 ms ✓ | 399.27 µs | -| RSA-2048 PSS verify | 9.45 µs | 11.06 µs | 13.17 µs | 35.09 µs | 14.43 µs | 247.95 µs ✓ | 16.29 µs | -| ML-KEM-768 key generation | 6.47 µs | 8.18 µs | - | 40.16 µs | 7.68 µs | 15.00 µs | 19.58 µs | -| ML-KEM-768 encapsulate | 6.71 µs | 8.59 µs | - | 42.13 µs | 9.13 µs | 12.80 µs | 18.57 µs | -| ML-KEM-768 decapsulate | 4.83 µs | 8.92 µs | - | 55.21 µs | 6.56 µs | 13.50 µs | 16.07 µs | -| P-384 ECDH | 100.00 µs | 111.30 µs | 370.25 µs | 430.31 µs | 171.49 µs | - | 262.12 µs | -| P-384 ECDSA sign | 25.54 µs | 46.52 µs | 198.39 µs | 104.37 µs | 89.42 µs | - | 89.07 µs | -| P-384 ECDSA verify | 98.58 µs | 115.28 µs | 359.23 µs | 360.90 µs | 168.94 µs | - | 215.87 µs | -| P-521 ECDH | 160.40 µs | 171.49 µs | - | 433.75 µs | - | - | 274.16 µs | -| P-521 ECDSA sign | 43.70 µs | 88.46 µs | - | 94.28 µs | - | - | 127.75 µs | -| P-521 ECDSA verify | 145.01 µs | 184.47 µs | - | 359.53 µs | - | - | 261.07 µs | +| X25519 | 19.68 µs ✓ | 19.54 µs | 35.63 µs | 36.52 µs | 18.50 µs | 43.11 µs ✓ | 34.02 µs | +| P-256 ECDH | 29.85 µs | 32.27 µs | 34.14 µs | 123.01 µs | 33.46 µs | 169.87 µs ✓ | 52.91 µs | +| Ed25519 sign | 4.15 µs | 4.56 µs | 13.14 µs | 9.61 µs | 4.39 µs | 28.97 µs ✓ | 13.69 µs | +| Ed25519 verify | 21.75 µs | 21.56 µs | 26.22 µs | 21.88 µs | 21.61 µs | 42.16 µs ✓ | 45.59 µs | +| P-256 ECDSA sign | 6.84 µs | 12.33 µs | 12.24 µs | 31.65 µs | 9.26 µs | 61.34 µs ✓ | 14.33 µs | +| P-256 ECDSA verify | 30.95 µs | 30.08 µs | 33.74 µs | 104.58 µs | 32.89 µs | 147.11 µs ✓ | 46.41 µs | +| SHA-256, 64 B | 28 ns | 57 ns | 58 ns | 40 ns | 41 ns | 211 ns ✓ | 161 ns | +| SHA-256, 1350 B | 279 ns | 312 ns | 304 ns | 296 ns | 297 ns | 2.31 µs ✓ | 415 ns | +| SHA-256, 16 KB | 3.24 µs | 3.28 µs | 3.28 µs | 3.26 µs | 3.27 µs | 26.81 µs ✓ | 3.39 µs | +| SHA-512, 64 B | 60 ns | 136 ns ✓ | 142 ns | 120 ns | 150 ns | 167 ns ✓ | 233 ns | +| SHA-512, 1350 B | 470 ns | 1.27 µs ✓ | 1.26 µs | 1.18 µs | 1.51 µs | 1.69 µs ✓ | 1.20 µs | +| SHA-512, 16 KB | 2.68 µs | 14.32 µs ✓ | 14.36 µs | 13.55 µs | 17.96 µs | 20.01 µs ✓ | 12.51 µs | +| HMAC-SHA256, 64 B | 75 ns | 180 ns | 145 ns | 104 ns | 115 ns | 536 ns ✓ | 1.56 µs | +| HMAC-SHA256, 1350 B | 327 ns | 434 ns | 399 ns | 358 ns | 363 ns | 2.66 µs ✓ | 1.83 µs | +| HKDF-SHA256 extract and expand | 152 ns | 288 ns | 305 ns | 223 ns | - | 965 ns ✓ | 1.76 µs | +| HKDF-SHA256 expand | 47 ns | 126 ns | 122 ns | 85 ns | - | 484 ns ✓ | 1.25 µs | +| RSA-2048 PKCS#1 sign | 348.43 µs | 349.47 µs | 341.11 µs | 588.67 µs | 343.91 µs | - | 397.72 µs | +| RSA-2048 PKCS#1 verify | 8.97 µs | 10.86 µs | 12.70 µs | 29.41 µs | 14.06 µs | - | 15.59 µs | +| RSA-2048 PSS sign | 346.52 µs | 350.45 µs | 341.45 µs | 588.33 µs | 342.67 µs | 4.10 ms ✓ | 395.81 µs | +| RSA-2048 PSS verify | 9.18 µs | 11.17 µs | 13.31 µs | 35.62 µs | 14.44 µs | 252.13 µs ✓ | 16.36 µs | +| ML-KEM-768 key generation | 6.45 µs | 8.27 µs | - | 40.26 µs | 7.67 µs | 15.15 µs | 19.80 µs | +| ML-KEM-768 encapsulate | 6.65 µs | 8.68 µs | - | 41.71 µs | 9.11 µs | 12.94 µs | 18.77 µs | +| ML-KEM-768 decapsulate | 4.69 µs | 9.02 µs | - | 54.19 µs | 6.59 µs | 13.44 µs | 16.05 µs | +| P-384 ECDH | 100.08 µs | 111.11 µs | 369.71 µs | 401.25 µs | 170.94 µs | - | 264.84 µs | +| P-384 ECDSA sign | 23.53 µs | 46.52 µs | 200.86 µs | 86.86 µs | 90.69 µs | - | 89.64 µs | +| P-384 ECDSA verify | 98.87 µs | 116.66 µs | 360.29 µs | 360.21 µs | 167.40 µs | - | 215.86 µs | +| P-521 ECDH | 160.77 µs | 170.98 µs | - | 431.17 µs | - | - | 276.21 µs | +| P-521 ECDSA sign | 40.56 µs | 89.64 µs | - | 95.29 µs | - | - | 129.20 µs | +| P-521 ECDSA verify | 147.09 µs | 186.61 µs | - | 359.57 µs | - | - | 267.51 µs | ### `nixos2`: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz -Measured 2026-11-04 at [`a6d9bd72`](https://github.com/moq-dev/rind/commit/a6d9bd7210fc2352f8dec4aa2078230f779398eb), on NixOS 26.11 (Zokor) (Linux 6.18.56) with rustc 1.98.1 (48a229cea 2026-09-01). - -Not timed on `nixos2`: AES-128 header protection, AES-256 header protection, ChaCha20 header protection. +Measured 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), on NixOS 26.11 (Zokor) (Linux 6.18.56) with rustc 1.98.1 (48a229cea 2026-09-01). @@ -193,65 +193,225 @@ Not timed on `nixos2`: AES-128 header protection, AES-256 header protection, Cha | Operation | rind | aws-lc-rs | ring | RustCrypto + dalek | graviola | libcrux | OpenSSL | |---|---|---|---|---|---|---|---| -| full handshake, X25519MLKEM768 | 311.29 µs | 452.02 µs | - | - | 375.56 µs | - | 837.01 µs | -| full handshake, X25519 | 267.07 µs | 379.99 µs | 339.51 µs | - | 316.39 µs | - | 688.73 µs | -| full handshake, P-256 | 302.72 µs | 414.57 µs | 327.28 µs | - | 371.36 µs | - | 750.80 µs | -| full handshake, Ed25519 certificate | 216.15 µs | 307.77 µs | 326.17 µs | - | 251.07 µs | - | 757.62 µs | -| full handshake, RSA-2048 certificate | 809.87 µs | 774.41 µs | 677.82 µs | - | 713.80 µs | - | 1.02 ms | -| resumed handshake, X25519 | 121.78 µs | 229.16 µs | 195.23 µs | - | 160.19 µs | - | 504.16 µs | -| 1 MB transfer, AES-128-GCM | 433.16 µs | 453.78 µs | 469.65 µs | - | 578.33 µs | - | 496.82 µs | -| 1 MB transfer, AES-256-GCM | 544.93 µs | 553.29 µs | 544.73 µs | - | 697.29 µs | - | 609.96 µs | -| 1 MB transfer, ChaCha20-Poly1305 | 924.76 µs | 932.29 µs | 928.70 µs | - | 1.64 ms | - | 1.00 ms | -| AES-128-GCM seal, 32 B | 42 ns ✓ | 89 ns | 72 ns | 101 ns | 72 ns | 290 ns | 161 ns | -| AES-128-GCM seal, 1350 B | 264 ns ✓ | 287 ns | 280 ns | 556 ns | 403 ns | 3.41 µs | 362 ns | -| AES-128-GCM seal, 16 KB | 2.38 µs ✓ | 2.46 µs | 2.38 µs | 5.63 µs | 3.84 µs | 38.50 µs | 2.53 µs | -| AES-128-GCM open, 32 B | 50 ns ✓ | 95 ns | 79 ns | 106 ns | 68 ns | 305 ns | 156 ns | -| AES-128-GCM open, 1350 B | 261 ns ✓ | 297 ns | 278 ns | 569 ns | 362 ns | 3.63 µs | 360 ns | -| AES-128-GCM open, 16 KB | 2.58 µs ✓ | 2.63 µs | 2.59 µs | 5.81 µs | 3.41 µs | 39.83 µs | 2.70 µs | -| AES-256-GCM seal, 32 B | 46 ns ✓ | 96 ns | 76 ns | 109 ns | 80 ns | 343 ns | 167 ns | -| AES-256-GCM seal, 1350 B | 343 ns ✓ | 364 ns | 356 ns | 648 ns | 485 ns | 4.49 µs | 438 ns | -| AES-256-GCM seal, 16 KB | 3.24 µs ✓ | 3.32 µs | 3.25 µs | 6.54 µs | 4.72 µs | 50.79 µs | 3.35 µs | -| AES-256-GCM open, 32 B | 57 ns ✓ | 104 ns | 83 ns | 118 ns | 79 ns | 385 ns | 173 ns | -| AES-256-GCM open, 1350 B | 351 ns ✓ | 391 ns | 371 ns | 672 ns | 456 ns | 4.55 µs | 436 ns | -| AES-256-GCM open, 16 KB | 3.58 µs ✓ | 3.56 µs | 3.59 µs | 6.77 µs | 4.38 µs | 50.89 µs | 3.64 µs | -| ChaCha20-Poly1305 seal, 32 B | 124 ns | 141 ns | 130 ns | 1.16 µs | 222 ns | 274 ns ✓ | 325 ns | -| ChaCha20-Poly1305 seal, 1350 B | 691 ns | 700 ns | 686 ns | 2.08 µs | 1.24 µs | 3.08 µs ✓ | 933 ns | -| ChaCha20-Poly1305 seal, 16 KB | 6.35 µs | 6.43 µs | 6.39 µs | 12.38 µs | 11.98 µs | 34.70 µs ✓ | 6.41 µs | -| XChaCha20-Poly1305 seal, 32 B | 270 ns | 282 ns | - | 1.28 µs | 335 ns | 400 ns | - | -| XChaCha20-Poly1305 seal, 1350 B | 814 ns | 839 ns | - | 2.20 µs | 1.37 µs | 3.12 µs | - | -| XChaCha20-Poly1305 seal, 16 KB | 6.51 µs | 6.55 µs | - | 12.11 µs | 11.96 µs | 34.02 µs | - | -| AES-128 header protection | - | - | - | - | - | - | - | -| AES-256 header protection | - | - | - | - | - | - | - | -| ChaCha20 header protection | - | - | - | - | - | - | - | -| X25519 | 26.86 µs ✓ | 33.12 µs | 55.23 µs | 60.51 µs | 25.17 µs | 73.49 µs ✓ | 55.22 µs | -| P-256 ECDH | 46.60 µs | 56.11 µs | 51.77 µs | 252.15 µs | 50.53 µs | 304.85 µs ✓ | 87.27 µs | -| Ed25519 sign | 7.09 µs | 7.54 µs | 22.05 µs | 16.08 µs | 7.27 µs | 49.67 µs ✓ | 28.46 µs | -| Ed25519 verify | 31.59 µs | 31.57 µs | 41.59 µs | 27.88 µs | 31.39 µs | 64.33 µs ✓ | 93.95 µs | -| P-256 ECDSA sign | 15.72 µs | 22.35 µs | 16.56 µs | 78.32 µs | 23.27 µs | 115.07 µs ✓ | 28.83 µs | -| P-256 ECDSA verify | 47.33 µs | 47.11 µs | 47.60 µs | 211.46 µs | 48.45 µs | 262.54 µs ✓ | 74.70 µs | -| SHA-256, 64 B | 276 ns | 313 ns | 289 ns | 483 ns | 579 ns | 487 ns ✓ | 514 ns | -| SHA-256, 1350 B | 2.88 µs | 2.98 µs | 2.83 µs | 5.33 µs | 6.11 µs | 5.27 µs ✓ | 2.69 µs | -| SHA-256, 16 KB | 31.57 µs | 31.63 µs | 31.56 µs | 58.88 µs | 69.99 µs | 61.29 µs ✓ | 28.35 µs | -| SHA-512, 64 B | 200 ns | 233 ns ✓ | 204 ns | 272 ns | 237 ns | 290 ns ✓ | 436 ns | -| SHA-512, 1350 B | 1.95 µs | 1.98 µs ✓ | 1.95 µs | 2.68 µs | 2.35 µs | 3.08 µs ✓ | 1.92 µs | -| SHA-512, 16 KB | 21.82 µs | 21.95 µs ✓ | 22.31 µs | 31.08 µs | 27.35 µs | 35.63 µs ✓ | 19.04 µs | -| HMAC-SHA256, 64 B | 690 ns | 840 ns | 746 ns | 1.25 µs | 1.47 µs | 1.22 µs ✓ | 3.90 µs | -| HMAC-SHA256, 1350 B | 3.29 µs | 3.49 µs | 3.39 µs | 6.54 µs | 7.49 µs | 7.14 µs ✓ | 6.24 µs | -| HKDF-SHA256 extract and expand | 1.18 µs | 1.35 µs | 1.26 µs | 2.11 µs | - | 2.17 µs ✓ | 4.68 µs | -| HKDF-SHA256 expand | 330 ns | 673 ns | 344 ns | 527 ns | - | 1.07 µs ✓ | 3.12 µs | -| RSA-2048 PKCS#1 sign | 567.70 µs | 454.36 µs | 442.48 µs | 1.16 ms | 458.57 µs | - | 471.98 µs | -| RSA-2048 PKCS#1 verify | 12.97 µs | 15.81 µs | 16.73 µs | 58.28 µs | 19.61 µs | - | 28.37 µs | -| RSA-2048 PSS sign | 576.25 µs | 459.05 µs | 440.44 µs | 1.17 ms | 453.66 µs | 7.10 ms ✓ | 481.14 µs | -| RSA-2048 PSS verify | 15.24 µs | 18.00 µs | 19.36 µs | 71.12 µs | 22.16 µs | 379.99 µs ✓ | 27.30 µs | -| ML-KEM-768 key generation | 12.10 µs | 23.32 µs | - | 71.58 µs | 11.04 µs | 30.74 µs | 42.66 µs | -| ML-KEM-768 encapsulate | 15.73 µs | 20.31 µs | - | 75.08 µs | 12.83 µs | 21.01 µs | 44.49 µs | -| ML-KEM-768 decapsulate | 8.28 µs | 16.61 µs | - | 89.79 µs | 8.30 µs | 19.93 µs | 33.05 µs | -| P-384 ECDH | 159.92 µs | 191.62 µs | 688.80 µs | 871.98 µs | 254.75 µs | - | 510.33 µs | -| P-384 ECDSA sign | 40.21 µs | 85.87 µs | 349.63 µs | 194.33 µs | 133.02 µs | - | 170.79 µs | -| P-384 ECDSA verify | 154.44 µs | 186.63 µs | 628.36 µs | 712.25 µs | 244.84 µs | - | 409.95 µs | -| P-521 ECDH | 225.21 µs | 255.05 µs | - | 822.79 µs | - | - | 498.14 µs | -| P-521 ECDSA sign | 65.70 µs | 160.14 µs | - | 192.13 µs | - | - | 224.59 µs | -| P-521 ECDSA verify | 236.22 µs | 307.98 µs | - | 666.03 µs | - | - | 465.58 µs | +| full handshake, X25519MLKEM768 | 302.43 µs | 458.06 µs | - | - | 375.57 µs | - | 830.76 µs | +| full handshake, X25519 | 260.02 µs | 369.74 µs | 337.91 µs | - | 315.73 µs | - | 686.50 µs | +| full handshake, P-256 | 295.92 µs | 417.28 µs | 327.88 µs | - | 368.79 µs | - | 760.04 µs | +| full handshake, Ed25519 certificate | 213.12 µs | 306.11 µs | 325.29 µs | - | 250.28 µs | - | 747.09 µs | +| full handshake, RSA-2048 certificate | 613.80 µs | 758.17 µs | 678.16 µs | - | 687.17 µs | - | 1.01 ms | +| resumed handshake, X25519 | 120.95 µs | 229.39 µs | 199.88 µs | - | 159.71 µs | - | 496.91 µs | +| 1 MB transfer, AES-128-GCM | 440.92 µs | 442.54 µs | 448.76 µs | - | 579.09 µs | - | 491.38 µs | +| 1 MB transfer, AES-256-GCM | 544.88 µs | 557.86 µs | 567.27 µs | - | 691.18 µs | - | 596.82 µs | +| 1 MB transfer, ChaCha20-Poly1305 | 923.82 µs | 928.09 µs | 925.14 µs | - | 1.64 ms | - | 983.97 µs | +| AES-128-GCM seal, 32 B | 43 ns ✓ | 89 ns | 71 ns | 100 ns | 71 ns | 282 ns | 156 ns | +| AES-128-GCM seal, 1350 B | 246 ns ✓ | 285 ns | 277 ns | 547 ns | 400 ns | 3.49 µs | 352 ns | +| AES-128-GCM seal, 16 KB | 2.33 µs ✓ | 2.42 µs | 2.38 µs | 5.62 µs | 3.75 µs | 39.94 µs | 2.45 µs | +| AES-128-GCM open, 32 B | 38 ns ✓ | 90 ns | 98 ns | 104 ns | 69 ns | 303 ns | 159 ns | +| AES-128-GCM open, 1350 B | 236 ns ✓ | 285 ns | 296 ns | 564 ns | 358 ns | 3.48 µs | 355 ns | +| AES-128-GCM open, 16 KB | 2.52 µs ✓ | 2.60 µs | 2.62 µs | 5.75 µs | 3.39 µs | 41.66 µs | 2.85 µs | +| AES-256-GCM seal, 32 B | 49 ns ✓ | 95 ns | 75 ns | 107 ns | 78 ns | 344 ns | 161 ns | +| AES-256-GCM seal, 1350 B | 325 ns ✓ | 363 ns | 353 ns | 623 ns | 476 ns | 4.50 µs | 437 ns | +| AES-256-GCM seal, 16 KB | 3.22 µs ✓ | 3.30 µs | 3.25 µs | 6.45 µs | 4.71 µs | 50.92 µs | 3.34 µs | +| AES-256-GCM open, 32 B | 45 ns ✓ | 101 ns | 107 ns | 118 ns | 73 ns | 363 ns | 172 ns | +| AES-256-GCM open, 1350 B | 328 ns ✓ | 422 ns | 388 ns | 677 ns | 510 ns | 4.74 µs | 643 ns | +| AES-256-GCM open, 16 KB | 3.62 µs ✓ | 3.69 µs | 3.70 µs | 7.23 µs | 4.54 µs | 53.96 µs | 3.87 µs | +| ChaCha20-Poly1305 seal, 32 B | 129 ns | 149 ns | 130 ns | 1.21 µs | 232 ns | 301 ns ✓ | 337 ns | +| ChaCha20-Poly1305 seal, 1350 B | 718 ns | 755 ns | 714 ns | 2.18 µs | 1.29 µs | 3.16 µs ✓ | 971 ns | +| ChaCha20-Poly1305 seal, 16 KB | 6.81 µs | 6.63 µs | 6.60 µs | 12.61 µs | 12.52 µs | 35.52 µs ✓ | 6.64 µs | +| XChaCha20-Poly1305 seal, 32 B | 256 ns | 278 ns | - | 1.27 µs | 335 ns | 400 ns | - | +| XChaCha20-Poly1305 seal, 1350 B | 804 ns | 831 ns | - | 2.20 µs | 1.32 µs | 3.16 µs | - | +| XChaCha20-Poly1305 seal, 16 KB | 6.38 µs | 6.44 µs | - | 12.04 µs | 11.86 µs | 33.42 µs | - | +| AES-128 header protection | 5 ns | 9 ns | 8 ns | - | - | - | - | +| AES-256 header protection | 8 ns | 10 ns | 10 ns | - | - | - | - | +| ChaCha20 header protection | 84 ns ✓ | 104 ns | 98 ns | - | - | - | - | +| X25519 | 25.00 µs ✓ | 30.89 µs | 53.60 µs | 56.59 µs | 24.95 µs | 72.34 µs ✓ | 55.20 µs | +| P-256 ECDH | 42.80 µs | 51.71 µs | 47.10 µs | 233.70 µs | 46.44 µs | 280.52 µs ✓ | 81.68 µs | +| Ed25519 sign | 7.13 µs | 7.81 µs | 22.26 µs | 17.40 µs | 7.22 µs | 53.66 µs ✓ | 31.01 µs | +| Ed25519 verify | 31.81 µs | 31.62 µs | 42.48 µs | 29.88 µs | 32.22 µs | 69.12 µs ✓ | 93.09 µs | +| P-256 ECDSA sign | 13.11 µs | 19.80 µs | 14.86 µs | 69.11 µs | 19.89 µs | 102.03 µs ✓ | 20.35 µs | +| P-256 ECDSA verify | 41.56 µs | 43.27 µs | 43.93 µs | 197.15 µs | 44.30 µs | 236.87 µs ✓ | 68.34 µs | +| SHA-256, 64 B | 244 ns | 307 ns | 277 ns | 473 ns | 576 ns | 485 ns ✓ | 505 ns | +| SHA-256, 1350 B | 2.46 µs | 2.79 µs | 2.82 µs | 5.11 µs | 6.07 µs | 5.23 µs ✓ | 2.68 µs | +| SHA-256, 16 KB | 28.06 µs | 31.46 µs | 32.37 µs | 58.17 µs | 69.84 µs | 61.68 µs ✓ | 28.83 µs | +| SHA-512, 64 B | 198 ns | 228 ns ✓ | 203 ns | 270 ns | 236 ns | 289 ns ✓ | 430 ns | +| SHA-512, 1350 B | 1.65 µs | 1.97 µs ✓ | 1.93 µs | 2.67 µs | 2.35 µs | 3.08 µs ✓ | 1.90 µs | +| SHA-512, 16 KB | 18.53 µs | 21.92 µs ✓ | 21.75 µs | 30.73 µs | 27.16 µs | 35.45 µs ✓ | 18.99 µs | +| HMAC-SHA256, 64 B | 628 ns | 811 ns | 707 ns | 1.19 µs | 1.44 µs | 1.20 µs ✓ | 3.69 µs | +| HMAC-SHA256, 1350 B | 2.79 µs | 3.30 µs | 3.19 µs | 5.80 µs | 7.05 µs | 6.02 µs ✓ | 5.94 µs | +| HKDF-SHA256 extract and expand | 1.15 µs | 1.44 µs | 1.31 µs | 1.98 µs | - | 2.04 µs ✓ | 4.33 µs | +| HKDF-SHA256 expand | 300 ns | 636 ns | 337 ns | 512 ns | - | 1.01 µs ✓ | 2.87 µs | +| RSA-2048 PKCS#1 sign | 447.43 µs | 448.68 µs | 434.47 µs | 1.14 ms | 445.92 µs | - | 453.81 µs | +| RSA-2048 PKCS#1 verify | 12.88 µs | 15.88 µs | 16.51 µs | 57.81 µs | 19.05 µs | - | 24.54 µs | +| RSA-2048 PSS sign | 445.92 µs | 461.87 µs | 437.28 µs | 1.15 ms | 450.24 µs | 7.22 ms ✓ | 456.55 µs | +| RSA-2048 PSS verify | 14.36 µs | 17.01 µs | 18.22 µs | 70.02 µs | 21.85 µs | 377.87 µs ✓ | 27.16 µs | +| ML-KEM-768 key generation | 10.24 µs | 18.44 µs | - | 59.97 µs | 10.41 µs | 20.05 µs | 40.63 µs | +| ML-KEM-768 encapsulate | 10.61 µs | 18.73 µs | - | 67.03 µs | 11.12 µs | 18.13 µs | 41.18 µs | +| ML-KEM-768 decapsulate | 7.07 µs | 16.01 µs | - | 84.37 µs | 7.42 µs | 19.04 µs | 31.67 µs | +| P-384 ECDH | 150.97 µs | 174.62 µs | 645.54 µs | 769.61 µs | 245.24 µs | - | 483.50 µs | +| P-384 ECDSA sign | 39.62 µs | 82.65 µs | 343.16 µs | 170.64 µs | 128.64 µs | - | 164.53 µs | +| P-384 ECDSA verify | 141.44 µs | 175.92 µs | 622.90 µs | 695.04 µs | 239.41 µs | - | 399.63 µs | +| P-521 ECDH | 233.76 µs | 262.34 µs | - | 841.50 µs | - | - | 497.39 µs | +| P-521 ECDSA sign | 64.26 µs | 158.67 µs | - | 185.93 µs | - | - | 221.00 µs | +| P-521 ECDSA verify | 214.43 µs | 303.23 µs | - | 636.37 µs | - | - | 460.02 µs | + + + +### `ovh-iad`: Intel Core Processor (Haswell, no TSX) + +Measured 2026-11-06 at [`0088ab19`](https://github.com/moq-dev/rind/commit/0088ab190278b8a01706c2f99008801cbbc12611), on NixOS 26.11 (Zokor) (Linux 6.18.40) with rustc 1.98.1 (48a229cea 2026-09-01). + +OVH VPS in Virginia, 4 shared vCPUs: other tenants add noise that a dedicated host's times lack. + +graviola isn't timed on `ovh-iad`: it requires ADX, which this CPU lacks. + + + + Times on ovh-iad + + +
+Times on ovh-iad + +| Operation | rind | aws-lc-rs | ring | RustCrypto + dalek | libcrux | OpenSSL | +|---|---|---|---|---|---|---| +| full handshake, X25519MLKEM768 | 676.16 µs | 776.76 µs | - | - | - | 1.48 ms | +| full handshake, X25519 | 476.73 µs | 540.28 µs | 568.18 µs | - | - | 1.14 ms | +| full handshake, P-256 | 532.32 µs | 614.10 µs | 577.09 µs | - | - | 1.35 ms | +| full handshake, Ed25519 certificate | 395.96 µs | 458.32 µs | 505.59 µs | - | - | 1.22 ms | +| full handshake, RSA-2048 certificate | 1.14 ms | 1.27 ms | 1.47 ms | - | - | 1.90 ms | +| resumed handshake, X25519 | 207.86 µs | 263.78 µs | 274.24 µs | - | - | 802.84 µs | +| 1 MB transfer, AES-128-GCM | 701.22 µs | 694.46 µs | 724.53 µs | - | - | 783.32 µs | +| 1 MB transfer, AES-256-GCM | 869.86 µs | 867.68 µs | 854.61 µs | - | - | 966.07 µs | +| 1 MB transfer, ChaCha20-Poly1305 | 1.58 ms | 1.56 ms | 1.59 ms | - | - | 1.77 ms | +| AES-128-GCM seal, 32 B | 69 ns ✓ | 138 ns | 111 ns | 157 ns | 446 ns | 242 ns | +| AES-128-GCM seal, 1350 B | 398 ns ✓ | 500 ns | 463 ns | 872 ns | 5.56 µs | 561 ns | +| AES-128-GCM seal, 16 KB | 3.83 µs ✓ | 4.04 µs | 3.72 µs | 8.91 µs | 62.33 µs | 4.03 µs | +| AES-128-GCM open, 32 B | 63 ns ✓ | 145 ns | 131 ns | 163 ns | 467 ns | 245 ns | +| AES-128-GCM open, 1350 B | 388 ns ✓ | 443 ns | 431 ns | 899 ns | 5.59 µs | 590 ns | +| AES-128-GCM open, 16 KB | 3.94 µs ✓ | 4.08 µs | 4.03 µs | 8.88 µs | 60.53 µs | 3.99 µs | +| AES-256-GCM seal, 32 B | 80 ns ✓ | 147 ns | 121 ns | 169 ns | 558 ns | 288 ns | +| AES-256-GCM seal, 1350 B | 514 ns ✓ | 577 ns | 568 ns | 965 ns | 6.99 µs | 678 ns | +| AES-256-GCM seal, 16 KB | 5.27 µs ✓ | 5.32 µs | 5.26 µs | 10.07 µs | 82.15 µs | 5.43 µs | +| AES-256-GCM open, 32 B | 70 ns ✓ | 156 ns | 132 ns | 179 ns | 571 ns | 266 ns | +| AES-256-GCM open, 1350 B | 488 ns ✓ | 593 ns | 581 ns | 1.02 µs | 7.11 µs | 702 ns | +| AES-256-GCM open, 16 KB | 5.19 µs ✓ | 5.51 µs | 5.38 µs | 10.28 µs | 80.09 µs | 5.46 µs | +| ChaCha20-Poly1305 seal, 32 B | 192 ns | 219 ns | 196 ns | 1.82 µs | 462 ns ✓ | 496 ns | +| ChaCha20-Poly1305 seal, 1350 B | 1.08 µs | 1.07 µs | 1.07 µs | 3.21 µs | 4.80 µs ✓ | 1.61 µs | +| ChaCha20-Poly1305 seal, 16 KB | 9.95 µs | 10.30 µs | 10.07 µs | 18.85 µs | 56.11 µs ✓ | 11.14 µs | +| XChaCha20-Poly1305 seal, 32 B | 402 ns | 432 ns | - | 1.98 µs | 653 ns | - | +| XChaCha20-Poly1305 seal, 1350 B | 1.31 µs | 1.32 µs | - | 3.46 µs | 5.11 µs | - | +| XChaCha20-Poly1305 seal, 16 KB | 9.99 µs | 10.34 µs | - | 19.22 µs | 52.60 µs | - | +| AES-128 header protection | 7 ns | 12 ns | 12 ns | - | - | - | +| AES-256 header protection | 10 ns | 15 ns | 15 ns | - | - | - | +| ChaCha20 header protection | 128 ns ✓ | 157 ns | 139 ns | - | - | - | +| X25519 | 50.92 µs ✓ | 53.04 µs | 80.26 µs | 90.44 µs | 114.24 µs ✓ | 100.16 µs | +| P-256 ECDH | 82.02 µs | 88.08 µs | 86.79 µs | 393.87 µs | 460.35 µs ✓ | 144.87 µs | +| Ed25519 sign | 11.89 µs | 12.66 µs | 29.88 µs | 23.99 µs | 74.31 µs ✓ | 42.70 µs | +| Ed25519 verify | 59.90 µs | 60.52 µs | 62.83 µs | 47.74 µs | 97.20 µs ✓ | 140.19 µs | +| P-256 ECDSA sign | 23.25 µs | 25.45 µs | 26.75 µs | 114.03 µs | 161.25 µs ✓ | 32.99 µs | +| P-256 ECDSA verify | 81.07 µs | 77.55 µs | 80.47 µs | 316.15 µs | 375.03 µs ✓ | 124.52 µs | +| SHA-256, 64 B | 392 ns | 501 ns | 449 ns | 739 ns | 773 ns ✓ | 814 ns | +| SHA-256, 1350 B | 4.04 µs | 4.38 µs | 4.36 µs | 8.11 µs | 8.52 µs ✓ | 4.48 µs | +| SHA-256, 16 KB | 44.12 µs | 51.22 µs | 55.38 µs | 93.62 µs | 97.65 µs ✓ | 45.31 µs | +| SHA-512, 64 B | 312 ns | 373 ns ✓ | 328 ns | 432 ns | 489 ns ✓ | 771 ns | +| SHA-512, 1350 B | 2.70 µs | 3.11 µs ✓ | 3.30 µs | 4.38 µs | 4.98 µs ✓ | 3.06 µs | +| SHA-512, 16 KB | 30.70 µs | 35.44 µs ✓ | 34.66 µs | 50.00 µs | 56.95 µs ✓ | 30.66 µs | +| HMAC-SHA256, 64 B | 1.01 µs | 1.31 µs | 1.11 µs | 1.94 µs | 1.93 µs ✓ | 6.01 µs | +| HMAC-SHA256, 1350 B | 4.40 µs | 5.15 µs | 5.00 µs | 9.13 µs | 9.50 µs ✓ | 9.61 µs | +| HKDF-SHA256 extract and expand | 1.74 µs | 2.15 µs | 1.98 µs | 3.08 µs | 3.26 µs ✓ | 7.08 µs | +| HKDF-SHA256 expand | 488 ns | 1.00 µs | 526 ns | 792 ns | 1.65 µs ✓ | 4.55 µs | +| RSA-2048 PKCS#1 sign | 805.45 µs | 872.67 µs | 1.19 ms | 1.97 ms | - | 884.01 µs | +| RSA-2048 PKCS#1 verify | 31.54 µs | 36.27 µs | 40.64 µs | 94.92 µs | - | 50.88 µs | +| RSA-2048 PSS sign | 785.33 µs | 842.38 µs | 1.13 ms | 1.90 ms | 11.70 ms ✓ | 891.02 µs | +| RSA-2048 PSS verify | 32.94 µs | 37.98 µs | 41.62 µs | 111.34 µs | 620.80 µs ✓ | 55.13 µs | +| ML-KEM-768 key generation | 19.03 µs | 24.20 µs | - | 99.32 µs | 36.70 µs | 64.00 µs | +| ML-KEM-768 encapsulate | 19.37 µs | 25.59 µs | - | 107.39 µs | 32.08 µs | 68.64 µs | +| ML-KEM-768 decapsulate | 12.58 µs | 28.87 µs | - | 129.01 µs | 34.10 µs | 49.30 µs | +| P-384 ECDH | 276.11 µs | 303.78 µs | 1.05 ms | 1.24 ms | - | 794.72 µs | +| P-384 ECDSA sign | 70.24 µs | 131.24 µs | 547.60 µs | 268.01 µs | - | 268.60 µs | +| P-384 ECDSA verify | 261.01 µs | 315.77 µs | 1.05 ms | 1.08 ms | - | 657.01 µs | +| P-521 ECDH | 477.22 µs | 502.59 µs | - | 1.26 ms | - | 751.84 µs | +| P-521 ECDSA sign | 122.73 µs | 260.74 µs | - | 289.27 µs | - | 378.85 µs | +| P-521 ECDSA verify | 434.67 µs | 544.59 µs | - | 1.02 ms | - | 750.34 µs | + +
+ +### `ovh-sea`: Intel Core Processor (Haswell, no TSX) + +Measured 2026-11-06 at [`0088ab19`](https://github.com/moq-dev/rind/commit/0088ab190278b8a01706c2f99008801cbbc12611), on NixOS 26.11 (Zokor) (Linux 6.18.40) with rustc 1.98.1 (48a229cea 2026-09-01). + +OVH VPS in Oregon, 4 shared vCPUs: other tenants add noise that a dedicated host's times lack. + +graviola isn't timed on `ovh-sea`: it requires ADX, which this CPU lacks. + + + + Times on ovh-sea + + +
+Times on ovh-sea + +| Operation | rind | aws-lc-rs | ring | RustCrypto + dalek | libcrux | OpenSSL | +|---|---|---|---|---|---|---| +| full handshake, X25519MLKEM768 | 585.86 µs | 682.34 µs | - | - | - | 1.32 ms | +| full handshake, X25519 | 454.19 µs | 510.37 µs | 526.42 µs | - | - | 1.08 ms | +| full handshake, P-256 | 511.71 µs | 582.16 µs | 541.36 µs | - | - | 1.18 ms | +| full handshake, Ed25519 certificate | 378.30 µs | 436.82 µs | 473.04 µs | - | - | 1.18 ms | +| full handshake, RSA-2048 certificate | 1.09 ms | 1.20 ms | 1.40 ms | - | - | 1.76 ms | +| resumed handshake, X25519 | 195.20 µs | 258.21 µs | 262.51 µs | - | - | 723.47 µs | +| 1 MB transfer, AES-128-GCM | 678.24 µs | 689.64 µs | 668.04 µs | - | - | 747.12 µs | +| 1 MB transfer, AES-256-GCM | 849.60 µs | 845.52 µs | 849.22 µs | - | - | 933.35 µs | +| 1 MB transfer, ChaCha20-Poly1305 | 1.44 ms | 1.43 ms | 1.44 ms | - | - | 1.71 ms | +| AES-128-GCM seal, 32 B | 66 ns ✓ | 136 ns | 111 ns | 155 ns | 435 ns | 233 ns | +| AES-128-GCM seal, 1350 B | 387 ns ✓ | 445 ns | 427 ns | 854 ns | 5.44 µs | 550 ns | +| AES-128-GCM seal, 16 KB | 3.70 µs ✓ | 3.70 µs | 3.67 µs | 8.67 µs | 60.39 µs | 3.81 µs | +| AES-128-GCM open, 32 B | 61 ns ✓ | 138 ns | 124 ns | 162 ns | 465 ns | 242 ns | +| AES-128-GCM open, 1350 B | 373 ns ✓ | 444 ns | 440 ns | 881 ns | 5.33 µs | 552 ns | +| AES-128-GCM open, 16 KB | 3.78 µs ✓ | 3.90 µs | 3.77 µs | 8.84 µs | 60.11 µs | 4.03 µs | +| AES-256-GCM seal, 32 B | 74 ns ✓ | 146 ns | 117 ns | 166 ns | 531 ns | 250 ns | +| AES-256-GCM seal, 1350 B | 495 ns ✓ | 559 ns | 538 ns | 963 ns | 6.89 µs | 651 ns | +| AES-256-GCM seal, 16 KB | 5.00 µs ✓ | 5.10 µs | 5.02 µs | 9.97 µs | 78.65 µs | 5.12 µs | +| AES-256-GCM open, 32 B | 68 ns ✓ | 146 ns | 127 ns | 173 ns | 562 ns | 248 ns | +| AES-256-GCM open, 1350 B | 480 ns ✓ | 560 ns | 537 ns | 991 ns | 6.87 µs | 649 ns | +| AES-256-GCM open, 16 KB | 5.15 µs ✓ | 5.23 µs | 5.22 µs | 10.13 µs | 78.52 µs | 5.38 µs | +| ChaCha20-Poly1305 seal, 32 B | 187 ns | 210 ns | 189 ns | 1.74 µs | 429 ns ✓ | 495 ns | +| ChaCha20-Poly1305 seal, 1350 B | 1.03 µs | 1.06 µs | 1.04 µs | 3.16 µs | 4.62 µs ✓ | 1.57 µs | +| ChaCha20-Poly1305 seal, 16 KB | 9.66 µs | 9.60 µs | 9.59 µs | 18.38 µs | 52.14 µs ✓ | 10.99 µs | +| XChaCha20-Poly1305 seal, 32 B | 402 ns | 433 ns | - | 1.98 µs | 631 ns | - | +| XChaCha20-Poly1305 seal, 1350 B | 1.25 µs | 1.32 µs | - | 3.36 µs | 4.83 µs | - | +| XChaCha20-Poly1305 seal, 16 KB | 9.89 µs | 9.93 µs | - | 18.67 µs | 51.64 µs | - | +| AES-128 header protection | 7 ns | 12 ns | 12 ns | - | - | - | +| AES-256 header protection | 9 ns | 15 ns | 15 ns | - | - | - | +| ChaCha20 header protection | 123 ns ✓ | 151 ns | 136 ns | - | - | - | +| X25519 | 49.74 µs ✓ | 50.78 µs | 75.97 µs | 89.48 µs | 111.77 µs ✓ | 96.94 µs | +| P-256 ECDH | 79.73 µs | 84.92 µs | 83.88 µs | 361.66 µs | 435.47 µs ✓ | 135.67 µs | +| Ed25519 sign | 11.76 µs | 12.44 µs | 28.85 µs | 23.39 µs | 74.60 µs ✓ | 41.54 µs | +| Ed25519 verify | 58.82 µs | 57.65 µs | 60.53 µs | 45.94 µs | 94.85 µs ✓ | 136.82 µs | +| P-256 ECDSA sign | 21.44 µs | 23.66 µs | 25.02 µs | 105.57 µs | 155.91 µs ✓ | 31.72 µs | +| P-256 ECDSA verify | 78.07 µs | 76.02 µs | 77.17 µs | 304.06 µs | 365.46 µs ✓ | 112.54 µs | +| SHA-256, 64 B | 381 ns | 479 ns | 425 ns | 734 ns | 751 ns ✓ | 792 ns | +| SHA-256, 1350 B | 3.82 µs | 4.30 µs | 4.27 µs | 7.80 µs | 8.29 µs ✓ | 4.16 µs | +| SHA-256, 16 KB | 43.31 µs | 48.32 µs | 48.73 µs | 89.76 µs | 94.03 µs ✓ | 43.45 µs | +| SHA-512, 64 B | 310 ns | 357 ns ✓ | 312 ns | 418 ns | 448 ns ✓ | 671 ns | +| SHA-512, 1350 B | 2.61 µs | 2.99 µs ✓ | 2.93 µs | 4.17 µs | 4.74 µs ✓ | 2.96 µs | +| SHA-512, 16 KB | 28.35 µs | 33.98 µs ✓ | 33.85 µs | 47.68 µs | 55.08 µs ✓ | 29.86 µs | +| HMAC-SHA256, 64 B | 964 ns | 1.25 µs | 1.11 µs | 1.84 µs | 1.85 µs ✓ | 5.65 µs | +| HMAC-SHA256, 1350 B | 4.33 µs | 5.01 µs | 4.88 µs | 8.93 µs | 9.26 µs ✓ | 9.20 µs | +| HKDF-SHA256 extract and expand | 1.71 µs | 2.07 µs | 1.84 µs | 3.02 µs | 3.05 µs ✓ | 6.74 µs | +| HKDF-SHA256 expand | 462 ns | 988 ns | 509 ns | 771 ns | 1.58 µs ✓ | 4.47 µs | +| RSA-2048 PKCS#1 sign | 744.79 µs | 767.91 µs | 1.00 ms | 1.77 ms | - | 786.07 µs | +| RSA-2048 PKCS#1 verify | 30.16 µs | 34.24 µs | 37.78 µs | 87.58 µs | - | 47.33 µs | +| RSA-2048 PSS sign | 743.83 µs | 772.63 µs | 993.35 µs | 1.77 ms | 10.71 ms ✓ | 784.77 µs | +| RSA-2048 PSS verify | 32.49 µs | 35.56 µs | 39.91 µs | 107.72 µs | 582.63 µs ✓ | 51.25 µs | +| ML-KEM-768 key generation | 17.40 µs | 23.24 µs | - | 92.15 µs | 34.82 µs | 62.15 µs | +| ML-KEM-768 encapsulate | 18.55 µs | 23.54 µs | - | 101.25 µs | 31.43 µs | 63.30 µs | +| ML-KEM-768 decapsulate | 12.10 µs | 27.41 µs | - | 127.16 µs | 32.99 µs | 48.46 µs | +| P-384 ECDH | 265.15 µs | 293.83 µs | 986.79 µs | 1.17 ms | - | 744.13 µs | +| P-384 ECDSA sign | 67.30 µs | 126.70 µs | 546.26 µs | 263.32 µs | - | 253.09 µs | +| P-384 ECDSA verify | 253.92 µs | 297.22 µs | 957.13 µs | 1.05 ms | - | 631.24 µs | +| P-521 ECDH | 453.02 µs | 486.31 µs | - | 1.21 ms | - | 720.27 µs | +| P-521 ECDSA sign | 115.63 µs | 251.35 µs | - | 288.95 µs | - | 343.62 µs | +| P-521 ECDSA verify | 406.77 µs | 524.48 µs | - | 1.03 ms | - | 698.05 µs |
@@ -261,59 +421,38 @@ A cold `cargo build --release` of a minimal binary per library (AES-128-GCM, SHA ### `nixos` -Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086), with rustc 1.98.1 (48a229cea 2026-09-01), gcc (GCC) 16.2.0, and 16 jobs. - -| Build | Wall s (range) | CPU s | Stripped MB | Tools needed | Crates | -|---|---|---|---|---|---| -| rind | 4.2 (4.1 to 4.2) | 9 | 0.86 | none | 5 | -| aws-lc-rs | 16.3 (16.3 to 16.3) | 54 | 2.99 | cc | 14 | -| ring | 6.7 (6.7 to 6.7) | 9 | 0.74 | cc | 9 | -| RustCrypto + dalek | 4.1 (4.0 to 4.1) | 21 | 0.54 | none | 57 | -| graviola | 2.6 (2.6 to 2.6) | 5 | 0.91 | none | 5 | -| libcrux | 6.8 (6.8 to 6.8) | 16 | 0.75 | none | 27 | -| OpenSSL, the system's, linked dynamically | 3.9 (3.9 to 3.9) | 10 | 0.38 | cc, pkg-config | 18 | -| OpenSSL, vendored | 22.7 (22.6 to 22.7) | 200 | 5.13 | cc, make, perl | 19 | -| rustls + rind-rustls | 4.8 (4.8 to 4.8) | 25 | 2.89 | none | 14 | -| rustls + rind-rustls, one TLS 1.3 suite, X25519, and P-256 | 4.8 (4.8 to 4.8) | 25 | 1.80 | none | 14 | -| rustls + aws-lc-rs | 19.8 (19.7 to 19.8) | 70 | 4.11 | cc | 20 | -| rustls + ring | 10.1 (10.1 to 10.1) | 24 | 1.94 | cc | 16 | +Not measured: error: host is busy (load average 8.2 on 32 CPUs) ### `desktop` -Measured 2026-11-05 at [`6024d155`](https://github.com/moq-dev/rind/commit/6024d1557147b1f5dae1da700ed7c7bee38cd086), with rustc 1.98.1 (48a229cea 2026-09-01), gcc (GCC) 16.2.0, and 12 jobs. - -| Build | Wall s (range) | CPU s | Stripped MB | Tools needed | Crates | -|---|---|---|---|---|---| -| rind | 3.0 (3.0 to 3.0) | 7 | 0.86 | none | 5 | -| aws-lc-rs | 11.7 (11.6 to 11.7) | 37 | 2.99 | cc | 14 | -| ring | 4.9 (4.9 to 5.0) | 7 | 0.74 | cc | 9 | -| RustCrypto + dalek | 2.8 (2.8 to 2.8) | 16 | 0.54 | none | 57 | -| graviola | 1.9 (1.9 to 1.9) | 4 | 0.91 | none | 5 | -| libcrux | 4.7 (4.7 to 4.7) | 12 | 0.75 | none | 27 | -| OpenSSL, the system's, linked dynamically | 2.8 (2.8 to 2.8) | 7 | 0.38 | cc, pkg-config | 18 | -| OpenSSL, vendored | 17.7 (17.7 to 17.8) | 136 | 5.13 | cc, make, perl | 19 | -| rustls + rind-rustls | 3.5 (3.5 to 3.5) | 19 | 2.89 | none | 14 | -| rustls + rind-rustls, one TLS 1.3 suite, X25519, and P-256 | 3.5 (3.5 to 3.5) | 19 | 1.80 | none | 14 | -| rustls + aws-lc-rs | 14.4 (14.4 to 14.4) | 49 | 4.11 | cc | 20 | -| rustls + ring | 7.5 (7.5 to 7.6) | 19 | 1.94 | cc | 16 | +Not measured: error: host is busy (load average 49.3 on 24 CPUs) ### `nixos2` -Measured 2026-11-04 at [`a6d9bd72`](https://github.com/moq-dev/rind/commit/a6d9bd7210fc2352f8dec4aa2078230f779398eb), with rustc 1.98.1 (48a229cea 2026-09-01), gcc (GCC) 16.2.0, and 2 jobs. +Measured 2026-11-06 at [`f95b91da`](https://github.com/moq-dev/rind/commit/f95b91da886bee265dbd836192a7ade2f9158c47), with rustc 1.98.1 (48a229cea 2026-09-01), gcc (GCC) 16.2.0, and 3 jobs. | Build | Wall s (range) | CPU s | Stripped MB | Tools needed | Crates | |---|---|---|---|---|---| -| rind | 7.6 (7.6 to 7.6) | 11 | 0.83 | none | 5 | -| aws-lc-rs | 33.0 (33.0 to 33.2) | 62 | 2.99 | cc | 14 | -| ring | 10.3 (9.9 to 10.4) | 13 | 0.74 | cc | 9 | -| RustCrypto + dalek | 11.9 (11.9 to 12.0) | 23 | 0.54 | none | 57 | -| graviola | 4.5 (4.4 to 4.6) | 6 | 0.91 | none | 5 | -| libcrux | 10.7 (10.6 to 10.8) | 20 | 0.75 | none | 27 | -| OpenSSL, the system's, linked dynamically | 7.0 (7.0 to 7.1) | 12 | 0.38 | cc, pkg-config | 18 | -| OpenSSL, vendored | 127.1 (119.3 to 132.6) | 242 | 5.13 | cc, make, perl | 19 | -| rustls + rind-rustls | 16.6 (16.2 to 17.9) | 33 | 2.87 | none | 14 | -| rustls + aws-lc-rs | 63.4 (61.3 to 68.8) | 118 | 4.11 | cc | 20 | -| rustls + ring | 22.9 (22.6 to 23.0) | 35 | 1.94 | cc | 16 | +| rind | 7.2 (7.2 to 7.3) | 12 | 0.88 | none | 5 | +| aws-lc-rs | 26.2 (26.2 to 26.2) | 63 | 2.99 | cc | 14 | +| ring | 9.3 (9.2 to 9.4) | 12 | 0.74 | cc | 9 | +| RustCrypto + dalek | 8.3 (8.2 to 8.3) | 24 | 0.54 | none | 57 | +| graviola | 3.8 (3.8 to 3.8) | 6 | 0.91 | none | 5 | +| libcrux | 9.7 (9.6 to 9.7) | 20 | 0.75 | none | 27 | +| OpenSSL, the system's, linked dynamically | 5.8 (5.8 to 5.8) | 12 | 0.38 | cc, pkg-config | 18 | +| OpenSSL, vendored | 82.3 (81.0 to 82.5) | 220 | 5.13 | cc, make, perl | 19 | +| rustls + rind-rustls | 11.3 (11.3 to 11.4) | 31 | 2.95 | none | 14 | +| rustls + rind-rustls, one TLS 1.3 suite, X25519, and P-256 | 11.8 (11.5 to 11.8) | 33 | 1.82 | none | 14 | +| rustls + aws-lc-rs | 36.6 (36.0 to 38.2) | 89 | 4.11 | cc | 20 | +| rustls + ring | 16.4 (16.2 to 16.4) | 31 | 1.94 | cc | 16 | + +### `ovh-iad` + +Not measured: error: host is busy (load average 1.0 on 4 CPUs) + +### `ovh-sea` + +Not measured: error: host is busy (load average 1.3 on 4 CPUs) ## CPU tiers @@ -539,12 +678,10 @@ Each operation where another library is more than 10% faster than rind, on a hos | Operation | On | rind's time over the fastest | Decision | |---|---|---|---| -| RSA-2048 PKCS#1 sign, RSA-2048 PSS sign, full handshake, RSA-2048 certificate | `nixos`, `desktop`, `nixos2` | 1.11× to 1.31× (graviola, ring) | [Confirm x86_64 RSA-2048 signing level in the report](quest/m2/speed/x86-rsa2048-sign.md) | -| SHA-256, 64 B | `nixos`, `desktop` | 1.38× to 1.44× (RustCrypto + dalek) | Narrowed by [#352](https://github.com/moq-dev/rind/pull/352), after this data: on the SHA extensions the last block is padded and the digest written in registers, and `digest::Context::finish` takes `&mut self`, so it no longer copies the context. Interleaved runs on `nixos` measured rind at 1.16× RustCrypto's time and 1.03× graviola's at 64 B, from 1.44×, and ahead of both at 32 B; `digest::digest` beats RustCrypto at 64 B. Most of the rest is the context's wipe on drop, which aws-lc does and RustCrypto does not: a build without it measured level with RustCrypto. | -| SHA-512, 16 KB | `nixos`, `desktop`, `nixos2` | 1.15× to 1.37× (OpenSSL) | Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: CPUs with AVX2 run OpenSSL's AVX2 routine, the one OpenSSL runs on `nixos2`, and those with the SHA512 instructions OpenSSL's routine for them. Interleaved runs measured rind at 0.96× OpenSSL's time on `nixos` and 0.22× on `desktop`. The next refresh drops this entry. | -| SHA-256, 16 KB | `nixos2` | 1.11× (OpenSSL) | Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: CPUs with AVX2 but without the SHA extensions run OpenSSL's AVX2 routine, the one OpenSSL runs on `nixos2`. The next refresh drops this entry. | -| SHA-512, 1350 B | `nixos` | 1.83× (OpenSSL) | Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: Zen 3 runs OpenSSL's AVX2 routine rather than aws-lc's scalar one, which interleaved runs measured at 0.84× OpenSSL's time at this size. The next refresh drops this entry. | -| Ed25519 verify, ML-KEM-768 encapsulate | `nixos2` | 1.13× to 1.23× (RustCrypto + dalek, graviola) | From an older run than the other hosts', before [#339](https://github.com/moq-dev/rind/pull/339) reworked Ed25519 for its proof. Neither shows on the other hosts, and the next refresh rechecks both. | +| SHA-256, 64 B | `nixos` | 1.17× (RustCrypto + dalek) | Narrowed by [#352](https://github.com/moq-dev/rind/pull/352): on the SHA extensions the last block is padded and the digest written in registers, and `digest::Context::finish` takes `&mut self`, so it no longer copies the context. Most of the rest was the context's wipe on drop, which a build without it measured level with RustCrypto, and [#394](https://github.com/moq-dev/rind/pull/394) removed it after this data. The next refresh rechecks it. | +| RSA-2048 PKCS#1 sign | `nixos` | 1.10× (graviola) | Noise: other work kept 5 CPUs busy during this run, in which PSS signing, the same exponentiation, measured 0.95× graviola's time. Interleaved runs on `nixos` the same morning measured rind's PKCS#1 signing at 436 to 446 µs against graviola's 432 to 542 µs and ring's 459 to 568 µs. The next refresh rechecks it. | +| 1 MB transfer, AES-128-GCM, XChaCha20-Poly1305 seal, 1350 B | `desktop` | 1.11× to 1.22× (aws-lc-rs, ring) | Noise: other work kept 5 CPUs busy during this run. The run before it measured 0.99× ring's and 0.97× aws-lc-rs's time, and neither shows on another host. The next refresh rechecks both. | +| Ed25519 verify | `ovh-iad`, `ovh-sea` | 1.25× to 1.28× (RustCrypto + dalek) | These VPSes' virtual CPUs hide ADX, as CPUs older than Broadwell and Zen lack it, and there rind runs s2n-bignum's verified `_alt` routines, which RustCrypto's AVX2 backend beats. | | `p256-ecdsa-verify/*` | no ADX tier | 1.14× (aws-lc-rs) | Only CPUs older than Broadwell and Zen lack ADX, and there rind runs s2n-bignum's verified `_alt` routines. | | `chacha20poly1305/*/16KB`, `xchacha20poly1305/*/16KB` | no AES-NI tier | 1.17× (aws-lc-rs) | Without SSE4.1 rind runs Graviola's scalar Poly1305 rather than port BoringSSL's SSE2 `poly1305_vec.c` for CPUs older than Westmere, as README records. | diff --git a/benchmarks/data/desktop.json b/benchmarks/data/desktop.json index 0abb05ccb..f938ff1e1 100644 --- a/benchmarks/data/desktop.json +++ b/benchmarks/data/desktop.json @@ -1,8 +1,8 @@ { "schema": 1, "host": "desktop", - "commit": "6024d1557147b1f5dae1da700ed7c7bee38cd086", - "started": "2026-11-05T01:00:32+00:00", + "commit": "f95b91da886bee265dbd836192a7ade2f9158c47", + "started": "2026-11-06T15:07:11+00:00", "cpu": { "model": "Intel(R) Core(TM) Ultra 7 270K Plus", "arch": "x86_64", @@ -15,8 +15,8 @@ }, "libraries": { "rind": { - "rind": "0.1.12", - "rind-rustls": "0.1.12" + "rind": "0.1.13", + "rind-rustls": "0.1.13" }, "aws-lc-rs": { "aws-lc-rs": "1.19.0", @@ -29,6 +29,7 @@ "aes-gcm": "0.11.1", "chacha20poly1305": "0.11.0", "sha2": "0.11.1", + "sha3": "0.12.0", "hmac": "0.13.0", "hkdf": "0.13.0", "p256": "0.14.0", @@ -53,7 +54,8 @@ "libcrux-hmac": "0.0.9", "libcrux-ml-kem": "0.0.11", "libcrux-rsa": "0.0.9", - "libcrux-sha2": "0.0.9" + "libcrux-sha2": "0.0.9", + "libcrux-sha3": "0.0.11" }, "openssl": { "openssl": "0.10.82", @@ -73,6 +75,7 @@ "vaes": 1, "pclmulqdq": 1, "vpclmulqdq": 1, + "bmi1": 1, "bmi2": 1, "movbe": 1, "popcnt": 1, @@ -87,13 +90,14 @@ "avx512vl": 0, "avx512vbmi": 0, "avx512vbmi2": 0, - "sha": 1 + "sha": 1, + "sha512": 1 }, "compatible": 1, "supports_avx512_aes_gcm": 0 }, "status": "ok", - "finished": "2026-11-05T01:28:33+00:00", + "finished": "2026-11-06T15:35:01+00:00", "criterion_args": [ "--noplot", "--warm-up-time", @@ -104,19 +108,19 @@ ], "load": { "limit_cpus": 2.4, - "busy_cpus_before_build": 2.25, - "busy_cpus_before_run": 1.62, - "other_busy_cpus_during_run": 1.95, - "noisy": false + "busy_cpus_before_build": 1.33, + "busy_cpus_before_run": 1.18, + "other_busy_cpus_during_run": 5.06, + "noisy": true }, "results": [ { "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519mlkem768/aws-lc-rs", - "ns": 237009.72447268607, - "ns_low": 236807.86563477607, - "ns_high": 237256.51208001087, + "ns": 235602.92708635042, + "ns_low": 235421.21473756724, + "ns_high": 235801.31264051996, "throughput": { "Elements": 1 } @@ -125,9 +129,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519mlkem768/graviola", - "ns": 188124.06563691443, - "ns_low": 188063.73734837855, - "ns_high": 188190.23813393514, + "ns": 191486.0303517068, + "ns_low": 191443.03129367434, + "ns_high": 191533.09950716107, "throughput": { "Elements": 1 } @@ -136,9 +140,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519mlkem768/openssl", - "ns": 435262.5519343875, - "ns_low": 434147.09593126184, - "ns_high": 436470.64367065177, + "ns": 437458.1804477612, + "ns_low": 436346.2998567796, + "ns_high": 438671.4818288595, "throughput": { "Elements": 1 } @@ -147,9 +151,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519mlkem768/rind", - "ns": 176382.79603960397, - "ns_low": 176308.1994793766, - "ns_high": 176461.01395914442, + "ns": 174971.07030589625, + "ns_low": 174930.5963357798, + "ns_high": 175015.37161486153, "throughput": { "Elements": 1 } @@ -158,9 +162,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519/aws-lc-rs", - "ns": 205120.36739667997, - "ns_low": 204989.27136529208, - "ns_high": 205266.89766677964, + "ns": 203616.39598837495, + "ns_low": 203473.3954267936, + "ns_high": 203765.58439923386, "throughput": { "Elements": 1 } @@ -169,9 +173,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519/graviola", - "ns": 161324.18514260382, - "ns_low": 161275.2623460072, - "ns_high": 161375.96192924227, + "ns": 162548.43032067386, + "ns_low": 162408.5155544094, + "ns_high": 162703.82980717006, "throughput": { "Elements": 1 } @@ -180,9 +184,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519/openssl", - "ns": 365011.9129200532, - "ns_low": 364871.2814546178, - "ns_high": 365167.302820737, + "ns": 367791.4381853111, + "ns_low": 367577.9680065379, + "ns_high": 368010.3993318318, "throughput": { "Elements": 1 } @@ -191,9 +195,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519/rind", - "ns": 152031.8803421014, - "ns_low": 151975.04685880017, - "ns_high": 152089.94392173723, + "ns": 152748.85797473032, + "ns_low": 152578.3100694156, + "ns_high": 152927.0837224218, "throughput": { "Elements": 1 } @@ -202,9 +206,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "ring", "id": "rustls-full-handshake-group/x25519/ring", - "ns": 221179.41901482685, - "ns_low": 221112.51128891262, - "ns_high": 221247.645495243, + "ns": 222879.54714053494, + "ns_low": 222690.63957585898, + "ns_high": 223075.82155061787, "throughput": { "Elements": 1 } @@ -213,9 +217,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/secp256r1/aws-lc-rs", - "ns": 227343.625450963, - "ns_low": 227192.67012434624, - "ns_high": 227544.69930212788, + "ns": 228848.86080094575, + "ns_low": 228679.99219533813, + "ns_high": 229042.02015993057, "throughput": { "Elements": 1 } @@ -224,9 +228,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/secp256r1/graviola", - "ns": 194812.40158341953, - "ns_low": 194375.51243197673, - "ns_high": 195218.3945088026, + "ns": 193104.86608024235, + "ns_low": 193004.9890188492, + "ns_high": 193213.88703824574, "throughput": { "Elements": 1 } @@ -235,9 +239,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/secp256r1/openssl", - "ns": 403921.6968523718, - "ns_low": 402970.3998536658, - "ns_high": 404719.4548869802, + "ns": 406490.51852667355, + "ns_low": 406423.81083980185, + "ns_high": 406560.99857856525, "throughput": { "Elements": 1 } @@ -246,9 +250,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "rind", "id": "rustls-full-handshake-group/secp256r1/rind", - "ns": 175551.61911482192, - "ns_low": 175451.2083778683, - "ns_high": 175669.3770093156, + "ns": 175679.23618220777, + "ns_low": 175562.2922273777, + "ns_high": 175811.73590845038, "throughput": { "Elements": 1 } @@ -257,9 +261,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "ring", "id": "rustls-full-handshake-group/secp256r1/ring", - "ns": 223242.96459189203, - "ns_low": 223117.44345504616, - "ns_high": 223422.88820115197, + "ns": 221715.7746150436, + "ns_low": 221460.35144066092, + "ns_high": 221968.87735789933, "throughput": { "Elements": 1 } @@ -268,9 +272,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/ed25519/aws-lc-rs", - "ns": 166646.45007388797, - "ns_low": 166539.05142512076, - "ns_high": 166779.58129194495, + "ns": 168121.74316757795, + "ns_low": 168022.06826874957, + "ns_high": 168230.78069096027, "throughput": { "Elements": 1 } @@ -279,9 +283,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/ed25519/graviola", - "ns": 125586.30752534358, - "ns_low": 125531.48892426572, - "ns_high": 125646.51542541961, + "ns": 125455.12723215605, + "ns_low": 125352.28932162651, + "ns_high": 125548.23572384447, "throughput": { "Elements": 1 } @@ -290,9 +294,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/ed25519/openssl", - "ns": 374892.7036500665, - "ns_low": 374053.52845480427, - "ns_high": 376246.7086683973, + "ns": 373287.1376784395, + "ns_low": 372909.9525661432, + "ns_high": 373670.2361997892, "throughput": { "Elements": 1 } @@ -301,9 +305,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "rind", "id": "rustls-full-handshake-key/ed25519/rind", - "ns": 122995.55077641495, - "ns_low": 122940.35265403253, - "ns_high": 123053.0373655626, + "ns": 123113.35748662628, + "ns_low": 123047.55666193416, + "ns_high": 123176.95589482697, "throughput": { "Elements": 1 } @@ -312,9 +316,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "ring", "id": "rustls-full-handshake-key/ed25519/ring", - "ns": 202368.9900517216, - "ns_low": 202280.17283124302, - "ns_high": 202464.50954105388, + "ns": 205527.3837860204, + "ns_low": 205454.96492135958, + "ns_high": 205604.98772503852, "throughput": { "Elements": 1 } @@ -323,9 +327,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/rsa-2048/aws-lc-rs", - "ns": 479504.133837742, - "ns_low": 479284.46622324863, - "ns_high": 479733.3218249264, + "ns": 485868.7902866854, + "ns_low": 485389.354011263, + "ns_high": 486346.89648195525, "throughput": { "Elements": 1 } @@ -334,9 +338,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/rsa-2048/graviola", - "ns": 438681.6254352002, - "ns_low": 438478.2384730822, - "ns_high": 438913.1209565586, + "ns": 440230.67647702084, + "ns_low": 439880.66168531374, + "ns_high": 440601.59658157686, "throughput": { "Elements": 1 } @@ -345,9 +349,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/rsa-2048/openssl", - "ns": 684140.4819624649, - "ns_low": 679605.6332987095, - "ns_high": 688425.1172076202, + "ns": 682293.2889315797, + "ns_low": 677909.3538905381, + "ns_high": 686569.95916821, "throughput": { "Elements": 1 } @@ -356,9 +360,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "rind", "id": "rustls-full-handshake-key/rsa-2048/rind", - "ns": 493890.7542352594, - "ns_low": 491110.0660941334, - "ns_high": 499420.2846526487, + "ns": 428667.6114349047, + "ns_low": 428266.80311367277, + "ns_high": 429070.67022099986, "throughput": { "Elements": 1 } @@ -367,9 +371,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "ring", "id": "rustls-full-handshake-key/rsa-2048/ring", - "ns": 487612.56059997046, - "ns_low": 487392.63214311225, - "ns_high": 487841.9135949728, + "ns": 493807.5216373578, + "ns_low": 493458.58881530096, + "ns_high": 494149.40854446386, "throughput": { "Elements": 1 } @@ -378,9 +382,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-resumed-handshake/x25519/aws-lc-rs", - "ns": 101030.79363972218, - "ns_low": 100992.91266761576, - "ns_high": 101069.76026854657, + "ns": 102841.16131175804, + "ns_low": 102785.67048822409, + "ns_high": 102920.01172341645, "throughput": { "Elements": 1 } @@ -389,9 +393,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "graviola", "id": "rustls-resumed-handshake/x25519/graviola", - "ns": 55447.72416271478, - "ns_low": 55416.08812724505, - "ns_high": 55489.97413942174, + "ns": 55161.95959375042, + "ns_low": 55104.936303670074, + "ns_high": 55219.508999912796, "throughput": { "Elements": 1 } @@ -400,9 +404,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "openssl", "id": "rustls-resumed-handshake/x25519/openssl", - "ns": 229737.42303630363, - "ns_low": 229651.4882566897, - "ns_high": 229827.24688341763, + "ns": 231440.3615447515, + "ns_low": 231209.46846117338, + "ns_high": 231685.49416123176, "throughput": { "Elements": 1 } @@ -411,9 +415,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "rind", "id": "rustls-resumed-handshake/x25519/rind", - "ns": 55160.07240324032, - "ns_low": 55137.819377079715, - "ns_high": 55183.74806580898, + "ns": 54192.16248451711, + "ns_low": 54176.21957549648, + "ns_high": 54208.49804301909, "throughput": { "Elements": 1 } @@ -422,9 +426,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "ring", "id": "rustls-resumed-handshake/x25519/ring", - "ns": 111685.87693512635, - "ns_low": 111589.86159700414, - "ns_high": 111829.36077317706, + "ns": 112996.7064085513, + "ns_low": 112843.6467149535, + "ns_high": 113157.91913785569, "throughput": { "Elements": 1 } @@ -433,9 +437,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes128-gcm/aws-lc-rs", - "ns": 234649.21141323086, - "ns_low": 233975.0273325157, - "ns_high": 235279.24556969316, + "ns": 241180.33499236492, + "ns_low": 240906.34595624768, + "ns_high": 241450.58688349236, "throughput": { "Bytes": 1048576 } @@ -444,9 +448,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes128-gcm/graviola", - "ns": 288228.99085365253, - "ns_low": 288035.5715912763, - "ns_high": 288441.64339403214, + "ns": 294754.695356879, + "ns_low": 294428.7319853283, + "ns_high": 295137.36459647515, "throughput": { "Bytes": 1048576 } @@ -455,9 +459,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes128-gcm/openssl", - "ns": 255062.83463967292, - "ns_low": 254980.6928475008, - "ns_high": 255158.4725770702, + "ns": 255721.77833210188, + "ns_low": 255212.8033206904, + "ns_high": 256427.7595529345, "throughput": { "Bytes": 1048576 } @@ -466,9 +470,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes128-gcm/rind", - "ns": 169851.55423230384, - "ns_low": 169730.4268096624, - "ns_high": 169995.04554968546, + "ns": 193360.8810418206, + "ns_low": 177061.91269738015, + "ns_high": 213646.87736636706, "throughput": { "Bytes": 1048576 } @@ -477,9 +481,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes128-gcm/ring", - "ns": 171604.76124649032, - "ns_low": 171481.16297724692, - "ns_high": 171729.5354017038, + "ns": 174955.8856790306, + "ns_low": 174827.83417937523, + "ns_high": 175077.18575154856, "throughput": { "Bytes": 1048576 } @@ -488,9 +492,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes256-gcm/aws-lc-rs", - "ns": 270356.9862578198, - "ns_low": 270215.16916475847, - "ns_high": 270498.1621529115, + "ns": 272229.0678656224, + "ns_low": 272092.13812533923, + "ns_high": 272358.1946205941, "throughput": { "Bytes": 1048576 } @@ -499,9 +503,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes256-gcm/graviola", - "ns": 332157.989465051, - "ns_low": 331909.2398271663, - "ns_high": 332476.5323873338, + "ns": 338967.50981528003, + "ns_low": 338812.2929754123, + "ns_high": 339142.03839016333, "throughput": { "Bytes": 1048576 } @@ -510,9 +514,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes256-gcm/openssl", - "ns": 285871.3843761391, - "ns_low": 285736.80256111803, - "ns_high": 286016.5173202675, + "ns": 292120.69178858184, + "ns_low": 291676.37032780546, + "ns_high": 292622.3997863412, "throughput": { "Bytes": 1048576 } @@ -521,9 +525,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes256-gcm/rind", - "ns": 186021.46720925078, - "ns_low": 185898.1997655084, - "ns_high": 186170.99345750766, + "ns": 189841.74927811438, + "ns_low": 189701.08582108954, + "ns_high": 190010.886035133, "throughput": { "Bytes": 1048576 } @@ -532,9 +536,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes256-gcm/ring", - "ns": 188284.83813358948, - "ns_low": 188119.47912152213, - "ns_high": 188453.37383428568, + "ns": 192152.7965479533, + "ns_low": 191484.4673542026, + "ns_high": 193104.49996235067, "throughput": { "Bytes": 1048576 } @@ -543,9 +547,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/chacha20poly1305/aws-lc-rs", - "ns": 586463.5511230974, - "ns_low": 586255.731030176, - "ns_high": 586681.6369414072, + "ns": 609723.7432717601, + "ns_low": 603751.9092756098, + "ns_high": 617701.5049881018, "throughput": { "Bytes": 1048576 } @@ -554,9 +558,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "graviola", "id": "rustls-bulk/chacha20poly1305/graviola", - "ns": 1157407.4080301463, - "ns_low": 1155278.3148320816, - "ns_high": 1159194.6860271166, + "ns": 1173891.1313043474, + "ns_low": 1171249.4498913041, + "ns_high": 1177050.4659130424, "throughput": { "Bytes": 1048576 } @@ -565,9 +569,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "openssl", "id": "rustls-bulk/chacha20poly1305/openssl", - "ns": 658142.8791281218, - "ns_low": 657866.9751853292, - "ns_high": 658450.930997931, + "ns": 661804.8849859613, + "ns_low": 660654.7149270022, + "ns_high": 663257.1180784971, "throughput": { "Bytes": 1048576 } @@ -576,9 +580,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "rind", "id": "rustls-bulk/chacha20poly1305/rind", - "ns": 587475.6325550466, - "ns_low": 587190.0853267241, - "ns_high": 587814.7447213868, + "ns": 621494.274975617, + "ns_low": 600668.3023509175, + "ns_high": 650595.5076739981, "throughput": { "Bytes": 1048576 } @@ -587,9 +591,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "ring", "id": "rustls-bulk/chacha20poly1305/ring", - "ns": 588809.8908216344, - "ns_low": 588207.7107611612, - "ns_high": 589323.3123746095, + "ns": 594879.0071996454, + "ns_low": 593702.6943285555, + "ns_high": 596401.8153062948, "throughput": { "Bytes": 1048576 } @@ -598,9 +602,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/32B", - "ns": 37.44725020413781, - "ns_low": 37.4050499516274, - "ns_high": 37.485110427548165, + "ns": 36.98073557384887, + "ns_low": 36.939475395360795, + "ns_high": 37.018460769111584, "throughput": { "Bytes": 32 } @@ -609,9 +613,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "graviola", "id": "aes128-gcm/graviola/32B", - "ns": 42.47235203406166, - "ns_low": 42.46167980888147, - "ns_high": 42.483668305922, + "ns": 42.4748874952904, + "ns_low": 42.45731397258341, + "ns_high": 42.49267504129732, "throughput": { "Bytes": 32 } @@ -620,9 +624,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "libcrux", "id": "aes128-gcm/libcrux/32B", - "ns": 170.6974195033333, - "ns_low": 170.52245334671304, - "ns_high": 170.90289439700385, + "ns": 167.71237466382428, + "ns_low": 167.61089224860476, + "ns_high": 167.81301762432912, "throughput": { "Bytes": 32 } @@ -631,9 +635,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "openssl", "id": "aes128-gcm/openssl/32B", - "ns": 55.33660891127128, - "ns_low": 55.309471624790746, - "ns_high": 55.36504769570979, + "ns": 55.16575239651397, + "ns_low": 55.12020217031518, + "ns_high": 55.209208289092565, "throughput": { "Bytes": 32 } @@ -642,9 +646,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rind", "id": "aes128-gcm/rind/32B", - "ns": 19.43673159308117, - "ns_low": 19.43158498848489, - "ns_high": 19.442162220472266, + "ns": 18.23970143589417, + "ns_low": 18.23163151356044, + "ns_high": 18.248100811876178, "throughput": { "Bytes": 32 } @@ -653,9 +657,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "ring", "id": "aes128-gcm/ring/32B", - "ns": 42.18231106664288, - "ns_low": 41.72996774356555, - "ns_high": 42.835947645294034, + "ns": 41.924871268651515, + "ns_low": 41.75379314299483, + "ns_high": 42.107426598579565, "throughput": { "Bytes": 32 } @@ -664,9 +668,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/32B", - "ns": 73.14514319049283, - "ns_low": 73.01267790366504, - "ns_high": 73.26664036215578, + "ns": 72.57994609216502, + "ns_low": 72.5296973975183, + "ns_high": 72.62802709461245, "throughput": { "Bytes": 32 } @@ -675,9 +679,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/1350B", - "ns": 151.50633524309947, - "ns_low": 151.3244289492482, - "ns_high": 151.82099211942324, + "ns": 149.17591551734716, + "ns_low": 149.08895345998175, + "ns_high": 149.2560433144799, "throughput": { "Bytes": 1350 } @@ -686,9 +690,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "graviola", "id": "aes128-gcm/graviola/1350B", - "ns": 225.98856551334742, - "ns_low": 225.6808613002664, - "ns_high": 226.30370106104007, + "ns": 226.7114720955343, + "ns_low": 226.45941246414768, + "ns_high": 226.96560375062342, "throughput": { "Bytes": 1350 } @@ -697,9 +701,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm/libcrux/1350B", - "ns": 1977.216186358756, - "ns_low": 1976.193724088206, - "ns_high": 1978.1723829891334, + "ns": 1944.6926140986054, + "ns_low": 1943.4930740856285, + "ns_high": 1945.8598557554826, "throughput": { "Bytes": 1350 } @@ -708,9 +712,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "openssl", "id": "aes128-gcm/openssl/1350B", - "ns": 158.89471251871552, - "ns_low": 158.82354887990726, - "ns_high": 158.97165557573263, + "ns": 162.82610073434634, + "ns_low": 162.76305926588003, + "ns_high": 162.89429447072462, "throughput": { "Bytes": 1350 } @@ -719,9 +723,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rind", "id": "aes128-gcm/rind/1350B", - "ns": 93.68770895086392, - "ns_low": 93.49014944945317, - "ns_high": 93.89243129896506, + "ns": 93.7683903601383, + "ns_low": 93.75111717849404, + "ns_high": 93.78747247917191, "throughput": { "Bytes": 1350 } @@ -730,9 +734,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "ring", "id": "aes128-gcm/ring/1350B", - "ns": 118.66090906560062, - "ns_low": 118.41230981166727, - "ns_high": 118.89243628427917, + "ns": 118.19124436215918, + "ns_low": 117.85612220886777, + "ns_high": 118.56417085817384, "throughput": { "Bytes": 1350 } @@ -741,9 +745,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/1350B", - "ns": 276.03997578226296, - "ns_low": 275.83663074729236, - "ns_high": 276.24966273148567, + "ns": 272.2636773502971, + "ns_low": 271.9087321296761, + "ns_high": 272.6561369304937, "throughput": { "Bytes": 1350 } @@ -752,9 +756,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/16KB", - "ns": 1327.6093390116332, - "ns_low": 1326.8216274995548, - "ns_high": 1328.533919325243, + "ns": 1327.6159452256957, + "ns_low": 1327.0965207738682, + "ns_high": 1328.145714847404, "throughput": { "Bytes": 16384 } @@ -763,9 +767,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "graviola", "id": "aes128-gcm/graviola/16KB", - "ns": 2046.4821513155339, - "ns_low": 2043.788971587853, - "ns_high": 2048.774677772498, + "ns": 2024.57264928021, + "ns_low": 2023.5734607150766, + "ns_high": 2025.6716781611003, "throughput": { "Bytes": 16384 } @@ -774,9 +778,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm/libcrux/16KB", - "ns": 22013.11106207138, - "ns_low": 21998.043324279126, - "ns_high": 22027.302157925613, + "ns": 22015.81098391431, + "ns_low": 22003.134407771253, + "ns_high": 22029.561590743313, "throughput": { "Bytes": 16384 } @@ -785,9 +789,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "openssl", "id": "aes128-gcm/openssl/16KB", - "ns": 1341.1378112267516, - "ns_low": 1340.5934655039196, - "ns_high": 1341.6479392805722, + "ns": 1342.4860843403837, + "ns_low": 1342.086413723807, + "ns_high": 1342.9172618660998, "throughput": { "Bytes": 16384 } @@ -796,9 +800,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rind", "id": "aes128-gcm/rind/16KB", - "ns": 771.8611630045734, - "ns_low": 770.7569189946707, - "ns_high": 773.1794494748751, + "ns": 780.6828884163251, + "ns_low": 780.4807427319416, + "ns_high": 780.9115245704329, "throughput": { "Bytes": 16384 } @@ -807,9 +811,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "ring", "id": "aes128-gcm/ring/16KB", - "ns": 794.7871134407093, - "ns_low": 793.0673096685935, - "ns_high": 796.5866606646798, + "ns": 798.8468728640669, + "ns_low": 798.2985738809638, + "ns_high": 799.5241798965536, "throughput": { "Bytes": 16384 } @@ -818,9 +822,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/16KB", - "ns": 2454.5270557894482, - "ns_low": 2452.7727881913984, - "ns_high": 2456.4928279994874, + "ns": 2489.58359624884, + "ns_low": 2488.725636434218, + "ns_high": 2490.541878424949, "throughput": { "Bytes": 16384 } @@ -829,9 +833,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/32B", - "ns": 36.68506985123841, - "ns_low": 36.44498410111454, - "ns_high": 36.913327067120456, + "ns": 37.236444278161834, + "ns_low": 36.98665646338412, + "ns_high": 37.47870279574663, "throughput": { "Bytes": 32 } @@ -840,9 +844,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "graviola", "id": "aes128-gcm-open/graviola/32B", - "ns": 35.34869538507933, - "ns_low": 35.32407296988596, - "ns_high": 35.376080292904014, + "ns": 35.76347694372817, + "ns_low": 35.75817432014833, + "ns_high": 35.76879868619822, "throughput": { "Bytes": 32 } @@ -851,9 +855,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/32B", - "ns": 160.58844697077552, - "ns_low": 160.3317796506186, - "ns_high": 160.83264716532835, + "ns": 158.97919003153783, + "ns_low": 158.90734162537774, + "ns_high": 159.05003976914463, "throughput": { "Bytes": 32 } @@ -862,9 +866,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "openssl", "id": "aes128-gcm-open/openssl/32B", - "ns": 58.37635828712013, - "ns_low": 58.35223148022702, - "ns_high": 58.401258231054626, + "ns": 57.52052201402844, + "ns_low": 57.42556183579976, + "ns_high": 57.62282795632351, "throughput": { "Bytes": 32 } @@ -873,9 +877,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rind", "id": "aes128-gcm-open/rind/32B", - "ns": 23.310996485872376, - "ns_low": 23.28603971967091, - "ns_high": 23.3397113468088, + "ns": 28.460433899851836, + "ns_low": 28.434124759444163, + "ns_high": 28.48516564375316, "throughput": { "Bytes": 32 } @@ -884,9 +888,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "ring", "id": "aes128-gcm-open/ring/32B", - "ns": 41.681509904636215, - "ns_low": 41.04522404381641, - "ns_high": 42.26164779324276, + "ns": 42.281530953864085, + "ns_low": 41.626390428460304, + "ns_high": 42.87271838615785, "throughput": { "Bytes": 32 } @@ -895,9 +899,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/32B", - "ns": 77.5031910605104, - "ns_low": 77.31518424652921, - "ns_high": 77.69857174302678, + "ns": 77.71575605472928, + "ns_low": 77.62133988930334, + "ns_high": 77.82112439519923, "throughput": { "Bytes": 32 } @@ -906,9 +910,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/1350B", - "ns": 148.7032215668727, - "ns_low": 148.46791388415645, - "ns_high": 148.94441696049492, + "ns": 149.17999746470358, + "ns_low": 149.04256086952748, + "ns_high": 149.30903475394445, "throughput": { "Bytes": 1350 } @@ -917,9 +921,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes128-gcm-open/graviola/1350B", - "ns": 176.48804410355208, - "ns_low": 176.39928255057552, - "ns_high": 176.58354990823122, + "ns": 176.1037068056296, + "ns_low": 175.83987432915296, + "ns_high": 176.3724206074929, "throughput": { "Bytes": 1350 } @@ -928,9 +932,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/1350B", - "ns": 1992.6462955716468, - "ns_low": 1986.3442470725383, - "ns_high": 2001.358380177684, + "ns": 1998.383950189646, + "ns_low": 1996.1077284494945, + "ns_high": 2000.4215488014763, "throughput": { "Bytes": 1350 } @@ -939,9 +943,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes128-gcm-open/openssl/1350B", - "ns": 157.417293622635, - "ns_low": 157.17527626350923, - "ns_high": 157.68516912595868, + "ns": 159.37857637500494, + "ns_low": 159.19099909929673, + "ns_high": 159.5249046646009, "throughput": { "Bytes": 1350 } @@ -950,9 +954,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rind", "id": "aes128-gcm-open/rind/1350B", - "ns": 100.97261704008976, - "ns_low": 100.9325179562214, - "ns_high": 101.01495549040617, + "ns": 98.50906200161914, + "ns_low": 98.35963552000332, + "ns_high": 98.65473897813392, "throughput": { "Bytes": 1350 } @@ -961,9 +965,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "ring", "id": "aes128-gcm-open/ring/1350B", - "ns": 113.17719874128746, - "ns_low": 112.9380247543008, - "ns_high": 113.46244053464407, + "ns": 114.01822594565589, + "ns_low": 113.88902776181381, + "ns_high": 114.15958536546067, "throughput": { "Bytes": 1350 } @@ -972,9 +976,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/1350B", - "ns": 283.4033493501302, - "ns_low": 282.9352309503313, - "ns_high": 283.8144944899836, + "ns": 282.0999551684646, + "ns_low": 281.59562750500805, + "ns_high": 282.70153348075644, "throughput": { "Bytes": 1350 } @@ -983,9 +987,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/16KB", - "ns": 1261.024176706249, - "ns_low": 1259.680284325208, - "ns_high": 1262.6285893275565, + "ns": 1276.8691993942773, + "ns_low": 1275.9940632791534, + "ns_high": 1277.6635800021286, "throughput": { "Bytes": 16384 } @@ -994,9 +998,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes128-gcm-open/graviola/16KB", - "ns": 1400.6414585314546, - "ns_low": 1398.2410162982346, - "ns_high": 1403.3015497972706, + "ns": 1415.6919337345867, + "ns_low": 1415.5117463426666, + "ns_high": 1415.8798493227114, "throughput": { "Bytes": 16384 } @@ -1005,9 +1009,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm-open/libcrux/16KB", - "ns": 21996.237056091537, - "ns_low": 21984.149159880562, - "ns_high": 22008.011915751616, + "ns": 22307.895860740304, + "ns_low": 22296.873130146858, + "ns_high": 22317.286054643733, "throughput": { "Bytes": 16384 } @@ -1016,9 +1020,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes128-gcm-open/openssl/16KB", - "ns": 1286.1183404630442, - "ns_low": 1284.9445636505002, - "ns_high": 1287.6253885102574, + "ns": 1301.8178491708538, + "ns_low": 1301.6468678009667, + "ns_high": 1302.0001703196149, "throughput": { "Bytes": 16384 } @@ -1027,9 +1031,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rind", "id": "aes128-gcm-open/rind/16KB", - "ns": 811.9943938297358, - "ns_low": 811.7056643434609, - "ns_high": 812.3177147233573, + "ns": 816.3168456701944, + "ns_low": 816.133010392788, + "ns_high": 816.5109703418568, "throughput": { "Bytes": 16384 } @@ -1038,9 +1042,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "ring", "id": "aes128-gcm-open/ring/16KB", - "ns": 822.7891660722576, - "ns_low": 822.6385528059312, - "ns_high": 822.933819179938, + "ns": 829.4961825950107, + "ns_low": 829.2814693313479, + "ns_high": 829.7089375049575, "throughput": { "Bytes": 16384 } @@ -1049,9 +1053,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/16KB", - "ns": 2511.628221519299, - "ns_low": 2508.9886559247566, - "ns_high": 2514.5501195792217, + "ns": 2544.495160185364, + "ns_low": 2544.0370063467612, + "ns_high": 2544.989178281415, "throughput": { "Bytes": 16384 } @@ -1060,9 +1064,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/32B", - "ns": 39.24445822205519, - "ns_low": 39.189632227841884, - "ns_high": 39.298355375439, + "ns": 39.50245576063369, + "ns_low": 39.44337471526458, + "ns_high": 39.55889590873332, "throughput": { "Bytes": 32 } @@ -1071,9 +1075,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "graviola", "id": "aes256-gcm/graviola/32B", - "ns": 44.72549046618251, - "ns_low": 44.67533855513665, - "ns_high": 44.7820420162894, + "ns": 44.128767926969026, + "ns_low": 44.10313124827037, + "ns_high": 44.15746684112628, "throughput": { "Bytes": 32 } @@ -1082,9 +1086,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "libcrux", "id": "aes256-gcm/libcrux/32B", - "ns": 218.18383396164245, - "ns_low": 217.8943765147849, - "ns_high": 218.49155521987734, + "ns": 215.8492129151775, + "ns_low": 215.59459032025376, + "ns_high": 216.11784187122703, "throughput": { "Bytes": 32 } @@ -1093,9 +1097,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "openssl", "id": "aes256-gcm/openssl/32B", - "ns": 58.28020579037935, - "ns_low": 58.262072331864324, - "ns_high": 58.29981155902698, + "ns": 58.093471819552725, + "ns_low": 58.0526350273839, + "ns_high": 58.134675360003065, "throughput": { "Bytes": 32 } @@ -1104,9 +1108,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rind", "id": "aes256-gcm/rind/32B", - "ns": 20.93393716059969, - "ns_low": 20.928752600006444, - "ns_high": 20.939227280001216, + "ns": 19.83735116263019, + "ns_low": 19.82637375740246, + "ns_high": 19.847135113151623, "throughput": { "Bytes": 32 } @@ -1115,9 +1119,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "ring", "id": "aes256-gcm/ring/32B", - "ns": 43.34438396524825, - "ns_low": 43.201169339565396, - "ns_high": 43.48421679633515, + "ns": 42.876111869655105, + "ns_low": 42.7332026754612, + "ns_high": 43.01253278772403, "throughput": { "Bytes": 32 } @@ -1126,9 +1130,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/32B", - "ns": 78.10793738744302, - "ns_low": 78.05310903693132, - "ns_high": 78.19998323026641, + "ns": 77.453519644692, + "ns_low": 77.3811263619583, + "ns_high": 77.53150855632327, "throughput": { "Bytes": 32 } @@ -1137,9 +1141,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/1350B", - "ns": 175.61864199235004, - "ns_low": 175.53986387843798, - "ns_high": 175.71490314562698, + "ns": 173.2140052908572, + "ns_low": 173.08841613855108, + "ns_high": 173.34635531836386, "throughput": { "Bytes": 1350 } @@ -1148,9 +1152,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "graviola", "id": "aes256-gcm/graviola/1350B", - "ns": 261.46921798177533, - "ns_low": 261.2772293378377, - "ns_high": 261.7661315442905, + "ns": 257.9806354750448, + "ns_low": 257.81483510220863, + "ns_high": 258.1607009351661, "throughput": { "Bytes": 1350 } @@ -1159,9 +1163,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm/libcrux/1350B", - "ns": 2858.4827525121914, - "ns_low": 2857.065165220052, - "ns_high": 2860.392111978161, + "ns": 2825.54704091987, + "ns_low": 2824.5135621782565, + "ns_high": 2826.728378821714, "throughput": { "Bytes": 1350 } @@ -1170,9 +1174,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "openssl", "id": "aes256-gcm/openssl/1350B", - "ns": 183.81956144610427, - "ns_low": 183.74081664196876, - "ns_high": 183.9121071257363, + "ns": 186.02654788566866, + "ns_low": 185.93651430736108, + "ns_high": 186.13251916928067, "throughput": { "Bytes": 1350 } @@ -1181,9 +1185,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rind", "id": "aes256-gcm/rind/1350B", - "ns": 108.55514837991613, - "ns_low": 108.52923493892949, - "ns_high": 108.58326854850542, + "ns": 106.41736314675843, + "ns_low": 106.37828446786463, + "ns_high": 106.46094301253588, "throughput": { "Bytes": 1350 } @@ -1192,9 +1196,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "ring", "id": "aes256-gcm/ring/1350B", - "ns": 135.1614777139097, - "ns_low": 134.65588293671698, - "ns_high": 135.70913820079883, + "ns": 133.04838020897634, + "ns_low": 132.5334484396927, + "ns_high": 133.59557333711425, "throughput": { "Bytes": 1350 } @@ -1203,9 +1207,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/1350B", - "ns": 312.2484738717117, - "ns_low": 311.494427091984, - "ns_high": 312.9161170853956, + "ns": 313.32401433310196, + "ns_low": 313.2043282981725, + "ns_high": 313.42934356939367, "throughput": { "Bytes": 1350 } @@ -1214,9 +1218,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/16KB", - "ns": 1579.6420297422724, - "ns_low": 1579.4987382643665, - "ns_high": 1579.7981322824562, + "ns": 1558.8585711696858, + "ns_low": 1557.558886699665, + "ns_high": 1560.3328022402395, "throughput": { "Bytes": 16384 } @@ -1225,9 +1229,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "graviola", "id": "aes256-gcm/graviola/16KB", - "ns": 2421.7460756914556, - "ns_low": 2420.0026235017776, - "ns_high": 2423.850256862975, + "ns": 2457.041471921955, + "ns_low": 2456.8010467687436, + "ns_high": 2457.3132865969255, "throughput": { "Bytes": 16384 } @@ -1236,9 +1240,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm/libcrux/16KB", - "ns": 32273.00617268011, - "ns_low": 32246.119524521768, - "ns_high": 32301.28028716504, + "ns": 32690.601109564217, + "ns_low": 32673.678238930643, + "ns_high": 32709.809970801125, "throughput": { "Bytes": 16384 } @@ -1247,9 +1251,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "openssl", "id": "aes256-gcm/openssl/16KB", - "ns": 1573.9714276879004, - "ns_low": 1572.9054416114868, - "ns_high": 1575.1729515775007, + "ns": 1587.3355623352418, + "ns_low": 1585.1558621728418, + "ns_high": 1589.8408946925051, "throughput": { "Bytes": 16384 } @@ -1258,9 +1262,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rind", "id": "aes256-gcm/rind/16KB", - "ns": 923.8218998078912, - "ns_low": 922.9719042891055, - "ns_high": 924.765570006618, + "ns": 925.0648739722983, + "ns_low": 923.8250756012671, + "ns_high": 926.3693680705217, "throughput": { "Bytes": 16384 } @@ -1269,9 +1273,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "ring", "id": "aes256-gcm/ring/16KB", - "ns": 952.964546895588, - "ns_low": 951.5055802400158, - "ns_high": 954.4641285470718, + "ns": 945.9778596588748, + "ns_low": 944.8464060053703, + "ns_high": 947.2138781688877, "throughput": { "Bytes": 16384 } @@ -1280,9 +1284,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/16KB", - "ns": 2906.1827879054376, - "ns_low": 2905.7142600694838, - "ns_high": 2906.6610893009083, + "ns": 2906.6404808846373, + "ns_low": 2906.0706845807954, + "ns_high": 2907.193479148415, "throughput": { "Bytes": 16384 } @@ -1291,9 +1295,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/32B", - "ns": 37.35213087022616, - "ns_low": 37.13616793872941, - "ns_high": 37.55753697516379, + "ns": 37.98148943994086, + "ns_low": 37.768190318598805, + "ns_high": 38.187396556101085, "throughput": { "Bytes": 32 } @@ -1302,9 +1306,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "graviola", "id": "aes256-gcm-open/graviola/32B", - "ns": 37.53939998939971, - "ns_low": 37.48747233013659, - "ns_high": 37.602523719332424, + "ns": 37.94642804321241, + "ns_low": 37.93836110177246, + "ns_high": 37.95448556713545, "throughput": { "Bytes": 32 } @@ -1313,9 +1317,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/32B", - "ns": 218.37314478120004, - "ns_low": 217.962756506034, - "ns_high": 218.77499226814462, + "ns": 217.74916578601295, + "ns_low": 217.5810640360223, + "ns_high": 217.90994352184205, "throughput": { "Bytes": 32 } @@ -1324,9 +1328,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "openssl", "id": "aes256-gcm-open/openssl/32B", - "ns": 61.35385531579611, - "ns_low": 61.323916040742695, - "ns_high": 61.387367544967354, + "ns": 61.56249326982483, + "ns_low": 61.52698531453833, + "ns_high": 61.600762056962544, "throughput": { "Bytes": 32 } @@ -1335,9 +1339,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rind", "id": "aes256-gcm-open/rind/32B", - "ns": 24.386252445583445, - "ns_low": 24.36647938420558, - "ns_high": 24.407254715042832, + "ns": 27.685864219794748, + "ns_low": 27.647154341764878, + "ns_high": 27.719903213368962, "throughput": { "Bytes": 32 } @@ -1346,9 +1350,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "ring", "id": "aes256-gcm-open/ring/32B", - "ns": 44.18059363758645, - "ns_low": 43.2260963881714, - "ns_high": 45.04862166144129, + "ns": 44.69191235834667, + "ns_low": 43.73179580140448, + "ns_high": 45.565328816484914, "throughput": { "Bytes": 32 } @@ -1357,9 +1361,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/32B", - "ns": 81.4208945708173, - "ns_low": 81.241325129042, - "ns_high": 81.61734296910343, + "ns": 82.44277544176032, + "ns_low": 82.35147726579355, + "ns_high": 82.53806780447468, "throughput": { "Bytes": 32 } @@ -1368,9 +1372,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/1350B", - "ns": 173.76979820618084, - "ns_low": 173.52053665035996, - "ns_high": 174.1633449619102, + "ns": 172.95004653163963, + "ns_low": 172.87667033442938, + "ns_high": 173.01781573609253, "throughput": { "Bytes": 1350 } @@ -1379,9 +1383,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes256-gcm-open/graviola/1350B", - "ns": 203.33048468594262, - "ns_low": 203.26521163655502, - "ns_high": 203.4067809258065, + "ns": 203.30212090780591, + "ns_low": 203.26899004366567, + "ns_high": 203.3292959032873, "throughput": { "Bytes": 1350 } @@ -1390,9 +1394,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/1350B", - "ns": 2856.4785525343577, - "ns_low": 2854.137741359279, - "ns_high": 2859.215690034381, + "ns": 2850.998414003223, + "ns_low": 2849.6711770420957, + "ns_high": 2852.518231347432, "throughput": { "Bytes": 1350 } @@ -1401,9 +1405,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes256-gcm-open/openssl/1350B", - "ns": 187.9260671436872, - "ns_low": 187.84655582111827, - "ns_high": 188.00868235655767, + "ns": 189.2514325412102, + "ns_low": 189.21025355060306, + "ns_high": 189.292713626926, "throughput": { "Bytes": 1350 } @@ -1412,9 +1416,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rind", "id": "aes256-gcm-open/rind/1350B", - "ns": 109.55311914148491, - "ns_low": 109.50520755857976, - "ns_high": 109.60607868220075, + "ns": 106.92343789645086, + "ns_low": 106.77568536118766, + "ns_high": 107.08787458332156, "throughput": { "Bytes": 1350 } @@ -1423,9 +1427,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "ring", "id": "aes256-gcm-open/ring/1350B", - "ns": 122.8327392615667, - "ns_low": 122.64694162912899, - "ns_high": 123.03621787615174, + "ns": 123.70634073726696, + "ns_low": 123.5217748436537, + "ns_high": 123.91176956020846, "throughput": { "Bytes": 1350 } @@ -1434,9 +1438,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/1350B", - "ns": 322.89498763110356, - "ns_low": 322.6275681083004, - "ns_high": 323.1466722678854, + "ns": 321.73238666056307, + "ns_low": 321.580001731804, + "ns_high": 321.9040102886727, "throughput": { "Bytes": 1350 } @@ -1445,9 +1449,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/16KB", - "ns": 1584.158685100409, - "ns_low": 1582.4237213247782, - "ns_high": 1586.0485594621216, + "ns": 1565.7279452394498, + "ns_low": 1563.1030370386422, + "ns_high": 1568.251264165815, "throughput": { "Bytes": 16384 } @@ -1456,9 +1460,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes256-gcm-open/graviola/16KB", - "ns": 1752.0786776988255, - "ns_low": 1749.7597303515327, - "ns_high": 1756.8280070604615, + "ns": 1741.9265909898138, + "ns_low": 1741.6694952317885, + "ns_high": 1742.1977545246766, "throughput": { "Bytes": 16384 } @@ -1467,9 +1471,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm-open/libcrux/16KB", - "ns": 32498.542911515033, - "ns_low": 32485.876542759474, - "ns_high": 32511.82845308061, + "ns": 32514.75373663211, + "ns_low": 32499.4306847897, + "ns_high": 32531.42074796922, "throughput": { "Bytes": 16384 } @@ -1478,9 +1482,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes256-gcm-open/openssl/16KB", - "ns": 1602.8762052883085, - "ns_low": 1602.4206743831767, - "ns_high": 1603.387495479504, + "ns": 1601.830980599126, + "ns_low": 1601.558230939015, + "ns_high": 1602.1514526809692, "throughput": { "Bytes": 16384 } @@ -1489,9 +1493,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rind", "id": "aes256-gcm-open/rind/16KB", - "ns": 925.9984963702527, - "ns_low": 925.6503957309548, - "ns_high": 926.3555747914804, + "ns": 917.4202588952925, + "ns_low": 917.2114544244398, + "ns_high": 917.698518880632, "throughput": { "Bytes": 16384 } @@ -1500,9 +1504,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "ring", "id": "aes256-gcm-open/ring/16KB", - "ns": 939.0351991639537, - "ns_low": 938.7252291522981, - "ns_high": 939.3989065752871, + "ns": 921.3379353675073, + "ns_low": 920.589766741947, + "ns_high": 922.2809348432934, "throughput": { "Bytes": 16384 } @@ -1511,9 +1515,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/16KB", - "ns": 2967.795497552412, - "ns_low": 2966.9358508003797, - "ns_high": 2968.721323420946, + "ns": 2963.076967401797, + "ns_low": 2960.6706782090428, + "ns_high": 2965.2932491717947, "throughput": { "Bytes": 16384 } @@ -1522,9 +1526,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/32B", - "ns": 105.05432268963138, - "ns_low": 104.98361290737581, - "ns_high": 105.13819864595253, + "ns": 104.91918332957563, + "ns_low": 104.86833947067211, + "ns_high": 104.97401275437407, "throughput": { "Bytes": 32 } @@ -1533,9 +1537,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "graviola", "id": "chacha20poly1305/graviola/32B", - "ns": 179.94677266639948, - "ns_low": 179.8926382310133, - "ns_high": 179.99861511971457, + "ns": 179.71047453709087, + "ns_low": 179.66332369160463, + "ns_high": 179.7550352783927, "throughput": { "Bytes": 32 } @@ -1544,9 +1548,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "libcrux", "id": "chacha20poly1305/libcrux/32B", - "ns": 156.77029544744732, - "ns_low": 156.73200316263797, - "ns_high": 156.81113042519164, + "ns": 156.59674931189136, + "ns_low": 156.568354177945, + "ns_high": 156.62241463318648, "throughput": { "Bytes": 32 } @@ -1555,9 +1559,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "openssl", "id": "chacha20poly1305/openssl/32B", - "ns": 177.26984977455496, - "ns_low": 177.11396511017557, - "ns_high": 177.40918418859908, + "ns": 176.94687757004192, + "ns_low": 176.86566046076206, + "ns_high": 177.03127290461651, "throughput": { "Bytes": 32 } @@ -1566,9 +1570,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rind", "id": "chacha20poly1305/rind/32B", - "ns": 99.39757692520712, - "ns_low": 99.23120198684987, - "ns_high": 99.56207413653655, + "ns": 99.79819436633963, + "ns_low": 99.67619515368987, + "ns_high": 99.90388062657787, "throughput": { "Bytes": 32 } @@ -1577,9 +1581,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "ring", "id": "chacha20poly1305/ring/32B", - "ns": 100.54541668744294, - "ns_low": 100.51912971505787, - "ns_high": 100.57174653047687, + "ns": 100.50039371127178, + "ns_low": 100.46903760146712, + "ns_high": 100.53028015328225, "throughput": { "Bytes": 32 } @@ -1588,9 +1592,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/32B", - "ns": 1064.0865530027504, - "ns_low": 1062.663247531725, - "ns_high": 1065.271970514609, + "ns": 1072.5731378110784, + "ns_low": 1070.9172967054578, + "ns_high": 1074.2065066119515, "throughput": { "Bytes": 32 } @@ -1599,9 +1603,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/1350B", - "ns": 453.10337413173175, - "ns_low": 452.6208592734156, - "ns_high": 453.4999891121307, + "ns": 453.4848582522067, + "ns_low": 453.3575736232785, + "ns_high": 453.61776019784054, "throughput": { "Bytes": 1350 } @@ -1610,9 +1614,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "graviola", "id": "chacha20poly1305/graviola/1350B", - "ns": 911.1374093355943, - "ns_low": 910.7991921911768, - "ns_high": 911.4909294317576, + "ns": 905.3520491938787, + "ns_low": 904.6826279662936, + "ns_high": 905.9353914894479, "throughput": { "Bytes": 1350 } @@ -1621,9 +1625,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "chacha20poly1305/libcrux/1350B", - "ns": 1777.2051571784934, - "ns_low": 1775.3508016744206, - "ns_high": 1779.259161729495, + "ns": 1775.4792532475528, + "ns_low": 1773.6330520700556, + "ns_high": 1777.3644019137107, "throughput": { "Bytes": 1350 } @@ -1632,9 +1636,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "openssl", "id": "chacha20poly1305/openssl/1350B", - "ns": 589.4028870720269, - "ns_low": 589.2245835236331, - "ns_high": 589.6328180750696, + "ns": 590.175206669906, + "ns_low": 590.069785519611, + "ns_high": 590.278745243514, "throughput": { "Bytes": 1350 } @@ -1643,9 +1647,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rind", "id": "chacha20poly1305/rind/1350B", - "ns": 446.96010983607306, - "ns_low": 446.8718526325889, - "ns_high": 447.0603418910025, + "ns": 440.94336583701545, + "ns_low": 440.38613638753634, + "ns_high": 441.5776867480056, "throughput": { "Bytes": 1350 } @@ -1654,9 +1658,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "ring", "id": "chacha20poly1305/ring/1350B", - "ns": 446.4398598033627, - "ns_low": 445.90535743744925, - "ns_high": 446.8957645263407, + "ns": 446.58885209799723, + "ns_low": 446.4883910443667, + "ns_high": 446.69125877366037, "throughput": { "Bytes": 1350 } @@ -1665,9 +1669,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/1350B", - "ns": 1674.1855719700202, - "ns_low": 1664.380369583172, - "ns_high": 1693.6010124891611, + "ns": 1669.2794535591306, + "ns_low": 1668.5898969129412, + "ns_high": 1670.040402750402, "throughput": { "Bytes": 1350 } @@ -1676,9 +1680,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/16KB", - "ns": 4134.869881840796, - "ns_low": 4131.9948139525995, - "ns_high": 4138.256220748369, + "ns": 4148.901153526746, + "ns_low": 4145.576586646141, + "ns_high": 4153.083811716297, "throughput": { "Bytes": 16384 } @@ -1687,9 +1691,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "graviola", "id": "chacha20poly1305/graviola/16KB", - "ns": 8359.60322488219, - "ns_low": 8352.35012566071, - "ns_high": 8367.481300565123, + "ns": 8303.185347725072, + "ns_low": 8290.60646637206, + "ns_high": 8315.630382957006, "throughput": { "Bytes": 16384 } @@ -1698,9 +1702,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "chacha20poly1305/libcrux/16KB", - "ns": 19361.592421952835, - "ns_low": 19345.446866335747, - "ns_high": 19380.915184731773, + "ns": 19625.697415922623, + "ns_low": 19607.458297158562, + "ns_high": 19642.6441839188, "throughput": { "Bytes": 16384 } @@ -1709,9 +1713,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "openssl", "id": "chacha20poly1305/openssl/16KB", - "ns": 4412.08763743439, - "ns_low": 4410.6501427972025, - "ns_high": 4413.6700318655585, + "ns": 4405.637384846942, + "ns_low": 4404.951144677062, + "ns_high": 4406.3332981174135, "throughput": { "Bytes": 16384 } @@ -1720,9 +1724,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rind", "id": "chacha20poly1305/rind/16KB", - "ns": 4127.568819290511, - "ns_low": 4123.598995606442, - "ns_high": 4131.820334777197, + "ns": 4170.520759403151, + "ns_low": 4165.085396069606, + "ns_high": 4175.518803529523, "throughput": { "Bytes": 16384 } @@ -1731,9 +1735,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "ring", "id": "chacha20poly1305/ring/16KB", - "ns": 4119.45975146955, - "ns_low": 4116.50306740432, - "ns_high": 4122.718810170978, + "ns": 4136.488547899566, + "ns_low": 4133.546814665397, + "ns_high": 4140.114213644495, "throughput": { "Bytes": 16384 } @@ -1742,9 +1746,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/16KB", - "ns": 8151.923845292728, - "ns_low": 8141.257272338965, - "ns_high": 8163.5787950134445, + "ns": 8136.906802607247, + "ns_low": 8123.040086559136, + "ns_high": 8151.434007864287, "throughput": { "Bytes": 16384 } @@ -1753,9 +1757,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/32B", - "ns": 195.61309905451353, - "ns_low": 195.43491741709818, - "ns_high": 195.7915452104224, + "ns": 199.0385462157128, + "ns_low": 198.89977717096696, + "ns_high": 199.19050221379223, "throughput": { "Bytes": 32 } @@ -1764,9 +1768,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "graviola", "id": "xchacha20poly1305/graviola/32B", - "ns": 259.0274547399046, - "ns_low": 258.93923510524047, - "ns_high": 259.11900390507566, + "ns": 258.9342601030955, + "ns_low": 258.7959366844602, + "ns_high": 259.13737016040795, "throughput": { "Bytes": 32 } @@ -1775,9 +1779,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/32B", - "ns": 242.80205524356393, - "ns_low": 242.74199402818323, - "ns_high": 242.8653863409109, + "ns": 247.96407549798874, + "ns_low": 247.4305176292113, + "ns_high": 248.58586196394566, "throughput": { "Bytes": 32 } @@ -1786,9 +1790,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rind", "id": "xchacha20poly1305/rind/32B", - "ns": 188.41761263598804, - "ns_low": 188.32506774485273, - "ns_high": 188.53697232655088, + "ns": 188.21683891661027, + "ns_low": 188.14795117603384, + "ns_high": 188.2899980132539, "throughput": { "Bytes": 32 } @@ -1797,9 +1801,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/32B", - "ns": 1146.5571641334593, - "ns_low": 1145.802774482716, - "ns_high": 1147.366519396235, + "ns": 888.6649958130141, + "ns_low": 838.5291392313788, + "ns_high": 938.8038022867554, "throughput": { "Bytes": 32 } @@ -1808,9 +1812,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/1350B", - "ns": 541.1767596013333, - "ns_low": 540.7363417585968, - "ns_high": 541.6860097698539, + "ns": 686.6186121731018, + "ns_low": 644.0660887650865, + "ns_high": 724.9261009430636, "throughput": { "Bytes": 1350 } @@ -1819,9 +1823,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "graviola", "id": "xchacha20poly1305/graviola/1350B", - "ns": 986.5437607751297, - "ns_low": 985.3037509509652, - "ns_high": 987.7473912611841, + "ns": 1354.6320475561338, + "ns_low": 1354.0715373022765, + "ns_high": 1355.135864685574, "throughput": { "Bytes": 1350 } @@ -1830,9 +1834,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/1350B", - "ns": 1832.0827932942548, - "ns_low": 1830.6388623335226, - "ns_high": 1833.7235750215148, + "ns": 2560.372328149659, + "ns_low": 2559.131620911031, + "ns_high": 2561.687586519028, "throughput": { "Bytes": 1350 } @@ -1841,9 +1845,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rind", "id": "xchacha20poly1305/rind/1350B", - "ns": 527.6188236665187, - "ns_low": 527.3377121772995, - "ns_high": 527.9946824854946, + "ns": 838.0470138919894, + "ns_low": 836.8895307196619, + "ns_high": 839.3363592162542, "throughput": { "Bytes": 1350 } @@ -1852,9 +1856,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/1350B", - "ns": 1755.3927191432656, - "ns_low": 1754.595052359723, - "ns_high": 1756.1170367007912, + "ns": 1743.6139997342664, + "ns_low": 1740.9467552248213, + "ns_high": 1746.622235407952, "throughput": { "Bytes": 1350 } @@ -1863,9 +1867,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/16KB", - "ns": 4285.265666443431, - "ns_low": 4284.055756374739, - "ns_high": 4286.558298727764, + "ns": 6266.78690135565, + "ns_low": 6241.384146828425, + "ns_high": 6296.471353231269, "throughput": { "Bytes": 16384 } @@ -1874,9 +1878,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "graviola", "id": "xchacha20poly1305/graviola/16KB", - "ns": 8295.176896253059, - "ns_low": 8288.835818527612, - "ns_high": 8302.217506784395, + "ns": 12792.448669230213, + "ns_low": 12720.285979314733, + "ns_high": 12905.27334088855, "throughput": { "Bytes": 16384 } @@ -1885,9 +1889,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "xchacha20poly1305/libcrux/16KB", - "ns": 19580.268705911516, - "ns_low": 19572.224885043484, - "ns_high": 19588.86254149114, + "ns": 27402.972695702407, + "ns_low": 27356.563110697218, + "ns_high": 27482.3131649184, "throughput": { "Bytes": 16384 } @@ -1896,9 +1900,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rind", "id": "xchacha20poly1305/rind/16KB", - "ns": 4195.558675469397, - "ns_low": 4193.903150521701, - "ns_high": 4197.508974435308, + "ns": 6264.230768081675, + "ns_low": 6241.383487885265, + "ns_high": 6290.758029882741, "throughput": { "Bytes": 16384 } @@ -1907,9 +1911,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/16KB", - "ns": 8254.88038769226, - "ns_low": 8244.046135113782, - "ns_high": 8264.392912782863, + "ns": 12275.179641477398, + "ns_low": 12262.180659608572, + "ns_high": 12292.737803105292, "throughput": { "Bytes": 16384 } @@ -1918,90 +1922,90 @@ "operation": "quic-header-protection/aes128/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/aes128/aws-lc-rs", - "ns": 3.323764070921757, - "ns_low": 3.3203417226290997, - "ns_high": 3.3274024490048024, + "ns": 3.2849226379225094, + "ns_low": 3.2824123377854058, + "ns_high": 3.2875679946309515, "throughput": null }, { "operation": "quic-header-protection/aes128/{lib}", "library": "rind", "id": "quic-header-protection/aes128/rind", - "ns": 1.8674127869521155, - "ns_low": 1.8656393681954448, - "ns_high": 1.8694180413260943, + "ns": 2.0647221143564978, + "ns_low": 2.062700353203003, + "ns_high": 2.0665228229297576, "throughput": null }, { "operation": "quic-header-protection/aes128/{lib}", "library": "ring", "id": "quic-header-protection/aes128/ring", - "ns": 3.457442726240264, - "ns_low": 3.4570482223913754, - "ns_high": 3.4578861902084363, + "ns": 3.4586795363554375, + "ns_low": 3.4581953521690547, + "ns_high": 3.4592395855204723, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/aes256/aws-lc-rs", - "ns": 3.9496700200276407, - "ns_low": 3.947677367780432, - "ns_high": 3.9516176171540898, + "ns": 4.966270656140425, + "ns_low": 4.961734935091905, + "ns_high": 4.972089672706578, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "rind", "id": "quic-header-protection/aes256/rind", - "ns": 2.401194060625821, - "ns_low": 2.400764973390783, - "ns_high": 2.4016769004745715, + "ns": 2.4160309628134593, + "ns_low": 2.411033919194383, + "ns_high": 2.421304827374455, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "ring", "id": "quic-header-protection/aes256/ring", - "ns": 5.218055508019865, - "ns_low": 5.2168652168490235, - "ns_high": 5.219307480572652, + "ns": 5.2112390010865965, + "ns_low": 5.210506429014621, + "ns_high": 5.211871118112404, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/chacha20/aws-lc-rs", - "ns": 68.654681828175, - "ns_low": 68.6093194694357, - "ns_high": 68.70749795862679, + "ns": 68.73582007739031, + "ns_low": 68.68645440313031, + "ns_high": 68.79832191458829, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "rind", "id": "quic-header-protection/chacha20/rind", - "ns": 53.94867151788668, - "ns_low": 53.92928714784612, - "ns_high": 53.96823220589991, + "ns": 53.83298747257399, + "ns_low": 53.819105496568675, + "ns_high": 53.84363934079744, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "ring", "id": "quic-header-protection/chacha20/ring", - "ns": 61.35507507001047, - "ns_low": 61.33588922454494, - "ns_high": 61.375823008937914, + "ns": 61.365653485366614, + "ns_low": 61.35859778939534, + "ns_high": 61.372462436134185, "throughput": null }, { "operation": "x25519-ecdh/{lib}", "library": "aws-lc-rs", "id": "x25519-ecdh/aws-lc-rs", - "ns": 19144.84242018906, - "ns_low": 19136.027530265037, - "ns_high": 19154.487231622617, + "ns": 19539.07523312851, + "ns_low": 19529.410818747132, + "ns_high": 19549.624432104047, "throughput": { "Elements": 1 } @@ -2010,9 +2014,9 @@ "operation": "x25519-ecdh/{lib}", "library": "graviola", "id": "x25519-ecdh/graviola", - "ns": 18245.232043473003, - "ns_low": 18195.103520255605, - "ns_high": 18293.555392830873, + "ns": 18501.332028605844, + "ns_low": 18485.933949435952, + "ns_high": 18518.730083863447, "throughput": { "Elements": 1 } @@ -2021,9 +2025,9 @@ "operation": "x25519-ecdh/{lib}", "library": "libcrux", "id": "x25519-ecdh/libcrux", - "ns": 42705.90319353726, - "ns_low": 42608.389648775745, - "ns_high": 42791.83365335376, + "ns": 43113.798955646096, + "ns_low": 43051.83638575586, + "ns_high": 43187.79841123523, "throughput": { "Elements": 1 } @@ -2032,9 +2036,9 @@ "operation": "x25519-ecdh/{lib}", "library": "openssl", "id": "x25519-ecdh/openssl", - "ns": 33927.11232697897, - "ns_low": 33903.37837634754, - "ns_high": 33961.494254211524, + "ns": 34024.5442590677, + "ns_low": 34006.790643593515, + "ns_high": 34042.3751392026, "throughput": { "Elements": 1 } @@ -2043,9 +2047,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rind", "id": "x25519-ecdh/rind", - "ns": 17943.24532723685, - "ns_low": 17933.887858641716, - "ns_high": 17952.550695357022, + "ns": 19678.88051569336, + "ns_low": 18952.68522734565, + "ns_high": 20611.426825591097, "throughput": { "Elements": 1 } @@ -2054,9 +2058,9 @@ "operation": "x25519-ecdh/{lib}", "library": "ring", "id": "x25519-ecdh/ring", - "ns": 35190.6159905095, - "ns_low": 35105.8659805795, - "ns_high": 35262.98736089141, + "ns": 35625.81028391459, + "ns_low": 35590.293549810085, + "ns_high": 35671.68112702232, "throughput": { "Elements": 1 } @@ -2065,9 +2069,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rustcrypto", "id": "x25519-ecdh/dalek", - "ns": 36034.993355818464, - "ns_low": 35966.63339386468, - "ns_high": 36111.272402235234, + "ns": 36521.55596936691, + "ns_low": 36457.03349006353, + "ns_high": 36591.702263013, "throughput": { "Elements": 1 } @@ -2076,9 +2080,9 @@ "operation": "p256-ecdh/{lib}", "library": "aws-lc-rs", "id": "p256-ecdh/aws-lc-rs", - "ns": 32017.935708741337, - "ns_low": 31973.25309210088, - "ns_high": 32065.360382350213, + "ns": 32271.02992058986, + "ns_low": 32265.10891500941, + "ns_high": 32277.08901188484, "throughput": { "Elements": 1 } @@ -2087,9 +2091,9 @@ "operation": "p256-ecdh/{lib}", "library": "graviola", "id": "p256-ecdh/graviola", - "ns": 32864.53979202476, - "ns_low": 32838.27821896862, - "ns_high": 32895.49072098118, + "ns": 33457.81835640281, + "ns_low": 33407.59196722123, + "ns_high": 33516.89269547137, "throughput": { "Elements": 1 } @@ -2098,9 +2102,9 @@ "operation": "p256-ecdh/{lib}", "library": "libcrux", "id": "p256-ecdh/libcrux", - "ns": 168875.68072040787, - "ns_low": 168776.28663356166, - "ns_high": 168979.17270715546, + "ns": 169873.68446948426, + "ns_low": 169757.5791468354, + "ns_high": 169997.15367285899, "throughput": { "Elements": 1 } @@ -2109,9 +2113,9 @@ "operation": "p256-ecdh/{lib}", "library": "openssl", "id": "p256-ecdh/openssl", - "ns": 52962.92574060391, - "ns_low": 52948.59109021728, - "ns_high": 52978.417279290385, + "ns": 52909.10165706123, + "ns_low": 52895.90814646757, + "ns_high": 52921.794180116354, "throughput": { "Elements": 1 } @@ -2120,9 +2124,9 @@ "operation": "p256-ecdh/{lib}", "library": "rind", "id": "p256-ecdh/rind", - "ns": 29989.63259317275, - "ns_low": 29957.39998186025, - "ns_high": 30038.493728611076, + "ns": 29851.50953746121, + "ns_low": 29846.40621867361, + "ns_high": 29856.573036248763, "throughput": { "Elements": 1 } @@ -2131,9 +2135,9 @@ "operation": "p256-ecdh/{lib}", "library": "ring", "id": "p256-ecdh/ring", - "ns": 34208.63982053429, - "ns_low": 34198.3236057086, - "ns_high": 34218.940557100585, + "ns": 34142.86827085694, + "ns_low": 34137.08196928248, + "ns_high": 34148.502620533625, "throughput": { "Elements": 1 } @@ -2142,9 +2146,9 @@ "operation": "p256-ecdh/{lib}", "library": "rustcrypto", "id": "p256-ecdh/p256-rustcrypto", - "ns": 120664.54232303827, - "ns_low": 120563.78585291078, - "ns_high": 120767.6533302705, + "ns": 123013.99444953451, + "ns_low": 122902.48899810149, + "ns_high": 123120.46865515188, "throughput": { "Elements": 1 } @@ -2153,9 +2157,9 @@ "operation": "ed25519-sign/{lib}", "library": "aws-lc-rs", "id": "ed25519-sign/aws-lc-rs", - "ns": 4444.720418928213, - "ns_low": 4441.9478567118385, - "ns_high": 4447.902962675923, + "ns": 4559.71967281723, + "ns_low": 4557.983130516597, + "ns_high": 4561.535691701763, "throughput": { "Elements": 1 } @@ -2164,9 +2168,9 @@ "operation": "ed25519-sign/{lib}", "library": "graviola", "id": "ed25519-sign/graviola", - "ns": 4366.8187113072345, - "ns_low": 4363.8518879248095, - "ns_high": 4370.127386046663, + "ns": 4389.219670568242, + "ns_low": 4384.481990870854, + "ns_high": 4393.613744969962, "throughput": { "Elements": 1 } @@ -2175,9 +2179,9 @@ "operation": "ed25519-sign/{lib}", "library": "libcrux", "id": "ed25519-sign/libcrux", - "ns": 29046.855279894728, - "ns_low": 29038.220363495988, - "ns_high": 29056.14565885802, + "ns": 28971.245762136983, + "ns_low": 28942.490320735833, + "ns_high": 28997.342978912086, "throughput": { "Elements": 1 } @@ -2186,9 +2190,9 @@ "operation": "ed25519-sign/{lib}", "library": "openssl", "id": "ed25519-sign/openssl", - "ns": 13465.284065875245, - "ns_low": 13455.845745489267, - "ns_high": 13475.029299709815, + "ns": 13689.403496110805, + "ns_low": 13683.254110178561, + "ns_high": 13695.234785547975, "throughput": { "Elements": 1 } @@ -2197,9 +2201,9 @@ "operation": "ed25519-sign/{lib}", "library": "rind", "id": "ed25519-sign/rind", - "ns": 4285.688081375301, - "ns_low": 4279.109294172099, - "ns_high": 4291.506666458376, + "ns": 4154.487217213111, + "ns_low": 4153.6244639645865, + "ns_high": 4155.402495573023, "throughput": { "Elements": 1 } @@ -2208,9 +2212,9 @@ "operation": "ed25519-sign/{lib}", "library": "ring", "id": "ed25519-sign/ring", - "ns": 13300.035858200745, - "ns_low": 13295.640108992722, - "ns_high": 13304.515628016521, + "ns": 13142.536287473524, + "ns_low": 13133.836057271445, + "ns_high": 13153.326046876806, "throughput": { "Elements": 1 } @@ -2219,9 +2223,9 @@ "operation": "ed25519-sign/{lib}", "library": "rustcrypto", "id": "ed25519-sign/dalek", - "ns": 9562.985104280577, - "ns_low": 9494.458106189728, - "ns_high": 9641.842183003744, + "ns": 9611.307830824064, + "ns_low": 9551.147298028834, + "ns_high": 9679.455435569824, "throughput": { "Elements": 1 } @@ -2230,9 +2234,9 @@ "operation": "ed25519-verify/{lib}", "library": "aws-lc-rs", "id": "ed25519-verify/aws-lc-rs", - "ns": 21821.438956279424, - "ns_low": 21811.992230289754, - "ns_high": 21831.20779077204, + "ns": 21557.014412696066, + "ns_low": 21544.428828753575, + "ns_high": 21570.50912144487, "throughput": { "Elements": 1 } @@ -2241,9 +2245,9 @@ "operation": "ed25519-verify/{lib}", "library": "graviola", "id": "ed25519-verify/graviola", - "ns": 21558.13238795415, - "ns_low": 21534.209367184427, - "ns_high": 21581.835810344874, + "ns": 21606.95345911883, + "ns_low": 21592.861468028925, + "ns_high": 21622.26833533975, "throughput": { "Elements": 1 } @@ -2252,9 +2256,9 @@ "operation": "ed25519-verify/{lib}", "library": "libcrux", "id": "ed25519-verify/libcrux", - "ns": 41909.454877873715, - "ns_low": 41778.98178132451, - "ns_high": 42079.926200806585, + "ns": 42158.497070446916, + "ns_low": 42073.35130677657, + "ns_high": 42254.28657823319, "throughput": { "Elements": 1 } @@ -2263,9 +2267,9 @@ "operation": "ed25519-verify/{lib}", "library": "openssl", "id": "ed25519-verify/openssl", - "ns": 45619.7547191201, - "ns_low": 45556.89227785928, - "ns_high": 45687.519586861956, + "ns": 45586.51014207604, + "ns_low": 45532.70859802636, + "ns_high": 45644.30197091045, "throughput": { "Elements": 1 } @@ -2274,9 +2278,9 @@ "operation": "ed25519-verify/{lib}", "library": "rind", "id": "ed25519-verify/rind", - "ns": 21873.02019369208, - "ns_low": 21864.220575847143, - "ns_high": 21882.069952005048, + "ns": 21752.237589035023, + "ns_low": 21723.92394684079, + "ns_high": 21779.269500172133, "throughput": { "Elements": 1 } @@ -2285,9 +2289,9 @@ "operation": "ed25519-verify/{lib}", "library": "ring", "id": "ed25519-verify/ring", - "ns": 26510.550210934136, - "ns_low": 26466.768730008458, - "ns_high": 26559.188014552197, + "ns": 26215.124359905167, + "ns_low": 26168.019510703652, + "ns_high": 26259.218774584755, "throughput": { "Elements": 1 } @@ -2296,9 +2300,9 @@ "operation": "ed25519-verify/{lib}", "library": "rustcrypto", "id": "ed25519-verify/dalek", - "ns": 22148.717450809756, - "ns_low": 22119.03587225269, - "ns_high": 22181.190159805254, + "ns": 21882.835314297598, + "ns_low": 21849.237143501105, + "ns_high": 21914.91843600585, "throughput": { "Elements": 1 } @@ -2307,9 +2311,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-sign/aws-lc-rs", - "ns": 12422.915958511896, - "ns_low": 12417.187666533047, - "ns_high": 12427.74887995565, + "ns": 12332.36324582382, + "ns_low": 12316.212140144853, + "ns_high": 12346.124363495894, "throughput": { "Elements": 1 } @@ -2318,9 +2322,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "graviola", "id": "p256-ecdsa-sign/graviola", - "ns": 8805.63841418997, - "ns_low": 8802.39370442639, - "ns_high": 8809.034518289214, + "ns": 9257.151430933205, + "ns_low": 9253.446096115242, + "ns_high": 9261.351256878088, "throughput": { "Elements": 1 } @@ -2329,9 +2333,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "libcrux", "id": "p256-ecdsa-sign/libcrux", - "ns": 60926.10648293188, - "ns_low": 60836.77123705203, - "ns_high": 61027.081814345176, + "ns": 61343.790970888134, + "ns_low": 61250.731106093524, + "ns_high": 61444.28125033763, "throughput": { "Elements": 1 } @@ -2340,9 +2344,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "openssl", "id": "p256-ecdsa-sign/openssl", - "ns": 14371.973788764804, - "ns_low": 14367.670678265651, - "ns_high": 14377.886942402833, + "ns": 14328.932126636972, + "ns_low": 14307.689034706804, + "ns_high": 14347.6497657631, "throughput": { "Elements": 1 } @@ -2351,9 +2355,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rind", "id": "p256-ecdsa-sign/rind", - "ns": 7079.542029503038, - "ns_low": 7075.815273862027, - "ns_high": 7083.559204929563, + "ns": 6840.185645814581, + "ns_low": 6825.26097255226, + "ns_high": 6853.423030453744, "throughput": { "Elements": 1 } @@ -2362,9 +2366,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "ring", "id": "p256-ecdsa-sign/ring", - "ns": 12375.789850930989, - "ns_low": 12373.49070972109, - "ns_high": 12378.201069755609, + "ns": 12240.63920520654, + "ns_low": 12226.679925387518, + "ns_high": 12257.271526323188, "throughput": { "Elements": 1 } @@ -2373,9 +2377,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-sign/rustcrypto", - "ns": 31490.729479906357, - "ns_low": 31470.12235362625, - "ns_high": 31515.268582558787, + "ns": 31654.61057928181, + "ns_low": 31626.914260109254, + "ns_high": 31678.138407597206, "throughput": { "Elements": 1 } @@ -2384,9 +2388,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-verify/aws-lc-rs", - "ns": 30337.84825417467, - "ns_low": 30317.79570003319, - "ns_high": 30359.721964100052, + "ns": 30084.66275306635, + "ns_low": 30016.618665199156, + "ns_high": 30159.140540112905, "throughput": { "Elements": 1 } @@ -2395,9 +2399,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "graviola", "id": "p256-ecdsa-verify/graviola", - "ns": 32929.90390253008, - "ns_low": 32912.66888675485, - "ns_high": 32949.06962069213, + "ns": 32891.974416712685, + "ns_low": 32875.16349251131, + "ns_high": 32906.44431223083, "throughput": { "Elements": 1 } @@ -2406,9 +2410,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "libcrux", "id": "p256-ecdsa-verify/libcrux", - "ns": 146391.63158563618, - "ns_low": 146193.30167965346, - "ns_high": 146561.00366815832, + "ns": 147106.718173489, + "ns_low": 147033.92941888553, + "ns_high": 147172.52405767862, "throughput": { "Elements": 1 } @@ -2417,9 +2421,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "openssl", "id": "p256-ecdsa-verify/openssl", - "ns": 46073.91131395574, - "ns_low": 45968.80174162998, - "ns_high": 46181.170857014724, + "ns": 46409.04586306851, + "ns_low": 46372.64329527699, + "ns_high": 46440.39038689084, "throughput": { "Elements": 1 } @@ -2428,9 +2432,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rind", "id": "p256-ecdsa-verify/rind", - "ns": 30775.089626717894, - "ns_low": 30764.048216179446, - "ns_high": 30788.193641957165, + "ns": 30949.83417940003, + "ns_low": 30907.22497757062, + "ns_high": 30993.593756844246, "throughput": { "Elements": 1 } @@ -2439,9 +2443,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "ring", "id": "p256-ecdsa-verify/ring", - "ns": 33202.742904290426, - "ns_low": 33184.06608727375, - "ns_high": 33221.917450373585, + "ns": 33740.66733034497, + "ns_low": 33728.36186738411, + "ns_high": 33753.28131004164, "throughput": { "Elements": 1 } @@ -2450,9 +2454,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-verify/rustcrypto", - "ns": 102682.47521156594, - "ns_low": 102594.99279364239, - "ns_high": 102774.28299351949, + "ns": 104580.64370622137, + "ns_low": 104507.31492770273, + "ns_high": 104650.308853841, "throughput": { "Elements": 1 } @@ -2461,9 +2465,9 @@ "operation": "sha256/{lib}/64B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/64B", - "ns": 57.1858488633668, - "ns_low": 57.167427072407314, - "ns_high": 57.20673486211818, + "ns": 57.07780498017607, + "ns_low": 57.03924007344737, + "ns_high": 57.122334662770214, "throughput": { "Bytes": 64 } @@ -2472,9 +2476,9 @@ "operation": "sha256/{lib}/64B", "library": "graviola", "id": "sha256/graviola/64B", - "ns": 40.17382717123905, - "ns_low": 40.127384913870685, - "ns_high": 40.22406161682223, + "ns": 40.888094007132246, + "ns_low": 40.82697235690137, + "ns_high": 40.959848187695705, "throughput": { "Bytes": 64 } @@ -2483,9 +2487,9 @@ "operation": "sha256/{lib}/64B", "library": "libcrux", "id": "sha256/libcrux/64B", - "ns": 211.74083014705658, - "ns_low": 211.52625820997056, - "ns_high": 211.95572625162444, + "ns": 211.463824432683, + "ns_low": 211.24841884933582, + "ns_high": 211.6952872519302, "throughput": { "Bytes": 64 } @@ -2494,9 +2498,9 @@ "operation": "sha256/{lib}/64B", "library": "openssl", "id": "sha256/openssl/64B", - "ns": 156.85933352959265, - "ns_low": 156.74714859795753, - "ns_high": 156.97859949926573, + "ns": 161.46531875596597, + "ns_low": 161.3323192163265, + "ns_high": 161.645625905102, "throughput": { "Bytes": 64 } @@ -2505,9 +2509,9 @@ "operation": "sha256/{lib}/64B", "library": "rind", "id": "sha256/rind/64B", - "ns": 56.382843417019906, - "ns_low": 56.33986031339014, - "ns_high": 56.42180693240363, + "ns": 28.205992954074453, + "ns_low": 28.066879994220102, + "ns_high": 28.358531151598367, "throughput": { "Bytes": 64 } @@ -2516,9 +2520,9 @@ "operation": "sha256/{lib}/64B", "library": "ring", "id": "sha256/ring/64B", - "ns": 57.244923386415536, - "ns_low": 57.14093349994902, - "ns_high": 57.34197126120476, + "ns": 57.64047680394514, + "ns_low": 57.446493780869076, + "ns_high": 57.870419151601645, "throughput": { "Bytes": 64 } @@ -2527,9 +2531,9 @@ "operation": "sha256/{lib}/64B", "library": "rustcrypto", "id": "sha256/rustcrypto/64B", - "ns": 39.11461296948406, - "ns_low": 39.05926145167416, - "ns_high": 39.16849096189701, + "ns": 39.82655421676985, + "ns_low": 39.75719985276131, + "ns_high": 39.90312173598696, "throughput": { "Bytes": 64 } @@ -2538,9 +2542,9 @@ "operation": "sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/1350B", - "ns": 311.3285692065481, - "ns_low": 311.2515974335056, - "ns_high": 311.4129659386479, + "ns": 311.50030013323084, + "ns_low": 311.4391643052842, + "ns_high": 311.5697877423096, "throughput": { "Bytes": 1350 } @@ -2549,9 +2553,9 @@ "operation": "sha256/{lib}/1350B", "library": "graviola", "id": "sha256/graviola/1350B", - "ns": 297.60040608274613, - "ns_low": 297.47893781187645, - "ns_high": 297.7364050790519, + "ns": 297.28542574967105, + "ns_low": 297.2191239313175, + "ns_high": 297.357642170268, "throughput": { "Bytes": 1350 } @@ -2560,9 +2564,9 @@ "operation": "sha256/{lib}/1350B", "library": "libcrux", "id": "sha256/libcrux/1350B", - "ns": 2295.2561554534486, - "ns_low": 2292.6036755816463, - "ns_high": 2298.0451659131522, + "ns": 2305.0078034727926, + "ns_low": 2300.979740841767, + "ns_high": 2309.24310840217, "throughput": { "Bytes": 1350 } @@ -2571,9 +2575,9 @@ "operation": "sha256/{lib}/1350B", "library": "openssl", "id": "sha256/openssl/1350B", - "ns": 411.9936726262917, - "ns_low": 411.5607479566354, - "ns_high": 412.41304048539246, + "ns": 414.50699030428865, + "ns_low": 414.1822574660999, + "ns_high": 414.9161904417849, "throughput": { "Bytes": 1350 } @@ -2582,9 +2586,9 @@ "operation": "sha256/{lib}/1350B", "library": "rind", "id": "sha256/rind/1350B", - "ns": 297.5390449293686, - "ns_low": 297.44495677956417, - "ns_high": 297.6417284992708, + "ns": 279.33023365347293, + "ns_low": 279.181897587058, + "ns_high": 279.5214269345492, "throughput": { "Bytes": 1350 } @@ -2593,9 +2597,9 @@ "operation": "sha256/{lib}/1350B", "library": "ring", "id": "sha256/ring/1350B", - "ns": 299.4016135541343, - "ns_low": 299.217207315031, - "ns_high": 299.61908669075723, + "ns": 304.2757826058346, + "ns_low": 304.12858288402794, + "ns_high": 304.44288429327634, "throughput": { "Bytes": 1350 } @@ -2604,9 +2608,9 @@ "operation": "sha256/{lib}/1350B", "library": "rustcrypto", "id": "sha256/rustcrypto/1350B", - "ns": 291.55094457083317, - "ns_low": 291.43144631674363, - "ns_high": 291.6835432504823, + "ns": 296.492608468818, + "ns_low": 296.3904108710414, + "ns_high": 296.6248990647093, "throughput": { "Bytes": 1350 } @@ -2615,9 +2619,9 @@ "operation": "sha256/{lib}/16KB", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/16KB", - "ns": 3226.463447174084, - "ns_low": 3224.8900711195643, - "ns_high": 3228.426531230971, + "ns": 3283.0295457725865, + "ns_low": 3281.7344439904296, + "ns_high": 3284.786733755064, "throughput": { "Bytes": 16384 } @@ -2626,9 +2630,9 @@ "operation": "sha256/{lib}/16KB", "library": "graviola", "id": "sha256/graviola/16KB", - "ns": 3216.385147958705, - "ns_low": 3209.6519174105615, - "ns_high": 3224.3786170803464, + "ns": 3265.6333773629945, + "ns_low": 3263.9351752677467, + "ns_high": 3267.806741465453, "throughput": { "Bytes": 16384 } @@ -2637,9 +2641,9 @@ "operation": "sha256/{lib}/16KB", "library": "libcrux", "id": "sha256/libcrux/16KB", - "ns": 26368.930624706856, - "ns_low": 26334.899594829272, - "ns_high": 26404.081400367555, + "ns": 26811.13259603832, + "ns_low": 26779.51980835993, + "ns_high": 26845.04406403952, "throughput": { "Bytes": 16384 } @@ -2648,9 +2652,9 @@ "operation": "sha256/{lib}/16KB", "library": "openssl", "id": "sha256/openssl/16KB", - "ns": 3384.0715833019867, - "ns_low": 3383.0562895775947, - "ns_high": 3385.2843088061704, + "ns": 3392.394214545378, + "ns_low": 3389.5899201151756, + "ns_high": 3396.129832636286, "throughput": { "Bytes": 16384 } @@ -2659,9 +2663,9 @@ "operation": "sha256/{lib}/16KB", "library": "rind", "id": "sha256/rind/16KB", - "ns": 3212.4632132886545, - "ns_low": 3211.287872722771, - "ns_high": 3213.713222145229, + "ns": 3242.8920252536286, + "ns_low": 3242.3904644935947, + "ns_high": 3243.5038008749425, "throughput": { "Bytes": 16384 } @@ -2670,9 +2674,9 @@ "operation": "sha256/{lib}/16KB", "library": "ring", "id": "sha256/ring/16KB", - "ns": 3218.9405143242843, - "ns_low": 3217.7020711057376, - "ns_high": 3220.333429381274, + "ns": 3276.5819758784146, + "ns_low": 3275.098823852031, + "ns_high": 3278.240138337619, "throughput": { "Bytes": 16384 } @@ -2681,9 +2685,9 @@ "operation": "sha256/{lib}/16KB", "library": "rustcrypto", "id": "sha256/rustcrypto/16KB", - "ns": 3211.020686671007, - "ns_low": 3210.1060791987625, - "ns_high": 3211.9920671086156, + "ns": 3263.4494344217883, + "ns_low": 3262.1079096121252, + "ns_high": 3265.756119663615, "throughput": { "Bytes": 16384 } @@ -2692,9 +2696,9 @@ "operation": "sha512/{lib}/64B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/64B", - "ns": 133.18885861446725, - "ns_low": 133.1115311874121, - "ns_high": 133.27128068970282, + "ns": 136.2655991208623, + "ns_low": 136.1299679034618, + "ns_high": 136.4049697981706, "throughput": { "Bytes": 64 } @@ -2703,9 +2707,9 @@ "operation": "sha512/{lib}/64B", "library": "graviola", "id": "sha512/graviola/64B", - "ns": 146.48674204594278, - "ns_low": 146.29652236192368, - "ns_high": 146.68165005478176, + "ns": 149.7061188254441, + "ns_low": 149.20822473788772, + "ns_high": 150.319748905392, "throughput": { "Bytes": 64 } @@ -2714,9 +2718,9 @@ "operation": "sha512/{lib}/64B", "library": "libcrux", "id": "sha512/libcrux/64B", - "ns": 163.03967182226654, - "ns_low": 162.82978359558078, - "ns_high": 163.24725551781776, + "ns": 167.17430978333616, + "ns_low": 165.72725270938466, + "ns_high": 168.8867037846744, "throughput": { "Bytes": 64 } @@ -2725,9 +2729,9 @@ "operation": "sha512/{lib}/64B", "library": "openssl", "id": "sha512/openssl/64B", - "ns": 227.14109269564565, - "ns_low": 226.64673578268432, - "ns_high": 227.6701897056107, + "ns": 232.78727189215087, + "ns_low": 232.26529006657455, + "ns_high": 233.51007899749916, "throughput": { "Bytes": 64 } @@ -2736,9 +2740,9 @@ "operation": "sha512/{lib}/64B", "library": "rind", "id": "sha512/rind/64B", - "ns": 131.80704803605994, - "ns_low": 131.62267513582088, - "ns_high": 132.0091862170647, + "ns": 60.14709963910266, + "ns_low": 59.94789265359081, + "ns_high": 60.35184473538463, "throughput": { "Bytes": 64 } @@ -2747,9 +2751,9 @@ "operation": "sha512/{lib}/64B", "library": "ring", "id": "sha512/ring/64B", - "ns": 139.45200804726338, - "ns_low": 139.04241282706792, - "ns_high": 139.82412487033068, + "ns": 141.7260210111771, + "ns_low": 141.3850173604179, + "ns_high": 142.03714113120193, "throughput": { "Bytes": 64 } @@ -2758,9 +2762,9 @@ "operation": "sha512/{lib}/64B", "library": "rustcrypto", "id": "sha512/rustcrypto/64B", - "ns": 125.15062383526391, - "ns_low": 124.78097514543676, - "ns_high": 125.44833665703989, + "ns": 119.66486417325247, + "ns_low": 119.59295205917444, + "ns_high": 119.74559350850211, "throughput": { "Bytes": 64 } @@ -2769,9 +2773,9 @@ "operation": "sha512/{lib}/1350B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/1350B", - "ns": 1262.6230196516995, - "ns_low": 1261.9161224260667, - "ns_high": 1263.370477538846, + "ns": 1266.5752973724175, + "ns_low": 1263.7482848364666, + "ns_high": 1270.620632241901, "throughput": { "Bytes": 1350 } @@ -2780,9 +2784,9 @@ "operation": "sha512/{lib}/1350B", "library": "graviola", "id": "sha512/graviola/1350B", - "ns": 1499.3392559756217, - "ns_low": 1496.1886261820514, - "ns_high": 1502.0320623479606, + "ns": 1508.3237133029922, + "ns_low": 1507.3853594131954, + "ns_high": 1509.449740586973, "throughput": { "Bytes": 1350 } @@ -2791,9 +2795,9 @@ "operation": "sha512/{lib}/1350B", "library": "libcrux", "id": "sha512/libcrux/1350B", - "ns": 1719.4673211708457, - "ns_low": 1715.6584590868385, - "ns_high": 1723.1435102608066, + "ns": 1688.1435554561963, + "ns_low": 1680.9787033325974, + "ns_high": 1694.0590923782233, "throughput": { "Bytes": 1350 } @@ -2802,9 +2806,9 @@ "operation": "sha512/{lib}/1350B", "library": "openssl", "id": "sha512/openssl/1350B", - "ns": 1192.922070593085, - "ns_low": 1192.209485988797, - "ns_high": 1193.6924418827045, + "ns": 1198.4821694942725, + "ns_low": 1197.893327069669, + "ns_high": 1199.1243746919226, "throughput": { "Bytes": 1350 } @@ -2813,9 +2817,9 @@ "operation": "sha512/{lib}/1350B", "library": "rind", "id": "sha512/rind/1350B", - "ns": 1229.239838682487, - "ns_low": 1228.801238985585, - "ns_high": 1229.7153145177715, + "ns": 470.24864981801466, + "ns_low": 409.08206027196167, + "ns_high": 526.1629114299801, "throughput": { "Bytes": 1350 } @@ -2824,9 +2828,9 @@ "operation": "sha512/{lib}/1350B", "library": "ring", "id": "sha512/ring/1350B", - "ns": 1256.0044414820977, - "ns_low": 1254.4393556668635, - "ns_high": 1257.4185941207415, + "ns": 1264.6400820225058, + "ns_low": 1263.0291710358488, + "ns_high": 1266.4275746491335, "throughput": { "Bytes": 1350 } @@ -2835,9 +2839,9 @@ "operation": "sha512/{lib}/1350B", "library": "rustcrypto", "id": "sha512/rustcrypto/1350B", - "ns": 1172.838368000568, - "ns_low": 1172.0734034989978, - "ns_high": 1173.5331478150176, + "ns": 1177.0814654567803, + "ns_low": 1175.705865498065, + "ns_high": 1178.6655036008042, "throughput": { "Bytes": 1350 } @@ -2846,9 +2850,9 @@ "operation": "sha512/{lib}/16KB", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/16KB", - "ns": 14093.36921551579, - "ns_low": 14086.831162687155, - "ns_high": 14100.370797918451, + "ns": 14324.6124127594, + "ns_low": 14322.068947079335, + "ns_high": 14327.458794272552, "throughput": { "Bytes": 16384 } @@ -2857,9 +2861,9 @@ "operation": "sha512/{lib}/16KB", "library": "graviola", "id": "sha512/graviola/16KB", - "ns": 17620.981933865907, - "ns_low": 17615.035970132678, - "ns_high": 17628.00949740287, + "ns": 17960.455877766883, + "ns_low": 17945.06157671212, + "ns_high": 17976.991053498718, "throughput": { "Bytes": 16384 } @@ -2868,9 +2872,9 @@ "operation": "sha512/{lib}/16KB", "library": "libcrux", "id": "sha512/libcrux/16KB", - "ns": 19803.269510861533, - "ns_low": 19762.416467371673, - "ns_high": 19843.458148770816, + "ns": 20014.21848342446, + "ns_low": 19975.524612208614, + "ns_high": 20055.03547118072, "throughput": { "Bytes": 16384 } @@ -2879,9 +2883,9 @@ "operation": "sha512/{lib}/16KB", "library": "openssl", "id": "sha512/openssl/16KB", - "ns": 12303.159794440608, - "ns_low": 12295.19212595207, - "ns_high": 12311.959132221746, + "ns": 12508.177673821487, + "ns_low": 12505.579143665225, + "ns_high": 12511.403772787979, "throughput": { "Bytes": 16384 } @@ -2890,9 +2894,9 @@ "operation": "sha512/{lib}/16KB", "library": "rind", "id": "sha512/rind/16KB", - "ns": 14313.774477852507, - "ns_low": 14300.90603553812, - "ns_high": 14326.51450585556, + "ns": 2682.4944639142445, + "ns_low": 2682.0680151586207, + "ns_high": 2682.980999425245, "throughput": { "Bytes": 16384 } @@ -2901,9 +2905,9 @@ "operation": "sha512/{lib}/16KB", "library": "ring", "id": "sha512/ring/16KB", - "ns": 14090.84379619288, - "ns_low": 14082.849750729742, - "ns_high": 14100.333776181446, + "ns": 14361.137933036374, + "ns_low": 14345.0517225857, + "ns_high": 14383.467400110318, "throughput": { "Bytes": 16384 } @@ -2912,9 +2916,9 @@ "operation": "sha512/{lib}/16KB", "library": "rustcrypto", "id": "sha512/rustcrypto/16KB", - "ns": 13355.38475129304, - "ns_low": 13341.001433499108, - "ns_high": 13371.39590244896, + "ns": 13545.192540537635, + "ns_low": 13539.043584903971, + "ns_high": 13551.570367094011, "throughput": { "Bytes": 16384 } @@ -2923,9 +2927,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/64B", - "ns": 176.64788076810012, - "ns_low": 176.21092846620724, - "ns_high": 177.11183163625338, + "ns": 179.52325180261926, + "ns_low": 179.04996476638283, + "ns_high": 179.95122647804195, "throughput": { "Bytes": 64 } @@ -2934,9 +2938,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "graviola", "id": "hmac-sha256/graviola/64B", - "ns": 109.4910675962231, - "ns_low": 109.14295603594528, - "ns_high": 109.8659279952935, + "ns": 114.6121248659075, + "ns_low": 114.36401551181646, + "ns_high": 114.8355854360762, "throughput": { "Bytes": 64 } @@ -2945,9 +2949,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "libcrux", "id": "hmac-sha256/libcrux/64B", - "ns": 547.3048291305031, - "ns_low": 544.2994134963602, - "ns_high": 550.5396984139813, + "ns": 535.7057888058907, + "ns_low": 534.042470022342, + "ns_high": 537.3795627766356, "throughput": { "Bytes": 64 } @@ -2956,9 +2960,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "openssl", "id": "hmac-sha256/openssl/64B", - "ns": 1539.07019690473, - "ns_low": 1537.7585796473502, - "ns_high": 1540.4932317353255, + "ns": 1562.800352892099, + "ns_low": 1560.8820703584079, + "ns_high": 1564.4973883425225, "throughput": { "Bytes": 64 } @@ -2967,9 +2971,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rind", "id": "hmac-sha256/rind/64B", - "ns": 87.22413110915667, - "ns_low": 87.19410827692134, - "ns_high": 87.25667912614038, + "ns": 75.27759916225655, + "ns_low": 75.24755736657713, + "ns_high": 75.30460323949843, "throughput": { "Bytes": 64 } @@ -2978,9 +2982,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "ring", "id": "hmac-sha256/ring/64B", - "ns": 142.92374501311264, - "ns_low": 142.72880650320002, - "ns_high": 143.12744889980735, + "ns": 145.08627766905616, + "ns_low": 144.86466488783432, + "ns_high": 145.29121159645564, "throughput": { "Bytes": 64 } @@ -2989,9 +2993,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/64B", - "ns": 103.16029750269851, - "ns_low": 102.97455589665849, - "ns_high": 103.342543366898, + "ns": 104.45123825647612, + "ns_low": 104.32206098554813, + "ns_high": 104.59109303195464, "throughput": { "Bytes": 64 } @@ -3000,9 +3004,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/1350B", - "ns": 433.1298773137015, - "ns_low": 432.41703308775834, - "ns_high": 433.83052777637164, + "ns": 434.2205046166308, + "ns_low": 433.48499734394835, + "ns_high": 434.8508048814356, "throughput": { "Bytes": 1350 } @@ -3011,9 +3015,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "graviola", "id": "hmac-sha256/graviola/1350B", - "ns": 363.89590358499083, - "ns_low": 363.64220163733603, - "ns_high": 364.1708601333228, + "ns": 362.85941402022263, + "ns_low": 362.3120005509426, + "ns_high": 363.33100025885005, "throughput": { "Bytes": 1350 } @@ -3022,9 +3026,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "libcrux", "id": "hmac-sha256/libcrux/1350B", - "ns": 2784.534161752942, - "ns_low": 2775.1202659920004, - "ns_high": 2794.264513236061, + "ns": 2663.4009064868374, + "ns_low": 2655.8184536123144, + "ns_high": 2671.7821733021406, "throughput": { "Bytes": 1350 } @@ -3033,9 +3037,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "openssl", "id": "hmac-sha256/openssl/1350B", - "ns": 1802.472017024515, - "ns_low": 1799.5363535539134, - "ns_high": 1806.0198472374627, + "ns": 1831.3069454706665, + "ns_low": 1828.336967734266, + "ns_high": 1833.9888859194004, "throughput": { "Bytes": 1350 } @@ -3044,9 +3048,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rind", "id": "hmac-sha256/rind/1350B", - "ns": 340.49320422876536, - "ns_low": 340.30996177686603, - "ns_high": 340.75200342506406, + "ns": 326.76855909676686, + "ns_low": 326.4023564358526, + "ns_high": 327.05976589095803, "throughput": { "Bytes": 1350 } @@ -3055,9 +3059,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "ring", "id": "hmac-sha256/ring/1350B", - "ns": 395.8128831506666, - "ns_low": 395.39104794034563, - "ns_high": 396.2710383438614, + "ns": 399.2343448704809, + "ns_low": 398.7434247279018, + "ns_high": 399.6643116664799, "throughput": { "Bytes": 1350 } @@ -3066,9 +3070,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/1350B", - "ns": 355.24069042860293, - "ns_low": 354.7063826592549, - "ns_high": 355.79857634268166, + "ns": 357.5070450437354, + "ns_low": 357.13555975802785, + "ns_high": 357.83497562574763, "throughput": { "Bytes": 1350 } @@ -3077,117 +3081,117 @@ "operation": "hkdf-sha256/extract-expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/extract-expand/aws-lc-rs", - "ns": 289.7628292140183, - "ns_low": 289.6163414632374, - "ns_high": 289.89783695747434, + "ns": 287.8098287850376, + "ns_low": 287.612103154488, + "ns_high": 287.9812652649698, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/extract-expand/libcrux", - "ns": 971.1534803166738, - "ns_low": 969.9861943098035, - "ns_high": 972.3614109224372, + "ns": 965.1533975637105, + "ns_low": 962.8532652146317, + "ns_high": 967.3152167857165, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "openssl", "id": "hkdf-sha256/extract-expand/openssl", - "ns": 1727.601977138798, - "ns_low": 1726.1892319506007, - "ns_high": 1729.3993640513258, + "ns": 1756.538641568291, + "ns_low": 1754.8270512089846, + "ns_high": 1758.1583153590252, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rind", "id": "hkdf-sha256/extract-expand/rind", - "ns": 192.22857730943187, - "ns_low": 191.92191357223936, - "ns_high": 192.58539129280197, + "ns": 151.84234055019724, + "ns_low": 151.73957879381905, + "ns_high": 151.96314350680365, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "ring", "id": "hkdf-sha256/extract-expand/ring", - "ns": 299.98376367220044, - "ns_low": 299.5146108075447, - "ns_high": 300.50303399541144, + "ns": 305.3730538148794, + "ns_low": 304.881731693248, + "ns_high": 305.8615753565893, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/extract-expand/rustcrypto", - "ns": 220.59232335318853, - "ns_low": 219.89714338505826, - "ns_high": 221.2715709598818, + "ns": 223.1043449543745, + "ns_low": 222.84408996979568, + "ns_high": 223.35041207485347, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/expand/aws-lc-rs", - "ns": 125.54421113741944, - "ns_low": 125.23339718338556, - "ns_high": 125.81307289395855, + "ns": 125.89587997148631, + "ns_low": 125.64336264066881, + "ns_high": 126.19959443812142, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/expand/libcrux", - "ns": 455.8263385688522, - "ns_low": 454.11583703988026, - "ns_high": 457.55380488313887, + "ns": 483.73163128306606, + "ns_low": 482.9202939004775, + "ns_high": 484.5982910743078, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "openssl", "id": "hkdf-sha256/expand/openssl", - "ns": 1238.4677885325846, - "ns_low": 1236.394806599015, - "ns_high": 1240.8982367927797, + "ns": 1247.9604070296657, + "ns_low": 1245.2075502386658, + "ns_high": 1250.9651292340288, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rind", "id": "hkdf-sha256/expand/rind", - "ns": 81.23624050625061, - "ns_low": 81.13526822171711, - "ns_high": 81.35333768229239, + "ns": 46.59085342610036, + "ns_low": 46.579548282759596, + "ns_high": 46.60067962838439, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "ring", "id": "hkdf-sha256/expand/ring", - "ns": 120.36164886528563, - "ns_low": 120.0561027705529, - "ns_high": 120.64128549981123, + "ns": 122.48199763699388, + "ns_low": 122.12427569598637, + "ns_high": 122.80800794484342, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/expand/rustcrypto", - "ns": 84.04417020028255, - "ns_low": 83.84625741542486, - "ns_high": 84.23023110977434, + "ns": 85.31006899480023, + "ns_low": 85.05104558699664, + "ns_high": 85.54341109242, "throughput": null }, { "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-sign/aws-lc-rs", - "ns": 349671.4695670164, - "ns_low": 349493.1681467215, - "ns_high": 349859.35308849486, + "ns": 349471.37251366925, + "ns_low": 349316.86468367843, + "ns_high": 349630.3356729338, "throughput": { "Elements": 1 } @@ -3196,9 +3200,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-sign/graviola", - "ns": 341784.6622860943, - "ns_low": 341366.6051097556, - "ns_high": 342133.33018352947, + "ns": 343907.14512043743, + "ns_low": 343855.2297354245, + "ns_high": 343959.18510480097, "throughput": { "Elements": 1 } @@ -3207,9 +3211,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-sign/openssl", - "ns": 389031.4680848234, - "ns_low": 385444.3489829603, - "ns_high": 392943.60750148003, + "ns": 397719.5934387469, + "ns_low": 394853.21189945587, + "ns_high": 400585.5395830746, "throughput": { "Elements": 1 } @@ -3218,9 +3222,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-sign/rind", - "ns": 400247.4951219152, - "ns_low": 400008.6240012622, - "ns_high": 400531.7334697368, + "ns": 348427.82297325257, + "ns_low": 347732.08002372395, + "ns_high": 349074.92987747607, "throughput": { "Elements": 1 } @@ -3229,9 +3233,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-sign/ring", - "ns": 336089.1363661889, - "ns_low": 335911.08889950864, - "ns_high": 336272.8866338875, + "ns": 341114.81477759714, + "ns_low": 340825.6092121954, + "ns_high": 341392.0938189295, "throughput": { "Elements": 1 } @@ -3240,9 +3244,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-sign/rustcrypto", - "ns": 592977.734372691, - "ns_low": 591049.5731614071, - "ns_high": 595625.478781133, + "ns": 588672.1972661446, + "ns_low": 587884.7008701479, + "ns_high": 589460.9525866724, "throughput": { "Elements": 1 } @@ -3251,9 +3255,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-verify/aws-lc-rs", - "ns": 10991.955020551806, - "ns_low": 10983.608283535757, - "ns_high": 11000.232281271345, + "ns": 10863.22911482193, + "ns_low": 10854.474501447028, + "ns_high": 10872.893361554125, "throughput": { "Elements": 1 } @@ -3262,9 +3266,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-verify/graviola", - "ns": 13943.572673061128, - "ns_low": 13937.141177226804, - "ns_high": 13950.357671224549, + "ns": 14055.037460434743, + "ns_low": 14045.80201515217, + "ns_high": 14065.00693090199, "throughput": { "Elements": 1 } @@ -3273,9 +3277,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-verify/openssl", - "ns": 15500.27335614388, - "ns_low": 15492.557104150355, - "ns_high": 15508.848886144417, + "ns": 15586.432159461641, + "ns_low": 15573.114285913025, + "ns_high": 15599.609695910496, "throughput": { "Elements": 1 } @@ -3284,9 +3288,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-verify/rind", - "ns": 8992.72741089881, - "ns_low": 8966.899411939328, - "ns_high": 9030.521215022205, + "ns": 8974.94704174895, + "ns_low": 8967.933090640321, + "ns_high": 8981.217273496757, "throughput": { "Elements": 1 } @@ -3295,9 +3299,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-verify/ring", - "ns": 12562.002376494625, - "ns_low": 12544.888145436373, - "ns_high": 12578.678235810032, + "ns": 12695.372112810892, + "ns_low": 12675.518745230123, + "ns_high": 12717.04579012033, "throughput": { "Elements": 1 } @@ -3306,9 +3310,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-verify/rustcrypto", - "ns": 29026.86793824372, - "ns_low": 28995.970126635864, - "ns_high": 29059.255495674384, + "ns": 29408.618592187577, + "ns_low": 29361.4978476053, + "ns_high": 29457.033499895857, "throughput": { "Elements": 1 } @@ -3317,9 +3321,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-sign/aws-lc-rs", - "ns": 353372.66697502584, - "ns_low": 351269.17172483774, - "ns_high": 357942.68681409385, + "ns": 350446.18477168615, + "ns_low": 350051.67364664125, + "ns_high": 350826.29209098744, "throughput": { "Elements": 1 } @@ -3328,9 +3332,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-sign/graviola", - "ns": 336985.06162701343, - "ns_low": 336835.4190862205, - "ns_high": 337179.7092865708, + "ns": 342672.6817142013, + "ns_low": 342213.513024391, + "ns_high": 343102.8667975433, "throughput": { "Elements": 1 } @@ -3339,9 +3343,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-sign/libcrux", - "ns": 3755006.435555554, - "ns_low": 3739440.4008055557, - "ns_high": 3771507.1795277796, + "ns": 4096068.39125, + "ns_low": 4076535.8080625, + "ns_high": 4115082.67625, "throughput": { "Elements": 1 } @@ -3350,9 +3354,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-sign/openssl", - "ns": 399265.78627752326, - "ns_low": 394315.90849776927, - "ns_high": 403941.38549979724, + "ns": 395808.9218604995, + "ns_low": 392080.9068540782, + "ns_high": 399892.557119577, "throughput": { "Elements": 1 } @@ -3361,9 +3365,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-sign/rind", - "ns": 393467.40755135217, - "ns_low": 393346.33353079396, - "ns_high": 393592.30775210145, + "ns": 346523.92136988323, + "ns_low": 346072.2410515144, + "ns_high": 346947.9133659231, "throughput": { "Elements": 1 } @@ -3372,9 +3376,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-sign/ring", - "ns": 336608.00116151915, - "ns_low": 336461.58790975023, - "ns_high": 336751.9910163339, + "ns": 341453.9093689966, + "ns_low": 341115.8933117001, + "ns_high": 341792.19125520135, "throughput": { "Elements": 1 } @@ -3383,9 +3387,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-sign/rustcrypto", - "ns": 582385.4411363972, - "ns_low": 581753.4878247399, - "ns_high": 583020.0330314345, + "ns": 588327.2374715531, + "ns_low": 587548.3650758908, + "ns_high": 589095.7175974577, "throughput": { "Elements": 1 } @@ -3394,9 +3398,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-verify/aws-lc-rs", - "ns": 11055.58754243086, - "ns_low": 11050.26766738156, - "ns_high": 11060.946899568637, + "ns": 11173.085646246216, + "ns_low": 11162.950693542212, + "ns_high": 11183.663827707818, "throughput": { "Elements": 1 } @@ -3405,9 +3409,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-verify/graviola", - "ns": 14434.331811381564, - "ns_low": 14391.974015305124, - "ns_high": 14478.316126819524, + "ns": 14438.124219285468, + "ns_low": 14421.13770669945, + "ns_high": 14457.463335986702, "throughput": { "Elements": 1 } @@ -3416,9 +3420,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-verify/libcrux", - "ns": 247951.3361548692, - "ns_low": 247452.45822741103, - "ns_high": 248460.3108214502, + "ns": 252126.6352130437, + "ns_low": 251546.91168618453, + "ns_high": 252708.47715054452, "throughput": { "Elements": 1 } @@ -3427,9 +3431,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-verify/openssl", - "ns": 16289.110849791716, - "ns_low": 16279.819427637753, - "ns_high": 16300.097239382707, + "ns": 16361.06484633296, + "ns_low": 16347.031867251353, + "ns_high": 16375.343884722313, "throughput": { "Elements": 1 } @@ -3438,9 +3442,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-verify/rind", - "ns": 9447.331745049505, - "ns_low": 9427.953994812367, - "ns_high": 9468.479807471622, + "ns": 9182.862325857384, + "ns_low": 9177.829248422957, + "ns_high": 9188.023014638147, "throughput": { "Elements": 1 } @@ -3449,9 +3453,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-verify/ring", - "ns": 13172.562402708798, - "ns_low": 13154.459644863873, - "ns_high": 13191.316796665236, + "ns": 13313.384241958523, + "ns_low": 13290.023077112397, + "ns_high": 13336.695513498396, "throughput": { "Elements": 1 } @@ -3460,9 +3464,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-verify/rustcrypto", - "ns": 35090.37147402186, - "ns_low": 35059.738376569425, - "ns_high": 35121.99341375385, + "ns": 35616.66343240118, + "ns_low": 35581.05452188399, + "ns_high": 35650.083303511994, "throughput": { "Elements": 1 } @@ -3471,9 +3475,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "aws-lc-rs", "id": "mlkem768-keygen/aws-lc-rs", - "ns": 8179.747129328604, - "ns_low": 8169.531155048877, - "ns_high": 8190.312488058124, + "ns": 8265.148158218806, + "ns_low": 8259.681255747319, + "ns_high": 8270.2018677516, "throughput": { "Elements": 1 } @@ -3482,9 +3486,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "graviola", "id": "mlkem768-keygen/graviola", - "ns": 7682.0973557696925, - "ns_low": 7679.604569559729, - "ns_high": 7684.774061179118, + "ns": 7665.072191176638, + "ns_low": 7662.503860848224, + "ns_high": 7667.617735785606, "throughput": { "Elements": 1 } @@ -3493,9 +3497,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "libcrux", "id": "mlkem768-keygen/libcrux-ml-kem", - "ns": 14996.80380855623, - "ns_low": 14971.18821946179, - "ns_high": 15021.991585950838, + "ns": 15149.042638096646, + "ns_low": 15145.881563661605, + "ns_high": 15152.113772957668, "throughput": { "Elements": 1 } @@ -3504,9 +3508,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "openssl", "id": "mlkem768-keygen/openssl", - "ns": 19584.82080056441, - "ns_low": 19567.042719769288, - "ns_high": 19606.293019548848, + "ns": 19802.58521787104, + "ns_low": 19795.252067788784, + "ns_high": 19809.537957327775, "throughput": { "Elements": 1 } @@ -3515,9 +3519,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rind", "id": "mlkem768-keygen/rind", - "ns": 6468.38093543779, - "ns_low": 6466.370986631711, - "ns_high": 6470.503892806799, + "ns": 6447.649032416964, + "ns_low": 6443.634262988912, + "ns_high": 6450.842048856041, "throughput": { "Elements": 1 } @@ -3526,9 +3530,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rustcrypto", "id": "mlkem768-keygen/rustcrypto", - "ns": 40164.549999704446, - "ns_low": 40086.82911493329, - "ns_high": 40256.6077618316, + "ns": 40262.91637751835, + "ns_low": 40220.90962313832, + "ns_high": 40302.23068334896, "throughput": { "Elements": 1 } @@ -3537,9 +3541,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-encaps/aws-lc-rs", - "ns": 8590.859189216577, - "ns_low": 8576.23930726512, - "ns_high": 8605.981629355914, + "ns": 8684.44085444936, + "ns_low": 8671.690826433605, + "ns_high": 8702.885433246727, "throughput": { "Elements": 1 } @@ -3548,9 +3552,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "graviola", "id": "mlkem768-encaps/graviola", - "ns": 9126.353241136283, - "ns_low": 9121.540583446164, - "ns_high": 9132.703711138241, + "ns": 9108.873658619594, + "ns_low": 9096.664993918652, + "ns_high": 9124.05004260572, "throughput": { "Elements": 1 } @@ -3559,9 +3563,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "libcrux", "id": "mlkem768-encaps/libcrux-ml-kem", - "ns": 12798.020695050134, - "ns_low": 12769.412336808806, - "ns_high": 12827.37823310828, + "ns": 12937.641372618684, + "ns_low": 12903.135472246802, + "ns_high": 12976.107662482145, "throughput": { "Elements": 1 } @@ -3570,9 +3574,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "openssl", "id": "mlkem768-encaps/openssl", - "ns": 18567.80656582076, - "ns_low": 18540.88416162581, - "ns_high": 18598.372041691262, + "ns": 18772.4593708438, + "ns_low": 18760.61214335281, + "ns_high": 18786.774975292243, "throughput": { "Elements": 1 } @@ -3581,9 +3585,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rind", "id": "mlkem768-encaps/rind", - "ns": 6711.586412215262, - "ns_low": 6697.13782554057, - "ns_high": 6725.309806761053, + "ns": 6653.2844243793825, + "ns_low": 6640.579424674264, + "ns_high": 6668.4140350940725, "throughput": { "Elements": 1 } @@ -3592,9 +3596,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rustcrypto", "id": "mlkem768-encaps/rustcrypto", - "ns": 42131.62011585636, - "ns_low": 42088.994982867036, - "ns_high": 42175.61220264096, + "ns": 41709.23723796857, + "ns_low": 41676.82538419804, + "ns_high": 41744.86537242814, "throughput": { "Elements": 1 } @@ -3603,9 +3607,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-decaps/aws-lc-rs", - "ns": 8921.027690217452, - "ns_low": 8896.232917214427, - "ns_high": 8951.249466863685, + "ns": 9016.780291846517, + "ns_low": 9007.03017474863, + "ns_high": 9029.2557896137, "throughput": { "Elements": 1 } @@ -3614,9 +3618,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "graviola", "id": "mlkem768-decaps/graviola", - "ns": 6562.060872219254, - "ns_low": 6554.787366767666, - "ns_high": 6569.716954523562, + "ns": 6594.560044687454, + "ns_low": 6584.464808730425, + "ns_high": 6605.778609086432, "throughput": { "Elements": 1 } @@ -3625,9 +3629,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "libcrux", "id": "mlkem768-decaps/libcrux-ml-kem", - "ns": 13499.49352274929, - "ns_low": 13480.447604034302, - "ns_high": 13523.226115103542, + "ns": 13439.956664400768, + "ns_low": 13414.258231729564, + "ns_high": 13469.682513683, "throughput": { "Elements": 1 } @@ -3636,9 +3640,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "openssl", "id": "mlkem768-decaps/openssl", - "ns": 16070.116053526013, - "ns_low": 16056.681117699, - "ns_high": 16082.573369796646, + "ns": 16053.33575991849, + "ns_low": 16048.131003755801, + "ns_high": 16058.248367717293, "throughput": { "Elements": 1 } @@ -3647,9 +3651,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rind", "id": "mlkem768-decaps/rind", - "ns": 4830.238688138256, - "ns_low": 4821.7577161558, - "ns_high": 4839.202574318868, + "ns": 4690.447911157551, + "ns_low": 4689.604482770144, + "ns_high": 4691.25945602609, "throughput": { "Elements": 1 } @@ -3658,9 +3662,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rustcrypto", "id": "mlkem768-decaps/rustcrypto", - "ns": 55206.07141744025, - "ns_low": 55165.70426980728, - "ns_high": 55247.88148659085, + "ns": 54185.72527613956, + "ns_low": 54161.838526470725, + "ns_high": 54210.37261286316, "throughput": { "Elements": 1 } @@ -3669,9 +3673,9 @@ "operation": "p384-ecdh/{lib}", "library": "aws-lc-rs", "id": "p384-ecdh/aws-lc-rs", - "ns": 111301.12136200187, - "ns_low": 111262.10162522574, - "ns_high": 111342.65220672732, + "ns": 111112.54473720507, + "ns_low": 111082.72497204003, + "ns_high": 111142.83106814441, "throughput": { "Elements": 1 } @@ -3680,9 +3684,9 @@ "operation": "p384-ecdh/{lib}", "library": "graviola", "id": "p384-ecdh/graviola", - "ns": 171488.17543372247, - "ns_low": 171258.4277683262, - "ns_high": 171875.86558353444, + "ns": 170940.193401064, + "ns_low": 170908.4717956182, + "ns_high": 170970.2218958126, "throughput": { "Elements": 1 } @@ -3691,9 +3695,9 @@ "operation": "p384-ecdh/{lib}", "library": "openssl", "id": "p384-ecdh/openssl", - "ns": 262117.38431111767, - "ns_low": 261944.96994688985, - "ns_high": 262299.76319586753, + "ns": 264836.9701788089, + "ns_low": 264781.9679340953, + "ns_high": 264888.83373608266, "throughput": { "Elements": 1 } @@ -3702,9 +3706,9 @@ "operation": "p384-ecdh/{lib}", "library": "rind", "id": "p384-ecdh/rind", - "ns": 100001.09826757302, - "ns_low": 99956.14351596728, - "ns_high": 100060.27628220824, + "ns": 100076.41059258164, + "ns_low": 100064.67950652246, + "ns_high": 100089.01577712123, "throughput": { "Elements": 1 } @@ -3713,9 +3717,9 @@ "operation": "p384-ecdh/{lib}", "library": "ring", "id": "p384-ecdh/ring", - "ns": 370245.5023880597, - "ns_low": 370100.79920143896, - "ns_high": 370386.11166134087, + "ns": 369713.2053687011, + "ns_low": 369611.4118523345, + "ns_high": 369822.372703505, "throughput": { "Elements": 1 } @@ -3724,9 +3728,9 @@ "operation": "p384-ecdh/{lib}", "library": "rustcrypto", "id": "p384-ecdh/p384-rustcrypto", - "ns": 430309.97619033547, - "ns_low": 430048.80846874166, - "ns_high": 430619.55553511996, + "ns": 401246.5336441555, + "ns_low": 400743.0058652763, + "ns_high": 401656.15162661194, "throughput": { "Elements": 1 } @@ -3735,9 +3739,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-sign/aws-lc-rs", - "ns": 46515.630948608065, - "ns_low": 46440.68816231589, - "ns_high": 46581.81054087792, + "ns": 46523.36476338794, + "ns_low": 46513.91750173771, + "ns_high": 46533.835907776556, "throughput": { "Elements": 1 } @@ -3746,9 +3750,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "graviola", "id": "p384-ecdsa-sign/graviola", - "ns": 89417.70258945724, - "ns_low": 89376.31593017354, - "ns_high": 89458.38046604847, + "ns": 90691.14776372733, + "ns_low": 90660.41398600079, + "ns_high": 90726.17291567942, "throughput": { "Elements": 1 } @@ -3757,9 +3761,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "openssl", "id": "p384-ecdsa-sign/openssl", - "ns": 89066.25026831894, - "ns_low": 88950.33130254608, - "ns_high": 89214.59431296441, + "ns": 89640.11803880175, + "ns_low": 89458.88804367381, + "ns_high": 89823.1472857155, "throughput": { "Elements": 1 } @@ -3768,9 +3772,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rind", "id": "p384-ecdsa-sign/rind", - "ns": 25542.994600635437, - "ns_low": 25495.338924146974, - "ns_high": 25584.843024506852, + "ns": 23532.841626481455, + "ns_low": 23529.310978235357, + "ns_high": 23536.536806759224, "throughput": { "Elements": 1 } @@ -3779,9 +3783,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "ring", "id": "p384-ecdsa-sign/ring", - "ns": 198392.35924141668, - "ns_low": 198164.11025662662, - "ns_high": 198638.61719812988, + "ns": 200860.55754002265, + "ns_low": 200796.743535713, + "ns_high": 200928.55351307808, "throughput": { "Elements": 1 } @@ -3790,9 +3794,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-sign/rustcrypto", - "ns": 104370.5289134244, - "ns_low": 103150.60250677829, - "ns_high": 105396.53653584745, + "ns": 86859.22535202348, + "ns_low": 86806.25905373588, + "ns_high": 86917.89572616793, "throughput": { "Elements": 1 } @@ -3801,9 +3805,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-verify/aws-lc-rs", - "ns": 115283.36923747598, - "ns_low": 115182.53836866336, - "ns_high": 115394.6560260198, + "ns": 116664.50149894094, + "ns_low": 116447.63104985475, + "ns_high": 116910.59845820241, "throughput": { "Elements": 1 } @@ -3812,9 +3816,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "graviola", "id": "p384-ecdsa-verify/graviola", - "ns": 168941.62201861976, - "ns_low": 168863.669249967, - "ns_high": 169035.25392921353, + "ns": 167400.5453413625, + "ns_low": 167061.86848277372, + "ns_high": 167756.21804984525, "throughput": { "Elements": 1 } @@ -3823,9 +3827,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "openssl", "id": "p384-ecdsa-verify/openssl", - "ns": 215869.30938968525, - "ns_low": 215682.3271799396, - "ns_high": 216069.60472992208, + "ns": 215860.8751716664, + "ns_low": 215725.219453323, + "ns_high": 216015.32353011402, "throughput": { "Elements": 1 } @@ -3834,9 +3838,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rind", "id": "p384-ecdsa-verify/rind", - "ns": 98579.61934598577, - "ns_low": 98494.33411428148, - "ns_high": 98674.51774759826, + "ns": 98873.51736789884, + "ns_low": 98742.99198511348, + "ns_high": 99017.517874549, "throughput": { "Elements": 1 } @@ -3845,9 +3849,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "ring", "id": "p384-ecdsa-verify/ring", - "ns": 359225.0430042855, - "ns_low": 358626.4164134678, - "ns_high": 360249.71498790226, + "ns": 360290.5599734003, + "ns_low": 360175.7763259107, + "ns_high": 360404.5230590583, "throughput": { "Elements": 1 } @@ -3856,9 +3860,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-verify/rustcrypto", - "ns": 360902.47174818977, - "ns_low": 360584.5160733828, - "ns_high": 361262.49583632284, + "ns": 360209.773800798, + "ns_low": 360061.02291593567, + "ns_high": 360356.4025148006, "throughput": { "Elements": 1 } @@ -3867,9 +3871,9 @@ "operation": "p521-ecdh/{lib}", "library": "aws-lc-rs", "id": "p521-ecdh/aws-lc-rs", - "ns": 171489.83865154427, - "ns_low": 171239.76452007555, - "ns_high": 171968.68673650827, + "ns": 170982.07579060146, + "ns_low": 170942.3601221515, + "ns_high": 171022.4744781196, "throughput": { "Elements": 1 } @@ -3878,9 +3882,9 @@ "operation": "p521-ecdh/{lib}", "library": "openssl", "id": "p521-ecdh/openssl", - "ns": 274158.81534604204, - "ns_low": 273412.5666899696, - "ns_high": 274814.2039787384, + "ns": 276213.5319728092, + "ns_low": 276061.71337665094, + "ns_high": 276390.66785646696, "throughput": { "Elements": 1 } @@ -3889,9 +3893,9 @@ "operation": "p521-ecdh/{lib}", "library": "rind", "id": "p521-ecdh/rind", - "ns": 160399.70062657012, - "ns_low": 159865.75648196266, - "ns_high": 161224.88491616922, + "ns": 160772.09262967343, + "ns_low": 160732.57691165735, + "ns_high": 160809.67910625951, "throughput": { "Elements": 1 } @@ -3900,9 +3904,9 @@ "operation": "p521-ecdh/{lib}", "library": "rustcrypto", "id": "p521-ecdh/rustcrypto", - "ns": 433750.5640490616, - "ns_low": 432749.2836432884, - "ns_high": 434829.3411307129, + "ns": 431173.9486315945, + "ns_low": 430258.2369634522, + "ns_high": 432133.80920722656, "throughput": { "Elements": 1 } @@ -3911,9 +3915,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-sign/aws-lc-rs", - "ns": 88461.13632375604, - "ns_low": 88164.19507725585, - "ns_high": 88785.44533688738, + "ns": 89636.54670016255, + "ns_low": 89589.81063376021, + "ns_high": 89686.68292762616, "throughput": { "Elements": 1 } @@ -3922,9 +3926,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "openssl", "id": "p521-ecdsa-sign/openssl", - "ns": 127750.34304418502, - "ns_low": 127666.10510830775, - "ns_high": 127851.78944300988, + "ns": 129198.29790808335, + "ns_low": 129037.88774074469, + "ns_high": 129367.30651919413, "throughput": { "Elements": 1 } @@ -3933,9 +3937,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rind", "id": "p521-ecdsa-sign/rind", - "ns": 43700.974426875524, - "ns_low": 43602.911228854566, - "ns_high": 43781.47143729535, + "ns": 40562.80853928378, + "ns_low": 40554.24524344455, + "ns_high": 40571.77120543821, "throughput": { "Elements": 1 } @@ -3944,9 +3948,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-sign/rustcrypto", - "ns": 94276.59189132132, - "ns_low": 94205.74188128489, - "ns_high": 94354.3792087114, + "ns": 95288.62726171124, + "ns_low": 95185.91152952994, + "ns_high": 95389.30020358416, "throughput": { "Elements": 1 } @@ -3955,9 +3959,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-verify/aws-lc-rs", - "ns": 184474.8416979459, - "ns_low": 184374.55258380546, - "ns_high": 184582.40649489305, + "ns": 186609.34451307816, + "ns_low": 186348.98829260454, + "ns_high": 186866.90681257145, "throughput": { "Elements": 1 } @@ -3966,9 +3970,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "openssl", "id": "p521-ecdsa-verify/openssl", - "ns": 261074.77288902024, - "ns_low": 260952.4012409767, - "ns_high": 261198.36315489022, + "ns": 267513.57741884637, + "ns_low": 266872.40934669354, + "ns_high": 268100.1779812826, "throughput": { "Elements": 1 } @@ -3977,9 +3981,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rind", "id": "p521-ecdsa-verify/rind", - "ns": 145012.401581794, - "ns_low": 144953.77132550953, - "ns_high": 145074.0086299517, + "ns": 147092.33831121618, + "ns_low": 146941.6190741018, + "ns_high": 147232.47607141943, "throughput": { "Elements": 1 } @@ -3988,490 +3992,17 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-verify/rustcrypto", - "ns": 359529.5861120142, - "ns_low": 358886.5496229943, - "ns_high": 360068.7201519662, + "ns": 359568.4772099897, + "ns_low": 359370.02151455474, + "ns_high": 359778.2525503691, "throughput": { "Elements": 1 } } ], "build_cost": { - "status": "ok", - "started": "2026-11-05T01:28:33+00:00", - "host": { - "hostname": "desktop", - "os": "Linux 7.0.0-42-generic", - "arch": "x86_64", - "cpu": "Intel(R) Core(TM) Ultra 7 270K Plus", - "cpus": 24, - "jobs": "12", - "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", - "cc": "gcc (GCC) 16.2.0" - }, - "runs": 3, - "builds": [ - { - "name": "rind", - "seconds": [ - 3.03, - 3.03, - 2.97 - ], - "median_seconds": 3.03, - "cpu_seconds": [ - 6.93, - 6.87, - 6.87 - ], - "median_cpu_seconds": 6.87, - "stripped_bytes": 858032, - "tools": [], - "packages": [ - "build-cost-rind@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "rind@0.1.12" - ] - }, - { - "name": "aws-lc-rs", - "seconds": [ - 11.63, - 11.73, - 11.72 - ], - "median_seconds": 11.72, - "cpu_seconds": [ - 36.53, - 36.6, - 36.59 - ], - "median_cpu_seconds": 36.59, - "stripped_bytes": 2991408, - "tools": [ - "cc" - ], - "packages": [ - "aws-lc-rs@1.19.0", - "aws-lc-sys@0.47.0", - "build-cost-aws-lc-rs@0.0.0", - "cc@1.11.0", - "cmake@0.1.58", - "dunce@1.0.5", - "find-msvc-tools@0.1.15", - "fs_extra@1.3.0", - "jobserver@0.1.35", - "libc@0.2.191", - "pkg-config@0.3.34", - "shlex@2.0.1", - "untrusted@0.7.1", - "zeroize@1.9.1" - ] - }, - { - "name": "ring", - "seconds": [ - 4.93, - 4.95, - 4.94 - ], - "median_seconds": 4.94, - "cpu_seconds": [ - 7.27, - 7.3, - 7.24 - ], - "median_cpu_seconds": 7.27, - "stripped_bytes": 744328, - "tools": [ - "cc" - ], - "packages": [ - "build-cost-ring@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "getrandom@0.2.17", - "libc@0.2.191", - "ring@0.17.14", - "shlex@2.0.1", - "untrusted@0.9.0" - ] - }, - { - "name": "rustcrypto", - "seconds": [ - 2.8, - 2.82, - 2.82 - ], - "median_seconds": 2.82, - "cpu_seconds": [ - 15.71, - 15.83, - 15.68 - ], - "median_cpu_seconds": 15.71, - "stripped_bytes": 540256, - "tools": [], - "packages": [ - "aead@0.6.1", - "aes-gcm@0.11.1", - "aes@0.9.4", - "autocfg@1.5.1", - "base16ct@1.0.0", - "base64ct@1.8.3", - "block-buffer@0.12.1", - "build-cost-rustcrypto@0.0.0", - "cfg-if@1.0.5", - "cipher@0.5.2", - "cmov@0.5.4", - "const-oid@0.10.2", - "cpubits@0.1.1", - "cpufeatures@0.3.1", - "crypto-bigint@0.7.10", - "crypto-common@0.2.2", - "ctr@0.10.1", - "ctutils@0.4.8", - "curve25519-dalek-derive@0.1.1", - "curve25519-dalek@5.0.0", - "der@0.8.3", - "digest@0.11.3", - "ecdsa@0.17.0", - "elliptic-curve@0.14.3", - "ff@0.14.0", - "getrandom@0.4.3", - "ghash@0.6.0", - "group@0.14.0", - "hmac@0.13.0", - "hybrid-array@0.4.15", - "inout@0.2.5", - "libc@0.2.191", - "num-traits@0.2.19", - "p256@0.14.0", - "pem-rfc7468@1.0.0", - "pkcs8@0.11.0", - "polyval@0.7.3", - "primefield@0.14.0", - "primeorder@0.14.0", - "proc-macro2@1.0.107", - "quote@1.0.47", - "rand_core@0.10.1", - "rfc6979@0.6.0", - "rustc_version@0.4.1", - "sec1@0.8.1", - "semver@1.0.28", - "sha2@0.11.1", - "signature@3.0.0", - "spki@0.8.1", - "subtle@2.6.1", - "syn@2.0.119", - "typenum@1.20.1", - "unicode-ident@1.0.27", - "universal-hash@0.6.1", - "wnaf@0.14.1", - "x25519-dalek@3.0.0", - "zeroize@1.9.1" - ] - }, - { - "name": "graviola", - "seconds": [ - 1.87, - 1.9, - 1.91 - ], - "median_seconds": 1.9, - "cpu_seconds": [ - 4.13, - 4.14, - 4.19 - ], - "median_cpu_seconds": 4.14, - "stripped_bytes": 912208, - "tools": [], - "packages": [ - "build-cost-graviola@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "graviola@0.4.3", - "libc@0.2.191" - ] - }, - { - "name": "libcrux", - "seconds": [ - 4.74, - 4.72, - 4.73 - ], - "median_seconds": 4.73, - "cpu_seconds": [ - 11.63, - 11.58, - 11.58 - ], - "median_cpu_seconds": 11.58, - "stripped_bytes": 745648, - "tools": [], - "packages": [ - "build-cost-libcrux@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "hax-lib-macros@0.3.6", - "hax-lib@0.3.6", - "libc@0.2.191", - "libcrux-aesgcm@0.0.8", - "libcrux-curve25519@0.0.9", - "libcrux-ecdh@0.0.9", - "libcrux-ecdsa@0.0.9", - "libcrux-hacl-rs@0.0.6", - "libcrux-intrinsics@0.0.7", - "libcrux-macros@0.0.4", - "libcrux-p256@0.0.9", - "libcrux-platform@0.0.3", - "libcrux-secrets@0.0.5", - "libcrux-secrets@0.0.7", - "libcrux-sha2@0.0.9", - "libcrux-traits@0.0.7", - "libcrux-traits@0.0.9", - "proc-macro2@1.0.107", - "quote@1.0.47", - "rand@0.10.3", - "rand_core@0.10.1", - "syn@2.0.119", - "syn@3.0.9", - "unicode-ident@1.0.27" - ] - }, - { - "name": "openssl", - "seconds": [ - 2.83, - 2.78, - 2.81 - ], - "median_seconds": 2.81, - "cpu_seconds": [ - 7.4, - 7.35, - 7.37 - ], - "median_cpu_seconds": 7.37, - "stripped_bytes": 377832, - "tools": [ - "cc", - "pkg-config" - ], - "packages": [ - "bitflags@2.13.2", - "build-cost-openssl@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "foreign-types-shared@0.1.1", - "foreign-types@0.3.2", - "libc@0.2.191", - "openssl-macros@0.1.1", - "openssl-sys@0.9.118", - "openssl@0.10.82", - "pkg-config@0.3.34", - "proc-macro2@1.0.107", - "quote@1.0.47", - "shlex@2.0.1", - "syn@2.0.119", - "unicode-ident@1.0.27", - "vcpkg@0.2.15" - ] - }, - { - "name": "openssl-vendored", - "seconds": [ - 17.76, - 17.73, - 17.74 - ], - "median_seconds": 17.74, - "cpu_seconds": [ - 135.55, - 135.59, - 135.73 - ], - "median_cpu_seconds": 135.59, - "stripped_bytes": 5133408, - "tools": [ - "cc", - "make", - "perl" - ], - "packages": [ - "bitflags@2.13.2", - "build-cost-openssl@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "foreign-types-shared@0.1.1", - "foreign-types@0.3.2", - "libc@0.2.191", - "openssl-macros@0.1.1", - "openssl-src@300.6.1+3.6.3", - "openssl-sys@0.9.118", - "openssl@0.10.82", - "pkg-config@0.3.34", - "proc-macro2@1.0.107", - "quote@1.0.47", - "shlex@2.0.1", - "syn@2.0.119", - "unicode-ident@1.0.27", - "vcpkg@0.2.15" - ] - }, - { - "name": "rustls-rind", - "seconds": [ - 3.52, - 3.49, - 3.5 - ], - "median_seconds": 3.5, - "cpu_seconds": [ - 19.19, - 19.13, - 19.13 - ], - "median_cpu_seconds": 19.13, - "stripped_bytes": 2891640, - "tools": [], - "packages": [ - "build-cost-rustls@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "once_cell@1.21.4", - "rind-rustls@0.1.12", - "rind@0.1.12", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-rind-lean", - "seconds": [ - 3.51, - 3.51, - 3.51 - ], - "median_seconds": 3.51, - "cpu_seconds": [ - 19.16, - 19.14, - 19.17 - ], - "median_cpu_seconds": 19.16, - "stripped_bytes": 1802000, - "tools": [], - "packages": [ - "build-cost-rustls@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "once_cell@1.21.4", - "rind-rustls@0.1.12", - "rind@0.1.12", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-aws-lc-rs", - "seconds": [ - 14.43, - 14.43, - 14.44 - ], - "median_seconds": 14.43, - "cpu_seconds": [ - 48.98, - 49.09, - 48.99 - ], - "median_cpu_seconds": 48.99, - "stripped_bytes": 4114504, - "tools": [ - "cc" - ], - "packages": [ - "aws-lc-rs@1.19.0", - "aws-lc-sys@0.47.0", - "build-cost-rustls@0.0.0", - "cc@1.11.0", - "cmake@0.1.58", - "dunce@1.0.5", - "find-msvc-tools@0.1.15", - "fs_extra@1.3.0", - "jobserver@0.1.35", - "libc@0.2.191", - "once_cell@1.21.4", - "pkg-config@0.3.34", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "shlex@2.0.1", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-ring", - "seconds": [ - 7.51, - 7.6, - 7.49 - ], - "median_seconds": 7.51, - "cpu_seconds": [ - 18.96, - 19.02, - 18.93 - ], - "median_cpu_seconds": 18.96, - "stripped_bytes": 1943680, - "tools": [ - "cc" - ], - "packages": [ - "build-cost-rustls@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "getrandom@0.2.17", - "libc@0.2.191", - "once_cell@1.21.4", - "ring@0.17.14", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "shlex@2.0.1", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - } - ] + "status": "failed", + "started": "2026-11-06T15:35:01+00:00", + "reason": "error: host is busy (load average 49.3 on 24 CPUs)" } } diff --git a/benchmarks/data/nixos.json b/benchmarks/data/nixos.json index 6dd815575..be542d842 100644 --- a/benchmarks/data/nixos.json +++ b/benchmarks/data/nixos.json @@ -1,8 +1,8 @@ { "schema": 1, "host": "nixos", - "commit": "6024d1557147b1f5dae1da700ed7c7bee38cd086", - "started": "2026-11-05T00:57:10+00:00", + "commit": "f95b91da886bee265dbd836192a7ade2f9158c47", + "started": "2026-11-06T16:32:11+00:00", "cpu": { "model": "AMD Ryzen 9 5900XT 16-Core Processor", "arch": "x86_64", @@ -15,8 +15,8 @@ }, "libraries": { "rind": { - "rind": "0.1.12", - "rind-rustls": "0.1.12" + "rind": "0.1.13", + "rind-rustls": "0.1.13" }, "aws-lc-rs": { "aws-lc-rs": "1.19.0", @@ -29,6 +29,7 @@ "aes-gcm": "0.11.1", "chacha20poly1305": "0.11.0", "sha2": "0.11.1", + "sha3": "0.12.0", "hmac": "0.13.0", "hkdf": "0.13.0", "p256": "0.14.0", @@ -53,7 +54,8 @@ "libcrux-hmac": "0.0.9", "libcrux-ml-kem": "0.0.11", "libcrux-rsa": "0.0.9", - "libcrux-sha2": "0.0.9" + "libcrux-sha2": "0.0.9", + "libcrux-sha3": "0.0.11" }, "openssl": { "openssl": "0.10.82", @@ -73,6 +75,7 @@ "vaes": 1, "pclmulqdq": 1, "vpclmulqdq": 1, + "bmi1": 1, "bmi2": 1, "movbe": 1, "popcnt": 1, @@ -87,13 +90,14 @@ "avx512vl": 0, "avx512vbmi": 0, "avx512vbmi2": 0, - "sha": 1 + "sha": 1, + "sha512": 0 }, "compatible": 1, "supports_avx512_aes_gcm": 0 }, "status": "ok", - "finished": "2026-11-05T01:25:40+00:00", + "finished": "2026-11-06T17:01:09+00:00", "criterion_args": [ "--noplot", "--warm-up-time", @@ -104,19 +108,19 @@ ], "load": { "limit_cpus": 3.2, - "busy_cpus_before_build": 0.47, - "busy_cpus_before_run": 0.15, - "other_busy_cpus_during_run": 2.04, - "noisy": false + "busy_cpus_before_build": 1.14, + "busy_cpus_before_run": 1.32, + "other_busy_cpus_during_run": 5.47, + "noisy": true }, "results": [ { "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519mlkem768/aws-lc-rs", - "ns": 308488.6198684794, - "ns_low": 308080.93576163554, - "ns_high": 308936.7267012917, + "ns": 331871.505627309, + "ns_low": 330192.01303288125, + "ns_high": 334440.34939943603, "throughput": { "Elements": 1 } @@ -125,9 +129,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519mlkem768/graviola", - "ns": 258615.09374316537, - "ns_low": 256332.43955298926, - "ns_high": 260866.88333444123, + "ns": 342679.04537214915, + "ns_low": 334763.1626328933, + "ns_high": 350254.7916116024, "throughput": { "Elements": 1 } @@ -136,9 +140,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519mlkem768/openssl", - "ns": 805539.8935924339, - "ns_low": 760207.8575587852, - "ns_high": 862597.0364826658, + "ns": 802570.3694517511, + "ns_low": 776815.3646467533, + "ns_high": 833462.1361715553, "throughput": { "Elements": 1 } @@ -147,9 +151,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519mlkem768/rind", - "ns": 239833.43685237181, - "ns_low": 239450.80795708226, - "ns_high": 240256.26439071776, + "ns": 260780.4484074676, + "ns_low": 258915.3564857287, + "ns_high": 263157.8040327846, "throughput": { "Elements": 1 } @@ -158,9 +162,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519/aws-lc-rs", - "ns": 277767.6881463967, - "ns_low": 277538.41928784293, - "ns_high": 278006.3065338851, + "ns": 292134.0748160189, + "ns_low": 288901.78345711716, + "ns_high": 295674.4824252221, "throughput": { "Elements": 1 } @@ -169,9 +173,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519/graviola", - "ns": 225374.9063937737, - "ns_low": 225270.92568653097, - "ns_high": 225480.24873480096, + "ns": 238698.70035663267, + "ns_low": 235726.27322493357, + "ns_high": 242443.01702185156, "throughput": { "Elements": 1 } @@ -180,9 +184,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519/openssl", - "ns": 578465.118370031, - "ns_low": 577731.2913882656, - "ns_high": 579238.9738552271, + "ns": 574279.8404566278, + "ns_low": 570931.0345890276, + "ns_high": 577995.0739166286, "throughput": { "Elements": 1 } @@ -191,9 +195,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519/rind", - "ns": 215608.842054086, - "ns_low": 215314.64690882355, - "ns_high": 215943.19661743563, + "ns": 227823.68336732182, + "ns_low": 222517.44164221207, + "ns_high": 233335.98053212455, "throughput": { "Elements": 1 } @@ -202,9 +206,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "ring", "id": "rustls-full-handshake-group/x25519/ring", - "ns": 296661.2790739373, - "ns_low": 294768.5283404238, - "ns_high": 298198.1913498996, + "ns": 328461.79629673413, + "ns_low": 325945.26864942926, + "ns_high": 331090.9343601294, "throughput": { "Elements": 1 } @@ -213,9 +217,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/secp256r1/aws-lc-rs", - "ns": 312540.96395152947, - "ns_low": 312305.5036345165, - "ns_high": 312788.0468699379, + "ns": 304367.3057056303, + "ns_low": 303568.14007033536, + "ns_high": 305096.65494077443, "throughput": { "Elements": 1 } @@ -224,9 +228,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/secp256r1/graviola", - "ns": 266191.0650007389, - "ns_low": 265815.5350015675, - "ns_high": 266773.8664199945, + "ns": 270050.4174474164, + "ns_low": 266908.5660565033, + "ns_high": 273219.0334244228, "throughput": { "Elements": 1 } @@ -235,9 +239,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/secp256r1/openssl", - "ns": 639584.1690232009, - "ns_low": 638781.0595495179, - "ns_high": 640286.9268295075, + "ns": 624351.3549194621, + "ns_low": 623048.263416802, + "ns_high": 625860.692263938, "throughput": { "Elements": 1 } @@ -246,9 +250,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "rind", "id": "rustls-full-handshake-group/secp256r1/rind", - "ns": 248670.91610364022, - "ns_low": 248445.32169191822, - "ns_high": 248913.88020990216, + "ns": 242758.89868085316, + "ns_low": 242220.4287760463, + "ns_high": 243265.09851181338, "throughput": { "Elements": 1 } @@ -257,9 +261,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "ring", "id": "rustls-full-handshake-group/secp256r1/ring", - "ns": 296529.09678538004, - "ns_low": 296305.61661676917, - "ns_high": 296751.471349141, + "ns": 281925.87700113293, + "ns_low": 281789.2829914592, + "ns_high": 282075.34515549004, "throughput": { "Elements": 1 } @@ -268,9 +272,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/ed25519/aws-lc-rs", - "ns": 226971.3637968573, - "ns_low": 226697.23377034118, - "ns_high": 227231.02060370284, + "ns": 233429.86192010247, + "ns_low": 227970.9090458686, + "ns_high": 241073.7532754558, "throughput": { "Elements": 1 } @@ -279,9 +283,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/ed25519/graviola", - "ns": 175236.60841214718, - "ns_low": 175102.4019758139, - "ns_high": 175366.16383470944, + "ns": 186046.53406605587, + "ns_low": 182724.77117887556, + "ns_high": 189946.93880562607, "throughput": { "Elements": 1 } @@ -290,9 +294,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/ed25519/openssl", - "ns": 647867.8781321117, - "ns_low": 647015.8248985843, - "ns_high": 648826.8880554157, + "ns": 640403.1801684647, + "ns_low": 637834.0862098469, + "ns_high": 643768.7799566472, "throughput": { "Elements": 1 } @@ -301,9 +305,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "rind", "id": "rustls-full-handshake-key/ed25519/rind", - "ns": 176450.98367666616, - "ns_low": 176273.3137746011, - "ns_high": 176635.19841392324, + "ns": 186733.9460713758, + "ns_low": 183408.53682072522, + "ns_high": 189657.01025278564, "throughput": { "Elements": 1 } @@ -312,9 +316,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "ring", "id": "rustls-full-handshake-key/ed25519/ring", - "ns": 289559.8866538594, - "ns_low": 289393.59220898175, - "ns_high": 289753.688664668, + "ns": 292961.966264716, + "ns_low": 287859.88063140266, + "ns_high": 299300.93118831853, "throughput": { "Elements": 1 } @@ -323,9 +327,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/rsa-2048/aws-lc-rs", - "ns": 650259.3289434018, - "ns_low": 649806.7104473935, - "ns_high": 650706.8207494959, + "ns": 646281.1263070785, + "ns_low": 640016.3587281602, + "ns_high": 652361.9203976016, "throughput": { "Elements": 1 } @@ -334,9 +338,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/rsa-2048/graviola", - "ns": 582449.7519018768, - "ns_low": 581672.303861199, - "ns_high": 583273.7120511977, + "ns": 567912.8249209399, + "ns_low": 559976.2403952407, + "ns_high": 576505.6627756311, "throughput": { "Elements": 1 } @@ -345,9 +349,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/rsa-2048/openssl", - "ns": 931269.4688458696, - "ns_low": 930448.518206971, - "ns_high": 932171.3496472966, + "ns": 992047.1807063691, + "ns_low": 981197.4142006731, + "ns_high": 1003898.1426550335, "throughput": { "Elements": 1 } @@ -356,9 +360,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "rind", "id": "rustls-full-handshake-key/rsa-2048/rind", - "ns": 644886.4994000295, - "ns_low": 641946.9702922361, - "ns_high": 648545.5622266936, + "ns": 550143.3175838628, + "ns_low": 546507.4929558203, + "ns_high": 554594.1945667206, "throughput": { "Elements": 1 } @@ -367,9 +371,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "ring", "id": "rustls-full-handshake-key/rsa-2048/ring", - "ns": 666292.4348692183, - "ns_low": 665852.4094408877, - "ns_high": 666715.325206259, + "ns": 647360.2574582533, + "ns_low": 646438.7252944045, + "ns_high": 648403.5480987314, "throughput": { "Elements": 1 } @@ -378,9 +382,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-resumed-handshake/x25519/aws-lc-rs", - "ns": 137940.94062775234, - "ns_low": 137773.7954598694, - "ns_high": 138137.33146283624, + "ns": 132666.7800177331, + "ns_low": 132466.0471696941, + "ns_high": 132883.72691945286, "throughput": { "Elements": 1 } @@ -389,9 +393,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "graviola", "id": "rustls-resumed-handshake/x25519/graviola", - "ns": 87658.01883035319, - "ns_low": 84158.32715262526, - "ns_high": 91245.9907258958, + "ns": 77326.99750332496, + "ns_low": 77213.33735922989, + "ns_high": 77436.81886916935, "throughput": { "Elements": 1 } @@ -400,9 +404,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "openssl", "id": "rustls-resumed-handshake/x25519/openssl", - "ns": 461941.4373222994, - "ns_low": 444866.6480083163, - "ns_high": 479610.54711271456, + "ns": 370514.08009309886, + "ns_low": 369358.3461807993, + "ns_high": 372136.6139033452, "throughput": { "Elements": 1 } @@ -411,9 +415,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "rind", "id": "rustls-resumed-handshake/x25519/rind", - "ns": 81831.8794680065, - "ns_low": 81759.38952111431, - "ns_high": 81908.5847028662, + "ns": 77192.5918856214, + "ns_low": 77116.96292906279, + "ns_high": 77276.62336508028, "throughput": { "Elements": 1 } @@ -422,9 +426,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "ring", "id": "rustls-resumed-handshake/x25519/ring", - "ns": 162089.73551795477, - "ns_low": 161737.303897977, - "ns_high": 162487.05438522715, + "ns": 158106.22338850304, + "ns_low": 157585.68720625885, + "ns_high": 158733.70931037507, "throughput": { "Elements": 1 } @@ -433,9 +437,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes128-gcm/aws-lc-rs", - "ns": 459416.190307374, - "ns_low": 457979.36033256573, - "ns_high": 460907.05349730595, + "ns": 458206.86149992613, + "ns_low": 450619.28640875226, + "ns_high": 468940.4221503891, "throughput": { "Bytes": 1048576 } @@ -444,9 +448,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes128-gcm/graviola", - "ns": 453267.1527885326, - "ns_low": 447372.23592410365, - "ns_high": 463109.4256320805, + "ns": 424376.3461341806, + "ns_low": 423617.70983592496, + "ns_high": 425144.04690160166, "throughput": { "Bytes": 1048576 } @@ -455,9 +459,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes128-gcm/openssl", - "ns": 492293.31184276636, - "ns_low": 491915.69701694057, - "ns_high": 492695.8217846638, + "ns": 469836.607914881, + "ns_low": 468936.78530721914, + "ns_high": 470922.44923987746, "throughput": { "Bytes": 1048576 } @@ -466,9 +470,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes128-gcm/rind", - "ns": 290620.8986690311, - "ns_low": 290053.2385387496, - "ns_high": 291252.1690568165, + "ns": 289425.64379488694, + "ns_low": 287349.14584417955, + "ns_high": 291805.39652248746, "throughput": { "Bytes": 1048576 } @@ -477,9 +481,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes128-gcm/ring", - "ns": 314217.6770326585, - "ns_low": 306721.30659951083, - "ns_high": 323367.2446394484, + "ns": 282217.04155066254, + "ns_low": 278669.36310960574, + "ns_high": 285783.2662898555, "throughput": { "Bytes": 1048576 } @@ -488,9 +492,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes256-gcm/aws-lc-rs", - "ns": 487610.7893143195, - "ns_low": 487022.1556860745, - "ns_high": 488181.67364259897, + "ns": 461275.7782636323, + "ns_low": 460305.42912533664, + "ns_high": 462421.8383918818, "throughput": { "Bytes": 1048576 } @@ -499,9 +503,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes256-gcm/graviola", - "ns": 513587.0698167578, - "ns_low": 509739.02461553295, - "ns_high": 518095.1614657574, + "ns": 490288.78706812474, + "ns_low": 487740.6328499902, + "ns_high": 493231.1606580016, "throughput": { "Bytes": 1048576 } @@ -510,9 +514,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes256-gcm/openssl", - "ns": 607828.8394088962, - "ns_low": 593043.017455192, - "ns_high": 623504.559641234, + "ns": 533200.6291133441, + "ns_low": 525931.864086661, + "ns_high": 541915.8963636713, "throughput": { "Bytes": 1048576 } @@ -521,9 +525,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes256-gcm/rind", - "ns": 310975.03466824297, - "ns_low": 309215.6569442407, - "ns_high": 313729.3093875151, + "ns": 292743.5694359884, + "ns_low": 291734.87999409105, + "ns_high": 293962.6942882768, "throughput": { "Bytes": 1048576 } @@ -532,9 +536,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes256-gcm/ring", - "ns": 305270.452085119, - "ns_low": 304906.3277804477, - "ns_high": 305783.454879163, + "ns": 289903.7481296488, + "ns_low": 288945.6007641942, + "ns_high": 291125.829672691, "throughput": { "Bytes": 1048576 } @@ -543,9 +547,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/chacha20poly1305/aws-lc-rs", - "ns": 739119.6554721443, - "ns_low": 734948.836350856, - "ns_high": 743526.6180907239, + "ns": 687525.271556081, + "ns_low": 686873.6547876262, + "ns_high": 688243.7870979371, "throughput": { "Bytes": 1048576 } @@ -554,9 +558,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "graviola", "id": "rustls-bulk/chacha20poly1305/graviola", - "ns": 1494046.8854999996, - "ns_low": 1488323.0926249993, - "ns_high": 1501242.6449125004, + "ns": 1372989.95, + "ns_low": 1371099.5279999995, + "ns_high": 1374992.8594444445, "throughput": { "Bytes": 1048576 } @@ -565,9 +569,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "openssl", "id": "rustls-bulk/chacha20poly1305/openssl", - "ns": 855611.5199172455, - "ns_low": 851017.0883448363, - "ns_high": 862211.6043564533, + "ns": 782981.7795241614, + "ns_low": 781761.2930544895, + "ns_high": 784284.3469900155, "throughput": { "Bytes": 1048576 } @@ -576,9 +580,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "rind", "id": "rustls-bulk/chacha20poly1305/rind", - "ns": 739906.9848027191, - "ns_low": 736889.410444364, - "ns_high": 743599.2311274786, + "ns": 688782.5718161667, + "ns_low": 687955.1967403655, + "ns_high": 689712.4500167761, "throughput": { "Bytes": 1048576 } @@ -587,9 +591,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "ring", "id": "rustls-bulk/chacha20poly1305/ring", - "ns": 747515.0939559628, - "ns_low": 740007.3080931164, - "ns_high": 755820.5941516283, + "ns": 693007.3277316388, + "ns_low": 692137.7856546206, + "ns_high": 693950.8459813733, "throughput": { "Bytes": 1048576 } @@ -598,9 +602,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/32B", - "ns": 81.09695492172679, - "ns_low": 80.66547720505375, - "ns_high": 81.45995879008802, + "ns": 78.18123602992911, + "ns_low": 78.00325909865607, + "ns_high": 78.35377511551475, "throughput": { "Bytes": 32 } @@ -609,9 +613,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "graviola", "id": "aes128-gcm/graviola/32B", - "ns": 67.47502451524446, - "ns_low": 67.3521534038525, - "ns_high": 67.6292078531782, + "ns": 69.64893975805013, + "ns_low": 69.46209598839022, + "ns_high": 69.84210476914575, "throughput": { "Bytes": 32 } @@ -620,9 +624,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "libcrux", "id": "aes128-gcm/libcrux/32B", - "ns": 307.72239764599766, - "ns_low": 306.7552609426001, - "ns_high": 308.83116280384, + "ns": 321.1510688259032, + "ns_low": 320.1651995314783, + "ns_high": 322.1551097070508, "throughput": { "Bytes": 32 } @@ -631,9 +635,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "openssl", "id": "aes128-gcm/openssl/32B", - "ns": 113.70045360044232, - "ns_low": 113.42787091643221, - "ns_high": 114.19065735149336, + "ns": 115.16628382591279, + "ns_low": 114.9437747296121, + "ns_high": 115.38736580352752, "throughput": { "Bytes": 32 } @@ -642,9 +646,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rind", "id": "aes128-gcm/rind/32B", - "ns": 40.467685665343566, - "ns_low": 40.408680046415505, - "ns_high": 40.54055949695787, + "ns": 38.71781004146106, + "ns_low": 38.659918112589516, + "ns_high": 38.782613981479805, "throughput": { "Bytes": 32 } @@ -653,9 +657,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "ring", "id": "aes128-gcm/ring/32B", - "ns": 54.18041064575372, - "ns_low": 54.10208546594456, - "ns_high": 54.27717535213854, + "ns": 56.29595468671775, + "ns_low": 56.14750024514652, + "ns_high": 56.44597328465104, "throughput": { "Bytes": 32 } @@ -664,9 +668,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/32B", - "ns": 95.00449012348236, - "ns_low": 94.76801218338935, - "ns_high": 95.25294315115404, + "ns": 96.96354522191186, + "ns_low": 96.70035059356427, + "ns_high": 97.1937694722025, "throughput": { "Bytes": 32 } @@ -675,9 +679,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/1350B", - "ns": 289.38070285189093, - "ns_low": 289.07122539942515, - "ns_high": 289.6727492366782, + "ns": 291.45977784805507, + "ns_low": 290.1478010512709, + "ns_high": 292.7807581035349, "throughput": { "Bytes": 1350 } @@ -686,9 +690,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "graviola", "id": "aes128-gcm/graviola/1350B", - "ns": 295.7695760468289, - "ns_low": 295.5874224148288, - "ns_high": 295.978796566454, + "ns": 294.544534988775, + "ns_low": 294.3971570121459, + "ns_high": 294.6911541542619, "throughput": { "Bytes": 1350 } @@ -697,9 +701,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm/libcrux/1350B", - "ns": 3905.949749519728, - "ns_low": 3905.293873860065, - "ns_high": 3906.7098698249115, + "ns": 4718.6859278643815, + "ns_low": 4707.597685761792, + "ns_high": 4729.928009796678, "throughput": { "Bytes": 1350 } @@ -708,9 +712,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "openssl", "id": "aes128-gcm/openssl/1350B", - "ns": 322.74750212829525, - "ns_low": 322.50870660381247, - "ns_high": 323.01362486439865, + "ns": 326.496180077384, + "ns_low": 325.95222413035697, + "ns_high": 327.17601654926307, "throughput": { "Bytes": 1350 } @@ -719,9 +723,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rind", "id": "aes128-gcm/rind/1350B", - "ns": 170.22268837354932, - "ns_low": 169.96702863815506, - "ns_high": 170.46653972519323, + "ns": 164.7907743033959, + "ns_low": 164.7035665365541, + "ns_high": 164.89844517627992, "throughput": { "Bytes": 1350 } @@ -730,9 +734,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "ring", "id": "aes128-gcm/ring/1350B", - "ns": 183.70822008583897, - "ns_low": 183.54256331187895, - "ns_high": 183.8946094260977, + "ns": 191.30515759333656, + "ns_low": 190.78760483284387, + "ns_high": 191.8917438386721, "throughput": { "Bytes": 1350 } @@ -741,9 +745,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/1350B", - "ns": 434.61593394791873, - "ns_low": 434.44783368759255, - "ns_high": 434.78609176334726, + "ns": 433.59781089432875, + "ns_low": 432.89819617244177, + "ns_high": 434.3087388384053, "throughput": { "Bytes": 1350 } @@ -752,9 +756,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/16KB", - "ns": 2575.2601763715816, - "ns_low": 2570.393225759656, - "ns_high": 2581.0360730857356, + "ns": 2631.490105430963, + "ns_low": 2628.55639892298, + "ns_high": 2634.4599518661257, "throughput": { "Bytes": 16384 } @@ -763,9 +767,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "graviola", "id": "aes128-gcm/graviola/16KB", - "ns": 2581.8625423121157, - "ns_low": 2579.1969610296, - "ns_high": 2584.8245394458263, + "ns": 2568.4700093207616, + "ns_low": 2567.593339473697, + "ns_high": 2569.402223876713, "throughput": { "Bytes": 16384 } @@ -774,9 +778,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm/libcrux/16KB", - "ns": 44407.63874369313, - "ns_low": 44379.65108691044, - "ns_high": 44438.96050325329, + "ns": 53903.71160558593, + "ns_low": 53876.30894882478, + "ns_high": 53933.52435513733, "throughput": { "Bytes": 16384 } @@ -785,9 +789,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "openssl", "id": "aes128-gcm/openssl/16KB", - "ns": 2615.456819978788, - "ns_low": 2613.845413004763, - "ns_high": 2617.2121068652473, + "ns": 2606.678917002174, + "ns_low": 2605.6211777548924, + "ns_high": 2607.845450374195, "throughput": { "Bytes": 16384 } @@ -796,9 +800,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rind", "id": "aes128-gcm/rind/16KB", - "ns": 1393.3920253925494, - "ns_low": 1392.9180648520226, - "ns_high": 1393.8813501786806, + "ns": 1378.160155639028, + "ns_low": 1377.6976731393906, + "ns_high": 1378.6391722826145, "throughput": { "Bytes": 16384 } @@ -807,9 +811,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "ring", "id": "aes128-gcm/ring/16KB", - "ns": 1433.3369300567135, - "ns_low": 1432.1737440679121, - "ns_high": 1434.6814900353268, + "ns": 1390.5736936742217, + "ns_low": 1385.9693674422695, + "ns_high": 1397.19491489037, "throughput": { "Bytes": 16384 } @@ -818,9 +822,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/16KB", - "ns": 4176.887901736212, - "ns_low": 4175.013734810766, - "ns_high": 4178.741360454101, + "ns": 4279.150361625876, + "ns_low": 4276.980009234885, + "ns_high": 4281.261866051443, "throughput": { "Bytes": 16384 } @@ -829,9 +833,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/32B", - "ns": 72.1405985362923, - "ns_low": 72.07741450645169, - "ns_high": 72.21312320905513, + "ns": 72.39146350246212, + "ns_low": 72.27446005403183, + "ns_high": 72.50050993235322, "throughput": { "Bytes": 32 } @@ -840,9 +844,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "graviola", "id": "aes128-gcm-open/graviola/32B", - "ns": 65.21527766605014, - "ns_low": 65.06188549732994, - "ns_high": 65.46930113437482, + "ns": 64.57911474235208, + "ns_low": 64.5577319667857, + "ns_high": 64.5998783712037, "throughput": { "Bytes": 32 } @@ -851,9 +855,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/32B", - "ns": 320.47013103468834, - "ns_low": 320.2585557148667, - "ns_high": 320.689813511467, + "ns": 317.4279780523032, + "ns_low": 317.2128309762007, + "ns_high": 317.6581190454606, "throughput": { "Bytes": 32 } @@ -862,9 +866,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "openssl", "id": "aes128-gcm-open/openssl/32B", - "ns": 118.40768199540943, - "ns_low": 118.34740651197711, - "ns_high": 118.46719897158845, + "ns": 117.72176747379157, + "ns_low": 117.66393686652823, + "ns_high": 117.7796508259141, "throughput": { "Bytes": 32 } @@ -873,9 +877,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rind", "id": "aes128-gcm-open/rind/32B", - "ns": 47.04580211074283, - "ns_low": 46.9904686600358, - "ns_high": 47.108180463442515, + "ns": 44.381446002824276, + "ns_low": 44.25517225387723, + "ns_high": 44.5264859411026, "throughput": { "Bytes": 32 } @@ -884,9 +888,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "ring", "id": "aes128-gcm-open/ring/32B", - "ns": 58.221849441491436, - "ns_low": 58.12613533469068, - "ns_high": 58.326433984141715, + "ns": 57.88729926164423, + "ns_low": 57.78548260033325, + "ns_high": 57.99701421984121, "throughput": { "Bytes": 32 } @@ -895,9 +899,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/32B", - "ns": 101.80875734831245, - "ns_low": 101.6652868041491, - "ns_high": 101.95997834716214, + "ns": 101.77797133462741, + "ns_low": 101.66331191540168, + "ns_high": 101.90434864500739, "throughput": { "Bytes": 32 } @@ -906,9 +910,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/1350B", - "ns": 294.80590522292954, - "ns_low": 294.44179263743524, - "ns_high": 295.14668651599465, + "ns": 298.2697346469915, + "ns_low": 296.80356164165397, + "ns_high": 299.52159882661493, "throughput": { "Bytes": 1350 } @@ -917,9 +921,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes128-gcm-open/graviola/1350B", - "ns": 306.6363838570598, - "ns_low": 306.4964968996656, - "ns_high": 306.80316704269546, + "ns": 304.66672416137135, + "ns_low": 304.34666894591027, + "ns_high": 305.16024123945976, "throughput": { "Bytes": 1350 } @@ -928,9 +932,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/1350B", - "ns": 3928.4704792219204, - "ns_low": 3925.9724435155536, - "ns_high": 3931.3720587527314, + "ns": 3915.9811960714924, + "ns_low": 3915.304992850228, + "ns_high": 3916.7091694488354, "throughput": { "Bytes": 1350 } @@ -939,9 +943,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes128-gcm-open/openssl/1350B", - "ns": 332.1542533229607, - "ns_low": 331.9068042480926, - "ns_high": 332.44522831121725, + "ns": 332.94154273480865, + "ns_low": 332.50171478298125, + "ns_high": 333.43886107034, "throughput": { "Bytes": 1350 } @@ -950,9 +954,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rind", "id": "aes128-gcm-open/rind/1350B", - "ns": 175.09389375695133, - "ns_low": 175.00172088925166, - "ns_high": 175.20175630308418, + "ns": 174.3700001910275, + "ns_low": 174.22915462673274, + "ns_high": 174.53848134637965, "throughput": { "Bytes": 1350 } @@ -961,9 +965,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "ring", "id": "aes128-gcm-open/ring/1350B", - "ns": 185.49593690753534, - "ns_low": 185.3148628358316, - "ns_high": 185.70422811023806, + "ns": 184.7831183861872, + "ns_low": 184.60923199843896, + "ns_high": 184.9806817962279, "throughput": { "Bytes": 1350 } @@ -972,9 +976,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/1350B", - "ns": 448.3738718022143, - "ns_low": 448.01838969348967, - "ns_high": 448.7426702834615, + "ns": 450.60785256378966, + "ns_low": 450.26977013203174, + "ns_high": 450.980740155327, "throughput": { "Bytes": 1350 } @@ -983,9 +987,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/16KB", - "ns": 2713.3144611271596, - "ns_low": 2711.640236706835, - "ns_high": 2715.7032330911443, + "ns": 2721.8399650039632, + "ns_low": 2717.451021825341, + "ns_high": 2727.028804228904, "throughput": { "Bytes": 16384 } @@ -994,9 +998,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes128-gcm-open/graviola/16KB", - "ns": 2659.8450441306763, - "ns_low": 2659.3154227717187, - "ns_high": 2660.4930055332275, + "ns": 2653.369770485444, + "ns_low": 2651.0480566569913, + "ns_high": 2655.811098232755, "throughput": { "Bytes": 16384 } @@ -1005,9 +1009,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm-open/libcrux/16KB", - "ns": 44584.27218159556, - "ns_low": 44520.22384367693, - "ns_high": 44662.159113256836, + "ns": 44290.48332242606, + "ns_low": 44275.88053867182, + "ns_high": 44309.196579221054, "throughput": { "Bytes": 16384 } @@ -1016,9 +1020,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes128-gcm-open/openssl/16KB", - "ns": 2748.625149650537, - "ns_low": 2747.7215548976487, - "ns_high": 2749.596203463298, + "ns": 2771.743101320518, + "ns_low": 2769.5665472496607, + "ns_high": 2774.0493653334606, "throughput": { "Bytes": 16384 } @@ -1027,9 +1031,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rind", "id": "aes128-gcm-open/rind/16KB", - "ns": 1453.7942368530094, - "ns_low": 1453.2607751835303, - "ns_high": 1454.4718781333138, + "ns": 1438.5637060330264, + "ns_low": 1437.9661778103762, + "ns_high": 1439.2215234719706, "throughput": { "Bytes": 16384 } @@ -1038,9 +1042,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "ring", "id": "aes128-gcm-open/ring/16KB", - "ns": 1484.3550879932022, - "ns_low": 1483.5537243757028, - "ns_high": 1485.2210363656966, + "ns": 1450.6497199735666, + "ns_low": 1449.9458062389058, + "ns_high": 1451.4933790988543, "throughput": { "Bytes": 16384 } @@ -1049,9 +1053,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/16KB", - "ns": 4283.864554901963, - "ns_low": 4282.327040962147, - "ns_high": 4285.842361388433, + "ns": 4287.566708001105, + "ns_low": 4285.926710983686, + "ns_high": 4289.467181664008, "throughput": { "Bytes": 16384 } @@ -1060,9 +1064,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/32B", - "ns": 80.96364824035979, - "ns_low": 80.8020204195242, - "ns_high": 81.11004469744913, + "ns": 81.67287715485598, + "ns_low": 81.5725625935729, + "ns_high": 81.77141016759855, "throughput": { "Bytes": 32 } @@ -1071,9 +1075,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "graviola", "id": "aes256-gcm/graviola/32B", - "ns": 73.47307255902727, - "ns_low": 73.43815789621735, - "ns_high": 73.50996531695695, + "ns": 74.40760387950502, + "ns_low": 74.37251108524137, + "ns_high": 74.44815131543784, "throughput": { "Bytes": 32 } @@ -1082,9 +1086,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "libcrux", "id": "aes256-gcm/libcrux/32B", - "ns": 426.35107361154286, - "ns_low": 425.86397289750516, - "ns_high": 427.06333994579893, + "ns": 425.5936084666091, + "ns_low": 425.47553259255534, + "ns_high": 425.7087168868162, "throughput": { "Bytes": 32 } @@ -1093,9 +1097,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "openssl", "id": "aes256-gcm/openssl/32B", - "ns": 118.75051164752217, - "ns_low": 118.64497786637142, - "ns_high": 118.87486643764286, + "ns": 118.0071271386442, + "ns_low": 117.91976832027179, + "ns_high": 118.09765785996575, "throughput": { "Bytes": 32 } @@ -1104,9 +1108,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rind", "id": "aes256-gcm/rind/32B", - "ns": 43.991970629785904, - "ns_low": 43.92911317877142, - "ns_high": 44.068732216515514, + "ns": 41.12624580804068, + "ns_low": 41.076402172574454, + "ns_high": 41.19420554570068, "throughput": { "Bytes": 32 } @@ -1115,9 +1119,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "ring", "id": "aes256-gcm/ring/32B", - "ns": 57.659007361314025, - "ns_low": 57.5848049053529, - "ns_high": 57.74216584460965, + "ns": 56.923970565102294, + "ns_low": 56.87984976013349, + "ns_high": 56.97078586804803, "throughput": { "Bytes": 32 } @@ -1126,9 +1130,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/32B", - "ns": 100.82592007094843, - "ns_low": 100.64612155865866, - "ns_high": 101.00159850256581, + "ns": 100.79500719003778, + "ns_low": 100.65391066350846, + "ns_high": 100.92542547556805, "throughput": { "Bytes": 32 } @@ -1137,9 +1141,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/1350B", - "ns": 312.61743501117013, - "ns_low": 312.4634084685585, - "ns_high": 312.7699055227488, + "ns": 311.3959418305522, + "ns_low": 311.18660798702143, + "ns_high": 311.6220989746789, "throughput": { "Bytes": 1350 } @@ -1148,9 +1152,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "graviola", "id": "aes256-gcm/graviola/1350B", - "ns": 337.8431551968808, - "ns_low": 337.67476571905496, - "ns_high": 338.03004836657357, + "ns": 337.4235382065502, + "ns_low": 337.2291425103993, + "ns_high": 337.62622959134467, "throughput": { "Bytes": 1350 } @@ -1159,9 +1163,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm/libcrux/1350B", - "ns": 6962.850766063763, - "ns_low": 6960.917916499587, - "ns_high": 6965.286031462349, + "ns": 6912.772572298535, + "ns_low": 6910.228674186331, + "ns_high": 6915.269502418054, "throughput": { "Bytes": 1350 } @@ -1170,9 +1174,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "openssl", "id": "aes256-gcm/openssl/1350B", - "ns": 345.2031671510816, - "ns_low": 344.7394197135773, - "ns_high": 345.7802534377672, + "ns": 345.3119771050344, + "ns_low": 345.09456258346245, + "ns_high": 345.5176259014078, "throughput": { "Bytes": 1350 } @@ -1181,9 +1185,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rind", "id": "aes256-gcm/rind/1350B", - "ns": 187.8069528445664, - "ns_low": 187.59843229219638, - "ns_high": 187.99395186892397, + "ns": 184.3356665663656, + "ns_low": 184.17252227443643, + "ns_high": 184.52279817859284, "throughput": { "Bytes": 1350 } @@ -1192,9 +1196,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "ring", "id": "aes256-gcm/ring/1350B", - "ns": 205.65849774439945, - "ns_low": 205.3002811860547, - "ns_high": 206.0765579670779, + "ns": 205.0115597532675, + "ns_low": 204.84860843542342, + "ns_high": 205.17567990782283, "throughput": { "Bytes": 1350 } @@ -1203,9 +1207,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/1350B", - "ns": 488.4570334089431, - "ns_low": 488.2079052117552, - "ns_high": 488.7427824061423, + "ns": 488.6783901794388, + "ns_low": 487.7308680101619, + "ns_high": 489.9344342592433, "throughput": { "Bytes": 1350 } @@ -1214,9 +1218,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/16KB", - "ns": 2787.105907033722, - "ns_low": 2785.1505496259288, - "ns_high": 2789.2117835200825, + "ns": 2779.682549439349, + "ns_low": 2777.712511271244, + "ns_high": 2781.9260043685927, "throughput": { "Bytes": 16384 } @@ -1225,9 +1229,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "graviola", "id": "aes256-gcm/graviola/16KB", - "ns": 3004.004372252871, - "ns_low": 3001.8454568176685, - "ns_high": 3006.562664477019, + "ns": 2976.366100147776, + "ns_low": 2975.2770219322856, + "ns_high": 2977.54985148098, "throughput": { "Bytes": 16384 } @@ -1236,9 +1240,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm/libcrux/16KB", - "ns": 80859.40311585636, - "ns_low": 80838.3875344493, - "ns_high": 80885.22768315626, + "ns": 80608.28103221516, + "ns_low": 80507.1725182545, + "ns_high": 80739.42283307743, "throughput": { "Bytes": 16384 } @@ -1247,9 +1251,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "openssl", "id": "aes256-gcm/openssl/16KB", - "ns": 2817.9646741049573, - "ns_low": 2815.9588042121145, - "ns_high": 2820.5468199158363, + "ns": 2822.3494130380036, + "ns_low": 2816.531653930117, + "ns_high": 2829.5320157714477, "throughput": { "Bytes": 16384 } @@ -1258,9 +1262,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rind", "id": "aes256-gcm/rind/16KB", - "ns": 1537.766764648006, - "ns_low": 1536.6727431342586, - "ns_high": 1539.041666952576, + "ns": 1509.9385955251023, + "ns_low": 1508.7382939246954, + "ns_high": 1511.2597376589245, "throughput": { "Bytes": 16384 } @@ -1269,9 +1273,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "ring", "id": "aes256-gcm/ring/16KB", - "ns": 1560.776206361969, - "ns_low": 1559.4895611294758, - "ns_high": 1562.4091084910292, + "ns": 1530.7028236636559, + "ns_low": 1529.529259216432, + "ns_high": 1532.0069852191477, "throughput": { "Bytes": 16384 } @@ -1280,9 +1284,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/16KB", - "ns": 4829.680107185249, - "ns_low": 4821.655626633202, - "ns_high": 4837.808094184786, + "ns": 4778.539619572212, + "ns_low": 4776.039597365809, + "ns_high": 4781.599122018439, "throughput": { "Bytes": 16384 } @@ -1291,9 +1295,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/32B", - "ns": 81.94621631676719, - "ns_low": 81.84815409423258, - "ns_high": 82.05189999095285, + "ns": 78.56685596903668, + "ns_low": 78.40435613928828, + "ns_high": 78.73102759953139, "throughput": { "Bytes": 32 } @@ -1302,9 +1306,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "graviola", "id": "aes256-gcm-open/graviola/32B", - "ns": 67.92897614978642, - "ns_low": 67.88952687379972, - "ns_high": 67.96903246583237, + "ns": 67.51808037014749, + "ns_low": 67.45915163096358, + "ns_high": 67.57614609257514, "throughput": { "Bytes": 32 } @@ -1313,9 +1317,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/32B", - "ns": 441.85244063295653, - "ns_low": 441.60622449858914, - "ns_high": 442.1277348084992, + "ns": 440.7380738169481, + "ns_low": 440.66539228014534, + "ns_high": 440.8175832155652, "throughput": { "Bytes": 32 } @@ -1324,9 +1328,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "openssl", "id": "aes256-gcm-open/openssl/32B", - "ns": 120.78076191868077, - "ns_low": 120.66102764745791, - "ns_high": 120.92675978616185, + "ns": 121.93546746055961, + "ns_low": 121.86145535547668, + "ns_high": 122.01367536919972, "throughput": { "Bytes": 32 } @@ -1335,9 +1339,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rind", "id": "aes256-gcm-open/rind/32B", - "ns": 52.441398115433564, - "ns_low": 52.36247037995856, - "ns_high": 52.519866449203, + "ns": 48.437449813823704, + "ns_low": 48.4019592278178, + "ns_high": 48.475810075379705, "throughput": { "Bytes": 32 } @@ -1346,9 +1350,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "ring", "id": "aes256-gcm-open/ring/32B", - "ns": 61.73058808366117, - "ns_low": 61.504072401570156, - "ns_high": 61.98752442255034, + "ns": 60.78052182940942, + "ns_low": 60.72015105051295, + "ns_high": 60.84694505819208, "throughput": { "Bytes": 32 } @@ -1357,9 +1361,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/32B", - "ns": 110.96999062572448, - "ns_low": 110.77596999601067, - "ns_high": 111.20318532246166, + "ns": 108.5477081028688, + "ns_low": 108.39448372753084, + "ns_high": 108.72309797179268, "throughput": { "Bytes": 32 } @@ -1368,9 +1372,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/1350B", - "ns": 319.8630112658153, - "ns_low": 319.6814664822764, - "ns_high": 320.06741210320536, + "ns": 321.7740518643795, + "ns_low": 320.2546929418793, + "ns_high": 324.30517318523954, "throughput": { "Bytes": 1350 } @@ -1379,9 +1383,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes256-gcm-open/graviola/1350B", - "ns": 342.13600219294767, - "ns_low": 341.74788723268097, - "ns_high": 342.66942613956485, + "ns": 341.43634471476116, + "ns_low": 341.2394873968262, + "ns_high": 341.63426386834504, "throughput": { "Bytes": 1350 } @@ -1390,9 +1394,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/1350B", - "ns": 6390.444054241727, - "ns_low": 6378.700143744848, - "ns_high": 6402.441615825177, + "ns": 6787.904072571437, + "ns_low": 6781.5415611572835, + "ns_high": 6793.962688322816, "throughput": { "Bytes": 1350 } @@ -1401,9 +1405,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes256-gcm-open/openssl/1350B", - "ns": 358.2105496580264, - "ns_low": 357.9424568526551, - "ns_high": 358.5330098464535, + "ns": 353.76517782827835, + "ns_low": 353.5941971397298, + "ns_high": 353.95943875365595, "throughput": { "Bytes": 1350 } @@ -1412,9 +1416,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rind", "id": "aes256-gcm-open/rind/1350B", - "ns": 194.1609858438321, - "ns_low": 194.04138315635575, - "ns_high": 194.28270974418942, + "ns": 191.64544793862083, + "ns_low": 191.48769108855174, + "ns_high": 191.8012218794328, "throughput": { "Bytes": 1350 } @@ -1423,9 +1427,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "ring", "id": "aes256-gcm-open/ring/1350B", - "ns": 205.22766804213563, - "ns_low": 205.0405476487757, - "ns_high": 205.4063247928972, + "ns": 203.87999068803387, + "ns_low": 203.64068774932545, + "ns_high": 204.12067948574128, "throughput": { "Bytes": 1350 } @@ -1434,9 +1438,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/1350B", - "ns": 507.479370575664, - "ns_low": 506.9099838883616, - "ns_high": 508.1236072354762, + "ns": 507.53927385472986, + "ns_low": 507.22294773810927, + "ns_high": 507.8894707743045, "throughput": { "Bytes": 1350 } @@ -1445,9 +1449,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/16KB", - "ns": 2890.6217322803996, - "ns_low": 2889.4408141769113, - "ns_high": 2891.937937778478, + "ns": 2919.0870604764154, + "ns_low": 2912.38663917931, + "ns_high": 2932.315055031723, "throughput": { "Bytes": 16384 } @@ -1456,9 +1460,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes256-gcm-open/graviola/16KB", - "ns": 3046.0568505681795, - "ns_low": 3044.4730672718, - "ns_high": 3047.951651358972, + "ns": 3044.9247502887665, + "ns_low": 3043.6585404160355, + "ns_high": 3046.209456573664, "throughput": { "Bytes": 16384 } @@ -1467,9 +1471,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm-open/libcrux/16KB", - "ns": 74383.5076684646, - "ns_low": 74078.82328089216, - "ns_high": 74706.76370058642, + "ns": 79185.40512782622, + "ns_low": 79092.05228409641, + "ns_high": 79273.30244069087, "throughput": { "Bytes": 16384 } @@ -1478,9 +1482,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes256-gcm-open/openssl/16KB", - "ns": 2961.384307897486, - "ns_low": 2959.389026216712, - "ns_high": 2963.4651152723354, + "ns": 2975.6487480581427, + "ns_low": 2973.450973454902, + "ns_high": 2978.0325387623807, "throughput": { "Bytes": 16384 } @@ -1489,9 +1493,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rind", "id": "aes256-gcm-open/rind/16KB", - "ns": 1615.3191984421917, - "ns_low": 1614.7407593873693, - "ns_high": 1615.9507271149846, + "ns": 1603.7028921355225, + "ns_low": 1602.8262763117473, + "ns_high": 1604.7094763011808, "throughput": { "Bytes": 16384 } @@ -1500,9 +1504,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "ring", "id": "aes256-gcm-open/ring/16KB", - "ns": 1648.5296625371493, - "ns_low": 1646.6534697405498, - "ns_high": 1650.8587823860582, + "ns": 1617.658888692568, + "ns_low": 1616.8949355062641, + "ns_high": 1618.444757765973, "throughput": { "Bytes": 16384 } @@ -1511,9 +1515,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/16KB", - "ns": 4916.042921161519, - "ns_low": 4913.015131759291, - "ns_high": 4919.812645871507, + "ns": 4931.822075141028, + "ns_low": 4929.3948624654395, + "ns_high": 4934.3604863508945, "throughput": { "Bytes": 16384 } @@ -1522,9 +1526,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/32B", - "ns": 119.38697371685015, - "ns_low": 119.22557137334421, - "ns_high": 119.55223763720262, + "ns": 119.12073258814414, + "ns_low": 118.92978163050527, + "ns_high": 119.3005524691577, "throughput": { "Bytes": 32 } @@ -1533,9 +1537,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "graviola", "id": "chacha20poly1305/graviola/32B", - "ns": 215.52531139181406, - "ns_low": 215.28371372535696, - "ns_high": 215.8362277074414, + "ns": 215.6158614269785, + "ns_low": 215.46062983562783, + "ns_high": 215.78555387594383, "throughput": { "Bytes": 32 } @@ -1544,9 +1548,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "libcrux", "id": "chacha20poly1305/libcrux/32B", - "ns": 218.49354842328063, - "ns_low": 217.4041466945092, - "ns_high": 219.5441619224454, + "ns": 220.29172298209983, + "ns_low": 219.5932359074465, + "ns_high": 220.92032515564523, "throughput": { "Bytes": 32 } @@ -1555,9 +1559,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "openssl", "id": "chacha20poly1305/openssl/32B", - "ns": 255.19473276905387, - "ns_low": 254.98535699585403, - "ns_high": 255.41645487163805, + "ns": 257.3650611662894, + "ns_low": 257.1497315207316, + "ns_high": 257.57945198315497, "throughput": { "Bytes": 32 } @@ -1566,9 +1570,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rind", "id": "chacha20poly1305/rind/32B", - "ns": 113.58912353531446, - "ns_low": 113.332868118821, - "ns_high": 113.84096876376857, + "ns": 113.65893860745757, + "ns_low": 113.5962017225858, + "ns_high": 113.74947975170227, "throughput": { "Bytes": 32 } @@ -1577,9 +1581,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "ring", "id": "chacha20poly1305/ring/32B", - "ns": 112.84641787812089, - "ns_low": 112.779496276636, - "ns_high": 112.91363691281073, + "ns": 112.54149771549098, + "ns_low": 112.45625052895292, + "ns_high": 112.62276430525773, "throughput": { "Bytes": 32 } @@ -1588,9 +1592,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/32B", - "ns": 1179.0821917488336, - "ns_low": 1178.5289527326765, - "ns_high": 1179.613228068352, + "ns": 1179.3188531404753, + "ns_low": 1178.9245843058093, + "ns_high": 1179.7813416021017, "throughput": { "Bytes": 32 } @@ -1599,9 +1603,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/1350B", - "ns": 535.3802556269754, - "ns_low": 534.7793873026648, - "ns_high": 536.0542961210449, + "ns": 532.2288036733263, + "ns_low": 531.9914309105658, + "ns_high": 532.4884385567266, "throughput": { "Bytes": 1350 } @@ -1610,9 +1614,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "graviola", "id": "chacha20poly1305/graviola/1350B", - "ns": 1078.4416420865966, - "ns_low": 1078.1012886584294, - "ns_high": 1078.7632475962303, + "ns": 1081.162616956621, + "ns_low": 1080.4879722451897, + "ns_high": 1081.9288614196043, "throughput": { "Bytes": 1350 } @@ -1621,9 +1625,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "chacha20poly1305/libcrux/1350B", - "ns": 2334.0601462400323, - "ns_low": 2332.2760701587795, - "ns_high": 2336.019784941847, + "ns": 2335.031270756997, + "ns_low": 2331.8088242669264, + "ns_high": 2339.038219329477, "throughput": { "Bytes": 1350 } @@ -1632,9 +1636,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "openssl", "id": "chacha20poly1305/openssl/1350B", - "ns": 741.674915211918, - "ns_low": 741.2596767500855, - "ns_high": 742.1726543473166, + "ns": 745.3420585861181, + "ns_low": 744.8906403755179, + "ns_high": 745.7711857159691, "throughput": { "Bytes": 1350 } @@ -1643,9 +1647,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rind", "id": "chacha20poly1305/rind/1350B", - "ns": 530.2079075995947, - "ns_low": 529.8420247054127, - "ns_high": 530.6447957899103, + "ns": 532.902464971817, + "ns_low": 532.4230981557107, + "ns_high": 533.5510254126483, "throughput": { "Bytes": 1350 } @@ -1654,9 +1658,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "ring", "id": "chacha20poly1305/ring/1350B", - "ns": 530.8040499490708, - "ns_low": 530.1552932486788, - "ns_high": 531.4849509589974, + "ns": 527.4927198882623, + "ns_low": 526.7824203130742, + "ns_high": 528.4037526607766, "throughput": { "Bytes": 1350 } @@ -1665,9 +1669,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/1350B", - "ns": 1923.6213765260022, - "ns_low": 1923.057305102064, - "ns_high": 1924.2160019064952, + "ns": 1927.9016946257525, + "ns_low": 1925.949407005571, + "ns_high": 1930.2609332359702, "throughput": { "Bytes": 1350 } @@ -1676,9 +1680,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/16KB", - "ns": 4624.646542099542, - "ns_low": 4622.20670520254, - "ns_high": 4627.010793992338, + "ns": 4784.972222467859, + "ns_low": 4759.303666252806, + "ns_high": 4817.732671067247, "throughput": { "Bytes": 16384 } @@ -1687,9 +1691,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "graviola", "id": "chacha20poly1305/graviola/16KB", - "ns": 9869.039994573472, - "ns_low": 9865.864967106674, - "ns_high": 9872.16749329686, + "ns": 10145.577916258613, + "ns_low": 10140.171452468061, + "ns_high": 10150.7542289645, "throughput": { "Bytes": 16384 } @@ -1698,9 +1702,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "chacha20poly1305/libcrux/16KB", - "ns": 26026.42959849911, - "ns_low": 26007.537705272083, - "ns_high": 26047.4851663483, + "ns": 26699.099586741282, + "ns_low": 26670.900321609035, + "ns_high": 26727.953949401624, "throughput": { "Bytes": 16384 } @@ -1709,9 +1713,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "openssl", "id": "chacha20poly1305/openssl/16KB", - "ns": 5103.1240143026935, - "ns_low": 5099.433549899633, - "ns_high": 5106.988638976824, + "ns": 5142.800268695267, + "ns_low": 5139.718180174353, + "ns_high": 5146.261294634069, "throughput": { "Bytes": 16384 } @@ -1720,9 +1724,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rind", "id": "chacha20poly1305/rind/16KB", - "ns": 4583.479768901115, - "ns_low": 4580.547130459303, - "ns_high": 4586.701739775758, + "ns": 4675.981236361267, + "ns_low": 4670.501086120253, + "ns_high": 4681.442203705503, "throughput": { "Bytes": 16384 } @@ -1731,9 +1735,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "ring", "id": "chacha20poly1305/ring/16KB", - "ns": 4552.899948515303, - "ns_low": 4549.6998764689815, - "ns_high": 4556.522969712034, + "ns": 4678.818568932908, + "ns_low": 4671.825642230796, + "ns_high": 4684.461896287292, "throughput": { "Bytes": 16384 } @@ -1742,9 +1746,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/16KB", - "ns": 9807.205033685654, - "ns_low": 9797.46367303684, - "ns_high": 9820.868693928773, + "ns": 10088.715890054676, + "ns_low": 10081.187260512792, + "ns_high": 10096.889029507773, "throughput": { "Bytes": 16384 } @@ -1753,9 +1757,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/32B", - "ns": 263.0886221549356, - "ns_low": 262.5621271226156, - "ns_high": 263.58219647143926, + "ns": 266.74500117823146, + "ns_low": 266.1132387370219, + "ns_high": 267.350362473144, "throughput": { "Bytes": 32 } @@ -1764,9 +1768,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "graviola", "id": "xchacha20poly1305/graviola/32B", - "ns": 347.7702419105733, - "ns_low": 347.17869912493353, - "ns_high": 348.42000809443067, + "ns": 357.4893359909269, + "ns_low": 356.6556679360424, + "ns_high": 358.41546805174255, "throughput": { "Bytes": 32 } @@ -1775,9 +1779,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/32B", - "ns": 335.91823122432436, - "ns_low": 335.09476432432047, - "ns_high": 336.93152894694146, + "ns": 351.3154649264112, + "ns_low": 350.1223889672625, + "ns_high": 352.83385925615505, "throughput": { "Bytes": 32 } @@ -1786,9 +1790,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rind", "id": "xchacha20poly1305/rind/32B", - "ns": 241.50866702219614, - "ns_low": 241.1819701136646, - "ns_high": 241.84076200083516, + "ns": 243.04294919955078, + "ns_low": 242.66882922068802, + "ns_high": 243.40217101891488, "throughput": { "Bytes": 32 } @@ -1797,9 +1801,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/32B", - "ns": 1354.915812993894, - "ns_low": 1351.278509480074, - "ns_high": 1358.2596347902145, + "ns": 1361.3235103721327, + "ns_low": 1355.3902258236635, + "ns_high": 1368.526244562903, "throughput": { "Bytes": 32 } @@ -1808,9 +1812,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/1350B", - "ns": 673.2997209312769, - "ns_low": 671.9951057963716, - "ns_high": 675.4524044479268, + "ns": 722.9400653166238, + "ns_low": 720.6676682054136, + "ns_high": 725.8592800691122, "throughput": { "Bytes": 1350 } @@ -1819,9 +1823,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "graviola", "id": "xchacha20poly1305/graviola/1350B", - "ns": 1198.3009856776964, - "ns_low": 1197.3159663800006, - "ns_high": 1199.930184958572, + "ns": 1310.95600824662, + "ns_low": 1304.9632133345242, + "ns_high": 1317.526576934044, "throughput": { "Bytes": 1350 } @@ -1830,9 +1834,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/1350B", - "ns": 2447.7408570398225, - "ns_low": 2443.193083165476, - "ns_high": 2452.247612304003, + "ns": 2699.132015854057, + "ns_low": 2658.849678974561, + "ns_high": 2748.9564547135333, "throughput": { "Bytes": 1350 } @@ -1841,9 +1845,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rind", "id": "xchacha20poly1305/rind/1350B", - "ns": 652.5777503942711, - "ns_low": 650.839616908315, - "ns_high": 654.6292120662372, + "ns": 774.9947455618866, + "ns_low": 761.5732710338225, + "ns_high": 790.2835303690641, "throughput": { "Bytes": 1350 } @@ -1852,9 +1856,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/1350B", - "ns": 2063.933587908231, - "ns_low": 2062.2276673141173, - "ns_high": 2066.0095927135744, + "ns": 2179.5863545724756, + "ns_low": 2177.9868247596764, + "ns_high": 2181.265013528041, "throughput": { "Bytes": 1350 } @@ -1863,9 +1867,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/16KB", - "ns": 4742.9954159893605, - "ns_low": 4737.0294747622975, - "ns_high": 4748.251385965445, + "ns": 5374.135824035762, + "ns_low": 5240.390034653793, + "ns_high": 5522.821080627362, "throughput": { "Bytes": 16384 } @@ -1874,9 +1878,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "graviola", "id": "xchacha20poly1305/graviola/16KB", - "ns": 10020.977086892271, - "ns_low": 10010.370784352046, - "ns_high": 10032.64579543795, + "ns": 10803.818398269677, + "ns_low": 10768.521752589468, + "ns_high": 10845.258002811985, "throughput": { "Bytes": 16384 } @@ -1885,9 +1889,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "xchacha20poly1305/libcrux/16KB", - "ns": 26083.946422215227, - "ns_low": 26061.886228248437, - "ns_high": 26109.092644915985, + "ns": 28662.65571323017, + "ns_low": 28144.620064850307, + "ns_high": 29310.75989501271, "throughput": { "Bytes": 16384 } @@ -1896,9 +1900,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rind", "id": "xchacha20poly1305/rind/16KB", - "ns": 4761.933882594946, - "ns_low": 4756.267067891514, - "ns_high": 4768.552085665137, + "ns": 5232.509970444806, + "ns_low": 5170.031055573628, + "ns_high": 5306.236635814885, "throughput": { "Bytes": 16384 } @@ -1907,9 +1911,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/16KB", - "ns": 9952.115686173094, - "ns_low": 9945.831835657762, - "ns_high": 9957.824969632557, + "ns": 11379.844303686046, + "ns_low": 11229.158388008378, + "ns_high": 11557.34061445636, "throughput": { "Bytes": 16384 } @@ -1918,90 +1922,90 @@ "operation": "quic-header-protection/aes128/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/aes128/aws-lc-rs", - "ns": 6.036025128033361, - "ns_low": 6.024081373418891, - "ns_high": 6.050985364161895, + "ns": 5.786550145537476, + "ns_low": 5.781890484278241, + "ns_high": 5.7923822669968805, "throughput": null }, { "operation": "quic-header-protection/aes128/{lib}", "library": "rind", "id": "quic-header-protection/aes128/rind", - "ns": 4.002971785287236, - "ns_low": 3.995055719985848, - "ns_high": 4.010762905757822, + "ns": 3.9854584142848997, + "ns_low": 3.9771191416561877, + "ns_high": 3.9946996216807276, "throughput": null }, { "operation": "quic-header-protection/aes128/{lib}", "library": "ring", "id": "quic-header-protection/aes128/ring", - "ns": 6.7045986475329755, - "ns_low": 6.698842518203201, - "ns_high": 6.7105779715578695, + "ns": 6.943754895172456, + "ns_low": 6.937582052419976, + "ns_high": 6.950352618427238, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/aes256/aws-lc-rs", - "ns": 8.127083837358342, - "ns_low": 8.115658789056832, - "ns_high": 8.138715972373246, + "ns": 7.705988365785333, + "ns_low": 7.678312542167301, + "ns_high": 7.735894094936528, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "rind", "id": "quic-header-protection/aes256/rind", - "ns": 5.823182484726535, - "ns_low": 5.813068224927105, - "ns_high": 5.833462301789987, + "ns": 5.852553637296669, + "ns_low": 5.844026356770953, + "ns_high": 5.861715795466403, "throughput": null }, { "operation": "quic-header-protection/aes256/{lib}", "library": "ring", "id": "quic-header-protection/aes256/ring", - "ns": 9.312121850694298, - "ns_low": 9.296058556417051, - "ns_high": 9.328878831116429, + "ns": 9.58496873322171, + "ns_low": 9.572027720143153, + "ns_high": 9.598015131659619, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "aws-lc-rs", "id": "quic-header-protection/chacha20/aws-lc-rs", - "ns": 81.44493923978372, - "ns_low": 81.32223210372005, - "ns_high": 81.58077143959962, + "ns": 81.56651536425535, + "ns_low": 81.45580339462067, + "ns_high": 81.67964490708353, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "rind", "id": "quic-header-protection/chacha20/rind", - "ns": 60.742049351726564, - "ns_low": 60.72526325873483, - "ns_high": 60.7590680089097, + "ns": 60.882555909094684, + "ns_low": 60.85696537823223, + "ns_high": 60.91205282521635, "throughput": null }, { "operation": "quic-header-protection/chacha20/{lib}", "library": "ring", "id": "quic-header-protection/chacha20/ring", - "ns": 74.9936268498833, - "ns_low": 74.71531005762192, - "ns_high": 75.26323737323568, + "ns": 74.1403129677756, + "ns_low": 74.03430848079694, + "ns_high": 74.25141862989868, "throughput": null }, { "operation": "x25519-ecdh/{lib}", "library": "aws-lc-rs", "id": "x25519-ecdh/aws-lc-rs", - "ns": 25243.452601472833, - "ns_low": 25197.134327060485, - "ns_high": 25283.625667641325, + "ns": 24608.351602630413, + "ns_low": 24526.208677017537, + "ns_high": 24706.411533379858, "throughput": { "Elements": 1 } @@ -2010,9 +2014,9 @@ "operation": "x25519-ecdh/{lib}", "library": "graviola", "id": "x25519-ecdh/graviola", - "ns": 24646.979917127235, - "ns_low": 24616.233240158952, - "ns_high": 24674.93380758154, + "ns": 23944.31350317718, + "ns_low": 23901.300931571866, + "ns_high": 24005.689561711984, "throughput": { "Elements": 1 } @@ -2021,9 +2025,9 @@ "operation": "x25519-ecdh/{lib}", "library": "libcrux", "id": "x25519-ecdh/libcrux", - "ns": 64510.07274715531, - "ns_low": 64402.86246810676, - "ns_high": 64608.67694467022, + "ns": 64595.76350879267, + "ns_low": 64424.13764227248, + "ns_high": 64791.8464855367, "throughput": { "Elements": 1 } @@ -2032,9 +2036,9 @@ "operation": "x25519-ecdh/{lib}", "library": "openssl", "id": "x25519-ecdh/openssl", - "ns": 49461.982575488895, - "ns_low": 49364.503435782426, - "ns_high": 49563.25724070637, + "ns": 49702.71299788188, + "ns_low": 49568.647461898174, + "ns_high": 49868.541508398404, "throughput": { "Elements": 1 } @@ -2043,9 +2047,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rind", "id": "x25519-ecdh/rind", - "ns": 24802.447114181567, - "ns_low": 24753.90577276468, - "ns_high": 24848.042792826123, + "ns": 23974.12950589626, + "ns_low": 23929.888677498875, + "ns_high": 24021.59875917512, "throughput": { "Elements": 1 } @@ -2054,9 +2058,9 @@ "operation": "x25519-ecdh/{lib}", "library": "ring", "id": "x25519-ecdh/ring", - "ns": 47395.295372111264, - "ns_low": 47279.308249487374, - "ns_high": 47496.05597607361, + "ns": 46724.662013163426, + "ns_low": 46614.60134108783, + "ns_high": 46870.300235020986, "throughput": { "Elements": 1 } @@ -2065,9 +2069,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rustcrypto", "id": "x25519-ecdh/dalek", - "ns": 53785.52602899096, - "ns_low": 53747.03143972734, - "ns_high": 53828.213782038816, + "ns": 52089.19438870007, + "ns_low": 52025.71155270091, + "ns_high": 52164.97595276795, "throughput": { "Elements": 1 } @@ -2076,9 +2080,9 @@ "operation": "p256-ecdh/{lib}", "library": "aws-lc-rs", "id": "p256-ecdh/aws-lc-rs", - "ns": 41118.19417191271, - "ns_low": 41082.13303230383, - "ns_high": 41162.62956121807, + "ns": 42597.45412221073, + "ns_low": 42265.13879841909, + "ns_high": 42926.30572349827, "throughput": { "Elements": 1 } @@ -2087,9 +2091,9 @@ "operation": "p256-ecdh/{lib}", "library": "graviola", "id": "p256-ecdh/graviola", - "ns": 41908.1576375548, - "ns_low": 41887.71232247754, - "ns_high": 41930.38325911797, + "ns": 47865.2822673381, + "ns_low": 47058.04529323143, + "ns_high": 48819.978408417104, "throughput": { "Elements": 1 } @@ -2098,9 +2102,9 @@ "operation": "p256-ecdh/{lib}", "library": "libcrux", "id": "p256-ecdh/libcrux", - "ns": 246508.7382867839, - "ns_low": 246259.16555598908, - "ns_high": 246804.0616142809, + "ns": 268702.67360918183, + "ns_low": 266513.5774825392, + "ns_high": 271631.09465903806, "throughput": { "Elements": 1 } @@ -2109,9 +2113,9 @@ "operation": "p256-ecdh/{lib}", "library": "openssl", "id": "p256-ecdh/openssl", - "ns": 68117.36043708849, - "ns_low": 68063.68968268366, - "ns_high": 68183.16849009725, + "ns": 71251.71736774051, + "ns_low": 71105.74217737162, + "ns_high": 71393.2221871965, "throughput": { "Elements": 1 } @@ -2120,9 +2124,9 @@ "operation": "p256-ecdh/{lib}", "library": "rind", "id": "p256-ecdh/rind", - "ns": 39184.80271482932, - "ns_low": 39138.23690096431, - "ns_high": 39236.76254830958, + "ns": 42818.72608583673, + "ns_low": 42418.21048780532, + "ns_high": 43294.80542780127, "throughput": { "Elements": 1 } @@ -2131,9 +2135,9 @@ "operation": "p256-ecdh/{lib}", "library": "ring", "id": "p256-ecdh/ring", - "ns": 41787.932865967196, - "ns_low": 41768.03950713571, - "ns_high": 41809.10939999727, + "ns": 46046.87106932967, + "ns_low": 45682.279122731656, + "ns_high": 46453.76721241622, "throughput": { "Elements": 1 } @@ -2142,9 +2146,9 @@ "operation": "p256-ecdh/{lib}", "library": "rustcrypto", "id": "p256-ecdh/p256-rustcrypto", - "ns": 256634.69676567658, - "ns_low": 256385.00556859263, - "ns_high": 256930.56442229825, + "ns": 268619.79256489826, + "ns_low": 267623.34446787863, + "ns_high": 269482.91747349006, "throughput": { "Elements": 1 } @@ -2153,9 +2157,9 @@ "operation": "ed25519-sign/{lib}", "library": "aws-lc-rs", "id": "ed25519-sign/aws-lc-rs", - "ns": 6095.286785601192, - "ns_low": 6089.126446888733, - "ns_high": 6101.768798090856, + "ns": 6130.472676494272, + "ns_low": 6123.82902944358, + "ns_high": 6137.947333183353, "throughput": { "Elements": 1 } @@ -2164,9 +2168,9 @@ "operation": "ed25519-sign/{lib}", "library": "graviola", "id": "ed25519-sign/graviola", - "ns": 5789.817310046901, - "ns_low": 5787.074327443, - "ns_high": 5792.883435691732, + "ns": 5827.021430355503, + "ns_low": 5822.52761876762, + "ns_high": 5831.62320484665, "throughput": { "Elements": 1 } @@ -2175,9 +2179,9 @@ "operation": "ed25519-sign/{lib}", "library": "libcrux", "id": "ed25519-sign/libcrux", - "ns": 40329.834004827346, - "ns_low": 40300.31289328881, - "ns_high": 40360.62436359813, + "ns": 41369.354314959855, + "ns_low": 41322.79208739921, + "ns_high": 41411.53988810318, "throughput": { "Elements": 1 } @@ -2186,9 +2190,9 @@ "operation": "ed25519-sign/{lib}", "library": "openssl", "id": "ed25519-sign/openssl", - "ns": 23395.4572276091, - "ns_low": 23376.895292945293, - "ns_high": 23416.642175585635, + "ns": 23382.890414454763, + "ns_low": 23365.54439970594, + "ns_high": 23401.43219835306, "throughput": { "Elements": 1 } @@ -2197,9 +2201,9 @@ "operation": "ed25519-sign/{lib}", "library": "rind", "id": "ed25519-sign/rind", - "ns": 5794.051333728359, - "ns_low": 5790.542270356081, - "ns_high": 5798.146922096689, + "ns": 5716.140016097538, + "ns_low": 5709.896842909953, + "ns_high": 5723.390291920087, "throughput": { "Elements": 1 } @@ -2208,9 +2212,9 @@ "operation": "ed25519-sign/{lib}", "library": "ring", "id": "ed25519-sign/ring", - "ns": 17257.061087208935, - "ns_low": 17243.90449045697, - "ns_high": 17270.852454312186, + "ns": 17232.684260507926, + "ns_low": 17213.749020190025, + "ns_high": 17252.86364434288, "throughput": { "Elements": 1 } @@ -2219,9 +2223,9 @@ "operation": "ed25519-sign/{lib}", "library": "rustcrypto", "id": "ed25519-sign/dalek", - "ns": 13361.544368848825, - "ns_low": 13342.865154041869, - "ns_high": 13388.990058464073, + "ns": 13297.38926696401, + "ns_low": 13290.657646814852, + "ns_high": 13304.283035917073, "throughput": { "Elements": 1 } @@ -2230,9 +2234,9 @@ "operation": "ed25519-verify/{lib}", "library": "aws-lc-rs", "id": "ed25519-verify/aws-lc-rs", - "ns": 27247.825504789285, - "ns_low": 27227.427141809916, - "ns_high": 27270.291982446215, + "ns": 27028.973508738934, + "ns_low": 26985.275973206113, + "ns_high": 27084.619606812157, "throughput": { "Elements": 1 } @@ -2241,9 +2245,9 @@ "operation": "ed25519-verify/{lib}", "library": "graviola", "id": "ed25519-verify/graviola", - "ns": 27136.23787041391, - "ns_low": 27101.205499235508, - "ns_high": 27177.914067679405, + "ns": 27077.867441460563, + "ns_low": 27064.174151843967, + "ns_high": 27092.863062844866, "throughput": { "Elements": 1 } @@ -2252,9 +2256,9 @@ "operation": "ed25519-verify/{lib}", "library": "libcrux", "id": "ed25519-verify/libcrux", - "ns": 54645.241723560415, - "ns_low": 54434.15473723502, - "ns_high": 54879.36227702322, + "ns": 54515.02347889267, + "ns_low": 54251.78358860105, + "ns_high": 54798.37929423742, "throughput": { "Elements": 1 } @@ -2263,9 +2267,9 @@ "operation": "ed25519-verify/{lib}", "library": "openssl", "id": "ed25519-verify/openssl", - "ns": 79440.34470998966, - "ns_low": 79366.67069427052, - "ns_high": 79531.83645926497, + "ns": 79252.95914548544, + "ns_low": 79185.67865024248, + "ns_high": 79345.46330314437, "throughput": { "Elements": 1 } @@ -2274,9 +2278,9 @@ "operation": "ed25519-verify/{lib}", "library": "rind", "id": "ed25519-verify/rind", - "ns": 27177.23870333302, - "ns_low": 27157.792516193836, - "ns_high": 27198.468648655446, + "ns": 27149.61003347447, + "ns_low": 27112.64942825447, + "ns_high": 27189.998616645982, "throughput": { "Elements": 1 } @@ -2285,9 +2289,9 @@ "operation": "ed25519-verify/{lib}", "library": "ring", "id": "ed25519-verify/ring", - "ns": 34904.46149862221, - "ns_low": 34882.54271877396, - "ns_high": 34929.40352644452, + "ns": 34762.58573879776, + "ns_low": 34705.28625229627, + "ns_high": 34817.47357000802, "throughput": { "Elements": 1 } @@ -2296,9 +2300,9 @@ "operation": "ed25519-verify/{lib}", "library": "rustcrypto", "id": "ed25519-verify/dalek", - "ns": 24966.271925644058, - "ns_low": 24948.758202080644, - "ns_high": 24985.370621123762, + "ns": 24826.13810232008, + "ns_low": 24790.65942853511, + "ns_high": 24868.58129157406, "throughput": { "Elements": 1 } @@ -2307,9 +2311,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-sign/aws-lc-rs", - "ns": 11956.889847554308, - "ns_low": 11950.69692624334, - "ns_high": 11963.216221573577, + "ns": 12658.112948192207, + "ns_low": 12600.896779048453, + "ns_high": 12732.946704571266, "throughput": { "Elements": 1 } @@ -2318,9 +2322,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "graviola", "id": "p256-ecdsa-sign/graviola", - "ns": 10476.852601816348, - "ns_low": 10461.923063093034, - "ns_high": 10495.142929936772, + "ns": 11491.743408566459, + "ns_low": 11407.890841905897, + "ns_high": 11588.247582546272, "throughput": { "Elements": 1 } @@ -2329,9 +2333,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "libcrux", "id": "p256-ecdsa-sign/libcrux", - "ns": 87535.60242901476, - "ns_low": 87504.58358918788, - "ns_high": 87568.77435334638, + "ns": 95473.90496358377, + "ns_low": 94755.90701100195, + "ns_high": 96309.0122744502, "throughput": { "Elements": 1 } @@ -2340,9 +2344,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "openssl", "id": "p256-ecdsa-sign/openssl", - "ns": 16420.320415660968, - "ns_low": 16409.587184093067, - "ns_high": 16434.32318293469, + "ns": 18039.115113303404, + "ns_low": 17928.714623977063, + "ns_high": 18167.552733763874, "throughput": { "Elements": 1 } @@ -2351,9 +2355,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rind", "id": "p256-ecdsa-sign/rind", - "ns": 8982.538536312086, - "ns_low": 8973.546878160914, - "ns_high": 8994.484745726499, + "ns": 9619.94515641163, + "ns_low": 9515.395278540158, + "ns_high": 9738.806473615026, "throughput": { "Elements": 1 } @@ -2362,9 +2366,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "ring", "id": "p256-ecdsa-sign/ring", - "ns": 12755.527432125238, - "ns_low": 12747.509224860296, - "ns_high": 12766.04066782497, + "ns": 13677.508216276852, + "ns_low": 13601.537038617429, + "ns_high": 13778.312100502135, "throughput": { "Elements": 1 } @@ -2373,9 +2377,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-sign/rustcrypto", - "ns": 64843.69918959657, - "ns_low": 64774.33550258049, - "ns_high": 64933.76966236119, + "ns": 70619.46936801143, + "ns_low": 69890.34561108035, + "ns_high": 71345.32084479937, "throughput": { "Elements": 1 } @@ -2384,9 +2388,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-verify/aws-lc-rs", - "ns": 38714.36590946259, - "ns_low": 38686.004793005966, - "ns_high": 38741.67500496689, + "ns": 40241.05937461209, + "ns_low": 40034.30928391032, + "ns_high": 40482.15330385449, "throughput": { "Elements": 1 } @@ -2395,9 +2399,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "graviola", "id": "p256-ecdsa-verify/graviola", - "ns": 40385.78504290429, - "ns_low": 40347.33055461291, - "ns_high": 40430.03151038585, + "ns": 41915.14557194227, + "ns_low": 41780.440508053456, + "ns_high": 42064.33816602122, "throughput": { "Elements": 1 } @@ -2406,9 +2410,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "libcrux", "id": "p256-ecdsa-verify/libcrux", - "ns": 208084.3133678144, - "ns_low": 207886.2336635362, - "ns_high": 208315.93109234932, + "ns": 215833.27364464806, + "ns_low": 215517.14327384357, + "ns_high": 216176.8599180544, "throughput": { "Elements": 1 } @@ -2417,9 +2421,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "openssl", "id": "p256-ecdsa-verify/openssl", - "ns": 57014.20520117683, - "ns_low": 56964.26853378079, - "ns_high": 57067.735781211624, + "ns": 60270.42059642382, + "ns_low": 59740.30107804659, + "ns_high": 60933.51700524972, "throughput": { "Elements": 1 } @@ -2428,9 +2432,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rind", "id": "p256-ecdsa-verify/rind", - "ns": 38233.96282030442, - "ns_low": 38208.775654800695, - "ns_high": 38262.136550276475, + "ns": 39246.646351595984, + "ns_low": 39152.61033655174, + "ns_high": 39328.85090707061, "throughput": { "Elements": 1 } @@ -2439,9 +2443,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "ring", "id": "p256-ecdsa-verify/ring", - "ns": 39158.36061751884, - "ns_low": 39126.12855034059, - "ns_high": 39188.181950733575, + "ns": 41245.17664801874, + "ns_low": 41113.98708455855, + "ns_high": 41385.135094720084, "throughput": { "Elements": 1 } @@ -2450,9 +2454,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-verify/rustcrypto", - "ns": 217964.39964238214, - "ns_low": 217766.2050711954, - "ns_high": 218181.2395186819, + "ns": 226271.69612531402, + "ns_low": 225188.24124433807, + "ns_high": 227338.55425482587, "throughput": { "Elements": 1 } @@ -2461,9 +2465,9 @@ "operation": "sha256/{lib}/64B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/64B", - "ns": 101.22052111590024, - "ns_low": 100.73170691138895, - "ns_high": 101.78641321028108, + "ns": 95.80266534397508, + "ns_low": 94.75727348890588, + "ns_high": 96.97999684906665, "throughput": { "Bytes": 64 } @@ -2472,9 +2476,9 @@ "operation": "sha256/{lib}/64B", "library": "graviola", "id": "sha256/graviola/64B", - "ns": 67.43652034149052, - "ns_low": 67.12473183519435, - "ns_high": 67.76044859287629, + "ns": 67.28931677696838, + "ns_low": 67.17106770567406, + "ns_high": 67.42925812626063, "throughput": { "Bytes": 64 } @@ -2483,9 +2487,9 @@ "operation": "sha256/{lib}/64B", "library": "libcrux", "id": "sha256/libcrux/64B", - "ns": 355.42705367937674, - "ns_low": 354.29048014702255, - "ns_high": 356.5886220554137, + "ns": 384.776632123995, + "ns_low": 376.7878225875393, + "ns_high": 395.0712610023074, "throughput": { "Bytes": 64 } @@ -2494,9 +2498,9 @@ "operation": "sha256/{lib}/64B", "library": "openssl", "id": "sha256/openssl/64B", - "ns": 242.58336143078364, - "ns_low": 241.35347575351102, - "ns_high": 243.71512369184865, + "ns": 243.6488777481512, + "ns_low": 242.33137063996537, + "ns_high": 245.47477361571757, "throughput": { "Bytes": 64 } @@ -2505,9 +2509,9 @@ "operation": "sha256/{lib}/64B", "library": "rind", "id": "sha256/rind/64B", - "ns": 79.78246016842783, - "ns_low": 79.4661857310824, - "ns_high": 80.09910255915833, + "ns": 68.73634309272218, + "ns_low": 67.29677454376173, + "ns_high": 70.37607674711357, "throughput": { "Bytes": 64 } @@ -2516,9 +2520,9 @@ "operation": "sha256/{lib}/64B", "library": "ring", "id": "sha256/ring/64B", - "ns": 85.53191626143139, - "ns_low": 84.55092566809623, - "ns_high": 86.72010420417269, + "ns": 78.4540520093066, + "ns_low": 78.2295816929448, + "ns_high": 78.69805801542304, "throughput": { "Bytes": 64 } @@ -2527,9 +2531,9 @@ "operation": "sha256/{lib}/64B", "library": "rustcrypto", "id": "sha256/rustcrypto/64B", - "ns": 57.72657976609113, - "ns_low": 57.255006842510944, - "ns_high": 58.22798945433202, + "ns": 58.69692797784799, + "ns_low": 58.31339380171, + "ns_high": 59.10839333807658, "throughput": { "Bytes": 64 } @@ -2538,9 +2542,9 @@ "operation": "sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/1350B", - "ns": 669.385793851694, - "ns_low": 666.9475558214212, - "ns_high": 671.9417830179553, + "ns": 739.8342337054496, + "ns_low": 727.0758498331485, + "ns_high": 755.057163828626, "throughput": { "Bytes": 1350 } @@ -2549,9 +2553,9 @@ "operation": "sha256/{lib}/1350B", "library": "graviola", "id": "sha256/graviola/1350B", - "ns": 642.1392273486599, - "ns_low": 638.0373091013724, - "ns_high": 646.5138597941858, + "ns": 637.447747052195, + "ns_low": 631.4423618327992, + "ns_high": 645.2873856498811, "throughput": { "Bytes": 1350 } @@ -2560,9 +2564,9 @@ "operation": "sha256/{lib}/1350B", "library": "libcrux", "id": "sha256/libcrux/1350B", - "ns": 3772.128957736072, - "ns_low": 3743.3623855837704, - "ns_high": 3806.0434207542535, + "ns": 3706.8778584847073, + "ns_low": 3692.745023470573, + "ns_high": 3721.0727408519374, "throughput": { "Bytes": 1350 } @@ -2571,9 +2575,9 @@ "operation": "sha256/{lib}/1350B", "library": "openssl", "id": "sha256/openssl/1350B", - "ns": 826.8052504214859, - "ns_low": 821.1817096920187, - "ns_high": 832.7296942850703, + "ns": 814.5205447900548, + "ns_low": 808.2025651816351, + "ns_high": 821.3296201498781, "throughput": { "Bytes": 1350 } @@ -2582,9 +2586,9 @@ "operation": "sha256/{lib}/1350B", "library": "rind", "id": "sha256/rind/1350B", - "ns": 652.8019221313294, - "ns_low": 651.5484257453331, - "ns_high": 654.2166469697182, + "ns": 619.6597566540065, + "ns_low": 617.9125433486739, + "ns_high": 621.4105485565104, "throughput": { "Bytes": 1350 } @@ -2593,9 +2597,9 @@ "operation": "sha256/{lib}/1350B", "library": "ring", "id": "sha256/ring/1350B", - "ns": 661.8780402839595, - "ns_low": 660.5599694823413, - "ns_high": 663.3193648800706, + "ns": 636.9084932117208, + "ns_low": 635.432744891089, + "ns_high": 638.3772435518614, "throughput": { "Bytes": 1350 } @@ -2604,9 +2608,9 @@ "operation": "sha256/{lib}/1350B", "library": "rustcrypto", "id": "sha256/rustcrypto/1350B", - "ns": 631.4408369734534, - "ns_low": 630.3125237030388, - "ns_high": 632.5509070091617, + "ns": 618.3011508283098, + "ns_low": 617.334519173836, + "ns_high": 619.2616701283425, "throughput": { "Bytes": 1350 } @@ -2615,9 +2619,9 @@ "operation": "sha256/{lib}/16KB", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/16KB", - "ns": 7378.56198089129, - "ns_low": 7347.152804915248, - "ns_high": 7421.503321778814, + "ns": 6880.156307181569, + "ns_low": 6869.000612213406, + "ns_high": 6891.695406238529, "throughput": { "Bytes": 16384 } @@ -2626,9 +2630,9 @@ "operation": "sha256/{lib}/16KB", "library": "graviola", "id": "sha256/graviola/16KB", - "ns": 7307.864366904592, - "ns_low": 7300.680708462637, - "ns_high": 7314.396083679313, + "ns": 7075.146686288997, + "ns_low": 7058.727502284587, + "ns_high": 7091.866129183441, "throughput": { "Bytes": 16384 } @@ -2637,9 +2641,9 @@ "operation": "sha256/{lib}/16KB", "library": "libcrux", "id": "sha256/libcrux/16KB", - "ns": 45188.749562160905, - "ns_low": 44955.905695599206, - "ns_high": 45452.08180927248, + "ns": 43122.66314509489, + "ns_low": 43007.10004882546, + "ns_high": 43226.63526147208, "throughput": { "Bytes": 16384 } @@ -2648,9 +2652,9 @@ "operation": "sha256/{lib}/16KB", "library": "openssl", "id": "sha256/openssl/16KB", - "ns": 7523.285166788612, - "ns_low": 7503.46033849387, - "ns_high": 7545.216412057581, + "ns": 7368.629926508486, + "ns_low": 7363.300130812598, + "ns_high": 7373.392005680642, "throughput": { "Bytes": 16384 } @@ -2659,9 +2663,9 @@ "operation": "sha256/{lib}/16KB", "library": "rind", "id": "sha256/rind/16KB", - "ns": 7242.4042347850045, - "ns_low": 7184.763928302432, - "ns_high": 7300.683906005713, + "ns": 6863.9723409473145, + "ns_low": 6838.742387956636, + "ns_high": 6893.666179301336, "throughput": { "Bytes": 16384 } @@ -2670,9 +2674,9 @@ "operation": "sha256/{lib}/16KB", "library": "ring", "id": "sha256/ring/16KB", - "ns": 7395.085635007945, - "ns_low": 7353.281006338335, - "ns_high": 7449.78613003426, + "ns": 6966.206626165104, + "ns_low": 6934.457477984635, + "ns_high": 7004.8961239, "throughput": { "Bytes": 16384 } @@ -2681,9 +2685,9 @@ "operation": "sha256/{lib}/16KB", "library": "rustcrypto", "id": "sha256/rustcrypto/16KB", - "ns": 7319.327713220903, - "ns_low": 7306.007343500683, - "ns_high": 7336.394372621743, + "ns": 7223.539010750277, + "ns_low": 7126.535520628717, + "ns_high": 7319.231707322414, "throughput": { "Bytes": 16384 } @@ -2692,9 +2696,9 @@ "operation": "sha512/{lib}/64B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/64B", - "ns": 232.68028957942255, - "ns_low": 230.9646986198259, - "ns_high": 234.8226531846668, + "ns": 223.80979537486922, + "ns_low": 221.850849270092, + "ns_high": 226.2600358102257, "throughput": { "Bytes": 64 } @@ -2703,9 +2707,9 @@ "operation": "sha512/{lib}/64B", "library": "graviola", "id": "sha512/graviola/64B", - "ns": 184.8131072442032, - "ns_low": 184.08497155067565, - "ns_high": 185.5735545064779, + "ns": 206.12552509449702, + "ns_low": 201.21053404236645, + "ns_high": 211.23701739500527, "throughput": { "Bytes": 64 } @@ -2714,9 +2718,9 @@ "operation": "sha512/{lib}/64B", "library": "libcrux", "id": "sha512/libcrux/64B", - "ns": 268.22537784083147, - "ns_low": 261.66116394844084, - "ns_high": 274.8904063271115, + "ns": 246.23189746083193, + "ns_low": 245.3504834796201, + "ns_high": 247.14817414442825, "throughput": { "Bytes": 64 } @@ -2725,9 +2729,9 @@ "operation": "sha512/{lib}/64B", "library": "openssl", "id": "sha512/openssl/64B", - "ns": 390.43321624971685, - "ns_low": 378.6246132727577, - "ns_high": 403.3505382605498, + "ns": 354.95453149922724, + "ns_low": 346.7730739369924, + "ns_high": 365.3374129802346, "throughput": { "Bytes": 64 } @@ -2736,9 +2740,9 @@ "operation": "sha512/{lib}/64B", "library": "rind", "id": "sha512/rind/64B", - "ns": 194.9383763456448, - "ns_low": 194.08411386006222, - "ns_high": 195.92829458292874, + "ns": 138.13699295366257, + "ns_low": 137.92671680582086, + "ns_high": 138.37087670657004, "throughput": { "Bytes": 64 } @@ -2747,9 +2751,9 @@ "operation": "sha512/{lib}/64B", "library": "ring", "id": "sha512/ring/64B", - "ns": 201.98890692288148, - "ns_low": 199.44893999509057, - "ns_high": 204.7311458384076, + "ns": 197.65406359745845, + "ns_low": 197.44822607446912, + "ns_high": 197.86487955961363, "throughput": { "Bytes": 64 } @@ -2758,9 +2762,9 @@ "operation": "sha512/{lib}/64B", "library": "rustcrypto", "id": "sha512/rustcrypto/64B", - "ns": 203.3558057010821, - "ns_low": 201.84001104452926, - "ns_high": 205.124791089849, + "ns": 192.25184954840924, + "ns_low": 190.96822862382803, + "ns_high": 193.73928640552106, "throughput": { "Bytes": 64 } @@ -2769,9 +2773,9 @@ "operation": "sha512/{lib}/1350B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/1350B", - "ns": 2310.1507394840655, - "ns_low": 2232.2733455957436, - "ns_high": 2391.392759020209, + "ns": 1899.6373205428117, + "ns_low": 1891.9468980842626, + "ns_high": 1907.7633921366084, "throughput": { "Bytes": 1350 } @@ -2780,9 +2784,9 @@ "operation": "sha512/{lib}/1350B", "library": "graviola", "id": "sha512/graviola/1350B", - "ns": 1956.9198264972272, - "ns_low": 1941.4719611441278, - "ns_high": 1976.2550495467297, + "ns": 1983.8832375521833, + "ns_low": 1958.2112935847597, + "ns_high": 2013.2923909886645, "throughput": { "Bytes": 1350 } @@ -2791,9 +2795,9 @@ "operation": "sha512/{lib}/1350B", "library": "libcrux", "id": "sha512/libcrux/1350B", - "ns": 2802.589335753786, - "ns_low": 2767.886185927543, - "ns_high": 2841.6057769586428, + "ns": 2942.7170711908766, + "ns_low": 2894.7439559730115, + "ns_high": 2996.3708617928437, "throughput": { "Bytes": 1350 } @@ -2802,9 +2806,9 @@ "operation": "sha512/{lib}/1350B", "library": "openssl", "id": "sha512/openssl/1350B", - "ns": 1504.8664415228234, - "ns_low": 1503.8765757575352, - "ns_high": 1505.9601715056651, + "ns": 1758.556852199972, + "ns_low": 1709.3930857873959, + "ns_high": 1815.1913361095878, "throughput": { "Bytes": 1350 } @@ -2813,9 +2817,9 @@ "operation": "sha512/{lib}/1350B", "library": "rind", "id": "sha512/rind/1350B", - "ns": 2753.4190510487074, - "ns_low": 2575.6973632277723, - "ns_high": 2945.3394016564707, + "ns": 1773.053884602435, + "ns_low": 1692.6746654469382, + "ns_high": 1849.2682717121647, "throughput": { "Bytes": 1350 } @@ -2824,9 +2828,9 @@ "operation": "sha512/{lib}/1350B", "library": "ring", "id": "sha512/ring/1350B", - "ns": 1972.6181900768436, - "ns_low": 1908.475738677669, - "ns_high": 2047.71678426269, + "ns": 1868.8132229288826, + "ns_low": 1867.1041344321463, + "ns_high": 1870.5991809880263, "throughput": { "Bytes": 1350 } @@ -2835,9 +2839,9 @@ "operation": "sha512/{lib}/1350B", "library": "rustcrypto", "id": "sha512/rustcrypto/1350B", - "ns": 2659.114067222988, - "ns_low": 2488.5975056924385, - "ns_high": 2838.8970952741083, + "ns": 1916.513011544336, + "ns_low": 1909.5620822184571, + "ns_high": 1925.7690900949324, "throughput": { "Bytes": 1350 } @@ -2846,9 +2850,9 @@ "operation": "sha512/{lib}/16KB", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/16KB", - "ns": 20449.777575390373, - "ns_low": 20421.77052971144, - "ns_high": 20479.441744545402, + "ns": 25170.169524338704, + "ns_low": 24443.378551124068, + "ns_high": 26006.34567866313, "throughput": { "Bytes": 16384 } @@ -2857,9 +2861,9 @@ "operation": "sha512/{lib}/16KB", "library": "graviola", "id": "sha512/graviola/16KB", - "ns": 21556.386918972905, - "ns_low": 21100.58610397692, - "ns_high": 22119.577742171303, + "ns": 21044.524431590282, + "ns_low": 20996.099881239177, + "ns_high": 21108.568633698822, "throughput": { "Bytes": 16384 } @@ -2868,9 +2872,9 @@ "operation": "sha512/{lib}/16KB", "library": "libcrux", "id": "sha512/libcrux/16KB", - "ns": 29017.24029583342, - "ns_low": 28955.648402934494, - "ns_high": 29076.348941069085, + "ns": 29753.72914085865, + "ns_low": 29699.147877619765, + "ns_high": 29816.484645550612, "throughput": { "Bytes": 16384 } @@ -2879,9 +2883,9 @@ "operation": "sha512/{lib}/16KB", "library": "openssl", "id": "sha512/openssl/16KB", - "ns": 14830.86452165639, - "ns_low": 14806.167045323224, - "ns_high": 14856.094867582777, + "ns": 15144.828017289788, + "ns_low": 15103.589388758985, + "ns_high": 15189.187662889863, "throughput": { "Bytes": 16384 } @@ -2890,9 +2894,9 @@ "operation": "sha512/{lib}/16KB", "library": "rind", "id": "sha512/rind/16KB", - "ns": 20372.679909561106, - "ns_low": 20337.026425318676, - "ns_high": 20408.957885697764, + "ns": 16275.769232284882, + "ns_low": 15797.882618867725, + "ns_high": 16844.89055167826, "throughput": { "Bytes": 16384 } @@ -2901,9 +2905,9 @@ "operation": "sha512/{lib}/16KB", "library": "ring", "id": "sha512/ring/16KB", - "ns": 20633.101433936496, - "ns_low": 20585.029291675994, - "ns_high": 20676.134914190596, + "ns": 25380.403789916305, + "ns_low": 24747.723033802686, + "ns_high": 26096.785502331648, "throughput": { "Bytes": 16384 } @@ -2912,9 +2916,9 @@ "operation": "sha512/{lib}/16KB", "library": "rustcrypto", "id": "sha512/rustcrypto/16KB", - "ns": 20776.742510968543, - "ns_low": 20762.507160042845, - "ns_high": 20792.455809125677, + "ns": 24121.036569587704, + "ns_low": 23676.22570411426, + "ns_high": 24655.951366956015, "throughput": { "Bytes": 16384 } @@ -2923,9 +2927,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/64B", - "ns": 263.12037698708195, - "ns_low": 261.66493179783237, - "ns_high": 264.6458030636669, + "ns": 264.44167424487074, + "ns_low": 262.76790922117925, + "ns_high": 266.0597877791334, "throughput": { "Bytes": 64 } @@ -2934,9 +2938,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "graviola", "id": "hmac-sha256/graviola/64B", - "ns": 169.68689655096316, - "ns_low": 169.526646946731, - "ns_high": 169.83348537645998, + "ns": 172.45110715801007, + "ns_low": 172.15656731146512, + "ns_high": 172.7395863684953, "throughput": { "Bytes": 64 } @@ -2945,9 +2949,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "libcrux", "id": "hmac-sha256/libcrux/64B", - "ns": 823.1966353727306, - "ns_low": 822.8566293283733, - "ns_high": 823.561440212194, + "ns": 851.117463309769, + "ns_low": 846.9461615467238, + "ns_high": 855.4283265801962, "throughput": { "Bytes": 64 } @@ -2956,9 +2960,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "openssl", "id": "hmac-sha256/openssl/64B", - "ns": 2492.012558663008, - "ns_low": 2490.5884922040946, - "ns_high": 2493.7642635559446, + "ns": 2573.506360453146, + "ns_low": 2565.9498470303233, + "ns_high": 2585.0116937696444, "throughput": { "Bytes": 64 } @@ -2967,9 +2971,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rind", "id": "hmac-sha256/rind/64B", - "ns": 153.40373043083358, - "ns_low": 153.34028494401218, - "ns_high": 153.48176864693914, + "ns": 147.08282542276436, + "ns_low": 146.4374635893961, + "ns_high": 147.87643287672452, "throughput": { "Bytes": 64 } @@ -2978,9 +2982,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "ring", "id": "hmac-sha256/ring/64B", - "ns": 213.94215871756415, - "ns_low": 213.72517536488246, - "ns_high": 214.1758859350212, + "ns": 213.84944184392623, + "ns_low": 213.64539609990297, + "ns_high": 214.06053929049605, "throughput": { "Bytes": 64 } @@ -2989,9 +2993,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/64B", - "ns": 155.37710837292013, - "ns_low": 155.19462255480494, - "ns_high": 155.56643423285465, + "ns": 155.37738405643572, + "ns_low": 155.22772526651133, + "ns_high": 155.51981386254528, "throughput": { "Bytes": 64 } @@ -3000,9 +3004,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/1350B", - "ns": 794.4081671767058, - "ns_low": 792.8738271935377, - "ns_high": 796.0232104400344, + "ns": 852.8591862622461, + "ns_low": 847.1124102103889, + "ns_high": 858.8058844191994, "throughput": { "Bytes": 1350 } @@ -3011,9 +3015,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "graviola", "id": "hmac-sha256/graviola/1350B", - "ns": 695.9403484394563, - "ns_low": 695.7744479352453, - "ns_high": 696.0909733384759, + "ns": 731.0746161431505, + "ns_low": 730.1018737080984, + "ns_high": 732.0955740323334, "throughput": { "Bytes": 1350 } @@ -3022,9 +3026,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "libcrux", "id": "hmac-sha256/libcrux/1350B", - "ns": 4051.2233374494676, - "ns_low": 4049.4284955000016, - "ns_high": 4053.496478721444, + "ns": 4388.70219473396, + "ns_low": 4353.779349516595, + "ns_high": 4428.3684993290335, "throughput": { "Bytes": 1350 } @@ -3033,9 +3037,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "openssl", "id": "hmac-sha256/openssl/1350B", - "ns": 3025.0886064876668, - "ns_low": 3023.677364904376, - "ns_high": 3026.8076947353316, + "ns": 3114.361936787851, + "ns_low": 3100.931367108208, + "ns_high": 3130.9691764010186, "throughput": { "Bytes": 1350 } @@ -3044,9 +3048,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rind", "id": "hmac-sha256/rind/1350B", - "ns": 678.1271431999832, - "ns_low": 677.9712777499577, - "ns_high": 678.3330852540371, + "ns": 692.1655758802217, + "ns_low": 688.5085820596512, + "ns_high": 696.7757878984683, "throughput": { "Bytes": 1350 } @@ -3055,9 +3059,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "ring", "id": "hmac-sha256/ring/1350B", - "ns": 749.4655217664329, - "ns_low": 748.9274238513578, - "ns_high": 750.1732261608418, + "ns": 791.3729510822232, + "ns_low": 790.0273677834679, + "ns_high": 792.972267267334, "throughput": { "Bytes": 1350 } @@ -3066,9 +3070,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/1350B", - "ns": 680.6457063124377, - "ns_low": 680.4601086199884, - "ns_high": 680.8388072700129, + "ns": 727.8485167892338, + "ns_low": 726.7733417371096, + "ns_high": 728.8637814793551, "throughput": { "Bytes": 1350 } @@ -3077,117 +3081,117 @@ "operation": "hkdf-sha256/extract-expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/extract-expand/aws-lc-rs", - "ns": 375.65778904599574, - "ns_low": 375.2135988991787, - "ns_high": 376.14412690654797, + "ns": 369.138751912449, + "ns_low": 368.46641576344973, + "ns_high": 369.8799183334264, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/extract-expand/libcrux", - "ns": 1373.759547395986, - "ns_low": 1372.2716491341253, - "ns_high": 1375.8045419737953, + "ns": 1372.3372268081312, + "ns_low": 1370.9373660284944, + "ns_high": 1374.1280237103642, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "openssl", "id": "hkdf-sha256/extract-expand/openssl", - "ns": 2770.659664473635, - "ns_low": 2766.9515346910584, - "ns_high": 2774.9000467989918, + "ns": 2715.201762164358, + "ns_low": 2708.937458937863, + "ns_high": 2722.6942875095965, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rind", "id": "hkdf-sha256/extract-expand/rind", - "ns": 303.7682589334729, - "ns_low": 302.3669560321624, - "ns_high": 305.06249022491926, + "ns": 256.77843103572246, + "ns_low": 256.2966524991822, + "ns_high": 257.36083653583097, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "ring", "id": "hkdf-sha256/extract-expand/ring", - "ns": 397.6602443044636, - "ns_low": 397.0931245138189, - "ns_high": 398.21386791341257, + "ns": 398.9136826274903, + "ns_low": 398.31200553465237, + "ns_high": 399.4847509246219, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/extract-expand/rustcrypto", - "ns": 310.180817626422, - "ns_low": 309.95949502578213, - "ns_high": 310.4872842797626, + "ns": 309.1569061425443, + "ns_low": 309.0409574854778, + "ns_high": 309.294962075683, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/expand/aws-lc-rs", - "ns": 177.9643411737386, - "ns_low": 177.78805372990124, - "ns_high": 178.14901636218983, + "ns": 178.58412059405498, + "ns_low": 178.32224963819183, + "ns_high": 178.84584908951211, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/expand/libcrux", - "ns": 706.4527627808623, - "ns_low": 706.0860868458298, - "ns_high": 706.8333443976558, + "ns": 713.5695952129832, + "ns_low": 713.2477582520163, + "ns_high": 713.9095918644254, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "openssl", "id": "hkdf-sha256/expand/openssl", - "ns": 1955.018054870914, - "ns_low": 1952.5088869558508, - "ns_high": 1957.6539657754527, + "ns": 2000.595353060599, + "ns_low": 1999.2505010713742, + "ns_high": 2002.1729457843517, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rind", "id": "hkdf-sha256/expand/rind", - "ns": 104.12777090679134, - "ns_low": 104.03375152807321, - "ns_high": 104.23079753800076, + "ns": 88.55041973077404, + "ns_low": 88.49112860104364, + "ns_high": 88.61932225006142, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "ring", "id": "hkdf-sha256/expand/ring", - "ns": 142.14424611948996, - "ns_low": 141.99556485013187, - "ns_high": 142.31072199034134, + "ns": 141.81110908086364, + "ns_low": 141.7110329467066, + "ns_high": 141.90297163406447, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/expand/rustcrypto", - "ns": 102.7423775980847, - "ns_low": 102.66272630114648, - "ns_high": 102.82302600300041, + "ns": 102.81758357792387, + "ns_low": 102.60717426005363, + "ns_high": 103.08307141263992, "throughput": null }, { "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-sign/aws-lc-rs", - "ns": 435900.5307374021, - "ns_low": 435678.6335874892, - "ns_high": 436147.0867740139, + "ns": 532393.8529599527, + "ns_low": 521505.5523508053, + "ns_high": 543040.8858116491, "throughput": { "Elements": 1 } @@ -3196,9 +3200,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-sign/graviola", - "ns": 411784.58081276785, - "ns_low": 411565.27552497404, - "ns_high": 412057.3337949379, + "ns": 474438.11301019654, + "ns_low": 464572.97732485365, + "ns_high": 486774.5260293723, "throughput": { "Elements": 1 } @@ -3207,9 +3211,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-sign/openssl", - "ns": 437301.9645559332, - "ns_low": 436916.627511685, - "ns_high": 437767.95565610414, + "ns": 520245.4402674745, + "ns_low": 505880.00350171264, + "ns_high": 538176.780824677, "throughput": { "Elements": 1 } @@ -3218,9 +3222,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-sign/rind", - "ns": 474437.48874981527, - "ns_low": 473991.66672184924, - "ns_high": 474945.26139976183, + "ns": 523170.16244864784, + "ns_low": 514858.6804415726, + "ns_high": 530866.983213772, "throughput": { "Elements": 1 } @@ -3229,9 +3233,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-sign/ring", - "ns": 423026.8677006059, - "ns_low": 422707.2181271696, - "ns_high": 423351.26474074274, + "ns": 523115.8678454263, + "ns_low": 515977.94340680924, + "ns_high": 530425.9495043199, "throughput": { "Elements": 1 } @@ -3240,9 +3244,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-sign/rustcrypto", - "ns": 987285.0754691887, - "ns_low": 986080.3578084775, - "ns_high": 988921.6284619219, + "ns": 1261022.3800000004, + "ns_low": 1225112.745, + "ns_high": 1297737.7458333329, "throughput": { "Elements": 1 } @@ -3251,9 +3255,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-verify/aws-lc-rs", - "ns": 13646.304819243118, - "ns_low": 13640.711108217256, - "ns_high": 13652.533365294108, + "ns": 14595.468250570844, + "ns_low": 14542.228923864915, + "ns_high": 14660.87888026509, "throughput": { "Elements": 1 } @@ -3262,9 +3266,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-verify/graviola", - "ns": 24699.964788532583, - "ns_low": 23628.793040824272, - "ns_high": 25880.73748701918, + "ns": 19246.963751046747, + "ns_low": 19159.288693400733, + "ns_high": 19347.129539021775, "throughput": { "Elements": 1 } @@ -3273,9 +3277,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-verify/openssl", - "ns": 22215.419597139968, - "ns_low": 22084.061314711795, - "ns_high": 22381.733046764384, + "ns": 23585.407318434485, + "ns_low": 23396.82445597343, + "ns_high": 23776.94430060786, "throughput": { "Elements": 1 } @@ -3284,9 +3288,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-verify/rind", - "ns": 14790.448758103585, - "ns_low": 14247.985919536755, - "ns_high": 15310.818291861433, + "ns": 12279.611106776349, + "ns_low": 12172.616365923906, + "ns_high": 12405.300648856748, "throughput": { "Elements": 1 } @@ -3295,9 +3299,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-verify/ring", - "ns": 15378.321228131997, - "ns_low": 15362.102078831782, - "ns_high": 15397.356046044328, + "ns": 16560.009867083725, + "ns_low": 16455.095207986076, + "ns_high": 16677.19077349646, "throughput": { "Elements": 1 } @@ -3306,9 +3310,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-verify/rustcrypto", - "ns": 50573.111680212794, - "ns_low": 50487.44652245795, - "ns_high": 50680.850999194656, + "ns": 54057.849893108716, + "ns_low": 53711.20136206612, + "ns_high": 54421.21691300388, "throughput": { "Elements": 1 } @@ -3317,9 +3321,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-sign/aws-lc-rs", - "ns": 436706.3259272942, - "ns_low": 436424.26382783137, - "ns_high": 437021.5045973558, + "ns": 481001.3493039752, + "ns_low": 477392.2325608944, + "ns_high": 484564.2124072085, "throughput": { "Elements": 1 } @@ -3328,9 +3332,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-sign/graviola", - "ns": 413561.0655681986, - "ns_low": 413162.6168743423, - "ns_high": 414022.30770499026, + "ns": 448543.1399748781, + "ns_low": 444327.080711404, + "ns_high": 454381.01476273645, "throughput": { "Elements": 1 } @@ -3339,9 +3343,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-sign/libcrux", - "ns": 4793866.322857144, - "ns_low": 4790294.46292857, - "ns_high": 4797747.20457143, + "ns": 5861217.236666666, + "ns_low": 5727829.116666665, + "ns_high": 6001067.393333334, "throughput": { "Elements": 1 } @@ -3350,9 +3354,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-sign/openssl", - "ns": 439054.4888443919, - "ns_low": 438833.7941173694, - "ns_high": 439292.54878358694, + "ns": 474990.5308940446, + "ns_low": 473256.15385384165, + "ns_high": 476822.4982182026, "throughput": { "Elements": 1 } @@ -3361,9 +3365,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-sign/rind", - "ns": 475365.32174671197, - "ns_low": 474989.044841772, - "ns_high": 475825.13928025856, + "ns": 424296.36024530814, + "ns_low": 418334.90083700966, + "ns_high": 430027.92363693303, "throughput": { "Elements": 1 } @@ -3372,9 +3376,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-sign/ring", - "ns": 424637.71195655386, - "ns_low": 424231.21959824243, - "ns_high": 425117.22057370655, + "ns": 471528.3098640461, + "ns_low": 465772.24868333, + "ns_high": 478780.1423038132, "throughput": { "Elements": 1 } @@ -3383,9 +3387,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-sign/rustcrypto", - "ns": 995723.6637209989, - "ns_low": 994899.0307879915, - "ns_high": 996642.4941868762, + "ns": 1060988.326856805, + "ns_low": 1049352.7650763567, + "ns_high": 1071843.1706402365, "throughput": { "Elements": 1 } @@ -3394,9 +3398,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-verify/aws-lc-rs", - "ns": 14325.799101240615, - "ns_low": 14314.15939442774, - "ns_high": 14338.128129539831, + "ns": 15944.49731093201, + "ns_low": 15796.313573096928, + "ns_high": 16109.663820605983, "throughput": { "Elements": 1 } @@ -3405,9 +3409,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-verify/graviola", - "ns": 21663.932533193616, - "ns_low": 20900.90190048299, - "ns_high": 22440.670716160454, + "ns": 19628.995570057727, + "ns_low": 19498.063818668295, + "ns_high": 19776.927419037547, "throughput": { "Elements": 1 } @@ -3416,9 +3420,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-verify/libcrux", - "ns": 465379.69712427957, - "ns_low": 454873.01471289544, - "ns_high": 475047.8304615318, + "ns": 312226.193567312, + "ns_low": 310648.6634532728, + "ns_high": 313877.6194958092, "throughput": { "Elements": 1 } @@ -3427,9 +3431,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-verify/openssl", - "ns": 23359.91914265307, - "ns_low": 23256.41987557986, - "ns_high": 23476.66454371465, + "ns": 23601.682021811732, + "ns_low": 23530.137459025325, + "ns_high": 23683.72466409521, "throughput": { "Elements": 1 } @@ -3438,9 +3442,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-verify/rind", - "ns": 11824.895863373871, - "ns_low": 11742.710540156993, - "ns_high": 11915.716797944284, + "ns": 12672.26837110005, + "ns_low": 12574.216338634944, + "ns_high": 12803.753844593763, "throughput": { "Elements": 1 } @@ -3449,9 +3453,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-verify/ring", - "ns": 16273.37640752619, - "ns_low": 16260.717341856203, - "ns_high": 16286.121584078584, + "ns": 18030.772341206026, + "ns_low": 17931.730599380764, + "ns_high": 18138.181397592994, "throughput": { "Elements": 1 } @@ -3460,9 +3464,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-verify/rustcrypto", - "ns": 96977.94142840254, - "ns_low": 92802.76360091339, - "ns_high": 100640.01612302577, + "ns": 64699.96485207625, + "ns_low": 64114.85432238639, + "ns_high": 65399.196599485775, "throughput": { "Elements": 1 } @@ -3471,9 +3475,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "aws-lc-rs", "id": "mlkem768-keygen/aws-lc-rs", - "ns": 9196.640278372986, - "ns_low": 9189.993160976544, - "ns_high": 9204.565828055349, + "ns": 9412.79022225037, + "ns_low": 9394.059767170329, + "ns_high": 9431.789916948963, "throughput": { "Elements": 1 } @@ -3482,9 +3486,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "graviola", "id": "mlkem768-keygen/graviola", - "ns": 8744.972938177487, - "ns_low": 8740.425489466776, - "ns_high": 8750.159261964309, + "ns": 9280.754776095946, + "ns_low": 9233.028437013705, + "ns_high": 9328.795433087209, "throughput": { "Elements": 1 } @@ -3493,9 +3497,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "libcrux", "id": "mlkem768-keygen/libcrux-ml-kem", - "ns": 17514.48598996862, - "ns_low": 17488.388548708408, - "ns_high": 17540.062355463127, + "ns": 18145.78183340722, + "ns_low": 18097.069828237098, + "ns_high": 18193.56782599626, "throughput": { "Elements": 1 } @@ -3504,9 +3508,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "openssl", "id": "mlkem768-keygen/openssl", - "ns": 26110.641556530732, - "ns_low": 26090.43256018686, - "ns_high": 26132.882626404757, + "ns": 26821.006628973086, + "ns_low": 26763.778928423762, + "ns_high": 26890.48034700693, "throughput": { "Elements": 1 } @@ -3515,9 +3519,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rind", "id": "mlkem768-keygen/rind", - "ns": 8053.419565418825, - "ns_low": 8044.868101434386, - "ns_high": 8062.635671457732, + "ns": 8432.66958398953, + "ns_low": 8393.637491859545, + "ns_high": 8485.325972588193, "throughput": { "Elements": 1 } @@ -3526,9 +3530,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rustcrypto", "id": "mlkem768-keygen/rustcrypto", - "ns": 58011.366461302845, - "ns_low": 57977.76542354301, - "ns_high": 58047.81482140228, + "ns": 60177.92538052313, + "ns_low": 60052.41437735897, + "ns_high": 60310.36609362543, "throughput": { "Elements": 1 } @@ -3537,9 +3541,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-encaps/aws-lc-rs", - "ns": 9383.95583119366, - "ns_low": 9353.580847205141, - "ns_high": 9420.145202410444, + "ns": 10409.815652726467, + "ns_low": 10250.59936147713, + "ns_high": 10568.166342128869, "throughput": { "Elements": 1 } @@ -3548,9 +3552,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "graviola", "id": "mlkem768-encaps/graviola", - "ns": 10254.19786061874, - "ns_low": 10235.112924353652, - "ns_high": 10277.204148913175, + "ns": 10953.182500105555, + "ns_low": 10918.071817216138, + "ns_high": 10986.852111412301, "throughput": { "Elements": 1 } @@ -3559,9 +3563,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "libcrux", "id": "mlkem768-encaps/libcrux-ml-kem", - "ns": 14930.175219521207, - "ns_low": 14912.723714457768, - "ns_high": 14948.575469496589, + "ns": 16033.858618015089, + "ns_low": 15940.321359374864, + "ns_high": 16147.66348394608, "throughput": { "Elements": 1 } @@ -3570,9 +3574,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "openssl", "id": "mlkem768-encaps/openssl", - "ns": 27296.073642812044, - "ns_low": 27273.14827597938, - "ns_high": 27320.44352961637, + "ns": 30019.45323215605, + "ns_low": 29595.464200323957, + "ns_high": 30530.60841484435, "throughput": { "Elements": 1 } @@ -3581,9 +3585,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rind", "id": "mlkem768-encaps/rind", - "ns": 8328.904941259052, - "ns_low": 8317.359519935519, - "ns_high": 8341.997378591563, + "ns": 8529.914702852504, + "ns_low": 8493.56025770638, + "ns_high": 8566.757531108286, "throughput": { "Elements": 1 } @@ -3592,9 +3596,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rustcrypto", "id": "mlkem768-encaps/rustcrypto", - "ns": 67873.1589031739, - "ns_low": 67790.94439577323, - "ns_high": 67972.53366012179, + "ns": 72031.31047074856, + "ns_low": 71738.37027831352, + "ns_high": 72342.32476315813, "throughput": { "Elements": 1 } @@ -3603,9 +3607,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-decaps/aws-lc-rs", - "ns": 11286.96096567415, - "ns_low": 11267.864863737212, - "ns_high": 11310.530303527257, + "ns": 11961.943678535992, + "ns_low": 11884.193198755405, + "ns_high": 12070.681035663745, "throughput": { "Elements": 1 } @@ -3614,9 +3618,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "graviola", "id": "mlkem768-decaps/graviola", - "ns": 7104.156633534865, - "ns_low": 7099.797703368309, - "ns_high": 7109.200040214134, + "ns": 7722.310333481109, + "ns_low": 7661.809467270066, + "ns_high": 7792.588790716175, "throughput": { "Elements": 1 } @@ -3625,9 +3629,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "libcrux", "id": "mlkem768-decaps/libcrux-ml-kem", - "ns": 15635.446409763823, - "ns_low": 15610.274575641008, - "ns_high": 15665.965638404941, + "ns": 16215.85387090948, + "ns_low": 16145.07018910444, + "ns_high": 16282.639469245883, "throughput": { "Elements": 1 } @@ -3636,9 +3640,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "openssl", "id": "mlkem768-decaps/openssl", - "ns": 22359.545521019765, - "ns_low": 22346.872318812868, - "ns_high": 22373.4943692849, + "ns": 24635.216524427367, + "ns_low": 24478.09166638311, + "ns_high": 24811.49575780166, "throughput": { "Elements": 1 } @@ -3647,9 +3651,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rind", "id": "mlkem768-decaps/rind", - "ns": 5929.915213409614, - "ns_low": 5926.82819327803, - "ns_high": 5933.414265231066, + "ns": 6068.96540151902, + "ns_low": 6037.370185554464, + "ns_high": 6098.306727388756, "throughput": { "Elements": 1 } @@ -3658,9 +3662,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rustcrypto", "id": "mlkem768-decaps/rustcrypto", - "ns": 87754.81426840338, - "ns_low": 87697.66325045154, - "ns_high": 87813.64638438451, + "ns": 95174.95228440542, + "ns_low": 93794.01324200646, + "ns_high": 97146.49196750416, "throughput": { "Elements": 1 } @@ -3669,9 +3673,9 @@ "operation": "p384-ecdh/{lib}", "library": "aws-lc-rs", "id": "p384-ecdh/aws-lc-rs", - "ns": 145142.6887535097, - "ns_low": 145060.5054412949, - "ns_high": 145237.8782913534, + "ns": 180488.3124434757, + "ns_low": 175279.54009918656, + "ns_high": 185550.4175662494, "throughput": { "Elements": 1 } @@ -3680,9 +3684,9 @@ "operation": "p384-ecdh/{lib}", "library": "graviola", "id": "p384-ecdh/graviola", - "ns": 206068.65765430275, - "ns_low": 205981.57729293147, - "ns_high": 206150.03522278013, + "ns": 302571.50348307966, + "ns_low": 290620.1522443974, + "ns_high": 314491.2408876801, "throughput": { "Elements": 1 } @@ -3691,9 +3695,9 @@ "operation": "p384-ecdh/{lib}", "library": "openssl", "id": "p384-ecdh/openssl", - "ns": 451925.5146135658, - "ns_low": 451776.3844888497, - "ns_high": 452069.7984545253, + "ns": 656670.5430234964, + "ns_low": 631237.1719399333, + "ns_high": 683069.314465295, "throughput": { "Elements": 1 } @@ -3702,9 +3706,9 @@ "operation": "p384-ecdh/{lib}", "library": "rind", "id": "p384-ecdh/rind", - "ns": 128995.26235377567, - "ns_low": 128934.73426188162, - "ns_high": 129074.98329541982, + "ns": 179706.50563174227, + "ns_low": 174993.297686594, + "ns_high": 184711.28622516416, "throughput": { "Elements": 1 } @@ -3713,9 +3717,9 @@ "operation": "p384-ecdh/{lib}", "library": "ring", "id": "p384-ecdh/ring", - "ns": 580795.5353760899, - "ns_low": 580437.6801968972, - "ns_high": 581212.5585375143, + "ns": 601492.1655652431, + "ns_low": 600178.4491327918, + "ns_high": 603060.1916233203, "throughput": { "Elements": 1 } @@ -3724,9 +3728,9 @@ "operation": "p384-ecdh/{lib}", "library": "rustcrypto", "id": "p384-ecdh/p384-rustcrypto", - "ns": 782245.0981291562, - "ns_low": 781560.7414845551, - "ns_high": 783035.2042177367, + "ns": 1042109.2816491799, + "ns_low": 1031939.996425412, + "ns_high": 1051507.1173784768, "throughput": { "Elements": 1 } @@ -3735,9 +3739,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-sign/aws-lc-rs", - "ns": 64478.57967755283, - "ns_low": 64425.68787358062, - "ns_high": 64533.8656212368, + "ns": 97469.15438324642, + "ns_low": 96294.872561119, + "ns_high": 98616.37210057728, "throughput": { "Elements": 1 } @@ -3746,9 +3750,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "graviola", "id": "p384-ecdsa-sign/graviola", - "ns": 110141.5891704842, - "ns_low": 109962.85245132222, - "ns_high": 110345.73837592191, + "ns": 185154.80296438598, + "ns_low": 181007.24867024156, + "ns_high": 188715.1620760401, "throughput": { "Elements": 1 } @@ -3757,9 +3761,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "openssl", "id": "p384-ecdsa-sign/openssl", - "ns": 151272.06681321116, - "ns_low": 151166.2584091821, - "ns_high": 151386.5231643424, + "ns": 235522.13648687257, + "ns_low": 225298.32996680995, + "ns_high": 246167.11158552847, "throughput": { "Elements": 1 } @@ -3768,9 +3772,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rind", "id": "p384-ecdsa-sign/rind", - "ns": 33905.5817204407, - "ns_low": 33752.83354519738, - "ns_high": 34042.73192684883, + "ns": 53068.154963526205, + "ns_low": 51768.40769587419, + "ns_high": 54329.75212738518, "throughput": { "Elements": 1 } @@ -3779,9 +3783,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "ring", "id": "p384-ecdsa-sign/ring", - "ns": 313476.21176001185, - "ns_low": 313303.16874939826, - "ns_high": 313651.5461403726, + "ns": 474636.42304418504, + "ns_low": 462988.75658822776, + "ns_high": 486116.680511695, "throughput": { "Elements": 1 } @@ -3790,9 +3794,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-sign/rustcrypto", - "ns": 183165.0746660263, - "ns_low": 183011.1052700869, - "ns_high": 183313.14802354563, + "ns": 238313.82929018274, + "ns_low": 234225.0961657011, + "ns_high": 242023.9122576257, "throughput": { "Elements": 1 } @@ -3801,9 +3805,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-verify/aws-lc-rs", - "ns": 151437.91059553716, - "ns_low": 151314.0559352488, - "ns_high": 151584.25007249694, + "ns": 199207.40075513523, + "ns_low": 194771.73485443983, + "ns_high": 203499.0300390606, "throughput": { "Elements": 1 } @@ -3812,9 +3816,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "graviola", "id": "p384-ecdsa-verify/graviola", - "ns": 204917.58058420767, - "ns_low": 204756.3295246015, - "ns_high": 205081.90409164858, + "ns": 315986.8514703709, + "ns_low": 301710.89770941046, + "ns_high": 328777.9878182395, "throughput": { "Elements": 1 } @@ -3823,9 +3827,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "openssl", "id": "p384-ecdsa-verify/openssl", - "ns": 371493.000799468, - "ns_low": 371250.07571557356, - "ns_high": 371757.0517632276, + "ns": 551887.3496098714, + "ns_low": 541033.4100878837, + "ns_high": 563077.5465517086, "throughput": { "Elements": 1 } @@ -3834,9 +3838,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rind", "id": "p384-ecdsa-verify/rind", - "ns": 121075.22697266145, - "ns_low": 121004.59744398732, - "ns_high": 121150.21815213533, + "ns": 157329.8079119255, + "ns_low": 152813.86366838426, + "ns_high": 161908.91630350857, "throughput": { "Elements": 1 } @@ -3845,9 +3849,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "ring", "id": "p384-ecdsa-verify/ring", - "ns": 560902.326082459, - "ns_low": 560566.8318624691, - "ns_high": 561285.8708513668, + "ns": 727104.829428107, + "ns_low": 712563.8328306745, + "ns_high": 741824.9077715074, "throughput": { "Elements": 1 } @@ -3856,9 +3860,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-verify/rustcrypto", - "ns": 670204.6910093098, - "ns_low": 669663.8974559493, - "ns_high": 670851.9660933354, + "ns": 872064.4092921531, + "ns_low": 860955.6807043034, + "ns_high": 883461.9100270023, "throughput": { "Elements": 1 } @@ -3867,9 +3871,9 @@ "operation": "p521-ecdh/{lib}", "library": "aws-lc-rs", "id": "p521-ecdh/aws-lc-rs", - "ns": 235942.18692478203, - "ns_low": 235719.37530806233, - "ns_high": 236198.4191441482, + "ns": 288170.71495049505, + "ns_low": 281176.3099762679, + "ns_high": 295865.9756297601, "throughput": { "Elements": 1 } @@ -3878,9 +3882,9 @@ "operation": "p521-ecdh/{lib}", "library": "openssl", "id": "p521-ecdh/openssl", - "ns": 390711.96829909855, - "ns_low": 390142.6944749489, - "ns_high": 391364.73000636307, + "ns": 505618.03551943257, + "ns_low": 497227.58023972146, + "ns_high": 514172.0875364322, "throughput": { "Elements": 1 } @@ -3889,9 +3893,9 @@ "operation": "p521-ecdh/{lib}", "library": "rind", "id": "p521-ecdh/rind", - "ns": 221050.51808088273, - "ns_low": 220833.89179880632, - "ns_high": 221300.10112317427, + "ns": 283912.5756012019, + "ns_low": 278074.4176800373, + "ns_high": 289771.91778367286, "throughput": { "Elements": 1 } @@ -3900,9 +3904,9 @@ "operation": "p521-ecdh/{lib}", "library": "rustcrypto", "id": "p521-ecdh/rustcrypto", - "ns": 604978.5797280922, - "ns_low": 603853.6583285818, - "ns_high": 606118.0314563692, + "ns": 868409.3264873652, + "ns_low": 844473.0671280792, + "ns_high": 891757.9761426013, "throughput": { "Elements": 1 } @@ -3911,9 +3915,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-sign/aws-lc-rs", - "ns": 125987.94554573666, - "ns_low": 125893.51272262812, - "ns_high": 126099.72741083392, + "ns": 152351.90711245753, + "ns_low": 148466.50870266728, + "ns_high": 156081.71779399124, "throughput": { "Elements": 1 } @@ -3922,9 +3926,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "openssl", "id": "p521-ecdsa-sign/openssl", - "ns": 186409.6278136545, - "ns_low": 186341.62576890254, - "ns_high": 186479.7967736239, + "ns": 219598.71526525787, + "ns_low": 215505.11477514388, + "ns_high": 224395.0602227884, "throughput": { "Elements": 1 } @@ -3933,9 +3937,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rind", "id": "p521-ecdsa-sign/rind", - "ns": 56661.15907277295, - "ns_low": 56622.76855283638, - "ns_high": 56701.64576459021, + "ns": 58316.217007372376, + "ns_low": 58136.887672676996, + "ns_high": 58536.389533288646, "throughput": { "Elements": 1 } @@ -3944,9 +3948,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-sign/rustcrypto", - "ns": 144488.57884025417, - "ns_low": 144313.99625013492, - "ns_high": 144704.742387829, + "ns": 177472.88751071377, + "ns_low": 171795.64277865272, + "ns_high": 182837.46248322577, "throughput": { "Elements": 1 } @@ -3955,9 +3959,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-verify/aws-lc-rs", - "ns": 257698.14265504162, - "ns_low": 257353.20701513652, - "ns_high": 258202.81435615526, + "ns": 327351.2493054529, + "ns_low": 319508.6490540118, + "ns_high": 335173.78908765013, "throughput": { "Elements": 1 } @@ -3966,9 +3970,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "openssl", "id": "p521-ecdsa-verify/openssl", - "ns": 379624.54665582976, - "ns_low": 379368.31371322955, - "ns_high": 379895.41942444205, + "ns": 473663.16028077435, + "ns_low": 464909.7501650922, + "ns_high": 482473.5925090489, "throughput": { "Elements": 1 } @@ -3977,9 +3981,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rind", "id": "p521-ecdsa-verify/rind", - "ns": 191804.23748928623, - "ns_low": 191686.20691818852, - "ns_high": 191933.60761437277, + "ns": 222281.76962809713, + "ns_low": 216958.53251180146, + "ns_high": 228971.1984606057, "throughput": { "Elements": 1 } @@ -3988,490 +3992,17 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-verify/rustcrypto", - "ns": 481745.87908526673, - "ns_low": 481127.4562188081, - "ns_high": 482336.8484281701, + "ns": 610174.982693956, + "ns_low": 591407.8799324523, + "ns_high": 628883.3643587915, "throughput": { "Elements": 1 } } ], "build_cost": { - "status": "ok", - "started": "2026-11-05T01:25:40+00:00", - "host": { - "hostname": "nixos", - "os": "Linux 6.18.56", - "arch": "x86_64", - "cpu": "AMD Ryzen 9 5900XT 16-Core Processor", - "cpus": 32, - "jobs": "16", - "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", - "cc": "gcc (GCC) 16.2.0" - }, - "runs": 3, - "builds": [ - { - "name": "rind", - "seconds": [ - 4.16, - 4.19, - 4.13 - ], - "median_seconds": 4.16, - "cpu_seconds": [ - 9.33, - 9.39, - 9.27 - ], - "median_cpu_seconds": 9.33, - "stripped_bytes": 858032, - "tools": [], - "packages": [ - "build-cost-rind@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "rind@0.1.12" - ] - }, - { - "name": "aws-lc-rs", - "seconds": [ - 16.28, - 16.28, - 16.27 - ], - "median_seconds": 16.28, - "cpu_seconds": [ - 54.21, - 54.13, - 54.27 - ], - "median_cpu_seconds": 54.21, - "stripped_bytes": 2991408, - "tools": [ - "cc" - ], - "packages": [ - "aws-lc-rs@1.19.0", - "aws-lc-sys@0.47.0", - "build-cost-aws-lc-rs@0.0.0", - "cc@1.11.0", - "cmake@0.1.58", - "dunce@1.0.5", - "find-msvc-tools@0.1.15", - "fs_extra@1.3.0", - "jobserver@0.1.35", - "libc@0.2.191", - "pkg-config@0.3.34", - "shlex@2.0.1", - "untrusted@0.7.1", - "zeroize@1.9.1" - ] - }, - { - "name": "ring", - "seconds": [ - 6.69, - 6.73, - 6.71 - ], - "median_seconds": 6.71, - "cpu_seconds": [ - 9.46, - 9.49, - 9.51 - ], - "median_cpu_seconds": 9.49, - "stripped_bytes": 744328, - "tools": [ - "cc" - ], - "packages": [ - "build-cost-ring@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "getrandom@0.2.17", - "libc@0.2.191", - "ring@0.17.14", - "shlex@2.0.1", - "untrusted@0.9.0" - ] - }, - { - "name": "rustcrypto", - "seconds": [ - 4.08, - 4.05, - 4.08 - ], - "median_seconds": 4.08, - "cpu_seconds": [ - 20.73, - 20.74, - 20.97 - ], - "median_cpu_seconds": 20.74, - "stripped_bytes": 540256, - "tools": [], - "packages": [ - "aead@0.6.1", - "aes-gcm@0.11.1", - "aes@0.9.4", - "autocfg@1.5.1", - "base16ct@1.0.0", - "base64ct@1.8.3", - "block-buffer@0.12.1", - "build-cost-rustcrypto@0.0.0", - "cfg-if@1.0.5", - "cipher@0.5.2", - "cmov@0.5.4", - "const-oid@0.10.2", - "cpubits@0.1.1", - "cpufeatures@0.3.1", - "crypto-bigint@0.7.10", - "crypto-common@0.2.2", - "ctr@0.10.1", - "ctutils@0.4.8", - "curve25519-dalek-derive@0.1.1", - "curve25519-dalek@5.0.0", - "der@0.8.3", - "digest@0.11.3", - "ecdsa@0.17.0", - "elliptic-curve@0.14.3", - "ff@0.14.0", - "getrandom@0.4.3", - "ghash@0.6.0", - "group@0.14.0", - "hmac@0.13.0", - "hybrid-array@0.4.15", - "inout@0.2.5", - "libc@0.2.191", - "num-traits@0.2.19", - "p256@0.14.0", - "pem-rfc7468@1.0.0", - "pkcs8@0.11.0", - "polyval@0.7.3", - "primefield@0.14.0", - "primeorder@0.14.0", - "proc-macro2@1.0.107", - "quote@1.0.47", - "rand_core@0.10.1", - "rfc6979@0.6.0", - "rustc_version@0.4.1", - "sec1@0.8.1", - "semver@1.0.28", - "sha2@0.11.1", - "signature@3.0.0", - "spki@0.8.1", - "subtle@2.6.1", - "syn@2.0.119", - "typenum@1.20.1", - "unicode-ident@1.0.27", - "universal-hash@0.6.1", - "wnaf@0.14.1", - "x25519-dalek@3.0.0", - "zeroize@1.9.1" - ] - }, - { - "name": "graviola", - "seconds": [ - 2.57, - 2.59, - 2.58 - ], - "median_seconds": 2.58, - "cpu_seconds": [ - 5.31, - 5.33, - 5.29 - ], - "median_cpu_seconds": 5.31, - "stripped_bytes": 912208, - "tools": [], - "packages": [ - "build-cost-graviola@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "graviola@0.4.3", - "libc@0.2.191" - ] - }, - { - "name": "libcrux", - "seconds": [ - 6.77, - 6.82, - 6.79 - ], - "median_seconds": 6.79, - "cpu_seconds": [ - 15.83, - 15.9, - 15.86 - ], - "median_cpu_seconds": 15.86, - "stripped_bytes": 745648, - "tools": [], - "packages": [ - "build-cost-libcrux@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "hax-lib-macros@0.3.6", - "hax-lib@0.3.6", - "libc@0.2.191", - "libcrux-aesgcm@0.0.8", - "libcrux-curve25519@0.0.9", - "libcrux-ecdh@0.0.9", - "libcrux-ecdsa@0.0.9", - "libcrux-hacl-rs@0.0.6", - "libcrux-intrinsics@0.0.7", - "libcrux-macros@0.0.4", - "libcrux-p256@0.0.9", - "libcrux-platform@0.0.3", - "libcrux-secrets@0.0.5", - "libcrux-secrets@0.0.7", - "libcrux-sha2@0.0.9", - "libcrux-traits@0.0.7", - "libcrux-traits@0.0.9", - "proc-macro2@1.0.107", - "quote@1.0.47", - "rand@0.10.3", - "rand_core@0.10.1", - "syn@2.0.119", - "syn@3.0.9", - "unicode-ident@1.0.27" - ] - }, - { - "name": "openssl", - "seconds": [ - 3.87, - 3.9, - 3.91 - ], - "median_seconds": 3.9, - "cpu_seconds": [ - 9.67, - 9.72, - 9.65 - ], - "median_cpu_seconds": 9.67, - "stripped_bytes": 377832, - "tools": [ - "cc", - "pkg-config" - ], - "packages": [ - "bitflags@2.13.2", - "build-cost-openssl@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "foreign-types-shared@0.1.1", - "foreign-types@0.3.2", - "libc@0.2.191", - "openssl-macros@0.1.1", - "openssl-sys@0.9.118", - "openssl@0.10.82", - "pkg-config@0.3.34", - "proc-macro2@1.0.107", - "quote@1.0.47", - "shlex@2.0.1", - "syn@2.0.119", - "unicode-ident@1.0.27", - "vcpkg@0.2.15" - ] - }, - { - "name": "openssl-vendored", - "seconds": [ - 22.65, - 22.69, - 22.68 - ], - "median_seconds": 22.68, - "cpu_seconds": [ - 199.95, - 200.25, - 200.44 - ], - "median_cpu_seconds": 200.25, - "stripped_bytes": 5133408, - "tools": [ - "cc", - "make", - "perl" - ], - "packages": [ - "bitflags@2.13.2", - "build-cost-openssl@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "foreign-types-shared@0.1.1", - "foreign-types@0.3.2", - "libc@0.2.191", - "openssl-macros@0.1.1", - "openssl-src@300.6.1+3.6.3", - "openssl-sys@0.9.118", - "openssl@0.10.82", - "pkg-config@0.3.34", - "proc-macro2@1.0.107", - "quote@1.0.47", - "shlex@2.0.1", - "syn@2.0.119", - "unicode-ident@1.0.27", - "vcpkg@0.2.15" - ] - }, - { - "name": "rustls-rind", - "seconds": [ - 4.81, - 4.8, - 4.81 - ], - "median_seconds": 4.81, - "cpu_seconds": [ - 24.61, - 24.82, - 24.65 - ], - "median_cpu_seconds": 24.65, - "stripped_bytes": 2891640, - "tools": [], - "packages": [ - "build-cost-rustls@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "once_cell@1.21.4", - "rind-rustls@0.1.12", - "rind@0.1.12", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-rind-lean", - "seconds": [ - 4.82, - 4.84, - 4.84 - ], - "median_seconds": 4.84, - "cpu_seconds": [ - 24.78, - 24.76, - 24.85 - ], - "median_cpu_seconds": 24.78, - "stripped_bytes": 1802000, - "tools": [], - "packages": [ - "build-cost-rustls@0.0.0", - "cfg-if@1.0.5", - "getrandom@0.4.3", - "libc@0.2.191", - "once_cell@1.21.4", - "rind-rustls@0.1.12", - "rind@0.1.12", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-aws-lc-rs", - "seconds": [ - 19.72, - 19.75, - 19.75 - ], - "median_seconds": 19.75, - "cpu_seconds": [ - 69.85, - 69.79, - 69.66 - ], - "median_cpu_seconds": 69.79, - "stripped_bytes": 4114504, - "tools": [ - "cc" - ], - "packages": [ - "aws-lc-rs@1.19.0", - "aws-lc-sys@0.47.0", - "build-cost-rustls@0.0.0", - "cc@1.11.0", - "cmake@0.1.58", - "dunce@1.0.5", - "find-msvc-tools@0.1.15", - "fs_extra@1.3.0", - "jobserver@0.1.35", - "libc@0.2.191", - "once_cell@1.21.4", - "pkg-config@0.3.34", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "shlex@2.0.1", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - }, - { - "name": "rustls-ring", - "seconds": [ - 10.07, - 10.08, - 10.09 - ], - "median_seconds": 10.08, - "cpu_seconds": [ - 24.18, - 23.95, - 23.95 - ], - "median_cpu_seconds": 23.95, - "stripped_bytes": 1943680, - "tools": [ - "cc" - ], - "packages": [ - "build-cost-rustls@0.0.0", - "cc@1.11.0", - "cfg-if@1.0.5", - "find-msvc-tools@0.1.15", - "getrandom@0.2.17", - "libc@0.2.191", - "once_cell@1.21.4", - "ring@0.17.14", - "rustls-pki-types@1.15.1", - "rustls-webpki@0.103.16", - "rustls@0.23.46", - "shlex@2.0.1", - "subtle@2.6.1", - "untrusted@0.9.0", - "webpki-roots@1.0.11", - "zeroize@1.9.1" - ] - } - ] + "status": "failed", + "started": "2026-11-06T17:01:09+00:00", + "reason": "error: host is busy (load average 8.2 on 32 CPUs)" } } diff --git a/benchmarks/data/nixos2.json b/benchmarks/data/nixos2.json index 5ffd63081..56ab241ee 100644 --- a/benchmarks/data/nixos2.json +++ b/benchmarks/data/nixos2.json @@ -1,8 +1,8 @@ { "schema": 1, "host": "nixos2", - "commit": "a6d9bd7210fc2352f8dec4aa2078230f779398eb", - "started": "2026-11-04T17:02:02+00:00", + "commit": "f95b91da886bee265dbd836192a7ade2f9158c47", + "started": "2026-11-06T15:35:40+00:00", "cpu": { "model": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz", "arch": "x86_64", @@ -15,8 +15,8 @@ }, "libraries": { "rind": { - "rind": "0.1.12", - "rind-rustls": "0.1.12" + "rind": "0.1.13", + "rind-rustls": "0.1.13" }, "aws-lc-rs": { "aws-lc-rs": "1.19.0", @@ -29,6 +29,7 @@ "aes-gcm": "0.11.1", "chacha20poly1305": "0.11.0", "sha2": "0.11.1", + "sha3": "0.12.0", "hmac": "0.13.0", "hkdf": "0.13.0", "p256": "0.14.0", @@ -53,7 +54,8 @@ "libcrux-hmac": "0.0.9", "libcrux-ml-kem": "0.0.11", "libcrux-rsa": "0.0.9", - "libcrux-sha2": "0.0.9" + "libcrux-sha2": "0.0.9", + "libcrux-sha3": "0.0.11" }, "openssl": { "openssl": "0.10.82", @@ -73,6 +75,7 @@ "vaes": 0, "pclmulqdq": 1, "vpclmulqdq": 0, + "bmi1": 1, "bmi2": 1, "movbe": 1, "popcnt": 1, @@ -87,26 +90,27 @@ "avx512vl": 0, "avx512vbmi": 0, "avx512vbmi2": 0, - "sha": 0 + "sha": 0, + "sha512": 0 }, "compatible": 1, "supports_avx512_aes_gcm": 0 }, "status": "ok", - "finished": "2026-11-04T17:40:33+00:00", + "finished": "2026-11-06T16:12:00+00:00", "criterion_args": [ "--noplot", "--warm-up-time", "1", "--measurement-time", "3", - "^(rustls\\-full\\-handshake\\-group/x25519mlkem768/[^/]+|rustls\\-full\\-handshake\\-group/x25519/[^/]+|rustls\\-full\\-handshake\\-group/secp256r1/[^/]+|rustls\\-full\\-handshake\\-key/ed25519/[^/]+|rustls\\-full\\-handshake\\-key/rsa\\-2048/[^/]+|rustls\\-resumed\\-handshake/x25519/[^/]+|rustls\\-bulk/aes128\\-gcm/[^/]+|rustls\\-bulk/aes256\\-gcm/[^/]+|rustls\\-bulk/chacha20poly1305/[^/]+|aes128\\-gcm/[^/]+/32B|aes128\\-gcm/[^/]+/1350B|aes128\\-gcm/[^/]+/16KB|aes128\\-gcm\\-open/[^/]+/32B|aes128\\-gcm\\-open/[^/]+/1350B|aes128\\-gcm\\-open/[^/]+/16KB|aes256\\-gcm/[^/]+/32B|aes256\\-gcm/[^/]+/1350B|aes256\\-gcm/[^/]+/16KB|aes256\\-gcm\\-open/[^/]+/32B|aes256\\-gcm\\-open/[^/]+/1350B|aes256\\-gcm\\-open/[^/]+/16KB|chacha20poly1305/[^/]+/32B|chacha20poly1305/[^/]+/1350B|chacha20poly1305/[^/]+/16KB|xchacha20poly1305/[^/]+/32B|xchacha20poly1305/[^/]+/1350B|xchacha20poly1305/[^/]+/16KB|x25519\\-ecdh/[^/]+|p256\\-ecdh/[^/]+|ed25519\\-sign/[^/]+|ed25519\\-verify/[^/]+|p256\\-ecdsa\\-sign/[^/]+|p256\\-ecdsa\\-verify/[^/]+|sha256/[^/]+/64B|sha256/[^/]+/1350B|sha256/[^/]+/16KB|sha512/[^/]+/64B|sha512/[^/]+/1350B|sha512/[^/]+/16KB|hmac\\-sha256/[^/]+/64B|hmac\\-sha256/[^/]+/1350B|hkdf\\-sha256/extract\\-expand/[^/]+|hkdf\\-sha256/expand/[^/]+|rsa2048\\-pkcs1\\-sha256\\-sign/[^/]+|rsa2048\\-pkcs1\\-sha256\\-verify/[^/]+|rsa2048\\-pss\\-sha256\\-sign/[^/]+|rsa2048\\-pss\\-sha256\\-verify/[^/]+|mlkem768\\-keygen/[^/]+|mlkem768\\-encaps/[^/]+|mlkem768\\-decaps/[^/]+|p384\\-ecdh/[^/]+|p384\\-ecdsa\\-sign/[^/]+|p384\\-ecdsa\\-verify/[^/]+|p521\\-ecdh/[^/]+|p521\\-ecdsa\\-sign/[^/]+|p521\\-ecdsa\\-verify/[^/]+)$" + "^(rustls\\-full\\-handshake\\-group/x25519mlkem768/[^/]+|rustls\\-full\\-handshake\\-group/x25519/[^/]+|rustls\\-full\\-handshake\\-group/secp256r1/[^/]+|rustls\\-full\\-handshake\\-key/ed25519/[^/]+|rustls\\-full\\-handshake\\-key/rsa\\-2048/[^/]+|rustls\\-resumed\\-handshake/x25519/[^/]+|rustls\\-bulk/aes128\\-gcm/[^/]+|rustls\\-bulk/aes256\\-gcm/[^/]+|rustls\\-bulk/chacha20poly1305/[^/]+|aes128\\-gcm/[^/]+/32B|aes128\\-gcm/[^/]+/1350B|aes128\\-gcm/[^/]+/16KB|aes128\\-gcm\\-open/[^/]+/32B|aes128\\-gcm\\-open/[^/]+/1350B|aes128\\-gcm\\-open/[^/]+/16KB|aes256\\-gcm/[^/]+/32B|aes256\\-gcm/[^/]+/1350B|aes256\\-gcm/[^/]+/16KB|aes256\\-gcm\\-open/[^/]+/32B|aes256\\-gcm\\-open/[^/]+/1350B|aes256\\-gcm\\-open/[^/]+/16KB|chacha20poly1305/[^/]+/32B|chacha20poly1305/[^/]+/1350B|chacha20poly1305/[^/]+/16KB|xchacha20poly1305/[^/]+/32B|xchacha20poly1305/[^/]+/1350B|xchacha20poly1305/[^/]+/16KB|quic\\-header\\-protection/aes128/[^/]+|quic\\-header\\-protection/aes256/[^/]+|quic\\-header\\-protection/chacha20/[^/]+|x25519\\-ecdh/[^/]+|p256\\-ecdh/[^/]+|ed25519\\-sign/[^/]+|ed25519\\-verify/[^/]+|p256\\-ecdsa\\-sign/[^/]+|p256\\-ecdsa\\-verify/[^/]+|sha256/[^/]+/64B|sha256/[^/]+/1350B|sha256/[^/]+/16KB|sha512/[^/]+/64B|sha512/[^/]+/1350B|sha512/[^/]+/16KB|hmac\\-sha256/[^/]+/64B|hmac\\-sha256/[^/]+/1350B|hkdf\\-sha256/extract\\-expand/[^/]+|hkdf\\-sha256/expand/[^/]+|rsa2048\\-pkcs1\\-sha256\\-sign/[^/]+|rsa2048\\-pkcs1\\-sha256\\-verify/[^/]+|rsa2048\\-pss\\-sha256\\-sign/[^/]+|rsa2048\\-pss\\-sha256\\-verify/[^/]+|mlkem768\\-keygen/[^/]+|mlkem768\\-encaps/[^/]+|mlkem768\\-decaps/[^/]+|p384\\-ecdh/[^/]+|p384\\-ecdsa\\-sign/[^/]+|p384\\-ecdsa\\-verify/[^/]+|p521\\-ecdh/[^/]+|p521\\-ecdsa\\-sign/[^/]+|p521\\-ecdsa\\-verify/[^/]+)$" ], "load": { "limit_cpus": 1.2, - "busy_cpus_before_build": 0.18, - "busy_cpus_before_run": 0.1, - "other_busy_cpus_during_run": 0.74, + "busy_cpus_before_build": 0.1, + "busy_cpus_before_run": 0.07, + "other_busy_cpus_during_run": 0.28, "noisy": false }, "results": [ @@ -114,9 +118,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519mlkem768/aws-lc-rs", - "ns": 452020.1493098862, - "ns_low": 449094.56912509335, - "ns_high": 455384.62391795375, + "ns": 458055.4030323629, + "ns_low": 454340.3614205239, + "ns_high": 461900.4775634005, "throughput": { "Elements": 1 } @@ -125,9 +129,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519mlkem768/graviola", - "ns": 375561.058327176, - "ns_low": 374163.1063340612, - "ns_high": 377055.18024464673, + "ns": 375574.18730899954, + "ns_low": 374333.12489981164, + "ns_high": 376876.0387466974, "throughput": { "Elements": 1 } @@ -136,9 +140,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519mlkem768/openssl", - "ns": 837011.9889138466, - "ns_low": 832974.6749854923, - "ns_high": 841278.8594389458, + "ns": 830763.5219240432, + "ns_low": 827852.1575952782, + "ns_high": 834120.1405914944, "throughput": { "Elements": 1 } @@ -147,9 +151,9 @@ "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519mlkem768/rind", - "ns": 311290.85981528, - "ns_low": 310288.5231179472, - "ns_high": 312470.66454732587, + "ns": 302425.3520526083, + "ns_low": 301632.20565260283, + "ns_high": 303309.55788080243, "throughput": { "Elements": 1 } @@ -158,9 +162,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/x25519/aws-lc-rs", - "ns": 379991.97261711245, - "ns_low": 373405.11413452326, - "ns_high": 388758.57716043224, + "ns": 369738.7065272647, + "ns_low": 368879.53320521826, + "ns_high": 370768.5317983993, "throughput": { "Elements": 1 } @@ -169,9 +173,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/x25519/graviola", - "ns": 316389.56954337226, - "ns_low": 315334.158055229, - "ns_high": 317576.90192174155, + "ns": 315727.71180286683, + "ns_low": 315043.2904125805, + "ns_high": 316494.87544895225, "throughput": { "Elements": 1 } @@ -180,9 +184,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/x25519/openssl", - "ns": 688730.150412295, - "ns_low": 685334.4828872668, - "ns_high": 692768.8309688661, + "ns": 686500.0513698832, + "ns_low": 683463.6077286509, + "ns_high": 689638.2791152713, "throughput": { "Elements": 1 } @@ -191,9 +195,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "rind", "id": "rustls-full-handshake-group/x25519/rind", - "ns": 267069.3760307374, - "ns_low": 265669.54525129916, - "ns_high": 268570.7871108576, + "ns": 260016.6891345254, + "ns_low": 259320.99000662172, + "ns_high": 260759.56438181436, "throughput": { "Elements": 1 } @@ -202,9 +206,9 @@ "operation": "rustls-full-handshake-group/x25519/{lib}", "library": "ring", "id": "rustls-full-handshake-group/x25519/ring", - "ns": 339512.68600265996, - "ns_low": 337916.51985956257, - "ns_high": 341273.16571913665, + "ns": 337912.23527264665, + "ns_low": 336693.25452529045, + "ns_high": 339226.88148054347, "throughput": { "Elements": 1 } @@ -213,9 +217,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-group/secp256r1/aws-lc-rs", - "ns": 414569.7743490469, - "ns_low": 412974.4626532239, - "ns_high": 416433.780008646, + "ns": 417284.4076488843, + "ns_low": 415880.6881242572, + "ns_high": 418844.5406267681, "throughput": { "Elements": 1 } @@ -224,9 +228,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "graviola", "id": "rustls-full-handshake-group/secp256r1/graviola", - "ns": 371362.8470843801, - "ns_low": 366281.81204677693, - "ns_high": 377463.0952497132, + "ns": 368788.45385251957, + "ns_low": 367047.5794541332, + "ns_high": 370866.61180742964, "throughput": { "Elements": 1 } @@ -235,9 +239,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "openssl", "id": "rustls-full-handshake-group/secp256r1/openssl", - "ns": 750803.9832628935, - "ns_low": 749347.8253556245, - "ns_high": 752358.0493464556, + "ns": 760039.5912516625, + "ns_low": 758021.1242762231, + "ns_high": 762353.374945481, "throughput": { "Elements": 1 } @@ -246,9 +250,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "rind", "id": "rustls-full-handshake-group/secp256r1/rind", - "ns": 302720.9413240727, - "ns_low": 301401.8415573042, - "ns_high": 304353.93029809865, + "ns": 295924.4892655534, + "ns_low": 295119.06095973786, + "ns_high": 296817.18012683716, "throughput": { "Elements": 1 } @@ -257,9 +261,9 @@ "operation": "rustls-full-handshake-group/secp256r1/{lib}", "library": "ring", "id": "rustls-full-handshake-group/secp256r1/ring", - "ns": 327281.4888739471, - "ns_low": 325839.9136382905, - "ns_high": 328963.2521680183, + "ns": 327879.23115413036, + "ns_low": 327116.53373188176, + "ns_high": 328713.2805165612, "throughput": { "Elements": 1 } @@ -268,9 +272,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/ed25519/aws-lc-rs", - "ns": 307774.36459139944, - "ns_low": 307134.1016683452, - "ns_high": 308474.3118399292, + "ns": 306109.17607359245, + "ns_low": 305173.7418181003, + "ns_high": 307240.0442435101, "throughput": { "Elements": 1 } @@ -279,9 +283,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/ed25519/graviola", - "ns": 251067.76683907196, - "ns_low": 249355.88525989326, - "ns_high": 252972.03228638764, + "ns": 250284.9215959805, + "ns_low": 249528.57511093543, + "ns_high": 251049.34156150406, "throughput": { "Elements": 1 } @@ -290,9 +294,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/ed25519/openssl", - "ns": 757621.5185163292, - "ns_low": 747290.2410276554, - "ns_high": 776749.8241478265, + "ns": 747093.0546327768, + "ns_low": 745005.8568319842, + "ns_high": 749453.142768574, "throughput": { "Elements": 1 } @@ -301,9 +305,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "rind", "id": "rustls-full-handshake-key/ed25519/rind", - "ns": 216147.09122604798, - "ns_low": 215077.99440600173, - "ns_high": 217319.6758238117, + "ns": 213116.54405300232, + "ns_low": 212421.72020256496, + "ns_high": 213891.78401615826, "throughput": { "Elements": 1 } @@ -312,9 +316,9 @@ "operation": "rustls-full-handshake-key/ed25519/{lib}", "library": "ring", "id": "rustls-full-handshake-key/ed25519/ring", - "ns": 326165.6023910152, - "ns_low": 324688.9331475471, - "ns_high": 327993.15660119755, + "ns": 325290.4925387912, + "ns_low": 324227.4744869544, + "ns_high": 326523.07953254785, "throughput": { "Elements": 1 } @@ -323,9 +327,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "aws-lc-rs", "id": "rustls-full-handshake-key/rsa-2048/aws-lc-rs", - "ns": 774405.4002453081, - "ns_low": 759906.827438105, - "ns_high": 787737.9780313096, + "ns": 758169.1258489729, + "ns_low": 748906.7128805787, + "ns_high": 768853.6772691462, "throughput": { "Elements": 1 } @@ -334,9 +338,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "graviola", "id": "rustls-full-handshake-key/rsa-2048/graviola", - "ns": 713801.2925314024, - "ns_low": 701790.4860801, - "ns_high": 737476.3513032224, + "ns": 687174.6760218708, + "ns_low": 685038.9212033274, + "ns_high": 689585.7953200114, "throughput": { "Elements": 1 } @@ -345,9 +349,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "openssl", "id": "rustls-full-handshake-key/rsa-2048/openssl", - "ns": 1018396.370799468, - "ns_low": 1014890.256654056, - "ns_high": 1022006.5430706064, + "ns": 1011129.0454706665, + "ns_low": 1008925.0907142045, + "ns_high": 1013811.5547350607, "throughput": { "Elements": 1 } @@ -356,9 +360,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "rind", "id": "rustls-full-handshake-key/rsa-2048/rind", - "ns": 809874.5566188857, - "ns_low": 793038.4016127172, - "ns_high": 829472.2888756685, + "ns": 613797.9412501847, + "ns_low": 611789.8802287526, + "ns_high": 615898.9286248796, "throughput": { "Elements": 1 } @@ -367,9 +371,9 @@ "operation": "rustls-full-handshake-key/rsa-2048/{lib}", "library": "ring", "id": "rustls-full-handshake-key/rsa-2048/ring", - "ns": 677817.733400325, - "ns_low": 676511.9985680539, - "ns_high": 679211.20958832, + "ns": 678162.519692626, + "ns_low": 675786.9976574176, + "ns_high": 680899.6973403228, "throughput": { "Elements": 1 } @@ -378,9 +382,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "aws-lc-rs", "id": "rustls-resumed-handshake/x25519/aws-lc-rs", - "ns": 229164.46746564208, - "ns_low": 228574.67749931663, - "ns_high": 230124.5924591941, + "ns": 229388.21694202255, + "ns_low": 228476.10569964102, + "ns_high": 230461.02963641274, "throughput": { "Elements": 1 } @@ -389,9 +393,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "graviola", "id": "rustls-resumed-handshake/x25519/graviola", - "ns": 160194.15086005616, - "ns_low": 158604.53119004084, - "ns_high": 163423.4253326532, + "ns": 159706.19304566277, + "ns_low": 159582.0992572634, + "ns_high": 159870.03575145878, "throughput": { "Elements": 1 } @@ -400,9 +404,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "openssl", "id": "rustls-resumed-handshake/x25519/openssl", - "ns": 504155.82152800355, - "ns_low": 488638.85894144373, - "ns_high": 529772.1429588206, + "ns": 496911.0267090291, + "ns_low": 496578.2138882091, + "ns_high": 497247.7637345219, "throughput": { "Elements": 1 } @@ -411,9 +415,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "rind", "id": "rustls-resumed-handshake/x25519/rind", - "ns": 121780.65321530959, - "ns_low": 121503.0760262816, - "ns_high": 122218.18492752554, + "ns": 120947.39610344318, + "ns_low": 120766.39811148183, + "ns_high": 121196.63491223012, "throughput": { "Elements": 1 } @@ -422,9 +426,9 @@ "operation": "rustls-resumed-handshake/x25519/{lib}", "library": "ring", "id": "rustls-resumed-handshake/x25519/ring", - "ns": 195229.81240800946, - "ns_low": 194912.52096176663, - "ns_high": 195575.30675344905, + "ns": 199881.5350332496, + "ns_low": 197194.57807508044, + "ns_high": 203359.4561017202, "throughput": { "Elements": 1 } @@ -433,9 +437,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes128-gcm/aws-lc-rs", - "ns": 453783.31052608247, - "ns_low": 450933.0417631851, - "ns_high": 457023.1142443939, + "ns": 442543.37513964827, + "ns_low": 441534.6110442641, + "ns_high": 443794.744412213, "throughput": { "Bytes": 1048576 } @@ -444,9 +448,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes128-gcm/graviola", - "ns": 578327.445559332, - "ns_low": 575278.8212192913, - "ns_high": 581981.3102612059, + "ns": 579094.540688636, + "ns_low": 577417.2499237474, + "ns_high": 580965.3741402212, "throughput": { "Bytes": 1048576 } @@ -455,9 +459,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes128-gcm/openssl", - "ns": 496815.2249859613, - "ns_low": 493852.5251424131, - "ns_high": 500281.08381501073, + "ns": 491378.9746298212, + "ns_low": 490328.9731899312, + "ns_high": 492529.72795533517, "throughput": { "Bytes": 1048576 } @@ -466,9 +470,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes128-gcm/rind", - "ns": 433156.30864489434, - "ns_low": 432088.06771600724, - "ns_high": 434287.0338337497, + "ns": 440916.7229244865, + "ns_low": 440128.7565833349, + "ns_high": 441803.94911227655, "throughput": { "Bytes": 1048576 } @@ -477,9 +481,9 @@ "operation": "rustls-bulk/aes128-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes128-gcm/ring", - "ns": 469653.50072114676, - "ns_low": 463884.957693518, - "ns_high": 476717.25440986874, + "ns": 448761.61808039015, + "ns_low": 446003.94256120035, + "ns_high": 452078.91088839166, "throughput": { "Bytes": 1048576 } @@ -488,9 +492,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/aes256-gcm/aws-lc-rs", - "ns": 553288.4098507463, - "ns_low": 551033.526102709, - "ns_high": 555674.3621024621, + "ns": 557856.1804994828, + "ns_low": 554937.6677277776, + "ns_high": 561036.8796494713, "throughput": { "Bytes": 1048576 } @@ -499,9 +503,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "graviola", "id": "rustls-bulk/aes256-gcm/graviola", - "ns": 697287.760836412, - "ns_low": 691919.5488653816, - "ns_high": 703405.4308190598, + "ns": 691175.4626954338, + "ns_low": 689638.0756407981, + "ns_high": 692853.7054040394, "throughput": { "Bytes": 1048576 } @@ -510,9 +514,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "openssl", "id": "rustls-bulk/aes256-gcm/openssl", - "ns": 609963.2024530811, - "ns_low": 605611.7019887335, - "ns_high": 615045.2789591873, + "ns": 596824.6504625388, + "ns_low": 595486.6984300491, + "ns_high": 598373.4911835549, "throughput": { "Bytes": 1048576 } @@ -521,9 +525,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "rind", "id": "rustls-bulk/aes256-gcm/rind", - "ns": 544928.7596379488, - "ns_low": 543100.4645644551, - "ns_high": 547019.4869736026, + "ns": 544875.5101093543, + "ns_low": 543507.1073708447, + "ns_high": 546734.8756885245, "throughput": { "Bytes": 1048576 } @@ -532,9 +536,9 @@ "operation": "rustls-bulk/aes256-gcm/{lib}", "library": "ring", "id": "rustls-bulk/aes256-gcm/ring", - "ns": 544734.7833811142, - "ns_low": 543129.5177243456, - "ns_high": 546424.1825077366, + "ns": 567271.4298847348, + "ns_low": 557320.0921592265, + "ns_high": 579779.4423746158, "throughput": { "Bytes": 1048576 } @@ -543,9 +547,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "aws-lc-rs", "id": "rustls-bulk/chacha20poly1305/aws-lc-rs", - "ns": 932289.6630589626, - "ns_low": 928676.4802749489, - "ns_high": 936063.8418871146, + "ns": 928086.0113994385, + "ns_low": 924292.0569812017, + "ns_high": 932179.7477338277, "throughput": { "Bytes": 1048576 } @@ -554,9 +558,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "graviola", "id": "rustls-bulk/chacha20poly1305/graviola", - "ns": 1643414.4226315788, - "ns_low": 1637244.0703947372, - "ns_high": 1650445.8652500003, + "ns": 1640944.0510526327, + "ns_low": 1635880.5626447373, + "ns_high": 1646427.9888684212, "throughput": { "Bytes": 1048576 } @@ -565,9 +569,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "openssl", "id": "rustls-bulk/chacha20poly1305/openssl", - "ns": 1001303.7036352889, - "ns_low": 998338.7679822134, - "ns_high": 1004471.4719144097, + "ns": 983966.4626097237, + "ns_low": 980734.9899150017, + "ns_high": 987959.0870554261, "throughput": { "Bytes": 1048576 } @@ -576,9 +580,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "rind", "id": "rustls-bulk/chacha20poly1305/rind", - "ns": 924763.9643180139, - "ns_low": 922054.0821592762, - "ns_high": 927815.0188125556, + "ns": 923821.0274331314, + "ns_low": 921890.6055499391, + "ns_high": 925886.4340387469, "throughput": { "Bytes": 1048576 } @@ -587,9 +591,9 @@ "operation": "rustls-bulk/chacha20poly1305/{lib}", "library": "ring", "id": "rustls-bulk/chacha20poly1305/ring", - "ns": 928698.1499069012, - "ns_low": 925283.0328256715, - "ns_high": 932402.5042346533, + "ns": 925138.9174523422, + "ns_low": 922931.9079487565, + "ns_high": 927815.8450877805, "throughput": { "Bytes": 1048576 } @@ -598,9 +602,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/32B", - "ns": 88.67363914185354, - "ns_low": 88.4298047103616, - "ns_high": 88.94625819449755, + "ns": 88.83327042566431, + "ns_low": 88.33217840500335, + "ns_high": 89.39733832945238, "throughput": { "Bytes": 32 } @@ -609,9 +613,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "graviola", "id": "aes128-gcm/graviola/32B", - "ns": 71.60372410472331, - "ns_low": 71.36306259617703, - "ns_high": 71.849730103119, + "ns": 71.39229992693309, + "ns_low": 71.11671539660479, + "ns_high": 71.71118167337475, "throughput": { "Bytes": 32 } @@ -620,9 +624,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "libcrux", "id": "aes128-gcm/libcrux/32B", - "ns": 289.8692722992249, - "ns_low": 282.48301317465047, - "ns_high": 303.86306079090076, + "ns": 281.52643199369265, + "ns_low": 280.79391070441125, + "ns_high": 282.28379335382175, "throughput": { "Bytes": 32 } @@ -631,9 +635,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "openssl", "id": "aes128-gcm/openssl/32B", - "ns": 160.60404074137546, - "ns_low": 160.09968632697758, - "ns_high": 161.1315060483623, + "ns": 156.06502569144425, + "ns_low": 155.44841766495443, + "ns_high": 156.7193622586739, "throughput": { "Bytes": 32 } @@ -642,9 +646,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rind", "id": "aes128-gcm/rind/32B", - "ns": 41.78761100028463, - "ns_low": 41.60035432357583, - "ns_high": 41.98848364310168, + "ns": 43.15916603583141, + "ns_low": 43.03814536307806, + "ns_high": 43.290740481866585, "throughput": { "Bytes": 32 } @@ -653,9 +657,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "ring", "id": "aes128-gcm/ring/32B", - "ns": 71.59456452487287, - "ns_low": 71.14077978673352, - "ns_high": 72.09242977487806, + "ns": 70.7040432637589, + "ns_low": 70.46303196824772, + "ns_high": 70.940031592875, "throughput": { "Bytes": 32 } @@ -664,9 +668,9 @@ "operation": "aes128-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/32B", - "ns": 101.32470140606996, - "ns_low": 100.70097920294626, - "ns_high": 102.06055154264075, + "ns": 100.4982078797696, + "ns_low": 100.28862810899832, + "ns_high": 100.71879955716024, "throughput": { "Bytes": 32 } @@ -675,9 +679,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/1350B", - "ns": 287.32048472803154, - "ns_low": 286.52191204745867, - "ns_high": 288.15045834227715, + "ns": 284.68424193053846, + "ns_low": 284.08501186035346, + "ns_high": 285.30067375582837, "throughput": { "Bytes": 1350 } @@ -686,9 +690,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "graviola", "id": "aes128-gcm/graviola/1350B", - "ns": 403.0557359727898, - "ns_low": 401.22923086568613, - "ns_high": 405.0703043947226, + "ns": 400.38547959209893, + "ns_low": 397.5530887669905, + "ns_high": 403.6913849567068, "throughput": { "Bytes": 1350 } @@ -697,9 +701,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm/libcrux/1350B", - "ns": 3414.786916684249, - "ns_low": 3400.748425055695, - "ns_high": 3430.933042459184, + "ns": 3492.0898421216825, + "ns_low": 3486.3861760528002, + "ns_high": 3498.0526908449788, "throughput": { "Bytes": 1350 } @@ -708,9 +712,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "openssl", "id": "aes128-gcm/openssl/1350B", - "ns": 361.8910750552255, - "ns_low": 361.0706170857197, - "ns_high": 362.85123635839886, + "ns": 352.0939685158669, + "ns_low": 350.92494145227926, + "ns_high": 353.3950015487707, "throughput": { "Bytes": 1350 } @@ -719,9 +723,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rind", "id": "aes128-gcm/rind/1350B", - "ns": 263.61389825539123, - "ns_low": 262.6897764906652, - "ns_high": 264.6328465942491, + "ns": 246.02047383389657, + "ns_low": 245.6093080497851, + "ns_high": 246.46964923296616, "throughput": { "Bytes": 1350 } @@ -730,9 +734,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "ring", "id": "aes128-gcm/ring/1350B", - "ns": 280.3377627550238, - "ns_low": 279.1696032243397, - "ns_high": 281.5707701332249, + "ns": 277.1718537592373, + "ns_low": 276.6487614711701, + "ns_high": 277.7523779963073, "throughput": { "Bytes": 1350 } @@ -741,9 +745,9 @@ "operation": "aes128-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/1350B", - "ns": 555.9186216846597, - "ns_low": 552.7377357501656, - "ns_high": 559.4416501716186, + "ns": 547.3359684291029, + "ns_low": 545.3634656649721, + "ns_high": 549.7280315447495, "throughput": { "Bytes": 1350 } @@ -752,9 +756,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm/aws-lc-rs/16KB", - "ns": 2463.202279605517, - "ns_low": 2424.2598704862125, - "ns_high": 2539.360981660315, + "ns": 2416.7381494140714, + "ns_low": 2408.2438870588035, + "ns_high": 2426.1353950877933, "throughput": { "Bytes": 16384 } @@ -763,9 +767,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "graviola", "id": "aes128-gcm/graviola/16KB", - "ns": 3841.6126074641165, - "ns_low": 3811.674909100523, - "ns_high": 3875.0988015144253, + "ns": 3748.933567012662, + "ns_low": 3738.9930111365206, + "ns_high": 3759.7741722120422, "throughput": { "Bytes": 16384 } @@ -774,9 +778,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm/libcrux/16KB", - "ns": 38500.10885880006, - "ns_low": 38386.912020437056, - "ns_high": 38617.39780577406, + "ns": 39937.145188229646, + "ns_low": 39254.490889173576, + "ns_high": 41279.75270679346, "throughput": { "Bytes": 16384 } @@ -785,9 +789,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "openssl", "id": "aes128-gcm/openssl/16KB", - "ns": 2529.6920190419896, - "ns_low": 2514.1456040699204, - "ns_high": 2547.1571050726284, + "ns": 2454.775241588877, + "ns_low": 2448.309205787895, + "ns_high": 2461.8648680588194, "throughput": { "Bytes": 16384 } @@ -796,9 +800,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rind", "id": "aes128-gcm/rind/16KB", - "ns": 2376.62671001821, - "ns_low": 2359.853633604699, - "ns_high": 2398.41812575356, + "ns": 2334.4852217628627, + "ns_low": 2325.894689099403, + "ns_high": 2344.373354333666, "throughput": { "Bytes": 16384 } @@ -807,9 +811,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "ring", "id": "aes128-gcm/ring/16KB", - "ns": 2376.319090645781, - "ns_low": 2364.9092708481926, - "ns_high": 2388.356379156854, + "ns": 2381.5094958861264, + "ns_low": 2339.200193334403, + "ns_high": 2471.0140942780095, "throughput": { "Bytes": 16384 } @@ -818,9 +822,9 @@ "operation": "aes128-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm/rustcrypto/16KB", - "ns": 5627.255333987637, - "ns_low": 5612.199204350726, - "ns_high": 5645.021191433098, + "ns": 5623.335686184604, + "ns_low": 5600.601237037908, + "ns_high": 5646.589087049538, "throughput": { "Bytes": 16384 } @@ -829,9 +833,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/32B", - "ns": 94.60832752386635, - "ns_low": 94.22836286325737, - "ns_high": 94.97627039260283, + "ns": 90.44863651555588, + "ns_low": 89.69818447843849, + "ns_high": 91.16047624646343, "throughput": { "Bytes": 32 } @@ -840,9 +844,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "graviola", "id": "aes128-gcm-open/graviola/32B", - "ns": 68.37707611743726, - "ns_low": 67.88932874674528, - "ns_high": 69.08958712750261, + "ns": 68.74747100748057, + "ns_low": 68.35881293257181, + "ns_high": 69.17146017609046, "throughput": { "Bytes": 32 } @@ -851,9 +855,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/32B", - "ns": 305.31642620282537, - "ns_low": 303.94861908147743, - "ns_high": 306.7313357121241, + "ns": 303.00757934857927, + "ns_low": 301.8281888805032, + "ns_high": 304.26870872996136, "throughput": { "Bytes": 32 } @@ -862,9 +866,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "openssl", "id": "aes128-gcm-open/openssl/32B", - "ns": 156.43145489515405, - "ns_low": 155.896063557657, - "ns_high": 157.01932377839992, + "ns": 159.2243831881219, + "ns_low": 157.65880185811346, + "ns_high": 161.50432252465225, "throughput": { "Bytes": 32 } @@ -873,9 +877,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rind", "id": "aes128-gcm-open/rind/32B", - "ns": 50.04223102623787, - "ns_low": 49.88689836859853, - "ns_high": 50.2113629547978, + "ns": 37.590314557027845, + "ns_low": 37.42526542991206, + "ns_high": 37.792445453177656, "throughput": { "Bytes": 32 } @@ -884,9 +888,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "ring", "id": "aes128-gcm-open/ring/32B", - "ns": 78.86952935281919, - "ns_low": 78.64049972503653, - "ns_high": 79.12324296938962, + "ns": 97.70471186585438, + "ns_low": 92.08058583362818, + "ns_high": 103.02915885735047, "throughput": { "Bytes": 32 } @@ -895,9 +899,9 @@ "operation": "aes128-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/32B", - "ns": 105.82493742455691, - "ns_low": 105.36539858220738, - "ns_high": 106.33967541168941, + "ns": 104.37543397661548, + "ns_low": 104.19695191678164, + "ns_high": 104.57554381875697, "throughput": { "Bytes": 32 } @@ -906,9 +910,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/1350B", - "ns": 297.24032250859284, - "ns_low": 295.5391924475918, - "ns_high": 299.1530007148443, + "ns": 284.9516256937142, + "ns_low": 283.7936944192333, + "ns_high": 286.099053988356, "throughput": { "Bytes": 1350 } @@ -917,9 +921,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes128-gcm-open/graviola/1350B", - "ns": 362.0251990441786, - "ns_low": 360.47584254454046, - "ns_high": 364.06557560712827, + "ns": 357.8160965877298, + "ns_low": 356.9545780245243, + "ns_high": 358.83636238019716, "throughput": { "Bytes": 1350 } @@ -928,9 +932,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes128-gcm-open/libcrux/1350B", - "ns": 3625.0210586456956, - "ns_low": 3582.669953070071, - "ns_high": 3669.299322507932, + "ns": 3483.286123434034, + "ns_low": 3475.405136900345, + "ns_high": 3492.237268604769, "throughput": { "Bytes": 1350 } @@ -939,9 +943,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes128-gcm-open/openssl/1350B", - "ns": 360.1208141479626, - "ns_low": 358.8311036511023, - "ns_high": 361.41092517178043, + "ns": 354.91888911958904, + "ns_low": 353.5081279080624, + "ns_high": 356.55697721392266, "throughput": { "Bytes": 1350 } @@ -950,9 +954,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rind", "id": "aes128-gcm-open/rind/1350B", - "ns": 260.68189491765946, - "ns_low": 259.9094903400997, - "ns_high": 261.5412993216788, + "ns": 236.2276564130137, + "ns_low": 235.73312698591317, + "ns_high": 236.76759574462085, "throughput": { "Bytes": 1350 } @@ -961,9 +965,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "ring", "id": "aes128-gcm-open/ring/1350B", - "ns": 278.23659191003856, - "ns_low": 276.38151040639855, - "ns_high": 280.470174131321, + "ns": 295.7258335667299, + "ns_low": 289.933581075931, + "ns_high": 301.3026802158338, "throughput": { "Bytes": 1350 } @@ -972,9 +976,9 @@ "operation": "aes128-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/1350B", - "ns": 569.246548686477, - "ns_low": 566.9928170202852, - "ns_high": 571.7123863623383, + "ns": 564.0055590551492, + "ns_low": 562.392410456444, + "ns_high": 565.6729939728369, "throughput": { "Bytes": 1350 } @@ -983,9 +987,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes128-gcm-open/aws-lc-rs/16KB", - "ns": 2630.447017809283, - "ns_low": 2619.4675442047787, - "ns_high": 2644.8518685428867, + "ns": 2604.2619170092726, + "ns_low": 2596.867156152806, + "ns_high": 2612.9060065547833, "throughput": { "Bytes": 16384 } @@ -994,9 +998,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes128-gcm-open/graviola/16KB", - "ns": 3414.5296412136877, - "ns_low": 3387.013985052355, - "ns_high": 3444.4378603443542, + "ns": 3385.5325872066082, + "ns_low": 3366.3321500574266, + "ns_high": 3407.8338130863413, "throughput": { "Bytes": 16384 } @@ -1005,9 +1009,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes128-gcm-open/libcrux/16KB", - "ns": 39834.49703344663, - "ns_low": 39657.76385250246, - "ns_high": 40037.315668089155, + "ns": 41659.90766598408, + "ns_low": 41595.89507278214, + "ns_high": 41732.18047025731, "throughput": { "Bytes": 16384 } @@ -1016,9 +1020,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes128-gcm-open/openssl/16KB", - "ns": 2704.6079204071743, - "ns_low": 2693.9530315958073, - "ns_high": 2715.5639283390497, + "ns": 2850.8591319399025, + "ns_low": 2840.779699470902, + "ns_high": 2867.0564410235884, "throughput": { "Bytes": 16384 } @@ -1027,9 +1031,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rind", "id": "aes128-gcm-open/rind/16KB", - "ns": 2581.4652689586933, - "ns_low": 2570.328268298179, - "ns_high": 2593.051417550374, + "ns": 2521.71659881339, + "ns_low": 2515.8391732889413, + "ns_high": 2528.279197831402, "throughput": { "Bytes": 16384 } @@ -1038,9 +1042,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "ring", "id": "aes128-gcm-open/ring/16KB", - "ns": 2591.93824719629, - "ns_low": 2583.879416123783, - "ns_high": 2600.835556095885, + "ns": 2622.3920016863094, + "ns_low": 2609.901305929885, + "ns_high": 2634.891906333996, "throughput": { "Bytes": 16384 } @@ -1049,9 +1053,9 @@ "operation": "aes128-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes128-gcm-open/rustcrypto/16KB", - "ns": 5805.47890390795, - "ns_low": 5774.735425437309, - "ns_high": 5845.583721387536, + "ns": 5754.303026968398, + "ns_low": 5735.435861587873, + "ns_high": 5775.759386609319, "throughput": { "Bytes": 16384 } @@ -1060,9 +1064,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/32B", - "ns": 95.52961002849034, - "ns_low": 94.9863438933371, - "ns_high": 96.10828947490889, + "ns": 95.44827078228063, + "ns_low": 95.01046460422305, + "ns_high": 95.91949367664574, "throughput": { "Bytes": 32 } @@ -1071,9 +1075,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "graviola", "id": "aes256-gcm/graviola/32B", - "ns": 79.56305379752429, - "ns_low": 78.32004740837979, - "ns_high": 81.86497785706656, + "ns": 77.57315444586634, + "ns_low": 77.39966233380916, + "ns_high": 77.76358017039348, "throughput": { "Bytes": 32 } @@ -1082,9 +1086,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "libcrux", "id": "aes256-gcm/libcrux/32B", - "ns": 343.4167020878584, - "ns_low": 342.32628821785215, - "ns_high": 344.58039857972966, + "ns": 344.01966521589213, + "ns_low": 342.4474149936736, + "ns_high": 345.68712647903186, "throughput": { "Bytes": 32 } @@ -1093,9 +1097,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "openssl", "id": "aes256-gcm/openssl/32B", - "ns": 166.66019027249365, - "ns_low": 166.09097170139276, - "ns_high": 167.29153002378428, + "ns": 161.41125198066726, + "ns_low": 161.04417158516043, + "ns_high": 161.8017514123351, "throughput": { "Bytes": 32 } @@ -1104,9 +1108,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rind", "id": "aes256-gcm/rind/32B", - "ns": 46.31554835146886, - "ns_low": 46.1787992489514, - "ns_high": 46.46558176862119, + "ns": 48.63219847214221, + "ns_low": 47.60385625222069, + "ns_high": 50.62947078361609, "throughput": { "Bytes": 32 } @@ -1115,9 +1119,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "ring", "id": "aes256-gcm/ring/32B", - "ns": 75.945571613284, - "ns_low": 75.3454530698473, - "ns_high": 76.6573306239081, + "ns": 74.78119421202508, + "ns_low": 74.42095580969979, + "ns_high": 75.18849770061409, "throughput": { "Bytes": 32 } @@ -1126,9 +1130,9 @@ "operation": "aes256-gcm/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/32B", - "ns": 108.91000714318304, - "ns_low": 108.19066229963639, - "ns_high": 109.71687378745939, + "ns": 107.45554697088258, + "ns_low": 107.19563133475411, + "ns_high": 107.75766257829173, "throughput": { "Bytes": 32 } @@ -1137,9 +1141,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/1350B", - "ns": 364.22010305482377, - "ns_low": 363.037840140749, - "ns_high": 365.53259789411345, + "ns": 363.113571055371, + "ns_low": 361.844811713898, + "ns_high": 364.4135375551082, "throughput": { "Bytes": 1350 } @@ -1148,9 +1152,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "graviola", "id": "aes256-gcm/graviola/1350B", - "ns": 484.636521991863, - "ns_low": 482.8256252375646, - "ns_high": 486.55487395571936, + "ns": 475.94126445667405, + "ns_low": 475.0104115804284, + "ns_high": 476.9846412310538, "throughput": { "Bytes": 1350 } @@ -1159,9 +1163,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm/libcrux/1350B", - "ns": 4486.400944615596, - "ns_low": 4465.87515765084, - "ns_high": 4508.578649935479, + "ns": 4504.816530396635, + "ns_low": 4486.584979285953, + "ns_high": 4523.852125494817, "throughput": { "Bytes": 1350 } @@ -1170,9 +1174,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "openssl", "id": "aes256-gcm/openssl/1350B", - "ns": 438.19551577943133, - "ns_low": 435.62359073338274, - "ns_high": 440.88475408354697, + "ns": 437.1249104404831, + "ns_low": 433.6099019470326, + "ns_high": 440.63392250830157, "throughput": { "Bytes": 1350 } @@ -1181,9 +1185,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rind", "id": "aes256-gcm/rind/1350B", - "ns": 343.42329340973777, - "ns_low": 339.21812780312433, - "ns_high": 349.59246502338374, + "ns": 325.04493553587355, + "ns_low": 324.01534832906134, + "ns_high": 326.20332187538907, "throughput": { "Bytes": 1350 } @@ -1192,9 +1196,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "ring", "id": "aes256-gcm/ring/1350B", - "ns": 355.8259103133224, - "ns_low": 354.7154681353887, - "ns_high": 356.99747561204754, + "ns": 352.67454892576404, + "ns_low": 351.5771616915786, + "ns_high": 353.8419165161836, "throughput": { "Bytes": 1350 } @@ -1203,9 +1207,9 @@ "operation": "aes256-gcm/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/1350B", - "ns": 647.7879609708285, - "ns_low": 636.7256664693288, - "ns_high": 667.7953661060027, + "ns": 622.7591667492841, + "ns_low": 621.612679054169, + "ns_high": 623.9773497871034, "throughput": { "Bytes": 1350 } @@ -1214,9 +1218,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm/aws-lc-rs/16KB", - "ns": 3317.555689185028, - "ns_low": 3303.1257753300697, - "ns_high": 3333.8079483303427, + "ns": 3303.462180270266, + "ns_low": 3292.51310081458, + "ns_high": 3315.999412278748, "throughput": { "Bytes": 16384 } @@ -1225,9 +1229,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "graviola", "id": "aes256-gcm/graviola/16KB", - "ns": 4717.731033698739, - "ns_low": 4690.243199461655, - "ns_high": 4748.379360419064, + "ns": 4711.296547329873, + "ns_low": 4660.963269349535, + "ns_high": 4801.347474407965, "throughput": { "Bytes": 16384 } @@ -1236,9 +1240,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm/libcrux/16KB", - "ns": 50785.99794763805, - "ns_low": 50250.95021932573, - "ns_high": 51575.187822272244, + "ns": 50915.71126249938, + "ns_low": 50786.25935238136, + "ns_high": 51046.73498102169, "throughput": { "Bytes": 16384 } @@ -1247,9 +1251,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "openssl", "id": "aes256-gcm/openssl/16KB", - "ns": 3350.8383826462587, - "ns_low": 3340.691469570783, - "ns_high": 3362.192304364943, + "ns": 3337.0739383617342, + "ns_low": 3324.29433799747, + "ns_high": 3352.913363325746, "throughput": { "Bytes": 16384 } @@ -1258,9 +1262,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rind", "id": "aes256-gcm/rind/16KB", - "ns": 3242.956303798167, - "ns_low": 3229.8724343259296, - "ns_high": 3256.800140584378, + "ns": 3220.4592698100114, + "ns_low": 3208.0852447730776, + "ns_high": 3237.728146898859, "throughput": { "Bytes": 16384 } @@ -1269,9 +1273,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "ring", "id": "aes256-gcm/ring/16KB", - "ns": 3250.3921243851464, - "ns_low": 3238.545185253972, - "ns_high": 3264.043204871463, + "ns": 3246.581706692654, + "ns_low": 3233.4685244832644, + "ns_high": 3260.9642205158425, "throughput": { "Bytes": 16384 } @@ -1280,9 +1284,9 @@ "operation": "aes256-gcm/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm/rustcrypto/16KB", - "ns": 6544.099808345933, - "ns_low": 6518.840029491288, - "ns_high": 6572.040062136083, + "ns": 6449.11698026227, + "ns_low": 6426.334191762708, + "ns_high": 6474.663399639895, "throughput": { "Bytes": 16384 } @@ -1291,9 +1295,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/32B", - "ns": 104.03235832937412, - "ns_low": 102.93224003693965, - "ns_high": 105.12188651664712, + "ns": 101.12041459432034, + "ns_low": 100.30499866548406, + "ns_high": 101.88359704375365, "throughput": { "Bytes": 32 } @@ -1302,9 +1306,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "graviola", "id": "aes256-gcm-open/graviola/32B", - "ns": 78.82173777311414, - "ns_low": 77.93439426784926, - "ns_high": 79.9299026028847, + "ns": 73.13440095495224, + "ns_low": 73.03275913611184, + "ns_high": 73.24584482474548, "throughput": { "Bytes": 32 } @@ -1313,9 +1317,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/32B", - "ns": 384.76169128216213, - "ns_low": 384.4144351087439, - "ns_high": 385.17764060056504, + "ns": 363.1440317607148, + "ns_low": 361.63861430324255, + "ns_high": 364.88298366923647, "throughput": { "Bytes": 32 } @@ -1324,9 +1328,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "openssl", "id": "aes256-gcm-open/openssl/32B", - "ns": 173.36439957252318, - "ns_low": 170.80499334225132, - "ns_high": 177.14550889558765, + "ns": 171.94263610430872, + "ns_low": 171.74527308533948, + "ns_high": 172.13385520128114, "throughput": { "Bytes": 32 } @@ -1335,9 +1339,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rind", "id": "aes256-gcm-open/rind/32B", - "ns": 56.89508237129598, - "ns_low": 56.53546595939787, - "ns_high": 57.30445726655106, + "ns": 44.725274668504085, + "ns_low": 44.57301117854429, + "ns_high": 44.90355314183152, "throughput": { "Bytes": 32 } @@ -1346,9 +1350,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "ring", "id": "aes256-gcm-open/ring/32B", - "ns": 82.72497534233678, - "ns_low": 82.34517644853554, - "ns_high": 83.2202222692008, + "ns": 106.71272146833994, + "ns_low": 100.78380247785819, + "ns_high": 112.27648007522464, "throughput": { "Bytes": 32 } @@ -1357,9 +1361,9 @@ "operation": "aes256-gcm-open/{lib}/32B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/32B", - "ns": 118.12461985305116, - "ns_low": 117.94476067501539, - "ns_high": 118.30423176982116, + "ns": 118.42872126751844, + "ns_low": 118.35182626591835, + "ns_high": 118.5181221443991, "throughput": { "Bytes": 32 } @@ -1368,9 +1372,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/1350B", - "ns": 390.7213265314006, - "ns_low": 390.09987731376896, - "ns_high": 391.38696469511444, + "ns": 422.1055273105423, + "ns_low": 411.4069339852935, + "ns_high": 434.1974213277449, "throughput": { "Bytes": 1350 } @@ -1379,9 +1383,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "graviola", "id": "aes256-gcm-open/graviola/1350B", - "ns": 455.9093292312274, - "ns_low": 451.23106444441436, - "ns_high": 460.8923766626434, + "ns": 510.48601034482846, + "ns_low": 503.2834241592243, + "ns_high": 517.6789071647361, "throughput": { "Bytes": 1350 } @@ -1390,9 +1394,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "libcrux", "id": "aes256-gcm-open/libcrux/1350B", - "ns": 4545.371602384119, - "ns_low": 4511.237523708473, - "ns_high": 4584.891947922049, + "ns": 4739.299394141973, + "ns_low": 4730.877053414544, + "ns_high": 4750.472059615844, "throughput": { "Bytes": 1350 } @@ -1401,9 +1405,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "openssl", "id": "aes256-gcm-open/openssl/1350B", - "ns": 435.73468308942404, - "ns_low": 432.38444229435333, - "ns_high": 439.6115442055576, + "ns": 642.5886357604636, + "ns_low": 604.9600990782853, + "ns_high": 679.891937211804, "throughput": { "Bytes": 1350 } @@ -1412,9 +1416,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rind", "id": "aes256-gcm-open/rind/1350B", - "ns": 351.2514189164138, - "ns_low": 350.315013828366, - "ns_high": 352.2023929317074, + "ns": 327.8596975138281, + "ns_low": 326.52123677448, + "ns_high": 330.2139408566171, "throughput": { "Bytes": 1350 } @@ -1423,9 +1427,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "ring", "id": "aes256-gcm-open/ring/1350B", - "ns": 371.2931695774665, - "ns_low": 370.2849293416616, - "ns_high": 372.4672688836341, + "ns": 388.39259220860316, + "ns_low": 382.83453940755436, + "ns_high": 393.6228173892011, "throughput": { "Bytes": 1350 } @@ -1434,9 +1438,9 @@ "operation": "aes256-gcm-open/{lib}/1350B", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/1350B", - "ns": 671.9458713080011, - "ns_low": 668.9524412403688, - "ns_high": 675.0055317479317, + "ns": 676.9219616566731, + "ns_low": 676.6794304675904, + "ns_high": 677.2072927534178, "throughput": { "Bytes": 1350 } @@ -1445,9 +1449,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "aws-lc-rs", "id": "aes256-gcm-open/aws-lc-rs/16KB", - "ns": 3559.664093045626, - "ns_low": 3545.1434209764866, - "ns_high": 3575.63261783979, + "ns": 3689.161510288787, + "ns_low": 3677.4964185470267, + "ns_high": 3702.6395043722064, "throughput": { "Bytes": 16384 } @@ -1456,9 +1460,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "graviola", "id": "aes256-gcm-open/graviola/16KB", - "ns": 4375.54974965456, - "ns_low": 4344.454119793469, - "ns_high": 4411.460742836169, + "ns": 4535.667910134297, + "ns_low": 4518.522956006165, + "ns_high": 4559.102490898482, "throughput": { "Bytes": 16384 } @@ -1467,9 +1471,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "libcrux", "id": "aes256-gcm-open/libcrux/16KB", - "ns": 50891.12208216344, - "ns_low": 50683.000721384145, - "ns_high": 51117.39745884737, + "ns": 53964.11256859268, + "ns_low": 53810.05518695461, + "ns_high": 54144.73662334264, "throughput": { "Bytes": 16384 } @@ -1478,9 +1482,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "openssl", "id": "aes256-gcm-open/openssl/16KB", - "ns": 3639.0452896500265, - "ns_low": 3615.9101399623796, - "ns_high": 3666.435322663868, + "ns": 3869.7079673321573, + "ns_low": 3791.8617258091467, + "ns_high": 3974.963844356966, "throughput": { "Bytes": 16384 } @@ -1489,9 +1493,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rind", "id": "aes256-gcm-open/rind/16KB", - "ns": 3581.398087180786, - "ns_low": 3541.025675604046, - "ns_high": 3630.903762246563, + "ns": 3619.9346652513814, + "ns_low": 3609.102207519257, + "ns_high": 3635.057943027387, "throughput": { "Bytes": 16384 } @@ -1500,9 +1504,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "ring", "id": "aes256-gcm-open/ring/16KB", - "ns": 3587.391746058188, - "ns_low": 3561.3938662050145, - "ns_high": 3615.745237031176, + "ns": 3696.405337722827, + "ns_low": 3689.0651235165296, + "ns_high": 3703.3040119704615, "throughput": { "Bytes": 16384 } @@ -1511,9 +1515,9 @@ "operation": "aes256-gcm-open/{lib}/16KB", "library": "rustcrypto", "id": "aes256-gcm-open/rustcrypto/16KB", - "ns": 6765.887031617341, - "ns_low": 6725.081399318112, - "ns_high": 6813.9925124359725, + "ns": 7228.291771578484, + "ns_low": 7152.902188709869, + "ns_high": 7313.3729988047535, "throughput": { "Bytes": 16384 } @@ -1522,9 +1526,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/32B", - "ns": 140.65993102346624, - "ns_low": 139.062218561378, - "ns_high": 142.4398202272688, + "ns": 148.63147552409362, + "ns_low": 145.37814038173815, + "ns_high": 152.1100015559166, "throughput": { "Bytes": 32 } @@ -1533,9 +1537,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "graviola", "id": "chacha20poly1305/graviola/32B", - "ns": 221.9450951024113, - "ns_low": 220.990750042211, - "ns_high": 223.03090235110645, + "ns": 231.63900936971268, + "ns_low": 230.77846364602075, + "ns_high": 232.6545301589238, "throughput": { "Bytes": 32 } @@ -1544,9 +1548,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "libcrux", "id": "chacha20poly1305/libcrux/32B", - "ns": 274.1939250383108, - "ns_low": 273.24766279012647, - "ns_high": 275.21364829530995, + "ns": 300.8272717631575, + "ns_low": 292.6115839530005, + "ns_high": 310.2328912437702, "throughput": { "Bytes": 32 } @@ -1555,9 +1559,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "openssl", "id": "chacha20poly1305/openssl/32B", - "ns": 324.81623545444023, - "ns_low": 322.3880757335701, - "ns_high": 327.6728822778462, + "ns": 336.90928445056835, + "ns_low": 335.62917924733864, + "ns_high": 338.5536823527718, "throughput": { "Bytes": 32 } @@ -1566,9 +1570,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rind", "id": "chacha20poly1305/rind/32B", - "ns": 123.94690591731856, - "ns_low": 123.37542015159032, - "ns_high": 124.59499465517742, + "ns": 128.96209926130035, + "ns_low": 128.48966807614698, + "ns_high": 129.44095316305732, "throughput": { "Bytes": 32 } @@ -1577,9 +1581,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "ring", "id": "chacha20poly1305/ring/32B", - "ns": 129.91089879524174, - "ns_low": 129.01953324004768, - "ns_high": 130.85712336530983, + "ns": 129.94495030141425, + "ns_low": 129.8802611657183, + "ns_high": 130.0262570276936, "throughput": { "Bytes": 32 } @@ -1588,9 +1592,9 @@ "operation": "chacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/32B", - "ns": 1160.6181416402203, - "ns_low": 1154.258965950135, - "ns_high": 1168.0937950038635, + "ns": 1207.8771714653647, + "ns_low": 1204.8849694462567, + "ns_high": 1211.9952864614702, "throughput": { "Bytes": 32 } @@ -1599,9 +1603,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/1350B", - "ns": 700.2503119368668, - "ns_low": 695.8009087147067, - "ns_high": 704.8779006306358, + "ns": 754.9897416693576, + "ns_low": 745.7215654274958, + "ns_high": 763.7054578950314, "throughput": { "Bytes": 1350 } @@ -1610,9 +1614,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "graviola", "id": "chacha20poly1305/graviola/1350B", - "ns": 1240.989726397135, - "ns_low": 1230.923947458374, - "ns_high": 1255.1792066143335, + "ns": 1292.5933725896593, + "ns_low": 1289.9889723000306, + "ns_high": 1295.458799789916, "throughput": { "Bytes": 1350 } @@ -1621,9 +1625,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "chacha20poly1305/libcrux/1350B", - "ns": 3077.8573752245206, - "ns_low": 3054.3188838929314, - "ns_high": 3103.421893916002, + "ns": 3162.701615269974, + "ns_low": 3161.273130619428, + "ns_high": 3164.3591407436866, "throughput": { "Bytes": 1350 } @@ -1632,9 +1636,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "openssl", "id": "chacha20poly1305/openssl/1350B", - "ns": 932.8812168612384, - "ns_low": 929.2798739816603, - "ns_high": 936.5108788032366, + "ns": 970.6054980099502, + "ns_low": 969.3737061118774, + "ns_high": 972.0200428893035, "throughput": { "Bytes": 1350 } @@ -1643,9 +1647,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rind", "id": "chacha20poly1305/rind/1350B", - "ns": 691.127432014084, - "ns_low": 686.9816870258634, - "ns_high": 696.0314185483634, + "ns": 717.8718362847072, + "ns_low": 715.1254409843147, + "ns_high": 721.3997503210396, "throughput": { "Bytes": 1350 } @@ -1654,9 +1658,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "ring", "id": "chacha20poly1305/ring/1350B", - "ns": 685.5015571424221, - "ns_low": 682.1761383007916, - "ns_high": 689.0943733214453, + "ns": 714.3390966733064, + "ns_low": 713.2750110399159, + "ns_high": 715.3370070257779, "throughput": { "Bytes": 1350 } @@ -1665,9 +1669,9 @@ "operation": "chacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/1350B", - "ns": 2082.650527256282, - "ns_low": 2075.0910269672636, - "ns_high": 2090.7411097954646, + "ns": 2181.462194663496, + "ns_low": 2176.1525447033323, + "ns_high": 2188.5126383012657, "throughput": { "Bytes": 1350 } @@ -1676,9 +1680,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "chacha20poly1305/aws-lc-rs/16KB", - "ns": 6426.817616833325, - "ns_low": 6399.949208977157, - "ns_high": 6455.2658131364215, + "ns": 6625.198292465067, + "ns_low": 6613.680212990662, + "ns_high": 6637.256022631995, "throughput": { "Bytes": 16384 } @@ -1687,9 +1691,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "graviola", "id": "chacha20poly1305/graviola/16KB", - "ns": 11976.600841436382, - "ns_low": 11916.67531983157, - "ns_high": 12045.555486485078, + "ns": 12516.052884032806, + "ns_low": 12482.933884187913, + "ns_high": 12553.630244430182, "throughput": { "Bytes": 16384 } @@ -1698,9 +1702,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "chacha20poly1305/libcrux/16KB", - "ns": 34699.60178135724, - "ns_low": 34450.97461787205, - "ns_high": 34942.08165906272, + "ns": 35521.47046879754, + "ns_low": 35470.5241290395, + "ns_high": 35605.290408689856, "throughput": { "Bytes": 16384 } @@ -1709,9 +1713,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "openssl", "id": "chacha20poly1305/openssl/16KB", - "ns": 6412.923443662017, - "ns_low": 6382.856741044292, - "ns_high": 6447.329963453893, + "ns": 6639.492579675878, + "ns_low": 6638.819767980468, + "ns_high": 6640.206912551728, "throughput": { "Bytes": 16384 } @@ -1720,9 +1724,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rind", "id": "chacha20poly1305/rind/16KB", - "ns": 6353.524840568794, - "ns_low": 6324.317602835327, - "ns_high": 6385.017397781878, + "ns": 6805.886873589515, + "ns_low": 6759.388394147063, + "ns_high": 6859.244356153432, "throughput": { "Bytes": 16384 } @@ -1731,9 +1735,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "ring", "id": "chacha20poly1305/ring/16KB", - "ns": 6386.48361967605, - "ns_low": 6353.625582988056, - "ns_high": 6429.2899965060915, + "ns": 6602.157467842307, + "ns_low": 6595.051939832477, + "ns_high": 6612.673892275461, "throughput": { "Bytes": 16384 } @@ -1742,9 +1746,9 @@ "operation": "chacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "chacha20poly1305/rustcrypto/16KB", - "ns": 12379.403229839889, - "ns_low": 12253.80880571013, - "ns_high": 12524.637292553001, + "ns": 12605.006180697888, + "ns_low": 12596.29993909405, + "ns_high": 12616.960296401861, "throughput": { "Bytes": 16384 } @@ -1753,9 +1757,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/32B", - "ns": 282.35453273728024, - "ns_low": 281.1304656670941, - "ns_high": 283.6999949596867, + "ns": 278.28470484591514, + "ns_low": 277.54897389894586, + "ns_high": 279.12013247245903, "throughput": { "Bytes": 32 } @@ -1764,9 +1768,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "graviola", "id": "xchacha20poly1305/graviola/32B", - "ns": 335.17028954182734, - "ns_low": 334.38993883011847, - "ns_high": 336.03837531070087, + "ns": 335.1466011685066, + "ns_low": 334.14172244988254, + "ns_high": 336.2041270584898, "throughput": { "Bytes": 32 } @@ -1775,9 +1779,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/32B", - "ns": 400.0560167676872, - "ns_low": 399.06675139076526, - "ns_high": 401.15775814005826, + "ns": 399.6099014667957, + "ns_low": 398.27335491867564, + "ns_high": 401.0265881111463, "throughput": { "Bytes": 32 } @@ -1786,9 +1790,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rind", "id": "xchacha20poly1305/rind/32B", - "ns": 270.24821452844935, - "ns_low": 266.227316564328, - "ns_high": 277.12176883242324, + "ns": 255.94624358839874, + "ns_low": 255.13508306031403, + "ns_high": 256.8693273908057, "throughput": { "Bytes": 32 } @@ -1797,9 +1801,9 @@ "operation": "xchacha20poly1305/{lib}/32B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/32B", - "ns": 1275.2416386096668, - "ns_low": 1270.606135604524, - "ns_high": 1281.0190835265469, + "ns": 1267.7367906342872, + "ns_low": 1265.0493707855194, + "ns_high": 1270.9258106967966, "throughput": { "Bytes": 32 } @@ -1808,9 +1812,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/1350B", - "ns": 838.900202658268, - "ns_low": 835.057267043867, - "ns_high": 842.8455971296725, + "ns": 830.9307912291324, + "ns_low": 829.0106130686012, + "ns_high": 832.997354208218, "throughput": { "Bytes": 1350 } @@ -1819,9 +1823,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "graviola", "id": "xchacha20poly1305/graviola/1350B", - "ns": 1370.7115681426956, - "ns_low": 1357.5617239939907, - "ns_high": 1386.1650701624435, + "ns": 1320.741652254377, + "ns_low": 1317.6840315910886, + "ns_high": 1324.2154222782967, "throughput": { "Bytes": 1350 } @@ -1830,9 +1834,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "libcrux", "id": "xchacha20poly1305/libcrux/1350B", - "ns": 3121.3329479439694, - "ns_low": 3112.928410857636, - "ns_high": 3131.157001219503, + "ns": 3155.0801652135365, + "ns_low": 3104.041565774806, + "ns_high": 3261.879276399943, "throughput": { "Bytes": 1350 } @@ -1841,9 +1845,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rind", "id": "xchacha20poly1305/rind/1350B", - "ns": 813.5260060755057, - "ns_low": 811.5859706284837, - "ns_high": 815.718489107274, + "ns": 804.1029905808001, + "ns_low": 802.8623243349692, + "ns_high": 805.4527811570499, "throughput": { "Bytes": 1350 } @@ -1852,9 +1856,9 @@ "operation": "xchacha20poly1305/{lib}/1350B", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/1350B", - "ns": 2203.2767772312936, - "ns_low": 2195.3504779734126, - "ns_high": 2212.702171239942, + "ns": 2199.2737054088734, + "ns_low": 2190.2970738636827, + "ns_high": 2209.235173191251, "throughput": { "Bytes": 1350 } @@ -1863,9 +1867,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "aws-lc-rs", "id": "xchacha20poly1305/aws-lc-rs/16KB", - "ns": 6552.982272376816, - "ns_low": 6506.979270261526, - "ns_high": 6602.3453462308335, + "ns": 6437.390913112496, + "ns_low": 6423.616181078956, + "ns_high": 6452.680436409387, "throughput": { "Bytes": 16384 } @@ -1874,9 +1878,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "graviola", "id": "xchacha20poly1305/graviola/16KB", - "ns": 11956.140740062066, - "ns_low": 11917.65601029934, - "ns_high": 11996.614047415611, + "ns": 11862.735729037979, + "ns_low": 11815.677825820834, + "ns_high": 11919.105348371437, "throughput": { "Bytes": 16384 } @@ -1885,9 +1889,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "libcrux", "id": "xchacha20poly1305/libcrux/16KB", - "ns": 34021.09154376631, - "ns_low": 33794.819934321065, - "ns_high": 34251.72489223447, + "ns": 33416.4320580267, + "ns_low": 33330.65798425228, + "ns_high": 33517.45538555564, "throughput": { "Bytes": 16384 } @@ -1896,9 +1900,9 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rind", "id": "xchacha20poly1305/rind/16KB", - "ns": 6514.270030573207, - "ns_low": 6481.07743873198, - "ns_high": 6546.968657915127, + "ns": 6384.978947677873, + "ns_low": 6373.401170882036, + "ns_high": 6397.994178687357, "throughput": { "Bytes": 16384 } @@ -1907,20 +1911,101 @@ "operation": "xchacha20poly1305/{lib}/16KB", "library": "rustcrypto", "id": "xchacha20poly1305/rustcrypto/16KB", - "ns": 12106.48201313095, - "ns_low": 12055.274696381875, - "ns_high": 12170.517578621837, + "ns": 12036.394600265996, + "ns_low": 12011.942473485433, + "ns_high": 12061.511822861234, "throughput": { "Bytes": 16384 } }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes128/aws-lc-rs", + "ns": 9.219408573416422, + "ns_low": 8.529470633102452, + "ns_high": 9.94828404279021, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "rind", + "id": "quic-header-protection/aes128/rind", + "ns": 4.729494382784615, + "ns_low": 4.727184884847143, + "ns_high": 4.7319975059230455, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "ring", + "id": "quic-header-protection/aes128/ring", + "ns": 8.193595624671879, + "ns_low": 8.170184661645273, + "ns_high": 8.221370885031094, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes256/aws-lc-rs", + "ns": 10.151336870963895, + "ns_low": 10.125308583294496, + "ns_high": 10.175924342186876, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "rind", + "id": "quic-header-protection/aes256/rind", + "ns": 8.08945475590564, + "ns_low": 7.690289973505486, + "ns_high": 8.55004221905935, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "ring", + "id": "quic-header-protection/aes256/ring", + "ns": 10.017631695580917, + "ns_low": 10.004678917452084, + "ns_high": 10.03684042960934, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/chacha20/aws-lc-rs", + "ns": 104.426557878368, + "ns_low": 104.20736868155768, + "ns_high": 104.73528447020638, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "rind", + "id": "quic-header-protection/chacha20/rind", + "ns": 84.13623177961884, + "ns_low": 83.91308806383365, + "ns_high": 84.43675759542667, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "ring", + "id": "quic-header-protection/chacha20/ring", + "ns": 98.10733701442578, + "ns_low": 96.59199160177789, + "ns_high": 99.5541074268943, + "throughput": null + }, { "operation": "x25519-ecdh/{lib}", "library": "aws-lc-rs", "id": "x25519-ecdh/aws-lc-rs", - "ns": 33122.00157498075, - "ns_low": 33011.61057075439, - "ns_high": 33217.28509773265, + "ns": 30892.438580728456, + "ns_low": 30788.853268018534, + "ns_high": 31007.794917524017, "throughput": { "Elements": 1 } @@ -1929,9 +2014,9 @@ "operation": "x25519-ecdh/{lib}", "library": "graviola", "id": "x25519-ecdh/graviola", - "ns": 25174.50702342249, - "ns_low": 25044.20770241921, - "ns_high": 25337.618513088513, + "ns": 24951.826177774496, + "ns_low": 24905.883230893636, + "ns_high": 25003.140311978183, "throughput": { "Elements": 1 } @@ -1940,9 +2025,9 @@ "operation": "x25519-ecdh/{lib}", "library": "libcrux", "id": "x25519-ecdh/libcrux", - "ns": 73491.7733635453, - "ns_low": 73063.73405783938, - "ns_high": 73972.10686552494, + "ns": 72344.68323596539, + "ns_low": 72216.77049549005, + "ns_high": 72483.32626092825, "throughput": { "Elements": 1 } @@ -1951,9 +2036,9 @@ "operation": "x25519-ecdh/{lib}", "library": "openssl", "id": "x25519-ecdh/openssl", - "ns": 55222.854674960035, - "ns_low": 55029.64882890607, - "ns_high": 55437.45062463163, + "ns": 55201.871736905036, + "ns_low": 54979.953781402175, + "ns_high": 55443.829786517264, "throughput": { "Elements": 1 } @@ -1962,9 +2047,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rind", "id": "x25519-ecdh/rind", - "ns": 26856.457218050164, - "ns_low": 26777.064885441203, - "ns_high": 26958.79629355781, + "ns": 25004.787963523966, + "ns_low": 24919.359782425738, + "ns_high": 25099.88011806065, "throughput": { "Elements": 1 } @@ -1973,9 +2058,9 @@ "operation": "x25519-ecdh/{lib}", "library": "ring", "id": "x25519-ecdh/ring", - "ns": 55231.44328519419, - "ns_low": 54850.35300449733, - "ns_high": 55674.3836016667, + "ns": 53601.40291360479, + "ns_low": 53474.92391794942, + "ns_high": 53740.01196502924, "throughput": { "Elements": 1 } @@ -1984,9 +2069,9 @@ "operation": "x25519-ecdh/{lib}", "library": "rustcrypto", "id": "x25519-ecdh/dalek", - "ns": 60510.06831742279, - "ns_low": 60279.89577019748, - "ns_high": 60745.33907003659, + "ns": 56594.42607144296, + "ns_low": 56487.23675142344, + "ns_high": 56709.2983932322, "throughput": { "Elements": 1 } @@ -1995,9 +2080,9 @@ "operation": "p256-ecdh/{lib}", "library": "aws-lc-rs", "id": "p256-ecdh/aws-lc-rs", - "ns": 56110.18524362884, - "ns_low": 55894.62790006397, - "ns_high": 56357.656462747065, + "ns": 51712.30177675976, + "ns_low": 51238.16623122024, + "ns_high": 52506.141099672604, "throughput": { "Elements": 1 } @@ -2006,9 +2091,9 @@ "operation": "p256-ecdh/{lib}", "library": "graviola", "id": "p256-ecdh/graviola", - "ns": 50530.990841830455, - "ns_low": 49793.129296068226, - "ns_high": 51647.213833913, + "ns": 46439.40340407634, + "ns_low": 46350.66572019873, + "ns_high": 46538.83299303351, "throughput": { "Elements": 1 } @@ -2017,9 +2102,9 @@ "operation": "p256-ecdh/{lib}", "library": "libcrux", "id": "p256-ecdh/libcrux", - "ns": 304846.6716166691, - "ns_low": 304019.82735777274, - "ns_high": 306046.232486371, + "ns": 280516.9395005172, + "ns_low": 279551.4516209434, + "ns_high": 281533.4552569936, "throughput": { "Elements": 1 } @@ -2028,9 +2113,9 @@ "operation": "p256-ecdh/{lib}", "library": "openssl", "id": "p256-ecdh/openssl", - "ns": 87274.73547974414, - "ns_low": 87069.09066837087, - "ns_high": 87568.0554643488, + "ns": 81679.15834712576, + "ns_low": 81402.13159170558, + "ns_high": 81981.3265176653, "throughput": { "Elements": 1 } @@ -2039,9 +2124,9 @@ "operation": "p256-ecdh/{lib}", "library": "rind", "id": "p256-ecdh/rind", - "ns": 46596.44264382581, - "ns_low": 46434.297246973016, - "ns_high": 46752.40474427559, + "ns": 42803.03416052693, + "ns_low": 42646.12552905721, + "ns_high": 42971.49096768089, "throughput": { "Elements": 1 } @@ -2050,9 +2135,9 @@ "operation": "p256-ecdh/{lib}", "library": "ring", "id": "p256-ecdh/ring", - "ns": 51771.134635978524, - "ns_low": 51599.58804668272, - "ns_high": 51980.797658727766, + "ns": 47104.33772129452, + "ns_low": 46979.74587896593, + "ns_high": 47250.0881195075, "throughput": { "Elements": 1 } @@ -2061,9 +2146,9 @@ "operation": "p256-ecdh/{lib}", "library": "rustcrypto", "id": "p256-ecdh/p256-rustcrypto", - "ns": 252152.34735037683, - "ns_low": 251483.47299167083, - "ns_high": 252927.7298194664, + "ns": 233699.63260726072, + "ns_low": 232922.09177810783, + "ns_high": 234590.2847102948, "throughput": { "Elements": 1 } @@ -2072,9 +2157,9 @@ "operation": "ed25519-sign/{lib}", "library": "aws-lc-rs", "id": "ed25519-sign/aws-lc-rs", - "ns": 7540.117857359243, - "ns_low": 7500.296825869181, - "ns_high": 7579.212313219894, + "ns": 7813.749423772228, + "ns_low": 7730.233128409852, + "ns_high": 7904.3025383928, "throughput": { "Elements": 1 } @@ -2083,9 +2168,9 @@ "operation": "ed25519-sign/{lib}", "library": "graviola", "id": "ed25519-sign/graviola", - "ns": 7272.694688433058, - "ns_low": 7216.26372633916, - "ns_high": 7333.3944541612955, + "ns": 7218.980862865723, + "ns_low": 7215.908786938935, + "ns_high": 7222.706543155967, "throughput": { "Elements": 1 } @@ -2094,9 +2179,9 @@ "operation": "ed25519-sign/{lib}", "library": "libcrux", "id": "ed25519-sign/libcrux", - "ns": 49670.835575833706, - "ns_low": 49454.97732910685, - "ns_high": 49877.65434092144, + "ns": 53658.31379932023, + "ns_low": 52767.64720259367, + "ns_high": 54435.34850949959, "throughput": { "Elements": 1 } @@ -2105,9 +2190,9 @@ "operation": "ed25519-sign/{lib}", "library": "openssl", "id": "ed25519-sign/openssl", - "ns": 28459.908434911722, - "ns_low": 28301.304858431427, - "ns_high": 28643.371339222544, + "ns": 31012.152060067416, + "ns_low": 30313.837009206378, + "ns_high": 31724.485478489343, "throughput": { "Elements": 1 } @@ -2116,9 +2201,9 @@ "operation": "ed25519-sign/{lib}", "library": "rind", "id": "ed25519-sign/rind", - "ns": 7087.333011603932, - "ns_low": 7057.688811896536, - "ns_high": 7117.613669479325, + "ns": 7134.682903317125, + "ns_low": 7124.322007950584, + "ns_high": 7148.535250886032, "throughput": { "Elements": 1 } @@ -2127,9 +2212,9 @@ "operation": "ed25519-sign/{lib}", "library": "ring", "id": "ed25519-sign/ring", - "ns": 22047.97249889168, - "ns_low": 21954.59598776782, - "ns_high": 22150.092248258657, + "ns": 22257.0981035417, + "ns_low": 22215.866644135636, + "ns_high": 22332.800353869716, "throughput": { "Elements": 1 } @@ -2138,9 +2223,9 @@ "operation": "ed25519-sign/{lib}", "library": "rustcrypto", "id": "ed25519-sign/dalek", - "ns": 16075.401776513472, - "ns_low": 16024.09051275198, - "ns_high": 16131.742733323012, + "ns": 17402.447694495146, + "ns_low": 16730.18064100243, + "ns_high": 18207.4600429, "throughput": { "Elements": 1 } @@ -2149,9 +2234,9 @@ "operation": "ed25519-verify/{lib}", "library": "aws-lc-rs", "id": "ed25519-verify/aws-lc-rs", - "ns": 31569.942606612585, - "ns_low": 31453.969637711358, - "ns_high": 31696.713829713615, + "ns": 31621.224349280175, + "ns_low": 31589.289133715225, + "ns_high": 31659.313186806823, "throughput": { "Elements": 1 } @@ -2160,9 +2245,9 @@ "operation": "ed25519-verify/{lib}", "library": "graviola", "id": "ed25519-verify/graviola", - "ns": 31387.905216647352, - "ns_low": 31290.139421428008, - "ns_high": 31488.34686929939, + "ns": 32219.944445567886, + "ns_low": 31823.698577579198, + "ns_high": 32851.306067087295, "throughput": { "Elements": 1 } @@ -2171,9 +2256,9 @@ "operation": "ed25519-verify/{lib}", "library": "libcrux", "id": "ed25519-verify/libcrux", - "ns": 64326.424823703266, - "ns_low": 63973.098689273684, - "ns_high": 64712.1211901431, + "ns": 69120.42390128566, + "ns_low": 67944.01241032877, + "ns_high": 70364.92274327893, "throughput": { "Elements": 1 } @@ -2182,9 +2267,9 @@ "operation": "ed25519-verify/{lib}", "library": "openssl", "id": "ed25519-verify/openssl", - "ns": 93945.77512930398, - "ns_low": 92939.73395960583, - "ns_high": 95747.73469926899, + "ns": 93092.35189765459, + "ns_low": 92975.00136884023, + "ns_high": 93219.4256008831, "throughput": { "Elements": 1 } @@ -2193,9 +2278,9 @@ "operation": "ed25519-verify/{lib}", "library": "rind", "id": "ed25519-verify/rind", - "ns": 31589.43640437728, - "ns_low": 31493.980946185573, - "ns_high": 31682.825143123046, + "ns": 31812.74323551601, + "ns_low": 31654.688068368283, + "ns_high": 32023.918572347215, "throughput": { "Elements": 1 } @@ -2204,9 +2289,9 @@ "operation": "ed25519-verify/{lib}", "library": "ring", "id": "ed25519-verify/ring", - "ns": 41590.99245475592, - "ns_low": 40982.51823844071, - "ns_high": 42265.133065806105, + "ns": 42476.113091895546, + "ns_low": 42009.35829437063, + "ns_high": 42979.93234179774, "throughput": { "Elements": 1 } @@ -2215,9 +2300,9 @@ "operation": "ed25519-verify/{lib}", "library": "rustcrypto", "id": "ed25519-verify/dalek", - "ns": 27877.529899915364, - "ns_low": 27729.523769346957, - "ns_high": 28034.0724944667, + "ns": 29876.760500882767, + "ns_low": 29612.67960197799, + "ns_high": 30096.938863114727, "throughput": { "Elements": 1 } @@ -2226,9 +2311,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-sign/aws-lc-rs", - "ns": 22353.0346282887, - "ns_low": 22182.346444550323, - "ns_high": 22538.302688922104, + "ns": 19804.947039751736, + "ns_low": 19752.65925350164, + "ns_high": 19863.46154058597, "throughput": { "Elements": 1 } @@ -2237,9 +2322,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "graviola", "id": "p256-ecdsa-sign/graviola", - "ns": 23270.321462527423, - "ns_low": 22541.54312915273, - "ns_high": 24051.16251448098, + "ns": 19888.31554406187, + "ns_low": 19845.698430030137, + "ns_high": 19931.79227889863, "throughput": { "Elements": 1 } @@ -2248,9 +2333,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "libcrux", "id": "p256-ecdsa-sign/libcrux", - "ns": 115067.57998325206, - "ns_low": 113489.371027444, - "ns_high": 116946.5132106402, + "ns": 102033.7845963253, + "ns_low": 101667.2842209451, + "ns_high": 102422.70040231814, "throughput": { "Elements": 1 } @@ -2259,9 +2344,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "openssl", "id": "p256-ecdsa-sign/openssl", - "ns": 28833.050296607486, - "ns_low": 27223.508880994654, - "ns_high": 30688.866112176147, + "ns": 20354.364226087044, + "ns_low": 20314.788047772065, + "ns_high": 20396.030432939588, "throughput": { "Elements": 1 } @@ -2270,9 +2355,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rind", "id": "p256-ecdsa-sign/rind", - "ns": 15724.71396146331, - "ns_low": 15417.01322810245, - "ns_high": 16126.520183352723, + "ns": 13109.417715252122, + "ns_low": 13073.095450656974, + "ns_high": 13148.95299829801, "throughput": { "Elements": 1 } @@ -2281,9 +2366,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "ring", "id": "p256-ecdsa-sign/ring", - "ns": 16562.696964353152, - "ns_low": 16426.395929493534, - "ns_high": 16714.578779703003, + "ns": 14859.16178912369, + "ns_low": 14809.312148530133, + "ns_high": 14915.711843647374, "throughput": { "Elements": 1 } @@ -2292,9 +2377,9 @@ "operation": "p256-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-sign/rustcrypto", - "ns": 78316.81449091178, - "ns_low": 76689.74427309782, - "ns_high": 80149.85396734609, + "ns": 69106.18945897574, + "ns_low": 68527.75197821196, + "ns_high": 69978.52213295922, "throughput": { "Elements": 1 } @@ -2303,9 +2388,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p256-ecdsa-verify/aws-lc-rs", - "ns": 47105.1370603949, - "ns_low": 47036.56986254638, - "ns_high": 47179.20028437281, + "ns": 43268.239697270365, + "ns_low": 43120.66246158952, + "ns_high": 43439.29909752241, "throughput": { "Elements": 1 } @@ -2314,9 +2399,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "graviola", "id": "p256-ecdsa-verify/graviola", - "ns": 48446.75396437462, - "ns_low": 48230.27767613808, - "ns_high": 48741.576247856865, + "ns": 44303.4026627119, + "ns_low": 44168.485620578766, + "ns_high": 44464.12452373799, "throughput": { "Elements": 1 } @@ -2325,9 +2410,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "libcrux", "id": "p256-ecdsa-verify/libcrux", - "ns": 262540.7453081129, - "ns_low": 261277.87467236147, - "ns_high": 264191.95983426657, + "ns": 236872.4229387715, + "ns_low": 236423.74004340844, + "ns_high": 237353.9247495235, "throughput": { "Elements": 1 } @@ -2336,9 +2421,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "openssl", "id": "p256-ecdsa-verify/openssl", - "ns": 74697.54207378947, - "ns_low": 74105.11403376746, - "ns_high": 75452.63294505588, + "ns": 68341.50379193143, + "ns_low": 68180.36946034338, + "ns_high": 68516.97853581895, "throughput": { "Elements": 1 } @@ -2347,9 +2432,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rind", "id": "p256-ecdsa-verify/rind", - "ns": 47334.97906787464, - "ns_low": 46850.58484341791, - "ns_high": 48271.339483985495, + "ns": 41564.618612088074, + "ns_low": 41495.95929501669, + "ns_high": 41645.58825428199, "throughput": { "Elements": 1 } @@ -2358,9 +2443,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "ring", "id": "p256-ecdsa-verify/ring", - "ns": 47603.30437689693, - "ns_low": 47392.957508273816, - "ns_high": 47977.736312281086, + "ns": 43927.55803310182, + "ns_low": 43831.8653827282, + "ns_high": 44039.63904576921, "throughput": { "Elements": 1 } @@ -2369,9 +2454,9 @@ "operation": "p256-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p256-ecdsa-verify/rustcrypto", - "ns": 211457.43087828186, - "ns_low": 211195.93144581295, - "ns_high": 211734.9552928394, + "ns": 197151.10538298605, + "ns_low": 196711.1597465772, + "ns_high": 197628.02893656757, "throughput": { "Elements": 1 } @@ -2380,9 +2465,9 @@ "operation": "sha256/{lib}/64B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/64B", - "ns": 313.16692826901806, - "ns_low": 311.31487666258363, - "ns_high": 315.1683842203503, + "ns": 306.88188083946824, + "ns_low": 306.2514883713385, + "ns_high": 307.5469576313529, "throughput": { "Bytes": 64 } @@ -2391,9 +2476,9 @@ "operation": "sha256/{lib}/64B", "library": "graviola", "id": "sha256/graviola/64B", - "ns": 578.899376391212, - "ns_low": 576.6936505301701, - "ns_high": 581.2038069112227, + "ns": 576.4609541769788, + "ns_low": 574.2005372024288, + "ns_high": 578.8718517655489, "throughput": { "Bytes": 64 } @@ -2402,9 +2487,9 @@ "operation": "sha256/{lib}/64B", "library": "libcrux", "id": "sha256/libcrux/64B", - "ns": 486.849205566785, - "ns_low": 485.4536250910652, - "ns_high": 488.2729079598909, + "ns": 484.8948729635381, + "ns_low": 483.33973381422544, + "ns_high": 486.6715334169415, "throughput": { "Bytes": 64 } @@ -2413,9 +2498,9 @@ "operation": "sha256/{lib}/64B", "library": "openssl", "id": "sha256/openssl/64B", - "ns": 514.0808989127725, - "ns_low": 512.3809708755037, - "ns_high": 515.8553627710052, + "ns": 505.1983742111251, + "ns_low": 504.1206520247912, + "ns_high": 506.42148317560884, "throughput": { "Bytes": 64 } @@ -2424,9 +2509,9 @@ "operation": "sha256/{lib}/64B", "library": "rind", "id": "sha256/rind/64B", - "ns": 275.9672085296921, - "ns_low": 274.8046272768609, - "ns_high": 277.517788836015, + "ns": 243.74192885666844, + "ns_low": 243.3613268665007, + "ns_high": 244.16849776031543, "throughput": { "Bytes": 64 } @@ -2435,9 +2520,9 @@ "operation": "sha256/{lib}/64B", "library": "ring", "id": "sha256/ring/64B", - "ns": 289.261375833778, - "ns_low": 286.2952183381645, - "ns_high": 292.89074739206364, + "ns": 276.6111902610443, + "ns_low": 275.89117376124466, + "ns_high": 277.4051560578162, "throughput": { "Bytes": 64 } @@ -2446,9 +2531,9 @@ "operation": "sha256/{lib}/64B", "library": "rustcrypto", "id": "sha256/rustcrypto/64B", - "ns": 482.94743470073917, - "ns_low": 479.10681336884716, - "ns_high": 487.1007525314963, + "ns": 473.0203789721238, + "ns_low": 471.76104230544956, + "ns_high": 474.3931214819318, "throughput": { "Bytes": 64 } @@ -2457,9 +2542,9 @@ "operation": "sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/1350B", - "ns": 2982.926165497147, - "ns_low": 2959.9441849643918, - "ns_high": 3009.623550936601, + "ns": 2793.738772876657, + "ns_low": 2784.7739525254715, + "ns_high": 2804.508263756007, "throughput": { "Bytes": 1350 } @@ -2468,9 +2553,9 @@ "operation": "sha256/{lib}/1350B", "library": "graviola", "id": "sha256/graviola/1350B", - "ns": 6109.257668276118, - "ns_low": 6085.693572762066, - "ns_high": 6134.422947972899, + "ns": 6070.69606053635, + "ns_low": 6053.559979204296, + "ns_high": 6089.573341891843, "throughput": { "Bytes": 1350 } @@ -2479,9 +2564,9 @@ "operation": "sha256/{lib}/1350B", "library": "libcrux", "id": "sha256/libcrux/1350B", - "ns": 5274.740364558044, - "ns_low": 5250.057633066117, - "ns_high": 5300.4584531603705, + "ns": 5231.582501769422, + "ns_low": 5213.400979641118, + "ns_high": 5252.740266321632, "throughput": { "Bytes": 1350 } @@ -2490,9 +2575,9 @@ "operation": "sha256/{lib}/1350B", "library": "openssl", "id": "sha256/openssl/1350B", - "ns": 2688.47422984981, - "ns_low": 2675.284894945238, - "ns_high": 2703.7390082071593, + "ns": 2683.245534636158, + "ns_low": 2671.5110115833722, + "ns_high": 2698.551221559996, "throughput": { "Bytes": 1350 } @@ -2501,9 +2586,9 @@ "operation": "sha256/{lib}/1350B", "library": "rind", "id": "sha256/rind/1350B", - "ns": 2884.9647217349193, - "ns_low": 2863.914788707769, - "ns_high": 2907.5900124817363, + "ns": 2456.375506241718, + "ns_low": 2448.7375347624697, + "ns_high": 2463.936260957847, "throughput": { "Bytes": 1350 } @@ -2512,9 +2597,9 @@ "operation": "sha256/{lib}/1350B", "library": "ring", "id": "sha256/ring/1350B", - "ns": 2832.777099381143, - "ns_low": 2811.869161476635, - "ns_high": 2851.9000490068697, + "ns": 2819.161774292229, + "ns_low": 2807.2231703408534, + "ns_high": 2831.7019987205936, "throughput": { "Bytes": 1350 } @@ -2523,9 +2608,9 @@ "operation": "sha256/{lib}/1350B", "library": "rustcrypto", "id": "sha256/rustcrypto/1350B", - "ns": 5331.761378046804, - "ns_low": 5329.612729888023, - "ns_high": 5334.2540715117975, + "ns": 5107.477669659855, + "ns_low": 5064.088404975563, + "ns_high": 5162.924762716617, "throughput": { "Bytes": 1350 } @@ -2534,9 +2619,9 @@ "operation": "sha256/{lib}/16KB", "library": "aws-lc-rs", "id": "sha256/aws-lc-rs/16KB", - "ns": 31631.68686473832, - "ns_low": 31548.744200114095, - "ns_high": 31724.615509011055, + "ns": 31462.512705155827, + "ns_low": 31393.97212279285, + "ns_high": 31537.9393745203, "throughput": { "Bytes": 16384 } @@ -2545,9 +2630,9 @@ "operation": "sha256/{lib}/16KB", "library": "graviola", "id": "sha256/graviola/16KB", - "ns": 69991.90923238592, - "ns_low": 69834.02915124464, - "ns_high": 70156.76588603585, + "ns": 69838.79668128007, + "ns_low": 69696.21475429124, + "ns_high": 70003.20432114853, "throughput": { "Bytes": 16384 } @@ -2556,9 +2641,9 @@ "operation": "sha256/{lib}/16KB", "library": "libcrux", "id": "sha256/libcrux/16KB", - "ns": 61293.216225506134, - "ns_low": 61095.212748884354, - "ns_high": 61506.15705228499, + "ns": 61678.80896497709, + "ns_low": 60872.5062954075, + "ns_high": 63334.02800359223, "throughput": { "Bytes": 16384 } @@ -2567,9 +2652,9 @@ "operation": "sha256/{lib}/16KB", "library": "openssl", "id": "sha256/openssl/16KB", - "ns": 28347.530674127112, - "ns_low": 28266.549723065436, - "ns_high": 28431.409480050494, + "ns": 28833.94580942529, + "ns_low": 28624.209876260968, + "ns_high": 29037.150999665202, "throughput": { "Bytes": 16384 } @@ -2578,9 +2663,9 @@ "operation": "sha256/{lib}/16KB", "library": "rind", "id": "sha256/rind/16KB", - "ns": 31569.76810978977, - "ns_low": 31483.60059796382, - "ns_high": 31670.338547249437, + "ns": 28061.965542270646, + "ns_low": 28000.61506342047, + "ns_high": 28120.991253270968, "throughput": { "Bytes": 16384 } @@ -2589,9 +2674,9 @@ "operation": "sha256/{lib}/16KB", "library": "ring", "id": "sha256/ring/16KB", - "ns": 31555.84851718479, - "ns_low": 31472.8918397857, - "ns_high": 31640.353155553563, + "ns": 32372.720007777683, + "ns_low": 31821.99261784946, + "ns_high": 33311.16549167066, "throughput": { "Bytes": 16384 } @@ -2600,9 +2685,9 @@ "operation": "sha256/{lib}/16KB", "library": "rustcrypto", "id": "sha256/rustcrypto/16KB", - "ns": 58880.723987801764, - "ns_low": 58557.60141315955, - "ns_high": 59229.58218864029, + "ns": 58165.022731437326, + "ns_low": 58010.55243529765, + "ns_high": 58349.20463673402, "throughput": { "Bytes": 16384 } @@ -2611,9 +2696,9 @@ "operation": "sha512/{lib}/64B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/64B", - "ns": 233.24213848818647, - "ns_low": 232.53417768378804, - "ns_high": 234.00240345767114, + "ns": 228.2357968754158, + "ns_low": 227.65978576379007, + "ns_high": 228.85490984536185, "throughput": { "Bytes": 64 } @@ -2622,9 +2707,9 @@ "operation": "sha512/{lib}/64B", "library": "graviola", "id": "sha512/graviola/64B", - "ns": 237.19664534606648, - "ns_low": 236.407626518855, - "ns_high": 238.04417397175263, + "ns": 235.54892663234054, + "ns_low": 235.10406319395804, + "ns_high": 236.03710996900347, "throughput": { "Bytes": 64 } @@ -2633,9 +2718,9 @@ "operation": "sha512/{lib}/64B", "library": "libcrux", "id": "sha512/libcrux/64B", - "ns": 290.27015923331334, - "ns_low": 288.48460443466007, - "ns_high": 292.35559373341573, + "ns": 288.64081598747975, + "ns_low": 287.2167836334587, + "ns_high": 290.2311773853133, "throughput": { "Bytes": 64 } @@ -2644,9 +2729,9 @@ "operation": "sha512/{lib}/64B", "library": "openssl", "id": "sha512/openssl/64B", - "ns": 435.79837971760725, - "ns_low": 434.42713560071775, - "ns_high": 437.2448902860965, + "ns": 430.49633385142823, + "ns_low": 429.81198476882366, + "ns_high": 431.23110677613766, "throughput": { "Bytes": 64 } @@ -2655,9 +2740,9 @@ "operation": "sha512/{lib}/64B", "library": "rind", "id": "sha512/rind/64B", - "ns": 200.18802720271626, - "ns_low": 199.29172283014978, - "ns_high": 201.17785963756654, + "ns": 198.4235886351263, + "ns_low": 197.71603236699437, + "ns_high": 199.1707911818939, "throughput": { "Bytes": 64 } @@ -2666,9 +2751,9 @@ "operation": "sha512/{lib}/64B", "library": "ring", "id": "sha512/ring/64B", - "ns": 204.251491344349, - "ns_low": 203.36165808216612, - "ns_high": 205.24183208287226, + "ns": 202.62710255996095, + "ns_low": 201.8935805149973, + "ns_high": 203.38635435108358, "throughput": { "Bytes": 64 } @@ -2677,9 +2762,9 @@ "operation": "sha512/{lib}/64B", "library": "rustcrypto", "id": "sha512/rustcrypto/64B", - "ns": 271.6525941502413, - "ns_low": 270.5785182486608, - "ns_high": 272.80554176998373, + "ns": 270.07518962331716, + "ns_low": 269.50276734865906, + "ns_high": 270.70848752977304, "throughput": { "Bytes": 64 } @@ -2688,9 +2773,9 @@ "operation": "sha512/{lib}/1350B", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/1350B", - "ns": 1980.4347518900943, - "ns_low": 1974.1435855714528, - "ns_high": 1987.2728990371222, + "ns": 1965.308001445357, + "ns_low": 1960.2740036099237, + "ns_high": 1971.135165099493, "throughput": { "Bytes": 1350 } @@ -2699,9 +2784,9 @@ "operation": "sha512/{lib}/1350B", "library": "graviola", "id": "sha512/graviola/1350B", - "ns": 2348.894706158372, - "ns_low": 2341.2964007508413, - "ns_high": 2356.811686688128, + "ns": 2348.684070518228, + "ns_low": 2341.7193194833717, + "ns_high": 2355.8082289801155, "throughput": { "Bytes": 1350 } @@ -2710,9 +2795,9 @@ "operation": "sha512/{lib}/1350B", "library": "libcrux", "id": "sha512/libcrux/1350B", - "ns": 3079.6015111324564, - "ns_low": 3067.0840521792397, - "ns_high": 3093.0434100776183, + "ns": 3080.598209349293, + "ns_low": 3070.2661370053197, + "ns_high": 3091.5889542964906, "throughput": { "Bytes": 1350 } @@ -2721,9 +2806,9 @@ "operation": "sha512/{lib}/1350B", "library": "openssl", "id": "sha512/openssl/1350B", - "ns": 1920.4108581465823, - "ns_low": 1912.4152558673381, - "ns_high": 1929.1505581675829, + "ns": 1899.4181435668359, + "ns_low": 1896.3410750146306, + "ns_high": 1902.6177338835591, "throughput": { "Bytes": 1350 } @@ -2732,9 +2817,9 @@ "operation": "sha512/{lib}/1350B", "library": "rind", "id": "sha512/rind/1350B", - "ns": 1945.6493700687013, - "ns_low": 1940.0413965316136, - "ns_high": 1951.6014733054617, + "ns": 1654.0081870180652, + "ns_low": 1648.606758891528, + "ns_high": 1659.6964833924383, "throughput": { "Bytes": 1350 } @@ -2743,9 +2828,9 @@ "operation": "sha512/{lib}/1350B", "library": "ring", "id": "sha512/ring/1350B", - "ns": 1948.2108347300755, - "ns_low": 1941.8548242867178, - "ns_high": 1955.181028239118, + "ns": 1927.6424114639608, + "ns_low": 1923.8817813016892, + "ns_high": 1931.6396176275532, "throughput": { "Bytes": 1350 } @@ -2754,9 +2839,9 @@ "operation": "sha512/{lib}/1350B", "library": "rustcrypto", "id": "sha512/rustcrypto/1350B", - "ns": 2682.1717655650177, - "ns_low": 2671.775798343827, - "ns_high": 2694.0078532180773, + "ns": 2667.9525447550086, + "ns_low": 2657.367192872699, + "ns_high": 2679.5511221220972, "throughput": { "Bytes": 1350 } @@ -2765,9 +2850,9 @@ "operation": "sha512/{lib}/16KB", "library": "aws-lc-rs", "id": "sha512/aws-lc-rs/16KB", - "ns": 21945.57682577213, - "ns_low": 21870.146591977686, - "ns_high": 22025.38714782047, + "ns": 21923.438802486857, + "ns_low": 21793.473105457146, + "ns_high": 22122.66786703491, "throughput": { "Bytes": 16384 } @@ -2776,9 +2861,9 @@ "operation": "sha512/{lib}/16KB", "library": "graviola", "id": "sha512/graviola/16KB", - "ns": 27352.299559896288, - "ns_low": 27247.67277274372, - "ns_high": 27470.26516707883, + "ns": 27155.492416137135, + "ns_low": 27108.42558958191, + "ns_high": 27207.49142221934, "throughput": { "Bytes": 16384 } @@ -2787,9 +2872,9 @@ "operation": "sha512/{lib}/16KB", "library": "libcrux", "id": "sha512/libcrux/16KB", - "ns": 35627.138655586365, - "ns_low": 35463.27257343621, - "ns_high": 35808.72004226309, + "ns": 35448.1239756952, + "ns_low": 35337.65476240114, + "ns_high": 35565.27257391061, "throughput": { "Bytes": 16384 } @@ -2798,9 +2883,9 @@ "operation": "sha512/{lib}/16KB", "library": "openssl", "id": "sha512/openssl/16KB", - "ns": 19040.56666829836, - "ns_low": 18997.206965305482, - "ns_high": 19084.88273241189, + "ns": 18988.894089607656, + "ns_low": 18929.96671891458, + "ns_high": 19064.256624308586, "throughput": { "Bytes": 16384 } @@ -2809,9 +2894,9 @@ "operation": "sha512/{lib}/16KB", "library": "rind", "id": "sha512/rind/16KB", - "ns": 21818.354173686024, - "ns_low": 21766.56138223861, - "ns_high": 21869.982800880418, + "ns": 18531.510923241578, + "ns_low": 18451.23651979778, + "ns_high": 18659.04292421865, "throughput": { "Bytes": 16384 } @@ -2820,9 +2905,9 @@ "operation": "sha512/{lib}/16KB", "library": "ring", "id": "sha512/ring/16KB", - "ns": 22308.07846685166, - "ns_low": 21996.634652558972, - "ns_high": 22715.038468431947, + "ns": 21754.002582173995, + "ns_low": 21702.862517314796, + "ns_high": 21812.376611201755, "throughput": { "Bytes": 16384 } @@ -2831,9 +2916,9 @@ "operation": "sha512/{lib}/16KB", "library": "rustcrypto", "id": "sha512/rustcrypto/16KB", - "ns": 31083.797456386645, - "ns_low": 30908.033621937895, - "ns_high": 31301.170666521724, + "ns": 30726.478286685386, + "ns_low": 30656.767475168774, + "ns_high": 30804.22496771664, "throughput": { "Bytes": 16384 } @@ -2842,9 +2927,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/64B", - "ns": 839.6880524490597, - "ns_low": 833.1952210562583, - "ns_high": 846.81485500337, + "ns": 810.6146007160961, + "ns_low": 804.0471324171142, + "ns_high": 821.3111344732132, "throughput": { "Bytes": 64 } @@ -2853,9 +2938,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "graviola", "id": "hmac-sha256/graviola/64B", - "ns": 1465.446056583566, - "ns_low": 1458.7433355519186, - "ns_high": 1472.8039751377516, + "ns": 1443.937191123711, + "ns_low": 1440.5519804805974, + "ns_high": 1447.90917448054, "throughput": { "Bytes": 64 } @@ -2864,9 +2949,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "libcrux", "id": "hmac-sha256/libcrux/64B", - "ns": 1221.6867685010125, - "ns_low": 1216.0897205638805, - "ns_high": 1227.7780142564413, + "ns": 1202.5040738305506, + "ns_low": 1199.15636509116, + "ns_high": 1206.1836629658146, "throughput": { "Bytes": 64 } @@ -2875,9 +2960,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "openssl", "id": "hmac-sha256/openssl/64B", - "ns": 3903.7745718358065, - "ns_low": 3882.6719289832413, - "ns_high": 3927.349012519236, + "ns": 3689.3177627087334, + "ns_low": 3675.3893626062386, + "ns_high": 3706.225868992386, "throughput": { "Bytes": 64 } @@ -2886,9 +2971,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rind", "id": "hmac-sha256/rind/64B", - "ns": 690.4618467984901, - "ns_low": 686.138123188495, - "ns_high": 694.9448455059062, + "ns": 627.9373574061292, + "ns_low": 625.8919421302398, + "ns_high": 630.2800647392023, "throughput": { "Bytes": 64 } @@ -2897,9 +2982,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "ring", "id": "hmac-sha256/ring/64B", - "ns": 746.2058035187627, - "ns_low": 741.1012759857462, - "ns_high": 752.059529493182, + "ns": 706.7051844742713, + "ns_low": 705.2674197057888, + "ns_high": 708.1886319329371, "throughput": { "Bytes": 64 } @@ -2908,9 +2993,9 @@ "operation": "hmac-sha256/{lib}/64B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/64B", - "ns": 1246.459441332785, - "ns_low": 1240.9063476906283, - "ns_high": 1251.7861329182028, + "ns": 1188.229311666718, + "ns_low": 1185.5856522329916, + "ns_high": 1191.1628792345102, "throughput": { "Bytes": 64 } @@ -2919,9 +3004,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "aws-lc-rs", "id": "hmac-sha256/aws-lc-rs/1350B", - "ns": 3491.690289206269, - "ns_low": 3488.8255912152217, - "ns_high": 3495.32054706923, + "ns": 3301.4474802062296, + "ns_low": 3290.516821174291, + "ns_high": 3313.631238582558, "throughput": { "Bytes": 1350 } @@ -2930,9 +3015,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "graviola", "id": "hmac-sha256/graviola/1350B", - "ns": 7494.6441872083215, - "ns_low": 7432.2368234317355, - "ns_high": 7592.022244847803, + "ns": 7050.331034414416, + "ns_low": 7035.844344675466, + "ns_high": 7068.480911170974, "throughput": { "Bytes": 1350 } @@ -2941,9 +3026,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "libcrux", "id": "hmac-sha256/libcrux/1350B", - "ns": 7140.490470752386, - "ns_low": 6811.727843771493, - "ns_high": 7494.645421335522, + "ns": 6018.83742323943, + "ns_low": 6003.735431964056, + "ns_high": 6036.1655483577815, "throughput": { "Bytes": 1350 } @@ -2952,9 +3037,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "openssl", "id": "hmac-sha256/openssl/1350B", - "ns": 6236.115041540604, - "ns_low": 6203.656808863043, - "ns_high": 6270.2833220254115, + "ns": 5938.467767223289, + "ns_low": 5893.358234671813, + "ns_high": 5992.925224165167, "throughput": { "Bytes": 1350 } @@ -2963,9 +3048,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rind", "id": "hmac-sha256/rind/1350B", - "ns": 3291.8877299784313, - "ns_low": 3284.7329385419507, - "ns_high": 3299.3930056083896, + "ns": 2791.077117133618, + "ns_low": 2782.6128007181564, + "ns_high": 2801.3178397314464, "throughput": { "Bytes": 1350 } @@ -2974,9 +3059,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "ring", "id": "hmac-sha256/ring/1350B", - "ns": 3385.5687073360946, - "ns_low": 3381.487239811736, - "ns_high": 3390.6444208328935, + "ns": 3194.7523254376474, + "ns_low": 3187.589512329592, + "ns_high": 3202.901454259711, "throughput": { "Bytes": 1350 } @@ -2985,9 +3070,9 @@ "operation": "hmac-sha256/{lib}/1350B", "library": "rustcrypto", "id": "hmac-sha256/rustcrypto/1350B", - "ns": 6537.428976339086, - "ns_low": 6356.156737660659, - "ns_high": 6748.2019651204, + "ns": 5798.140309353932, + "ns_low": 5776.875878373367, + "ns_high": 5821.660329764002, "throughput": { "Bytes": 1350 } @@ -2996,117 +3081,117 @@ "operation": "hkdf-sha256/extract-expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/extract-expand/aws-lc-rs", - "ns": 1345.5679881214298, - "ns_low": 1337.6568515504543, - "ns_high": 1353.4634862743217, + "ns": 1436.1870715568284, + "ns_low": 1385.4793316251262, + "ns_high": 1500.599096996692, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/extract-expand/libcrux", - "ns": 2171.6467196223716, - "ns_low": 2130.6471308938208, - "ns_high": 2234.4955086626405, + "ns": 2038.583230603901, + "ns_low": 2029.1060811272266, + "ns_high": 2048.4567630002957, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "openssl", "id": "hkdf-sha256/extract-expand/openssl", - "ns": 4676.833203010083, - "ns_low": 4609.266816134799, - "ns_high": 4759.7280247823865, + "ns": 4325.383659961064, + "ns_low": 4313.667001969396, + "ns_high": 4337.657616536186, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rind", "id": "hkdf-sha256/extract-expand/rind", - "ns": 1179.3709098699815, - "ns_low": 1175.9771367573642, - "ns_high": 1183.5354857751672, + "ns": 1150.6968659314043, + "ns_low": 1145.4297962830003, + "ns_high": 1155.2614053381028, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "ring", "id": "hkdf-sha256/extract-expand/ring", - "ns": 1259.0833162906624, - "ns_low": 1250.6181274253208, - "ns_high": 1268.14667152091, + "ns": 1312.851635443537, + "ns_low": 1298.8253806211374, + "ns_high": 1328.7715636189573, "throughput": null }, { "operation": "hkdf-sha256/extract-expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/extract-expand/rustcrypto", - "ns": 2108.027837925429, - "ns_low": 2060.993625160033, - "ns_high": 2164.801770668672, + "ns": 1976.4316503835814, + "ns_low": 1965.6339932969418, + "ns_high": 1989.5692294842727, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "aws-lc-rs", "id": "hkdf-sha256/expand/aws-lc-rs", - "ns": 673.106854022635, - "ns_low": 663.9479903032125, - "ns_high": 689.0341064142345, + "ns": 636.0029119078904, + "ns_low": 634.0044550340625, + "ns_high": 638.2317655444917, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "libcrux", "id": "hkdf-sha256/expand/libcrux", - "ns": 1065.1779804446674, - "ns_low": 1061.1637196340355, - "ns_high": 1069.6485606499016, + "ns": 1010.3524068232288, + "ns_low": 1007.3202036489479, + "ns_high": 1013.8686433718486, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "openssl", "id": "hkdf-sha256/expand/openssl", - "ns": 3117.2989411965304, - "ns_low": 3077.2915386303075, - "ns_high": 3172.2483269918507, + "ns": 2871.9409112333074, + "ns_low": 2863.2801803386783, + "ns_high": 2881.3442896520964, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rind", "id": "hkdf-sha256/expand/rind", - "ns": 329.8449967609903, - "ns_low": 325.900871855633, - "ns_high": 336.12871805000344, + "ns": 299.73459482997856, + "ns_low": 298.99762611069394, + "ns_high": 300.53546166337577, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "ring", "id": "hkdf-sha256/expand/ring", - "ns": 343.52218079891765, - "ns_low": 342.78142816606936, - "ns_high": 344.30992656912025, + "ns": 336.58370781835646, + "ns_low": 334.94213029116213, + "ns_high": 338.6322093882021, "throughput": null }, { "operation": "hkdf-sha256/expand/{lib}", "library": "rustcrypto", "id": "hkdf-sha256/expand/rustcrypto", - "ns": 527.1779521318905, - "ns_low": 525.6040871284112, - "ns_high": 528.8139804915514, + "ns": 512.4818134580983, + "ns_low": 510.33880354489185, + "ns_high": 514.7786588890725, "throughput": null }, { "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-sign/aws-lc-rs", - "ns": 454357.78616816906, - "ns_low": 452696.10103796027, - "ns_high": 456238.88263502263, + "ns": 448678.3166188858, + "ns_low": 447685.9450635201, + "ns_high": 449796.61403543496, "throughput": { "Elements": 1 } @@ -3115,9 +3200,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-sign/graviola", - "ns": 458570.31339145853, - "ns_low": 452900.8624342941, - "ns_high": 465583.7949764276, + "ns": 445923.1877390276, + "ns_low": 444700.6861495128, + "ns_high": 447262.9482973663, "throughput": { "Elements": 1 } @@ -3126,9 +3211,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-sign/openssl", - "ns": 471978.67491650657, - "ns_low": 469171.20056266425, - "ns_high": 474737.1617744397, + "ns": 453807.564403724, + "ns_low": 452609.5090886064, + "ns_high": 455195.54605696845, "throughput": { "Elements": 1 } @@ -3137,9 +3222,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-sign/rind", - "ns": 567696.2933796365, - "ns_low": 566027.623549907, - "ns_high": 569590.2812281476, + "ns": 447433.1530116743, + "ns_low": 446304.83174160466, + "ns_high": 448767.5616778888, "throughput": { "Elements": 1 } @@ -3148,9 +3233,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-sign/ring", - "ns": 442479.97139648296, - "ns_low": 440933.84065622336, - "ns_high": 444159.64158291114, + "ns": 434466.45943845133, + "ns_low": 433155.8973498347, + "ns_high": 436277.62226654665, "throughput": { "Elements": 1 } @@ -3159,9 +3244,9 @@ "operation": "rsa2048-pkcs1-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-sign/rustcrypto", - "ns": 1161300.6689936456, - "ns_low": 1154610.0859800954, - "ns_high": 1169900.387017298, + "ns": 1144205.9728299098, + "ns_low": 1142025.3159098988, + "ns_high": 1146484.7197132248, "throughput": { "Elements": 1 } @@ -3170,9 +3255,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pkcs1-sha256-verify/aws-lc-rs", - "ns": 15810.564480878567, - "ns_low": 15665.270338809572, - "ns_high": 15996.719024198466, + "ns": 15882.338212629653, + "ns_low": 15747.744563035823, + "ns_high": 16084.608207424766, "throughput": { "Elements": 1 } @@ -3181,9 +3266,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pkcs1-sha256-verify/graviola", - "ns": 19608.51654404439, - "ns_low": 19238.719407274817, - "ns_high": 20323.80983630048, + "ns": 19051.281602630414, + "ns_low": 19016.37181437864, + "ns_high": 19087.454218283772, "throughput": { "Elements": 1 } @@ -3192,9 +3277,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pkcs1-sha256-verify/openssl", - "ns": 28372.804426382936, - "ns_low": 27286.136311309456, - "ns_high": 29428.24592600725, + "ns": 24539.279143608688, + "ns_low": 24469.780516809667, + "ns_high": 24617.64878435437, "throughput": { "Elements": 1 } @@ -3203,9 +3288,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pkcs1-sha256-verify/rind", - "ns": 12969.990092906111, - "ns_low": 12916.659427883615, - "ns_high": 13031.059966739002, + "ns": 12880.790081716968, + "ns_low": 12844.359335933214, + "ns_high": 12920.721154696772, "throughput": { "Elements": 1 } @@ -3214,9 +3299,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pkcs1-sha256-verify/ring", - "ns": 16725.84110494205, - "ns_low": 16661.534298647694, - "ns_high": 16799.94401078037, + "ns": 16506.21726269642, + "ns_low": 16466.69876598778, + "ns_high": 16549.17547571869, "throughput": { "Elements": 1 } @@ -3225,9 +3310,9 @@ "operation": "rsa2048-pkcs1-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pkcs1-sha256-verify/rustcrypto", - "ns": 58282.59791286592, - "ns_low": 58120.519290748656, - "ns_high": 58465.67845365578, + "ns": 57814.73669438586, + "ns_low": 57612.91983996474, + "ns_high": 58045.84509599947, "throughput": { "Elements": 1 } @@ -3236,9 +3321,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-sign/aws-lc-rs", - "ns": 459051.2643904241, - "ns_low": 457636.96721485036, - "ns_high": 460604.7154578351, + "ns": 461869.81302792963, + "ns_low": 456099.23237749055, + "ns_high": 471117.59856658947, "throughput": { "Elements": 1 } @@ -3247,9 +3332,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-sign/graviola", - "ns": 453657.1416477021, - "ns_low": 451365.4516433636, - "ns_high": 456249.5194119523, + "ns": 450243.09732673265, + "ns_low": 448757.60049778485, + "ns_high": 451819.2924605041, "throughput": { "Elements": 1 } @@ -3258,9 +3343,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-sign/libcrux", - "ns": 7100909.865999999, - "ns_low": 7071992.919299996, - "ns_high": 7132384.453149996, + "ns": 7220738.335999998, + "ns_low": 7109927.952449996, + "ns_high": 7408938.225999997, "throughput": { "Elements": 1 } @@ -3269,9 +3354,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-sign/openssl", - "ns": 481141.0669957145, - "ns_low": 479274.08637798607, - "ns_high": 483224.2346923228, + "ns": 456548.6151174819, + "ns_low": 455636.19671495556, + "ns_high": 457569.7446318243, "throughput": { "Elements": 1 } @@ -3280,9 +3365,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-sign/rind", - "ns": 576254.6432998375, - "ns_low": 572863.7302294506, - "ns_high": 579964.782860166, + "ns": 445919.6729629082, + "ns_low": 444992.3429488469, + "ns_high": 447019.78589339874, "throughput": { "Elements": 1 } @@ -3291,9 +3376,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-sign/ring", - "ns": 440436.1540579282, - "ns_low": 439044.1412238779, - "ns_high": 441971.0189637295, + "ns": 437275.89552238805, + "ns_low": 436159.7145617792, + "ns_high": 438474.975652222, "throughput": { "Elements": 1 } @@ -3302,9 +3387,9 @@ "operation": "rsa2048-pss-sha256-sign/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-sign/rustcrypto", - "ns": 1169084.0299837447, - "ns_low": 1158535.9087165375, - "ns_high": 1187818.1148358528, + "ns": 1149823.5205645042, + "ns_low": 1147503.7799427446, + "ns_high": 1152429.5148172644, "throughput": { "Elements": 1 } @@ -3313,9 +3398,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "aws-lc-rs", "id": "rsa2048-pss-sha256-verify/aws-lc-rs", - "ns": 18002.35283994071, - "ns_low": 17857.341779874783, - "ns_high": 18267.30720662871, + "ns": 17005.0660618548, + "ns_low": 16947.655742496736, + "ns_high": 17073.15383660991, "throughput": { "Elements": 1 } @@ -3324,9 +3409,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "graviola", "id": "rsa2048-pss-sha256-verify/graviola", - "ns": 22155.774789528703, - "ns_low": 22079.38613300675, - "ns_high": 22237.762463759067, + "ns": 21846.168672917043, + "ns_low": 21782.816701047977, + "ns_high": 21919.139759771435, "throughput": { "Elements": 1 } @@ -3335,9 +3420,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "libcrux", "id": "rsa2048-pss-sha256-verify/libcrux", - "ns": 379991.86970888136, - "ns_low": 378711.5022817886, - "ns_high": 381376.22299247276, + "ns": 377869.6554765775, + "ns_low": 376630.82578166405, + "ns_high": 379238.36042323604, "throughput": { "Elements": 1 } @@ -3346,9 +3431,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "openssl", "id": "rsa2048-pss-sha256-verify/openssl", - "ns": 27300.778646506442, - "ns_low": 27196.834595365013, - "ns_high": 27444.50433414878, + "ns": 27155.75481803404, + "ns_low": 27037.84283789748, + "ns_high": 27296.410638231784, "throughput": { "Elements": 1 } @@ -3357,9 +3442,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rind", "id": "rsa2048-pss-sha256-verify/rind", - "ns": 15238.224777441608, - "ns_low": 15093.18123605008, - "ns_high": 15416.903190189412, + "ns": 14358.929428388468, + "ns_low": 14313.439458852206, + "ns_high": 14411.051444965364, "throughput": { "Elements": 1 } @@ -3368,9 +3453,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "ring", "id": "rsa2048-pss-sha256-verify/ring", - "ns": 19355.58372891213, - "ns_low": 19311.552082878618, - "ns_high": 19409.378119145396, + "ns": 18222.3922694359, + "ns_low": 18190.09420056791, + "ns_high": 18256.397099865942, "throughput": { "Elements": 1 } @@ -3379,9 +3464,9 @@ "operation": "rsa2048-pss-sha256-verify/{lib}", "library": "rustcrypto", "id": "rsa2048-pss-sha256-verify/rustcrypto", - "ns": 71123.88442506937, - "ns_low": 70811.84231300728, - "ns_high": 71488.20562676468, + "ns": 70020.2755831404, + "ns_low": 69851.334341573, + "ns_high": 70211.54027345433, "throughput": { "Elements": 1 } @@ -3390,9 +3475,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "aws-lc-rs", "id": "mlkem768-keygen/aws-lc-rs", - "ns": 23318.404974139205, - "ns_low": 22825.050398053252, - "ns_high": 23857.352281475458, + "ns": 18439.015749685976, + "ns_low": 18377.83570570144, + "ns_high": 18511.61800251102, "throughput": { "Elements": 1 } @@ -3401,9 +3486,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "graviola", "id": "mlkem768-keygen/graviola", - "ns": 11040.449353288563, - "ns_low": 10990.662916886713, - "ns_high": 11098.498869792316, + "ns": 10412.756422628909, + "ns_low": 10381.765537198018, + "ns_high": 10447.758303517874, "throughput": { "Elements": 1 } @@ -3412,9 +3497,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "libcrux", "id": "mlkem768-keygen/libcrux-ml-kem", - "ns": 30736.37126816413, - "ns_low": 30198.67949444566, - "ns_high": 31181.065723343472, + "ns": 20052.63081404857, + "ns_low": 19999.42048413404, + "ns_high": 20111.211490700538, "throughput": { "Elements": 1 } @@ -3423,9 +3508,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "openssl", "id": "mlkem768-keygen/openssl", - "ns": 42662.64218877325, - "ns_low": 42522.563823447854, - "ns_high": 42817.831051045585, + "ns": 40627.31846332693, + "ns_low": 40485.81524654328, + "ns_high": 40786.17289956576, "throughput": { "Elements": 1 } @@ -3434,9 +3519,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rind", "id": "mlkem768-keygen/rind", - "ns": 12095.924052542568, - "ns_low": 11860.684948959217, - "ns_high": 12355.172408662494, + "ns": 10239.592799335518, + "ns_low": 10215.05512975954, + "ns_high": 10264.621019203343, "throughput": { "Elements": 1 } @@ -3445,9 +3530,9 @@ "operation": "mlkem768-keygen/{lib}", "library": "rustcrypto", "id": "mlkem768-keygen/rustcrypto", - "ns": 71577.7191065887, - "ns_low": 70165.57512719696, - "ns_high": 73187.59810680551, + "ns": 59969.462998965566, + "ns_low": 59813.90134200425, + "ns_high": 60138.64294180444, "throughput": { "Elements": 1 } @@ -3456,9 +3541,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-encaps/aws-lc-rs", - "ns": 20307.490654943107, - "ns_low": 20075.62468775745, - "ns_high": 20625.084120883464, + "ns": 18733.78880855623, + "ns_low": 18659.264840131505, + "ns_high": 18812.06737078171, "throughput": { "Elements": 1 } @@ -3467,9 +3552,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "graviola", "id": "mlkem768-encaps/graviola", - "ns": 12827.307011477267, - "ns_low": 12488.208288913816, - "ns_high": 13212.684769768186, + "ns": 11115.51999376057, + "ns_low": 11077.767862737537, + "ns_high": 11156.390221180049, "throughput": { "Elements": 1 } @@ -3478,9 +3563,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "libcrux", "id": "mlkem768-encaps/libcrux-ml-kem", - "ns": 21005.858531202182, - "ns_low": 20216.07930607532, - "ns_high": 22069.299873099175, + "ns": 18131.12620650125, + "ns_low": 18059.57879222587, + "ns_high": 18215.831183346134, "throughput": { "Elements": 1 } @@ -3489,9 +3574,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "openssl", "id": "mlkem768-encaps/openssl", - "ns": 44490.504557183616, - "ns_low": 44123.82665185309, - "ns_high": 44933.205014055886, + "ns": 41180.835585045075, + "ns_low": 41097.55679616091, + "ns_high": 41268.443876446865, "throughput": { "Elements": 1 } @@ -3500,9 +3585,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rind", "id": "mlkem768-encaps/rind", - "ns": 15729.336538159523, - "ns_low": 14895.368509645114, - "ns_high": 16527.682560921323, + "ns": 10614.820658711393, + "ns_low": 10575.663529303127, + "ns_high": 10664.101269634126, "throughput": { "Elements": 1 } @@ -3511,9 +3596,9 @@ "operation": "mlkem768-encaps/{lib}", "library": "rustcrypto", "id": "mlkem768-encaps/rustcrypto", - "ns": 75076.94444674317, - "ns_low": 73926.87244383426, - "ns_high": 76418.81591757896, + "ns": 67032.16437810945, + "ns_low": 66618.23201303615, + "ns_high": 67542.79386840237, "throughput": { "Elements": 1 } @@ -3522,9 +3607,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "aws-lc-rs", "id": "mlkem768-decaps/aws-lc-rs", - "ns": 16611.71510927212, - "ns_low": 16491.11936277466, - "ns_high": 16730.360314518144, + "ns": 16014.701270951133, + "ns_low": 15959.75173910364, + "ns_high": 16078.689121032334, "throughput": { "Elements": 1 } @@ -3533,9 +3618,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "graviola", "id": "mlkem768-decaps/graviola", - "ns": 8304.422296749706, - "ns_low": 8270.11326997317, - "ns_high": 8341.421746647191, + "ns": 7419.617415102704, + "ns_low": 7402.78289195486, + "ns_high": 7438.782848437329, "throughput": { "Elements": 1 } @@ -3544,9 +3629,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "libcrux", "id": "mlkem768-decaps/libcrux-ml-kem", - "ns": 19932.95281867888, - "ns_low": 19822.542397444464, - "ns_high": 20052.23470177518, + "ns": 19041.955543538497, + "ns_low": 18982.481242543396, + "ns_high": 19103.330634132093, "throughput": { "Elements": 1 } @@ -3555,9 +3640,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "openssl", "id": "mlkem768-decaps/openssl", - "ns": 33048.445810879595, - "ns_low": 32816.99202643313, - "ns_high": 33306.47261862596, + "ns": 31666.407422242617, + "ns_low": 31607.35534188372, + "ns_high": 31734.300716263042, "throughput": { "Elements": 1 } @@ -3566,9 +3651,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rind", "id": "mlkem768-decaps/rind", - "ns": 8275.849957736073, - "ns_low": 8245.545405970575, - "ns_high": 8302.641980994571, + "ns": 7072.3352945315855, + "ns_low": 7048.7976185519765, + "ns_high": 7099.189424681006, "throughput": { "Elements": 1 } @@ -3577,9 +3662,9 @@ "operation": "mlkem768-decaps/{lib}", "library": "rustcrypto", "id": "mlkem768-decaps/rustcrypto", - "ns": 89794.01141379384, - "ns_low": 89446.2192535082, - "ns_high": 90329.13951455372, + "ns": 84369.83066942515, + "ns_low": 82839.11687913729, + "ns_high": 87457.60501683853, "throughput": { "Elements": 1 } @@ -3588,9 +3673,9 @@ "operation": "p384-ecdh/{lib}", "library": "aws-lc-rs", "id": "p384-ecdh/aws-lc-rs", - "ns": 191620.34764740654, - "ns_low": 190918.80034288345, - "ns_high": 192460.0686646471, + "ns": 174616.41882148662, + "ns_low": 174281.1469214479, + "ns_high": 174994.5896957615, "throughput": { "Elements": 1 } @@ -3599,9 +3684,9 @@ "operation": "p384-ecdh/{lib}", "library": "graviola", "id": "p384-ecdh/graviola", - "ns": 254754.88237131175, - "ns_low": 254058.27225988882, - "ns_high": 255535.08009107437, + "ns": 245237.63439337965, + "ns_low": 241229.28175653875, + "ns_high": 252794.51752770485, "throughput": { "Elements": 1 } @@ -3610,9 +3695,9 @@ "operation": "p384-ecdh/{lib}", "library": "openssl", "id": "p384-ecdh/openssl", - "ns": 510327.0149918723, - "ns_low": 507578.87088462553, - "ns_high": 513290.6611178866, + "ns": 483502.75231712725, + "ns_low": 482613.25494040124, + "ns_high": 484454.11550870567, "throughput": { "Elements": 1 } @@ -3621,9 +3706,9 @@ "operation": "p384-ecdh/{lib}", "library": "rind", "id": "p384-ecdh/rind", - "ns": 159921.55150140388, - "ns_low": 159162.75359152036, - "ns_high": 160672.5334243266, + "ns": 150970.6375018472, + "ns_low": 150563.61694519993, + "ns_high": 151414.89355680626, "throughput": { "Elements": 1 } @@ -3632,9 +3717,9 @@ "operation": "p384-ecdh/{lib}", "library": "ring", "id": "p384-ecdh/ring", - "ns": 688799.1431712724, - "ns_low": 687707.769891666, - "ns_high": 690083.3598153865, + "ns": 645537.9080065022, + "ns_low": 643036.6016163222, + "ns_high": 648134.7179678554, "throughput": { "Elements": 1 } @@ -3643,9 +3728,9 @@ "operation": "p384-ecdh/{lib}", "library": "rustcrypto", "id": "p384-ecdh/p384-rustcrypto", - "ns": 871977.9494576622, - "ns_low": 863286.2768304372, - "ns_high": 882128.7027606572, + "ns": 769611.4819624649, + "ns_low": 766847.4907009574, + "ns_high": 772663.5725947304, "throughput": { "Elements": 1 } @@ -3654,9 +3739,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-sign/aws-lc-rs", - "ns": 85866.42457176634, - "ns_low": 85270.09904048097, - "ns_high": 86605.35823085849, + "ns": 82652.59818050834, + "ns_low": 82022.26527374508, + "ns_high": 83917.32726074624, "throughput": { "Elements": 1 } @@ -3665,9 +3750,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "graviola", "id": "p384-ecdsa-sign/graviola", - "ns": 133022.2968204522, - "ns_low": 131291.83319300265, - "ns_high": 135604.22006091944, + "ns": 128636.28886892271, + "ns_low": 128223.90643160926, + "ns_high": 129104.03519217839, "throughput": { "Elements": 1 } @@ -3676,9 +3761,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "openssl", "id": "p384-ecdsa-sign/openssl", - "ns": 170786.47096349933, - "ns_low": 169013.22018791377, - "ns_high": 173324.5460981642, + "ns": 164533.7649305453, + "ns_low": 164064.2155197417, + "ns_high": 165101.16407621384, "throughput": { "Elements": 1 } @@ -3687,9 +3772,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rind", "id": "p384-ecdsa-sign/rind", - "ns": 40211.93328978868, - "ns_low": 39968.89948973205, - "ns_high": 40477.63996787972, + "ns": 39617.083772030936, + "ns_low": 39521.24528343696, + "ns_high": 39712.444480713195, "throughput": { "Elements": 1 } @@ -3698,9 +3783,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "ring", "id": "p384-ecdsa-sign/ring", - "ns": 349631.5791990542, - "ns_low": 348455.11765403644, - "ns_high": 350884.08565699076, + "ns": 343155.46700458106, + "ns_low": 342603.21919415885, + "ns_high": 343762.34674433735, "throughput": { "Elements": 1 } @@ -3709,9 +3794,9 @@ "operation": "p384-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-sign/rustcrypto", - "ns": 194330.46893084084, - "ns_low": 193203.11067263008, - "ns_high": 195674.5946294268, + "ns": 170636.4857588296, + "ns_low": 170163.07652476913, + "ns_high": 171153.22281585148, "throughput": { "Elements": 1 } @@ -3720,9 +3805,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p384-ecdsa-verify/aws-lc-rs", - "ns": 186634.77459952713, - "ns_low": 182835.25148552386, - "ns_high": 192412.48449880476, + "ns": 175918.628763854, + "ns_low": 175289.95451931597, + "ns_high": 176590.53135906576, "throughput": { "Elements": 1 } @@ -3731,9 +3816,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "graviola", "id": "p384-ecdsa-verify/graviola", - "ns": 244843.00804590908, - "ns_low": 242905.04292861396, - "ns_high": 247028.80910351945, + "ns": 239411.5934003251, + "ns_low": 238888.11783848485, + "ns_high": 240034.50027776556, "throughput": { "Elements": 1 } @@ -3742,9 +3827,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "openssl", "id": "p384-ecdsa-verify/openssl", - "ns": 409946.92151174817, - "ns_low": 407180.58513383294, - "ns_high": 413403.2365806344, + "ns": 399630.5347628196, + "ns_low": 398777.80541785853, + "ns_high": 400581.28787699924, "throughput": { "Elements": 1 } @@ -3753,9 +3838,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rind", "id": "p384-ecdsa-verify/rind", - "ns": 154436.47450568937, - "ns_low": 153273.6130043407, - "ns_high": 156041.8536750233, + "ns": 141437.82502260973, + "ns_low": 141174.45029957616, + "ns_high": 141717.76960960327, "throughput": { "Elements": 1 } @@ -3764,9 +3849,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "ring", "id": "p384-ecdsa-verify/ring", - "ns": 628356.6491827989, - "ns_low": 626331.6912011463, - "ns_high": 630446.1539001303, + "ns": 622903.6100546771, + "ns_low": 620931.4321936964, + "ns_high": 625122.5089609816, "throughput": { "Elements": 1 } @@ -3775,9 +3860,9 @@ "operation": "p384-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p384-ecdsa-verify/rustcrypto", - "ns": 712246.1988089257, - "ns_low": 709378.3088890671, - "ns_high": 715492.7841606174, + "ns": 695043.3032067386, + "ns_low": 693162.3871299368, + "ns_high": 697183.683802998, "throughput": { "Elements": 1 } @@ -3786,9 +3871,9 @@ "operation": "p521-ecdh/{lib}", "library": "aws-lc-rs", "id": "p521-ecdh/aws-lc-rs", - "ns": 255047.7220393084, - "ns_low": 253052.41041979386, - "ns_high": 257183.70635300493, + "ns": 262340.4232904783, + "ns_low": 260946.26638390083, + "ns_high": 263896.305574783, "throughput": { "Elements": 1 } @@ -3797,9 +3882,9 @@ "operation": "p521-ecdh/{lib}", "library": "openssl", "id": "p521-ecdh/openssl", - "ns": 498141.2159021723, - "ns_low": 497486.5396364585, - "ns_high": 498887.0737703854, + "ns": 497387.5714969706, + "ns_low": 497089.1177120804, + "ns_high": 497737.8872074559, "throughput": { "Elements": 1 } @@ -3808,9 +3893,9 @@ "operation": "p521-ecdh/{lib}", "library": "rind", "id": "p521-ecdh/rind", - "ns": 225213.6279670952, - "ns_low": 224024.84610745337, - "ns_high": 226715.97622188326, + "ns": 233755.13159056203, + "ns_low": 233573.60394378292, + "ns_high": 233953.76096850488, "throughput": { "Elements": 1 } @@ -3819,9 +3904,9 @@ "operation": "p521-ecdh/{lib}", "library": "rustcrypto", "id": "p521-ecdh/rustcrypto", - "ns": 822793.4108556228, - "ns_low": 806309.4692116209, - "ns_high": 850570.7318630626, + "ns": 841499.5514615043, + "ns_low": 836595.6032715996, + "ns_high": 848242.2341770424, "throughput": { "Elements": 1 } @@ -3830,9 +3915,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-sign/aws-lc-rs", - "ns": 160140.96440594058, - "ns_low": 158561.24857926895, - "ns_high": 162438.72806287507, + "ns": 158671.75802719078, + "ns_low": 156373.38968026682, + "ns_high": 163143.72888393432, "throughput": { "Elements": 1 } @@ -3841,9 +3926,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "openssl", "id": "p521-ecdsa-sign/openssl", - "ns": 224590.03477365646, - "ns_low": 223006.83021382437, - "ns_high": 227034.01716922334, + "ns": 221002.93849662578, + "ns_low": 220331.88481704556, + "ns_high": 221815.05256473753, "throughput": { "Elements": 1 } @@ -3852,9 +3937,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rind", "id": "p521-ecdsa-sign/rind", - "ns": 65701.74740751687, - "ns_low": 65299.01835834892, - "ns_high": 66119.34725149091, + "ns": 64262.896464903206, + "ns_low": 64081.032036304336, + "ns_high": 64472.230074994026, "throughput": { "Elements": 1 } @@ -3863,9 +3948,9 @@ "operation": "p521-ecdsa-sign/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-sign/rustcrypto", - "ns": 192129.0792071819, - "ns_low": 190231.78219200493, - "ns_high": 194330.9951439971, + "ns": 185926.45505541598, + "ns_low": 185172.1745059229, + "ns_high": 186824.2451803549, "throughput": { "Elements": 1 } @@ -3874,9 +3959,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "aws-lc-rs", "id": "p521-ecdsa-verify/aws-lc-rs", - "ns": 307982.2191665435, - "ns_low": 305520.63998180657, - "ns_high": 311468.8461181156, + "ns": 303225.93398551794, + "ns_low": 302509.2067465763, + "ns_high": 304146.9460008791, "throughput": { "Elements": 1 } @@ -3885,9 +3970,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "openssl", "id": "p521-ecdsa-verify/openssl", - "ns": 465581.88437712425, - "ns_low": 462353.6212800445, - "ns_high": 469247.0587834391, + "ns": 460019.67937195214, + "ns_low": 457031.51659979805, + "ns_high": 463753.8518863362, "throughput": { "Elements": 1 } @@ -3896,9 +3981,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rind", "id": "p521-ecdsa-verify/rind", - "ns": 236217.6483887493, - "ns_low": 235795.43103220494, - "ns_high": 236645.7934523709, + "ns": 214430.25852815132, + "ns_low": 212418.98606281364, + "ns_high": 216736.9793640047, "throughput": { "Elements": 1 } @@ -3907,9 +3992,9 @@ "operation": "p521-ecdsa-verify/{lib}", "library": "rustcrypto", "id": "p521-ecdsa-verify/rustcrypto", - "ns": 666031.0801182208, - "ns_low": 662636.4450083, - "ns_high": 669639.0074922623, + "ns": 636368.6143017586, + "ns_low": 631922.2015519296, + "ns_high": 641397.7329828897, "throughput": { "Elements": 1 } @@ -3917,14 +4002,14 @@ ], "build_cost": { "status": "ok", - "started": "2026-11-04T17:40:33+00:00", + "started": "2026-11-06T16:12:00+00:00", "host": { "hostname": "nixos2", "os": "Linux 6.18.56", "arch": "x86_64", "cpu": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz", "cpus": 12, - "jobs": "2", + "jobs": "3", "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", "cc": "gcc (GCC) 16.2.0" }, @@ -3933,41 +4018,41 @@ { "name": "rind", "seconds": [ - 7.57, - 7.57, - 7.63 + 7.25, + 7.28, + 7.22 ], - "median_seconds": 7.57, + "median_seconds": 7.25, "cpu_seconds": [ - 11.08, - 11.09, - 11.15 + 12.4, + 12.47, + 12.41 ], - "median_cpu_seconds": 11.09, - "stripped_bytes": 830568, + "median_cpu_seconds": 12.41, + "stripped_bytes": 878176, "tools": [], "packages": [ "build-cost-rind@0.0.0", "cfg-if@1.0.5", "getrandom@0.4.3", "libc@0.2.191", - "rind@0.1.12" + "rind@0.1.13" ] }, { "name": "aws-lc-rs", "seconds": [ - 32.97, - 33.18, - 32.97 + 26.16, + 26.18, + 26.21 ], - "median_seconds": 32.97, + "median_seconds": 26.18, "cpu_seconds": [ - 62.38, - 62.77, - 62.39 + 62.89, + 62.85, + 62.88 ], - "median_cpu_seconds": 62.39, + "median_cpu_seconds": 62.88, "stripped_bytes": 2991408, "tools": [ "cc" @@ -3976,7 +4061,7 @@ "aws-lc-rs@1.19.0", "aws-lc-sys@0.47.0", "build-cost-aws-lc-rs@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cmake@0.1.58", "dunce@1.0.5", "find-msvc-tools@0.1.15", @@ -3992,24 +4077,24 @@ { "name": "ring", "seconds": [ - 10.38, - 10.31, - 9.88 + 9.39, + 9.25, + 9.32 ], - "median_seconds": 10.31, + "median_seconds": 9.32, "cpu_seconds": [ - 12.66, - 12.53, - 12.04 + 12.19, + 12.04, + 12.08 ], - "median_cpu_seconds": 12.53, + "median_cpu_seconds": 12.08, "stripped_bytes": 744328, "tools": [ "cc" ], "packages": [ "build-cost-ring@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cfg-if@1.0.5", "find-msvc-tools@0.1.15", "getrandom@0.2.17", @@ -4022,17 +4107,17 @@ { "name": "rustcrypto", "seconds": [ - 11.91, - 11.94, - 12.0 + 8.24, + 8.26, + 8.29 ], - "median_seconds": 11.94, + "median_seconds": 8.26, "cpu_seconds": [ - 23.39, - 23.43, - 23.66 + 23.92, + 24.02, + 24.02 ], - "median_cpu_seconds": 23.43, + "median_cpu_seconds": 24.02, "stripped_bytes": 540320, "tools": [], "packages": [ @@ -4098,41 +4183,41 @@ { "name": "graviola", "seconds": [ - 4.45, - 4.56, - 4.42 + 3.83, + 3.84, + 3.79 ], - "median_seconds": 4.45, + "median_seconds": 3.83, "cpu_seconds": [ - 6.48, - 6.63, + 6.49, + 6.52, 6.47 ], - "median_cpu_seconds": 6.48, - "stripped_bytes": 912208, + "median_cpu_seconds": 6.49, + "stripped_bytes": 912944, "tools": [], "packages": [ "build-cost-graviola@0.0.0", "cfg-if@1.0.5", "getrandom@0.4.3", - "graviola@0.4.3", + "graviola@0.4.4", "libc@0.2.191" ] }, { "name": "libcrux", "seconds": [ - 10.56, - 10.83, - 10.66 + 9.69, + 9.68, + 9.63 ], - "median_seconds": 10.66, + "median_seconds": 9.68, "cpu_seconds": [ - 20.05, - 20.11, - 20.1 + 20.19, + 20.2, + 20.13 ], - "median_cpu_seconds": 20.1, + "median_cpu_seconds": 20.19, "stripped_bytes": 745664, "tools": [], "packages": [ @@ -4168,17 +4253,17 @@ { "name": "openssl", "seconds": [ - 7.0, - 7.03, - 7.06 + 5.77, + 5.81, + 5.81 ], - "median_seconds": 7.03, + "median_seconds": 5.81, "cpu_seconds": [ - 11.48, - 11.51, - 11.57 + 11.61, + 11.62, + 11.66 ], - "median_cpu_seconds": 11.51, + "median_cpu_seconds": 11.62, "stripped_bytes": 377864, "tools": [ "cc", @@ -4187,7 +4272,7 @@ "packages": [ "bitflags@2.13.2", "build-cost-openssl@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cfg-if@1.0.5", "find-msvc-tools@0.1.15", "foreign-types-shared@0.1.1", @@ -4208,17 +4293,17 @@ { "name": "openssl-vendored", "seconds": [ - 132.57, - 127.13, - 119.26 + 82.45, + 82.35, + 80.98 ], - "median_seconds": 127.13, + "median_seconds": 82.35, "cpu_seconds": [ - 251.99, - 241.7, - 227.79 + 220.54, + 220.19, + 218.89 ], - "median_cpu_seconds": 241.7, + "median_cpu_seconds": 220.19, "stripped_bytes": 5133408, "tools": [ "cc", @@ -4228,7 +4313,7 @@ "packages": [ "bitflags@2.13.2", "build-cost-openssl@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cfg-if@1.0.5", "find-msvc-tools@0.1.15", "foreign-types-shared@0.1.1", @@ -4250,18 +4335,51 @@ { "name": "rustls-rind", "seconds": [ - 17.95, - 16.22, - 16.61 + 11.33, + 11.36, + 11.3 + ], + "median_seconds": 11.33, + "cpu_seconds": [ + 31.48, + 31.54, + 31.43 + ], + "median_cpu_seconds": 31.48, + "stripped_bytes": 2953936, + "tools": [], + "packages": [ + "build-cost-rustls@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "once_cell@1.21.4", + "rind-rustls@0.1.13", + "rind@0.1.13", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-rind-lean", + "seconds": [ + 11.51, + 11.79, + 11.79 ], - "median_seconds": 16.61, + "median_seconds": 11.79, "cpu_seconds": [ - 34.8, - 31.62, - 32.52 + 32.1, + 32.86, + 32.75 ], - "median_cpu_seconds": 32.52, - "stripped_bytes": 2869472, + "median_cpu_seconds": 32.75, + "stripped_bytes": 1821344, "tools": [], "packages": [ "build-cost-rustls@0.0.0", @@ -4269,8 +4387,8 @@ "getrandom@0.4.3", "libc@0.2.191", "once_cell@1.21.4", - "rind-rustls@0.1.12", - "rind@0.1.12", + "rind-rustls@0.1.13", + "rind@0.1.13", "rustls-pki-types@1.15.1", "rustls-webpki@0.103.16", "rustls@0.23.46", @@ -4283,17 +4401,17 @@ { "name": "rustls-aws-lc-rs", "seconds": [ - 61.31, - 63.41, - 68.76 + 38.16, + 35.96, + 36.62 ], - "median_seconds": 63.41, + "median_seconds": 36.62, "cpu_seconds": [ - 114.5, - 118.13, - 127.14 + 91.25, + 87.95, + 88.73 ], - "median_cpu_seconds": 118.13, + "median_cpu_seconds": 88.73, "stripped_bytes": 4114504, "tools": [ "cc" @@ -4302,7 +4420,7 @@ "aws-lc-rs@1.19.0", "aws-lc-sys@0.47.0", "build-cost-rustls@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cmake@0.1.58", "dunce@1.0.5", "find-msvc-tools@0.1.15", @@ -4324,24 +4442,24 @@ { "name": "rustls-ring", "seconds": [ - 22.58, - 22.93, - 23.02 + 16.39, + 16.24, + 16.41 ], - "median_seconds": 22.93, + "median_seconds": 16.39, "cpu_seconds": [ - 34.7, - 35.32, - 35.39 + 30.53, + 30.4, + 30.73 ], - "median_cpu_seconds": 35.32, - "stripped_bytes": 1943680, + "median_cpu_seconds": 30.53, + "stripped_bytes": 1943808, "tools": [ "cc" ], "packages": [ "build-cost-rustls@0.0.0", - "cc@1.11.0", + "cc@1.11.1", "cfg-if@1.0.5", "find-msvc-tools@0.1.15", "getrandom@0.2.17", diff --git a/benchmarks/data/ovh-iad.json b/benchmarks/data/ovh-iad.json new file mode 100644 index 000000000..8c2338141 --- /dev/null +++ b/benchmarks/data/ovh-iad.json @@ -0,0 +1,3901 @@ +{ + "schema": 1, + "host": "ovh-iad", + "commit": "6b185382a621d6ffe630db4118adc464bc4d158a", + "started": "2026-11-06T17:41:17+00:00", + "cpu": { + "model": "Intel Core Processor (Haswell, no TSX)", + "arch": "x86_64", + "logical_cpus": 4 + }, + "os": "NixOS 26.11 (Zokor) (Linux 6.18.40)", + "toolchain": { + "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", + "cargo": "cargo 1.98.1 (797e8a9bc 2026-08-05)" + }, + "libraries": { + "rind": { + "rind": "0.1.13", + "rind-rustls": "0.1.13" + }, + "aws-lc-rs": { + "aws-lc-rs": "1.19.0", + "aws-lc-sys": "0.47.0" + }, + "ring": { + "ring": "0.17.14" + }, + "rustcrypto": { + "aes-gcm": "0.11.1", + "chacha20poly1305": "0.11.0", + "sha2": "0.11.1", + "sha3": "0.12.0", + "hmac": "0.13.0", + "hkdf": "0.13.0", + "p256": "0.14.0", + "p384": "0.14.0", + "p521": "0.14.0", + "rsa": "0.10.0-rc.19", + "ml-kem": "0.3.4", + "ed25519-dalek": "3.0.0", + "x25519-dalek": "3.0.0" + }, + "graviola": { + "graviola": "0.4.3", + "rustls-graviola": "0.4.0" + }, + "libcrux": { + "libcrux-aes": "0.0.10", + "libcrux-chacha20poly1305": "0.0.10", + "libcrux-ecdh": "0.0.9", + "libcrux-ecdsa": "0.0.9", + "libcrux-ed25519": "0.0.10", + "libcrux-hkdf": "0.0.9", + "libcrux-hmac": "0.0.9", + "libcrux-ml-kem": "0.0.11", + "libcrux-rsa": "0.0.9", + "libcrux-sha2": "0.0.9", + "libcrux-sha3": "0.0.11" + }, + "openssl": { + "openssl": "0.10.82", + "openssl-sys": "0.9.118", + "rustls-openssl": "0.4.2", + "linked": "OpenSSL 3.5.9 29 Sep 2026 (Library: OpenSSL 3.5.9 29 Sep 2026)" + }, + "tls": { + "rustls": "0.23.46" + } + }, + "rind_cpu": { + "cpuid": { + "intel": 1, + "adx": 0, + "aes": 1, + "vaes": 0, + "pclmulqdq": 1, + "vpclmulqdq": 0, + "bmi1": 1, + "bmi2": 1, + "movbe": 1, + "popcnt": 1, + "ssse3": 1, + "sse4.1": 1, + "avx": 1, + "avx2": 1, + "avx512f": 0, + "avx512dq": 0, + "avx512ifma": 0, + "avx512bw": 0, + "avx512vl": 0, + "avx512vbmi": 0, + "avx512vbmi2": 0, + "sha": 0, + "sha512": 0 + }, + "compatible": 1, + "supports_avx512_aes_gcm": 0 + }, + "refused": { + "graviola": [ + "adx" + ] + }, + "status": "ok", + "finished": "2026-11-06T18:16:42+00:00", + "criterion_args": [ + "--noplot", + "--warm-up-time", + "1", + "--measurement-time", + "3", + "^(rustls\\-full\\-handshake\\-group/x25519mlkem768/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-group/x25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-group/secp256r1/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-key/ed25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-key/rsa\\-2048/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-resumed\\-handshake/x25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|quic\\-header\\-protection/aes128/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|quic\\-header\\-protection/aes256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|quic\\-header\\-protection/chacha20/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|x25519\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|ed25519\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|ed25519\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|hmac\\-sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|hmac\\-sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|hkdf\\-sha256/extract\\-expand/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|hkdf\\-sha256/expand/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pkcs1\\-sha256\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pkcs1\\-sha256\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pss\\-sha256\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pss\\-sha256\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-keygen/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-encaps/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-decaps/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl))$" + ], + "load": { + "limit_cpus": 1.0, + "busy_cpus_before_build": 0.0, + "busy_cpus_before_run": 0.0, + "other_busy_cpus_during_run": 0.01, + "noisy": false + }, + "results": [ + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/x25519mlkem768/aws-lc-rs", + "ns": 731874.7310861534, + "ns_low": 723516.495339795, + "ns_high": 741117.2351691618, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/x25519mlkem768/openssl", + "ns": 1389591.6799999997, + "ns_low": 1373055.2749431822, + "ns_high": 1407258.3296818181, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/x25519mlkem768/rind", + "ns": 625807.3619417762, + "ns_low": 613074.9287173173, + "ns_high": 641236.8728603277, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/x25519/aws-lc-rs", + "ns": 554000.0183715088, + "ns_low": 544781.3109278827, + "ns_high": 564103.5733241013, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/x25519/openssl", + "ns": 1190497.5763853998, + "ns_low": 1167369.2665047043, + "ns_high": 1217215.1549825468, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/x25519/rind", + "ns": 490864.60124575143, + "ns_low": 484080.3505263774, + "ns_high": 498092.6220218381, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "ring", + "id": "rustls-full-handshake-group/x25519/ring", + "ns": 571299.3723688489, + "ns_low": 562762.0091358782, + "ns_high": 580350.9423053492, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/secp256r1/aws-lc-rs", + "ns": 752595.3238835526, + "ns_low": 724127.2617881149, + "ns_high": 783448.3714942684, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/secp256r1/openssl", + "ns": 1321274.0166666666, + "ns_low": 1293303.0635000002, + "ns_high": 1353288.6503437501, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/secp256r1/rind", + "ns": 570007.3901462982, + "ns_low": 561274.2719979712, + "ns_high": 579754.1973571397, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "ring", + "id": "rustls-full-handshake-group/secp256r1/ring", + "ns": 601351.2216905571, + "ns_low": 585081.3427388615, + "ns_high": 619696.5512152148, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-key/ed25519/aws-lc-rs", + "ns": 468807.196236146, + "ns_low": 458936.473228224, + "ns_high": 480876.143405344, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-key/ed25519/openssl", + "ns": 1218430.3932, + "ns_low": 1203382.2531099997, + "ns_high": 1235260.3962599998, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "rind", + "id": "rustls-full-handshake-key/ed25519/rind", + "ns": 400365.93702674744, + "ns_low": 394189.36054723087, + "ns_high": 407574.72079801856, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "ring", + "id": "rustls-full-handshake-key/ed25519/ring", + "ns": 507017.26390128565, + "ns_low": 500122.29941102234, + "ns_high": 515390.1081447427, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-key/rsa-2048/aws-lc-rs", + "ns": 1258460.1929166666, + "ns_low": 1246078.7370729165, + "ns_high": 1271806.356885417, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-key/rsa-2048/openssl", + "ns": 1887136.105, + "ns_low": 1853036.744125, + "ns_high": 1927247.5140937502, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "rind", + "id": "rustls-full-handshake-key/rsa-2048/rind", + "ns": 1187437.4903118073, + "ns_low": 1161585.2484371578, + "ns_high": 1216128.0610682121, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "ring", + "id": "rustls-full-handshake-key/rsa-2048/ring", + "ns": 1481995.53, + "ns_low": 1466071.9715, + "ns_high": 1498588.7263928573, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-resumed-handshake/x25519/aws-lc-rs", + "ns": 278394.5286025319, + "ns_low": 274015.2598117607, + "ns_high": 283524.1985195416, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "openssl", + "id": "rustls-resumed-handshake/x25519/openssl", + "ns": 746289.7104832274, + "ns_low": 736231.2605378762, + "ns_high": 757033.9074896682, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "rind", + "id": "rustls-resumed-handshake/x25519/rind", + "ns": 202066.0334298803, + "ns_low": 198581.82318584074, + "ns_high": 207816.42383878992, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "ring", + "id": "rustls-resumed-handshake/x25519/ring", + "ns": 287076.33233141224, + "ns_low": 281658.14644481725, + "ns_high": 292708.1843975868, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/aes128-gcm/aws-lc-rs", + "ns": 700770.1942958474, + "ns_low": 692658.6783414892, + "ns_high": 710042.8945819451, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "openssl", + "id": "rustls-bulk/aes128-gcm/openssl", + "ns": 789034.2298477908, + "ns_low": 778215.9099089755, + "ns_high": 802597.0323201236, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "rind", + "id": "rustls-bulk/aes128-gcm/rind", + "ns": 704594.8510122654, + "ns_low": 695125.0542998399, + "ns_high": 715690.2345482837, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "ring", + "id": "rustls-bulk/aes128-gcm/ring", + "ns": 716033.4045869661, + "ns_low": 707530.5691958677, + "ns_high": 725827.8009074125, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/aes256-gcm/aws-lc-rs", + "ns": 905717.2109117778, + "ns_low": 893165.4841343864, + "ns_high": 919891.8268624762, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "openssl", + "id": "rustls-bulk/aes256-gcm/openssl", + "ns": 995676.647379932, + "ns_low": 984059.7192113705, + "ns_high": 1008697.5298709947, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "rind", + "id": "rustls-bulk/aes256-gcm/rind", + "ns": 960612.9149460618, + "ns_low": 920235.2119384699, + "ns_high": 1002110.1261730434, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "ring", + "id": "rustls-bulk/aes256-gcm/ring", + "ns": 898871.2762819566, + "ns_low": 882661.1127530428, + "ns_high": 918315.0555552464, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/chacha20poly1305/aws-lc-rs", + "ns": 1515930.4480952385, + "ns_low": 1492813.814571428, + "ns_high": 1542263.2998571426, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "openssl", + "id": "rustls-bulk/chacha20poly1305/openssl", + "ns": 1770329.5329411775, + "ns_low": 1754956.7764558822, + "ns_high": 1788281.8317352945, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "rind", + "id": "rustls-bulk/chacha20poly1305/rind", + "ns": 1472342.1147619048, + "ns_low": 1462436.1116666675, + "ns_high": 1483652.6224166676, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "ring", + "id": "rustls-bulk/chacha20poly1305/ring", + "ns": 1532287.056842105, + "ns_low": 1515876.0338026306, + "ns_high": 1549714.737881578, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/32B", + "ns": 139.32763824915148, + "ns_low": 138.15831686186246, + "ns_high": 140.61286152055953, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "libcrux", + "id": "aes128-gcm/libcrux/32B", + "ns": 453.8950183723587, + "ns_low": 448.4834909499183, + "ns_high": 460.7588743778817, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "openssl", + "id": "aes128-gcm/openssl/32B", + "ns": 268.32460209265327, + "ns_low": 261.5588393139412, + "ns_high": 276.63494838594255, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "rind", + "id": "aes128-gcm/rind/32B", + "ns": 69.01586683067478, + "ns_low": 67.88208421010866, + "ns_high": 70.58508068387859, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "ring", + "id": "aes128-gcm/ring/32B", + "ns": 110.53742471350908, + "ns_low": 109.96303828066091, + "ns_high": 111.14446243826029, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/32B", + "ns": 157.65841476365205, + "ns_low": 156.27147549469373, + "ns_high": 159.2991452190773, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/1350B", + "ns": 459.6911189876312, + "ns_low": 450.49373577780824, + "ns_high": 472.85584399671177, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "libcrux", + "id": "aes128-gcm/libcrux/1350B", + "ns": 5456.597627729695, + "ns_low": 5413.073003004329, + "ns_high": 5511.770522447928, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "openssl", + "id": "aes128-gcm/openssl/1350B", + "ns": 560.7207494947136, + "ns_low": 551.3876044712619, + "ns_high": 574.0622456288517, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "rind", + "id": "aes128-gcm/rind/1350B", + "ns": 398.4016365566288, + "ns_low": 393.1607062342698, + "ns_high": 404.0723298886713, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "ring", + "id": "aes128-gcm/ring/1350B", + "ns": 475.1563667993875, + "ns_low": 461.79150068576683, + "ns_high": 490.500921068612, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/1350B", + "ns": 870.549543902838, + "ns_low": 862.85121439517, + "ns_high": 879.5893713966159, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/16KB", + "ns": 3788.43372858882, + "ns_low": 3745.2038083113275, + "ns_high": 3838.387606191455, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "libcrux", + "id": "aes128-gcm/libcrux/16KB", + "ns": 61682.43366573075, + "ns_low": 61311.73289628605, + "ns_high": 62120.61023409943, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "openssl", + "id": "aes128-gcm/openssl/16KB", + "ns": 4172.742505262023, + "ns_low": 4086.1800722082626, + "ns_high": 4280.934453865839, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "rind", + "id": "aes128-gcm/rind/16KB", + "ns": 3832.50649998066, + "ns_low": 3768.813393828128, + "ns_high": 3928.4009920402614, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "ring", + "id": "aes128-gcm/ring/16KB", + "ns": 3893.966787331905, + "ns_low": 3805.783055950093, + "ns_high": 4005.9569753317555, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/16KB", + "ns": 8862.452042532612, + "ns_low": 8797.965878751696, + "ns_high": 8931.84810600887, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/32B", + "ns": 141.9798688727508, + "ns_low": 140.21738907765533, + "ns_high": 144.3751015000929, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/32B", + "ns": 484.63237107206726, + "ns_low": 478.6674517463311, + "ns_high": 491.43839697797387, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "openssl", + "id": "aes128-gcm-open/openssl/32B", + "ns": 266.5305382366675, + "ns_low": 263.031574090149, + "ns_high": 270.70173141932685, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "rind", + "id": "aes128-gcm-open/rind/32B", + "ns": 62.0208867331508, + "ns_low": 61.463471224071775, + "ns_high": 62.67302353113982, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "ring", + "id": "aes128-gcm-open/ring/32B", + "ns": 124.44381204119827, + "ns_low": 123.03274406122424, + "ns_high": 126.16821750560757, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/32B", + "ns": 165.5432852095011, + "ns_low": 164.5938292046954, + "ns_high": 166.4633734212222, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/1350B", + "ns": 525.0096883129407, + "ns_low": 508.13121900359357, + "ns_high": 545.8047344780315, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/1350B", + "ns": 5376.935176028051, + "ns_low": 5361.749237940182, + "ns_high": 5393.710311697158, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "openssl", + "id": "aes128-gcm-open/openssl/1350B", + "ns": 565.2550790991432, + "ns_low": 557.893499665872, + "ns_high": 573.2947184539997, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "rind", + "id": "aes128-gcm-open/rind/1350B", + "ns": 405.66966321031566, + "ns_low": 397.37825503732563, + "ns_high": 414.8027534287556, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "ring", + "id": "aes128-gcm-open/ring/1350B", + "ns": 442.3049679191206, + "ns_low": 435.77245969585977, + "ns_high": 450.82374270245856, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/1350B", + "ns": 915.2032286075838, + "ns_low": 902.2797355126845, + "ns_high": 931.2189622175453, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/16KB", + "ns": 3918.904143747708, + "ns_low": 3890.8075800777933, + "ns_high": 3950.444565932625, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/16KB", + "ns": 61442.966745382, + "ns_low": 61124.5500708119, + "ns_high": 61789.0478307482, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "openssl", + "id": "aes128-gcm-open/openssl/16KB", + "ns": 4234.181051073954, + "ns_low": 4173.392508929251, + "ns_high": 4295.400540207075, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "rind", + "id": "aes128-gcm-open/rind/16KB", + "ns": 3987.113017575149, + "ns_low": 3931.9304502502687, + "ns_high": 4048.5103164333786, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "ring", + "id": "aes128-gcm-open/ring/16KB", + "ns": 3854.909224343838, + "ns_low": 3797.659187711734, + "ns_high": 3956.9108312627864, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/16KB", + "ns": 8922.354023850146, + "ns_low": 8824.92064863488, + "ns_high": 9060.19664595799, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/32B", + "ns": 154.71521766673206, + "ns_low": 151.4606015726259, + "ns_high": 159.12752777651522, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "libcrux", + "id": "aes256-gcm/libcrux/32B", + "ns": 541.6453529606484, + "ns_low": 538.0588186425246, + "ns_high": 545.2266032499272, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "openssl", + "id": "aes256-gcm/openssl/32B", + "ns": 252.25216834160625, + "ns_low": 249.45328911629835, + "ns_high": 255.5846983731672, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "rind", + "id": "aes256-gcm/rind/32B", + "ns": 75.46685124602153, + "ns_low": 74.87890244310125, + "ns_high": 76.14616503240549, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "ring", + "id": "aes256-gcm/ring/32B", + "ns": 122.307202456745, + "ns_low": 119.98773515299871, + "ns_high": 124.95152357375727, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/32B", + "ns": 170.06019674015224, + "ns_low": 169.0899910017854, + "ns_high": 171.1190665150622, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/1350B", + "ns": 580.7145676712535, + "ns_low": 574.6841726267074, + "ns_high": 588.3599242722115, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "libcrux", + "id": "aes256-gcm/libcrux/1350B", + "ns": 7066.43359176536, + "ns_low": 7006.162783623067, + "ns_high": 7128.399278852791, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "openssl", + "id": "aes256-gcm/openssl/1350B", + "ns": 707.4009176266655, + "ns_low": 683.6495164725045, + "ns_high": 736.9383105029234, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "rind", + "id": "aes256-gcm/rind/1350B", + "ns": 523.1525852327258, + "ns_low": 516.7112437123739, + "ns_high": 530.7946745539571, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "ring", + "id": "aes256-gcm/ring/1350B", + "ns": 556.9369061147931, + "ns_low": 552.1769487457107, + "ns_high": 562.2972699328857, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/1350B", + "ns": 998.8687089094255, + "ns_low": 991.9819013278294, + "ns_high": 1005.5720664654762, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/16KB", + "ns": 5456.114936667441, + "ns_low": 5349.0028552658005, + "ns_high": 5588.889108595889, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "libcrux", + "id": "aes256-gcm/libcrux/16KB", + "ns": 83139.97091066942, + "ns_low": 82629.45263287755, + "ns_high": 83602.33874085195, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "openssl", + "id": "aes256-gcm/openssl/16KB", + "ns": 5198.729330789795, + "ns_low": 5160.57734775765, + "ns_high": 5239.48048543424, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "rind", + "id": "aes256-gcm/rind/16KB", + "ns": 5179.063181590281, + "ns_low": 5088.822452434004, + "ns_high": 5281.379417164953, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "ring", + "id": "aes256-gcm/ring/16KB", + "ns": 5797.373941776267, + "ns_low": 5583.151494673859, + "ns_high": 6028.183837216479, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/16KB", + "ns": 10559.42866716629, + "ns_low": 10463.95165002767, + "ns_high": 10667.034480977796, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/32B", + "ns": 149.76068627743592, + "ns_low": 147.7284784470527, + "ns_high": 152.1196931544657, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/32B", + "ns": 575.6288476975732, + "ns_low": 570.3632954142829, + "ns_high": 581.66138421307, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "openssl", + "id": "aes256-gcm-open/openssl/32B", + "ns": 269.0651660975766, + "ns_low": 264.0387238326308, + "ns_high": 274.69482666235865, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "rind", + "id": "aes256-gcm-open/rind/32B", + "ns": 71.24207916068333, + "ns_low": 70.0352523336153, + "ns_high": 72.63782733210542, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "ring", + "id": "aes256-gcm-open/ring/32B", + "ns": 129.38716014402002, + "ns_low": 128.53937857588167, + "ns_high": 130.25889390872985, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/32B", + "ns": 177.07563038077876, + "ns_low": 175.86087429664673, + "ns_high": 178.35816338641413, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/1350B", + "ns": 581.4615119288206, + "ns_low": 572.472268840795, + "ns_high": 593.113865123733, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/1350B", + "ns": 6903.956243214323, + "ns_low": 6884.532253978326, + "ns_high": 6925.302502637649, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "openssl", + "id": "aes256-gcm-open/openssl/1350B", + "ns": 672.7000028405826, + "ns_low": 663.8578193720743, + "ns_high": 684.7735109516522, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "rind", + "id": "aes256-gcm-open/rind/1350B", + "ns": 496.839275933607, + "ns_low": 488.88955399904034, + "ns_high": 507.6639142631252, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "ring", + "id": "aes256-gcm-open/ring/1350B", + "ns": 566.2650254766336, + "ns_low": 558.6336716576037, + "ns_high": 575.0141055506379, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/1350B", + "ns": 1009.3503619541445, + "ns_low": 1001.062058032682, + "ns_high": 1018.6695166200944, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/16KB", + "ns": 5346.526648773793, + "ns_low": 5309.526486338349, + "ns_high": 5385.24949608191, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/16KB", + "ns": 82105.1005977538, + "ns_low": 81335.36664234514, + "ns_high": 83048.66346051695, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "openssl", + "id": "aes256-gcm-open/openssl/16KB", + "ns": 5830.22382987007, + "ns_low": 5741.062366819001, + "ns_high": 5932.132491564079, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "rind", + "id": "aes256-gcm-open/rind/16KB", + "ns": 5260.180977239907, + "ns_low": 5200.441896625334, + "ns_high": 5331.030036297848, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "ring", + "id": "aes256-gcm-open/ring/16KB", + "ns": 5375.844576621841, + "ns_low": 5296.502883141521, + "ns_high": 5475.413790032045, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/16KB", + "ns": 10167.604685007873, + "ns_low": 10125.51712543306, + "ns_high": 10216.740276081615, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/32B", + "ns": 215.17965868076487, + "ns_low": 213.55784446473297, + "ns_high": 216.8273490853152, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/32B", + "ns": 427.7592036765287, + "ns_low": 425.25057274008435, + "ns_high": 430.74000490848033, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "openssl", + "id": "chacha20poly1305/openssl/32B", + "ns": 526.1525278294544, + "ns_low": 519.1804880477222, + "ns_high": 534.7965252619431, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "rind", + "id": "chacha20poly1305/rind/32B", + "ns": 192.49850316122186, + "ns_low": 191.39610417903808, + "ns_high": 193.78795688224346, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "ring", + "id": "chacha20poly1305/ring/32B", + "ns": 196.2562996289406, + "ns_low": 195.34437606852254, + "ns_high": 197.2644928646882, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/32B", + "ns": 1836.8877215121017, + "ns_low": 1829.4691903561127, + "ns_high": 1844.1162085159635, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/1350B", + "ns": 1104.8841659856455, + "ns_low": 1091.8920174569446, + "ns_high": 1119.099924442111, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/1350B", + "ns": 4732.138631294333, + "ns_low": 4679.400518828568, + "ns_high": 4807.4485174655565, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "openssl", + "id": "chacha20poly1305/openssl/1350B", + "ns": 1681.9194386419865, + "ns_low": 1659.8753370152126, + "ns_high": 1709.1489014437573, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "rind", + "id": "chacha20poly1305/rind/1350B", + "ns": 1074.6486200626991, + "ns_low": 1061.3128426602834, + "ns_high": 1094.6837991253944, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "ring", + "id": "chacha20poly1305/ring/1350B", + "ns": 1077.0703677473177, + "ns_low": 1063.882202348874, + "ns_high": 1092.2354997185803, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/1350B", + "ns": 3264.395121720307, + "ns_low": 3238.1462377903486, + "ns_high": 3292.2212076096225, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/16KB", + "ns": 9913.205097569711, + "ns_low": 9810.558391799968, + "ns_high": 10063.363839967395, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/16KB", + "ns": 54845.38148391705, + "ns_low": 53820.58368450042, + "ns_high": 56035.792200355, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "openssl", + "id": "chacha20poly1305/openssl/16KB", + "ns": 11103.022672165724, + "ns_low": 11007.40075076165, + "ns_high": 11211.418350476104, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "rind", + "id": "chacha20poly1305/rind/16KB", + "ns": 9848.27133853537, + "ns_low": 9742.721699926551, + "ns_high": 9996.27569535293, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "ring", + "id": "chacha20poly1305/ring/16KB", + "ns": 10420.507226099659, + "ns_low": 10149.3964114652, + "ns_high": 10748.128573030654, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/16KB", + "ns": 18840.834118331608, + "ns_low": 18689.54069329673, + "ns_high": 19006.80492107838, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/32B", + "ns": 440.0632916870076, + "ns_low": 437.3174416492042, + "ns_high": 443.333928415887, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/32B", + "ns": 684.9098327692973, + "ns_low": 671.9577275136771, + "ns_high": 700.2272180925996, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "rind", + "id": "xchacha20poly1305/rind/32B", + "ns": 418.9141521216798, + "ns_low": 414.54799816144566, + "ns_high": 423.9443486313122, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/32B", + "ns": 2020.7827622047384, + "ns_low": 2009.845766082561, + "ns_high": 2032.724273997748, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/1350B", + "ns": 1367.3386780015808, + "ns_low": 1355.9511155297423, + "ns_high": 1378.665894040167, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/1350B", + "ns": 5183.8813472283455, + "ns_low": 5093.175591412044, + "ns_high": 5281.441116956437, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "rind", + "id": "xchacha20poly1305/rind/1350B", + "ns": 1335.734021780711, + "ns_low": 1304.113512032513, + "ns_high": 1370.6342177058511, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/1350B", + "ns": 3588.7329194396266, + "ns_low": 3545.6897873578396, + "ns_high": 3635.077272471014, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/16KB", + "ns": 10474.02963720999, + "ns_low": 10248.197209436268, + "ns_high": 10753.902416726898, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/16KB", + "ns": 54128.90167577952, + "ns_low": 53138.451346217684, + "ns_high": 55269.68193662833, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "rind", + "id": "xchacha20poly1305/rind/16KB", + "ns": 10256.81683810378, + "ns_low": 10120.170637192712, + "ns_high": 10426.353803063806, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/16KB", + "ns": 18835.09490554255, + "ns_low": 18701.004677452904, + "ns_high": 18992.581460394107, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes128/aws-lc-rs", + "ns": 11.97177733064453, + "ns_low": 11.834563295616874, + "ns_high": 12.123154284350914, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "rind", + "id": "quic-header-protection/aes128/rind", + "ns": 7.216654902110347, + "ns_low": 7.098737571111828, + "ns_high": 7.358198891339372, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "ring", + "id": "quic-header-protection/aes128/ring", + "ns": 12.566869850128379, + "ns_low": 12.430035390906118, + "ns_high": 12.736448268431609, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes256/aws-lc-rs", + "ns": 15.60662830683847, + "ns_low": 15.245648543412944, + "ns_high": 16.04565815165279, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "rind", + "id": "quic-header-protection/aes256/rind", + "ns": 9.62797875881115, + "ns_low": 9.53134712135154, + "ns_high": 9.740492900109716, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "ring", + "id": "quic-header-protection/aes256/ring", + "ns": 15.348737601370035, + "ns_low": 15.142231820562381, + "ns_high": 15.654704252057806, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/chacha20/aws-lc-rs", + "ns": 160.40083669202804, + "ns_low": 156.7253848689767, + "ns_high": 164.88218375119817, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "rind", + "id": "quic-header-protection/chacha20/rind", + "ns": 126.30907205582314, + "ns_low": 125.331030481632, + "ns_high": 127.56541776309074, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "ring", + "id": "quic-header-protection/chacha20/ring", + "ns": 145.18346737509572, + "ns_low": 142.86874982822042, + "ns_high": 148.02561946619858, + "throughput": null + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "x25519-ecdh/aws-lc-rs", + "ns": 55086.744114674155, + "ns_low": 54135.69160188305, + "ns_high": 56177.54036902464, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "libcrux", + "id": "x25519-ecdh/libcrux", + "ns": 118599.0456346978, + "ns_low": 116472.35417191865, + "ns_high": 121141.60951415505, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "openssl", + "id": "x25519-ecdh/openssl", + "ns": 108865.81884882518, + "ns_low": 105075.19704685596, + "ns_high": 113035.10236853645, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "rind", + "id": "x25519-ecdh/rind", + "ns": 51785.94476749914, + "ns_low": 51137.513970963686, + "ns_high": 52683.84256165586, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "ring", + "id": "x25519-ecdh/ring", + "ns": 79180.9468420275, + "ns_low": 77821.44772915347, + "ns_high": 80770.14259258847, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "rustcrypto", + "id": "x25519-ecdh/dalek", + "ns": 92762.45481813, + "ns_low": 91291.84052938825, + "ns_high": 94460.65609251958, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdh/aws-lc-rs", + "ns": 90860.97357385632, + "ns_low": 88431.6718240662, + "ns_high": 93765.41118213873, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "libcrux", + "id": "p256-ecdh/libcrux", + "ns": 448991.59597458254, + "ns_low": 441960.6220088225, + "ns_high": 457171.3262614902, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "openssl", + "id": "p256-ecdh/openssl", + "ns": 144903.0942970297, + "ns_low": 142180.95818770354, + "ns_high": 148136.99344051428, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "rind", + "id": "p256-ecdh/rind", + "ns": 80925.2836482193, + "ns_low": 80093.86115902243, + "ns_high": 81899.03367878078, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "ring", + "id": "p256-ecdh/ring", + "ns": 86473.13489708459, + "ns_low": 85147.99426722298, + "ns_high": 88178.23210501543, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "rustcrypto", + "id": "p256-ecdh/p256-rustcrypto", + "ns": 379558.0359332053, + "ns_low": 373693.68329668633, + "ns_high": 386100.90753039555, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "aws-lc-rs", + "id": "ed25519-sign/aws-lc-rs", + "ns": 12852.862647516578, + "ns_low": 12743.702721887099, + "ns_high": 12998.169626629013, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "libcrux", + "id": "ed25519-sign/libcrux", + "ns": 92434.53566003082, + "ns_low": 88867.9963036879, + "ns_high": 96329.60469462689, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "openssl", + "id": "ed25519-sign/openssl", + "ns": 49768.634710302256, + "ns_low": 48536.123764792916, + "ns_high": 51084.74966333286, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "rind", + "id": "ed25519-sign/rind", + "ns": 14511.42540695097, + "ns_low": 14108.571649403162, + "ns_high": 14999.64735003437, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "ring", + "id": "ed25519-sign/ring", + "ns": 29899.45615546032, + "ns_low": 29575.754843581515, + "ns_high": 30252.370310994193, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "rustcrypto", + "id": "ed25519-sign/dalek", + "ns": 25234.066951381705, + "ns_low": 24600.302103873768, + "ns_high": 25950.34301491246, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "aws-lc-rs", + "id": "ed25519-verify/aws-lc-rs", + "ns": 60324.48548463802, + "ns_low": 59240.05305577813, + "ns_high": 61605.95807489646, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "libcrux", + "id": "ed25519-verify/libcrux", + "ns": 98920.6734924388, + "ns_low": 97595.40076613845, + "ns_high": 100526.3080302328, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "openssl", + "id": "ed25519-verify/openssl", + "ns": 140952.8548426186, + "ns_low": 139431.25761846636, + "ns_high": 142805.5238486214, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "rind", + "id": "ed25519-verify/rind", + "ns": 60706.79112054489, + "ns_low": 60072.01264461311, + "ns_high": 61398.15453950259, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "ring", + "id": "ed25519-verify/ring", + "ns": 61258.85691473327, + "ns_low": 60215.75260005215, + "ns_high": 62980.12947011359, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "rustcrypto", + "id": "ed25519-verify/dalek", + "ns": 46545.148600106855, + "ns_low": 46093.33152683256, + "ns_high": 47111.38530205546, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdsa-sign/aws-lc-rs", + "ns": 24530.57996997192, + "ns_low": 24271.92062243716, + "ns_high": 24833.434726886007, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "libcrux", + "id": "p256-ecdsa-sign/libcrux", + "ns": 163018.56016994236, + "ns_low": 160836.0093854733, + "ns_high": 165458.41805484766, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p256-ecdsa-sign/openssl", + "ns": 32695.109680259462, + "ns_low": 32318.271543331208, + "ns_high": 33231.3275929403, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "rind", + "id": "p256-ecdsa-sign/rind", + "ns": 22415.545813068868, + "ns_low": 22079.597488060757, + "ns_high": 22815.484790464852, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "ring", + "id": "p256-ecdsa-sign/ring", + "ns": 26211.93267198232, + "ns_low": 25657.32452099884, + "ns_high": 26948.98580722953, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p256-ecdsa-sign/rustcrypto", + "ns": 107758.44849514803, + "ns_low": 107038.49727256161, + "ns_high": 108804.3576307842, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdsa-verify/aws-lc-rs", + "ns": 77585.23404388946, + "ns_low": 77045.85767220076, + "ns_high": 78159.78274645838, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "libcrux", + "id": "p256-ecdsa-verify/libcrux", + "ns": 389472.0875868184, + "ns_low": 384303.87938398664, + "ns_high": 395569.8236992556, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p256-ecdsa-verify/openssl", + "ns": 115239.1195135215, + "ns_low": 113888.69584052602, + "ns_high": 117135.06146331492, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "rind", + "id": "p256-ecdsa-verify/rind", + "ns": 81503.35634106694, + "ns_low": 79669.61090514435, + "ns_high": 84391.34877088947, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "ring", + "id": "p256-ecdsa-verify/ring", + "ns": 79973.48774456924, + "ns_low": 79055.29702973065, + "ns_high": 81030.55242470173, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p256-ecdsa-verify/rustcrypto", + "ns": 324890.19802719075, + "ns_low": 318188.47174662165, + "ns_high": 333072.5946504104, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/64B", + "ns": 491.34684383668287, + "ns_low": 487.37332561373876, + "ns_high": 495.67235822164287, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "libcrux", + "id": "sha256/libcrux/64B", + "ns": 764.3791122236497, + "ns_low": 758.1201937383433, + "ns_high": 771.4795459195018, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "openssl", + "id": "sha256/openssl/64B", + "ns": 813.2028254765775, + "ns_low": 804.4485838657102, + "ns_high": 822.3135080166786, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "rind", + "id": "sha256/rind/64B", + "ns": 398.98094584664074, + "ns_low": 392.12252833863874, + "ns_high": 407.36778806182383, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "ring", + "id": "sha256/ring/64B", + "ns": 449.02471970273444, + "ns_low": 440.18786675822923, + "ns_high": 462.33284913373313, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "rustcrypto", + "id": "sha256/rustcrypto/64B", + "ns": 761.9463586186462, + "ns_low": 752.2460781348951, + "ns_high": 772.897017396128, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/1350B", + "ns": 4735.842156612745, + "ns_low": 4580.495260061626, + "ns_high": 4916.89993207235, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "libcrux", + "id": "sha256/libcrux/1350B", + "ns": 8432.156719415058, + "ns_low": 8330.927267053872, + "ns_high": 8558.049648297638, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "openssl", + "id": "sha256/openssl/1350B", + "ns": 4344.437052902686, + "ns_low": 4240.195453729888, + "ns_high": 4482.451642124997, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "rind", + "id": "sha256/rind/1350B", + "ns": 3873.247232253916, + "ns_low": 3841.473592593314, + "ns_high": 3910.390514064919, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "ring", + "id": "sha256/ring/1350B", + "ns": 4469.313283514919, + "ns_low": 4412.200449362183, + "ns_high": 4533.137137283869, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "rustcrypto", + "id": "sha256/rustcrypto/1350B", + "ns": 8131.697898099358, + "ns_low": 8051.935897629616, + "ns_high": 8211.80938115699, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/16KB", + "ns": 50682.89706098222, + "ns_low": 50132.13837737575, + "ns_high": 51227.38508902242, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "libcrux", + "id": "sha256/libcrux/16KB", + "ns": 96580.76735727304, + "ns_low": 95775.57701264747, + "ns_high": 97635.73639397824, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "openssl", + "id": "sha256/openssl/16KB", + "ns": 45564.03473558657, + "ns_low": 44521.01858739972, + "ns_high": 46958.99811619898, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "rind", + "id": "sha256/rind/16KB", + "ns": 45106.97290720806, + "ns_low": 44374.73333865444, + "ns_high": 45906.860772638596, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "ring", + "id": "sha256/ring/16KB", + "ns": 50698.748432343236, + "ns_low": 49928.28013678326, + "ns_high": 51672.74003959161, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "rustcrypto", + "id": "sha256/rustcrypto/16KB", + "ns": 93295.00456881082, + "ns_low": 92290.98431988616, + "ns_high": 94391.47636001804, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/64B", + "ns": 389.49650237983485, + "ns_low": 377.291793273779, + "ns_high": 402.32010895494574, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "libcrux", + "id": "sha512/libcrux/64B", + "ns": 461.685839617373, + "ns_low": 457.3459483706036, + "ns_high": 466.4207154183432, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "openssl", + "id": "sha512/openssl/64B", + "ns": 698.8688848236206, + "ns_low": 691.8513663649509, + "ns_high": 706.3813213198952, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "rind", + "id": "sha512/rind/64B", + "ns": 321.48640736508474, + "ns_low": 317.72103578336197, + "ns_high": 325.1213076507652, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "ring", + "id": "sha512/ring/64B", + "ns": 320.75981200354374, + "ns_low": 317.80300385074787, + "ns_high": 324.31631316297046, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "rustcrypto", + "id": "sha512/rustcrypto/64B", + "ns": 434.5812575383608, + "ns_low": 427.8217068557685, + "ns_high": 442.6651588771055, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/1350B", + "ns": 3116.5084560522037, + "ns_low": 3084.2344823575236, + "ns_high": 3152.3301125755884, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "libcrux", + "id": "sha512/libcrux/1350B", + "ns": 4909.223598915069, + "ns_low": 4857.62138116884, + "ns_high": 4960.036820645056, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "openssl", + "id": "sha512/openssl/1350B", + "ns": 3096.0757483280877, + "ns_low": 3036.4848563170344, + "ns_high": 3173.5979177583245, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "rind", + "id": "sha512/rind/1350B", + "ns": 2604.633471838573, + "ns_low": 2570.476665416904, + "ns_high": 2649.578457086252, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "ring", + "id": "sha512/ring/1350B", + "ns": 3022.6185707714285, + "ns_low": 3000.1509033286366, + "ns_high": 3050.5398155814305, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "rustcrypto", + "id": "sha512/rustcrypto/1350B", + "ns": 4259.212470349807, + "ns_low": 4220.373183964933, + "ns_high": 4309.572967673882, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/16KB", + "ns": 35165.35415693808, + "ns_low": 34433.960089855624, + "ns_high": 36384.647836254684, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "libcrux", + "id": "sha512/libcrux/16KB", + "ns": 59589.316190631005, + "ns_low": 58603.713701905865, + "ns_high": 60856.454731685866, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "openssl", + "id": "sha512/openssl/16KB", + "ns": 32221.277696872592, + "ns_low": 31386.691078713622, + "ns_high": 33274.71909135854, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "rind", + "id": "sha512/rind/16KB", + "ns": 33084.04541824489, + "ns_low": 32125.29129509309, + "ns_high": 34078.98119900461, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "ring", + "id": "sha512/ring/16KB", + "ns": 35277.461891860825, + "ns_low": 34720.8270324938, + "ns_high": 35935.821747603324, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "rustcrypto", + "id": "sha512/rustcrypto/16KB", + "ns": 53821.34313557877, + "ns_low": 51969.92322371911, + "ns_high": 56007.32870391691, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "aws-lc-rs", + "id": "hmac-sha256/aws-lc-rs/64B", + "ns": 1600.7363497299527, + "ns_low": 1530.8263730298593, + "ns_high": 1682.7661285829645, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "libcrux", + "id": "hmac-sha256/libcrux/64B", + "ns": 2357.212314886414, + "ns_low": 2249.1616165899654, + "ns_high": 2471.0606984567435, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "openssl", + "id": "hmac-sha256/openssl/64B", + "ns": 6676.728412620826, + "ns_low": 6460.852098647408, + "ns_high": 6889.633979700661, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "rind", + "id": "hmac-sha256/rind/64B", + "ns": 1159.4286633080847, + "ns_low": 1105.7310575053912, + "ns_high": 1221.0955488889026, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "ring", + "id": "hmac-sha256/ring/64B", + "ns": 1643.0591367864854, + "ns_low": 1540.3008864209044, + "ns_high": 1743.0580706454134, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "rustcrypto", + "id": "hmac-sha256/rustcrypto/64B", + "ns": 2133.342585472667, + "ns_low": 2080.7264014420307, + "ns_high": 2190.5255682486004, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "aws-lc-rs", + "id": "hmac-sha256/aws-lc-rs/1350B", + "ns": 5591.669480915988, + "ns_low": 5521.4251260440515, + "ns_high": 5669.446701324902, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "libcrux", + "id": "hmac-sha256/libcrux/1350B", + "ns": 9650.304150693355, + "ns_low": 9571.978745070426, + "ns_high": 9742.762502120439, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "openssl", + "id": "hmac-sha256/openssl/1350B", + "ns": 9440.294561609679, + "ns_low": 9363.63181324437, + "ns_high": 9523.672650402059, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "rind", + "id": "hmac-sha256/rind/1350B", + "ns": 4821.458465384847, + "ns_low": 4719.4347021081385, + "ns_high": 4935.76115672742, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "ring", + "id": "hmac-sha256/ring/1350B", + "ns": 5155.281077445165, + "ns_low": 5042.290957881716, + "ns_high": 5304.530618435164, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "rustcrypto", + "id": "hmac-sha256/rustcrypto/1350B", + "ns": 9606.793494995554, + "ns_low": 9390.574888701618, + "ns_high": 9908.132798817885, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "aws-lc-rs", + "id": "hkdf-sha256/extract-expand/aws-lc-rs", + "ns": 2356.3870715126, + "ns_low": 2283.6559569320298, + "ns_high": 2447.2057005762645, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "libcrux", + "id": "hkdf-sha256/extract-expand/libcrux", + "ns": 3730.1355126414874, + "ns_low": 3550.836363076138, + "ns_high": 3930.3138945892797, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "openssl", + "id": "hkdf-sha256/extract-expand/openssl", + "ns": 10098.030435831643, + "ns_low": 9472.111307513653, + "ns_high": 10676.656818743086, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "rind", + "id": "hkdf-sha256/extract-expand/rind", + "ns": 2098.888111149798, + "ns_low": 2033.9098100723086, + "ns_high": 2164.517439100172, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "ring", + "id": "hkdf-sha256/extract-expand/ring", + "ns": 2077.0934872758835, + "ns_low": 2036.928134013255, + "ns_high": 2123.37286769656, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "rustcrypto", + "id": "hkdf-sha256/extract-expand/rustcrypto", + "ns": 3387.7008068226373, + "ns_low": 3338.2091247306407, + "ns_high": 3440.962346221266, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "aws-lc-rs", + "id": "hkdf-sha256/expand/aws-lc-rs", + "ns": 1234.8446536880226, + "ns_low": 1158.080546904142, + "ns_high": 1316.4415679443398, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "libcrux", + "id": "hkdf-sha256/expand/libcrux", + "ns": 1769.47636389638, + "ns_low": 1722.6533449346161, + "ns_high": 1820.0189152051273, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "openssl", + "id": "hkdf-sha256/expand/openssl", + "ns": 6742.113903416374, + "ns_low": 6326.368513145174, + "ns_high": 7123.1233724298745, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "rind", + "id": "hkdf-sha256/expand/rind", + "ns": 540.0215675936987, + "ns_low": 525.7211197999176, + "ns_high": 556.9769628103567, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "ring", + "id": "hkdf-sha256/expand/ring", + "ns": 651.0478596931991, + "ns_low": 611.939002253242, + "ns_high": 692.0570432247993, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "rustcrypto", + "id": "hkdf-sha256/expand/rustcrypto", + "ns": 886.8476627331577, + "ns_low": 868.2221688218092, + "ns_high": 906.7435562385168, + "throughput": null + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pkcs1-sha256-sign/aws-lc-rs", + "ns": 796900.535971627, + "ns_low": 790167.873410576, + "ns_high": 804695.7458442644, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "openssl", + "id": "rsa2048-pkcs1-sha256-sign/openssl", + "ns": 846938.3224944584, + "ns_low": 828248.9388539419, + "ns_high": 869013.3597173989, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "rind", + "id": "rsa2048-pkcs1-sha256-sign/rind", + "ns": 762786.5647702083, + "ns_low": 754126.7403639833, + "ns_high": 773344.9024277296, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "ring", + "id": "rsa2048-pkcs1-sha256-sign/ring", + "ns": 1053788.5643032363, + "ns_low": 1043304.9727147765, + "ns_high": 1064173.8042465798, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pkcs1-sha256-sign/rustcrypto", + "ns": 1833432.5000000002, + "ns_low": 1816290.7688676463, + "ns_high": 1852366.4088235288, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pkcs1-sha256-verify/aws-lc-rs", + "ns": 35394.719398551795, + "ns_low": 34897.25149007457, + "ns_high": 35944.106231400736, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "openssl", + "id": "rsa2048-pkcs1-sha256-verify/openssl", + "ns": 50307.40217639904, + "ns_low": 49730.61449906852, + "ns_high": 50878.343418610915, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "rind", + "id": "rsa2048-pkcs1-sha256-verify/rind", + "ns": 30349.576679178364, + "ns_low": 30203.092308302883, + "ns_high": 30519.463722353732, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "ring", + "id": "rsa2048-pkcs1-sha256-verify/ring", + "ns": 39125.00097374513, + "ns_low": 38717.78694430016, + "ns_high": 39639.12977214656, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pkcs1-sha256-verify/rustcrypto", + "ns": 92508.81829466528, + "ns_low": 91692.28123173621, + "ns_high": 93445.11529886868, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pss-sha256-sign/aws-lc-rs", + "ns": 807210.8899423673, + "ns_low": 794938.7990802147, + "ns_high": 821694.0728909818, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "libcrux", + "id": "rsa2048-pss-sha256-sign/libcrux", + "ns": 11563558.443333333, + "ns_low": 11412925.290666662, + "ns_high": 11728887.248416664, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "openssl", + "id": "rsa2048-pss-sha256-sign/openssl", + "ns": 830215.6421575291, + "ns_low": 818044.7377025824, + "ns_high": 844904.0216467463, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "rind", + "id": "rsa2048-pss-sha256-sign/rind", + "ns": 819128.1234165805, + "ns_low": 802862.9316562413, + "ns_high": 839434.1457009463, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "ring", + "id": "rsa2048-pss-sha256-sign/ring", + "ns": 1041202.4366454855, + "ns_low": 1027459.8527457297, + "ns_high": 1054923.3244017498, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pss-sha256-sign/rustcrypto", + "ns": 1906770.965, + "ns_low": 1872830.784578125, + "ns_high": 1948857.2621875, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pss-sha256-verify/aws-lc-rs", + "ns": 36775.615971800864, + "ns_low": 36409.75703264557, + "ns_high": 37202.33769077534, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "libcrux", + "id": "rsa2048-pss-sha256-verify/libcrux", + "ns": 636674.7239840402, + "ns_low": 624480.0759831207, + "ns_high": 650707.3509373433, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "openssl", + "id": "rsa2048-pss-sha256-verify/openssl", + "ns": 55182.89763397235, + "ns_low": 54056.00103718545, + "ns_high": 56580.631572632614, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "rind", + "id": "rsa2048-pss-sha256-verify/rind", + "ns": 35056.519254552324, + "ns_low": 34073.024779560095, + "ns_high": 36196.30681107531, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "ring", + "id": "rsa2048-pss-sha256-verify/ring", + "ns": 42451.30049337471, + "ns_low": 41965.646638938015, + "ns_high": 42994.198364731616, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pss-sha256-verify/rustcrypto", + "ns": 117265.04548544406, + "ns_low": 114179.63415583198, + "ns_high": 120836.17962839815, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-keygen/aws-lc-rs", + "ns": 25057.39166654352, + "ns_low": 24650.793475536684, + "ns_high": 25526.26763034881, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "libcrux", + "id": "mlkem768-keygen/libcrux-ml-kem", + "ns": 36947.673322003844, + "ns_low": 36379.110145327904, + "ns_high": 37571.304675921245, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "openssl", + "id": "mlkem768-keygen/openssl", + "ns": 69536.6065152784, + "ns_low": 67937.55694535238, + "ns_high": 71464.35325285478, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "rind", + "id": "mlkem768-keygen/rind", + "ns": 18786.764193143194, + "ns_low": 18406.903326365646, + "ns_high": 19236.45943050042, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "rustcrypto", + "id": "mlkem768-keygen/rustcrypto", + "ns": 100588.13601793016, + "ns_low": 98541.95455610429, + "ns_high": 102768.12840374492, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-encaps/aws-lc-rs", + "ns": 25082.921890177822, + "ns_low": 24531.719710132755, + "ns_high": 25785.117515341943, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "libcrux", + "id": "mlkem768-encaps/libcrux-ml-kem", + "ns": 32180.37772589199, + "ns_low": 31735.38208089359, + "ns_high": 32727.084557064747, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "openssl", + "id": "mlkem768-encaps/openssl", + "ns": 66541.11160862356, + "ns_low": 65457.89763624824, + "ns_high": 67804.81370488262, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "rind", + "id": "mlkem768-encaps/rind", + "ns": 18941.79699490411, + "ns_low": 18579.17887299918, + "ns_high": 19494.54751490264, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "rustcrypto", + "id": "mlkem768-encaps/rustcrypto", + "ns": 104243.00546377026, + "ns_low": 103513.69301899559, + "ns_high": 105099.60060322024, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-decaps/aws-lc-rs", + "ns": 28784.956212712957, + "ns_low": 28336.5785806832, + "ns_high": 29374.088493908206, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "libcrux", + "id": "mlkem768-decaps/libcrux-ml-kem", + "ns": 35043.623942662925, + "ns_low": 34721.508962442254, + "ns_high": 35382.73858722287, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "openssl", + "id": "mlkem768-decaps/openssl", + "ns": 49776.672485591844, + "ns_low": 49368.45273008211, + "ns_high": 50275.63271445788, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "rind", + "id": "mlkem768-decaps/rind", + "ns": 12885.86146317077, + "ns_low": 12571.552065192995, + "ns_high": 13261.025587507249, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "rustcrypto", + "id": "mlkem768-decaps/rustcrypto", + "ns": 148484.9098992168, + "ns_low": 142360.82523967608, + "ns_high": 155424.95924933624, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdh/aws-lc-rs", + "ns": 310309.14655681985, + "ns_low": 303971.8060453162, + "ns_high": 318245.44243629614, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "openssl", + "id": "p384-ecdh/openssl", + "ns": 860170.0010048766, + "ns_low": 836874.8652633363, + "ns_high": 886031.3042191276, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "rind", + "id": "p384-ecdh/rind", + "ns": 295157.3619811832, + "ns_low": 289143.4475611598, + "ns_high": 302126.09180470725, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "ring", + "id": "p384-ecdh/ring", + "ns": 1018234.4610048766, + "ns_low": 1008410.9842966226, + "ns_high": 1030320.3024552714, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "rustcrypto", + "id": "p384-ecdh/p384-rustcrypto", + "ns": 1227556.3552000003, + "ns_low": 1209347.4131700003, + "ns_high": 1252247.9977000002, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdsa-sign/aws-lc-rs", + "ns": 127992.50265110093, + "ns_low": 126248.77398571763, + "ns_high": 130630.12339898427, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p384-ecdsa-sign/openssl", + "ns": 272000.3815624846, + "ns_low": 265725.8998329029, + "ns_high": 279732.52290308755, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "rind", + "id": "p384-ecdsa-sign/rind", + "ns": 71596.19069536804, + "ns_low": 68826.31545251374, + "ns_high": 75223.7528231252, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "ring", + "id": "p384-ecdsa-sign/ring", + "ns": 549993.5053760898, + "ns_low": 541432.5867606514, + "ns_high": 562014.3654807437, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p384-ecdsa-sign/rustcrypto", + "ns": 268384.677536082, + "ns_low": 265764.6660432739, + "ns_high": 272282.51360624644, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdsa-verify/aws-lc-rs", + "ns": 316055.70293926407, + "ns_low": 312893.4397427574, + "ns_high": 318950.5703766294, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p384-ecdsa-verify/openssl", + "ns": 652344.6980286685, + "ns_low": 639993.5491304263, + "ns_high": 668094.0224133355, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "rind", + "id": "p384-ecdsa-verify/rind", + "ns": 255427.49609083295, + "ns_low": 253143.1555205892, + "ns_high": 258362.44386988855, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "ring", + "id": "p384-ecdsa-verify/ring", + "ns": 1002031.0168021279, + "ns_low": 990985.9946889057, + "ns_high": 1014764.6746164825, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p384-ecdsa-verify/rustcrypto", + "ns": 1076282.4777419833, + "ns_low": 1063892.4123882712, + "ns_high": 1091989.867129492, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdh/aws-lc-rs", + "ns": 510811.6195093838, + "ns_low": 503416.73787911434, + "ns_high": 519815.75510847144, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "openssl", + "id": "p521-ecdh/openssl", + "ns": 750802.4993822965, + "ns_low": 739553.7197954514, + "ns_high": 767180.7212701767, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "rind", + "id": "p521-ecdh/rind", + "ns": 467343.7733781587, + "ns_low": 460953.4500375311, + "ns_high": 475070.27666814596, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "rustcrypto", + "id": "p521-ecdh/rustcrypto", + "ns": 1387753.7170833335, + "ns_low": 1337480.259166667, + "ns_high": 1442432.4262187497, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdsa-sign/aws-lc-rs", + "ns": 279628.1543372248, + "ns_low": 272516.26078907726, + "ns_high": 287734.2786234521, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p521-ecdsa-sign/openssl", + "ns": 359516.8499216787, + "ns_low": 354548.78692130034, + "ns_high": 365538.22275746166, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "rind", + "id": "p521-ecdsa-sign/rind", + "ns": 132363.81857484853, + "ns_low": 126030.37893271886, + "ns_high": 139680.88272792663, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p521-ecdsa-sign/rustcrypto", + "ns": 302653.488856214, + "ns_low": 299042.3221428372, + "ns_high": 306850.4113561769, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdsa-verify/aws-lc-rs", + "ns": 547940.4495788384, + "ns_low": 541068.5200337456, + "ns_high": 555925.737427369, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p521-ecdsa-verify/openssl", + "ns": 740332.8216344023, + "ns_low": 727519.0939439079, + "ns_high": 755626.4404088291, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "rind", + "id": "p521-ecdsa-verify/rind", + "ns": 423146.5081542781, + "ns_low": 418010.83832452894, + "ns_high": 428428.07367360214, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p521-ecdsa-verify/rustcrypto", + "ns": 1005738.6496202158, + "ns_low": 996251.8603233809, + "ns_high": 1017018.2114072415, + "throughput": { + "Elements": 1 + } + } + ], + "build_cost": { + "status": "ok", + "started": "2026-11-06T18:16:42+00:00", + "host": { + "hostname": "moq-load", + "os": "Linux 6.18.40", + "arch": "x86_64", + "cpu": "Intel Core Processor (Haswell, no TSX)", + "cpus": 4, + "jobs": "4", + "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", + "cc": "gcc (GCC) 16.2.0" + }, + "runs": 3, + "builds": [ + { + "name": "rind", + "seconds": [ + 13.19, + 12.59, + 12.67 + ], + "median_seconds": 12.67, + "cpu_seconds": [ + 23.18, + 22.5, + 22.71 + ], + "median_cpu_seconds": 22.71, + "stripped_bytes": 877664, + "tools": [], + "packages": [ + "build-cost-rind@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "rind@0.1.13" + ] + }, + { + "name": "aws-lc-rs", + "seconds": [ + 41.88, + 43.89, + 42.93 + ], + "median_seconds": 42.93, + "cpu_seconds": [ + 104.03, + 110.84, + 105.05 + ], + "median_cpu_seconds": 105.05, + "stripped_bytes": 2991408, + "tools": [ + "cc" + ], + "packages": [ + "aws-lc-rs@1.19.0", + "aws-lc-sys@0.47.0", + "build-cost-aws-lc-rs@0.0.0", + "cc@1.11.1", + "cmake@0.1.58", + "dunce@1.0.5", + "find-msvc-tools@0.1.15", + "fs_extra@1.3.0", + "jobserver@0.1.35", + "libc@0.2.191", + "pkg-config@0.3.34", + "shlex@2.0.1", + "untrusted@0.7.1", + "zeroize@1.9.1" + ] + }, + { + "name": "ring", + "seconds": [ + 15.8, + 17.16, + 16.32 + ], + "median_seconds": 16.32, + "cpu_seconds": [ + 20.86, + 22.07, + 21.37 + ], + "median_cpu_seconds": 21.37, + "stripped_bytes": 744328, + "tools": [ + "cc" + ], + "packages": [ + "build-cost-ring@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "getrandom@0.2.17", + "libc@0.2.191", + "ring@0.17.14", + "shlex@2.0.1", + "untrusted@0.9.0" + ] + }, + { + "name": "rustcrypto", + "seconds": [ + 11.44, + 12.64, + 11.77 + ], + "median_seconds": 11.77, + "cpu_seconds": [ + 40.69, + 42.65, + 41.27 + ], + "median_cpu_seconds": 41.27, + "stripped_bytes": 540640, + "tools": [], + "packages": [ + "aead@0.6.1", + "aes-gcm@0.11.1", + "aes@0.9.4", + "autocfg@1.5.1", + "base16ct@1.0.0", + "base64ct@1.8.3", + "block-buffer@0.12.1", + "build-cost-rustcrypto@0.0.0", + "cfg-if@1.0.5", + "cipher@0.5.2", + "cmov@0.5.4", + "const-oid@0.10.2", + "cpubits@0.1.1", + "cpufeatures@0.3.1", + "crypto-bigint@0.7.10", + "crypto-common@0.2.2", + "ctr@0.10.1", + "ctutils@0.4.8", + "curve25519-dalek-derive@0.1.1", + "curve25519-dalek@5.0.0", + "der@0.8.3", + "digest@0.11.3", + "ecdsa@0.17.0", + "elliptic-curve@0.14.3", + "ff@0.14.0", + "getrandom@0.4.3", + "ghash@0.6.0", + "group@0.14.0", + "hmac@0.13.0", + "hybrid-array@0.4.15", + "inout@0.2.5", + "libc@0.2.191", + "num-traits@0.2.19", + "p256@0.14.0", + "pem-rfc7468@1.0.0", + "pkcs8@0.11.0", + "polyval@0.7.3", + "primefield@0.14.0", + "primeorder@0.14.0", + "proc-macro2@1.0.107", + "quote@1.0.47", + "rand_core@0.10.1", + "rfc6979@0.6.0", + "rustc_version@0.4.1", + "sec1@0.8.1", + "semver@1.0.28", + "sha2@0.11.1", + "signature@3.0.0", + "spki@0.8.1", + "subtle@2.6.1", + "syn@2.0.119", + "typenum@1.20.1", + "unicode-ident@1.0.27", + "universal-hash@0.6.1", + "wnaf@0.14.1", + "x25519-dalek@3.0.0", + "zeroize@1.9.1" + ] + }, + { + "name": "libcrux", + "seconds": [ + 16.88, + 17.28, + 16.84 + ], + "median_seconds": 16.88, + "cpu_seconds": [ + 34.8, + 35.95, + 35.35 + ], + "median_cpu_seconds": 35.35, + "stripped_bytes": 745888, + "tools": [], + "packages": [ + "build-cost-libcrux@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "hax-lib-macros@0.3.6", + "hax-lib@0.3.6", + "libc@0.2.191", + "libcrux-aesgcm@0.0.8", + "libcrux-curve25519@0.0.9", + "libcrux-ecdh@0.0.9", + "libcrux-ecdsa@0.0.9", + "libcrux-hacl-rs@0.0.6", + "libcrux-intrinsics@0.0.7", + "libcrux-macros@0.0.4", + "libcrux-p256@0.0.9", + "libcrux-platform@0.0.3", + "libcrux-secrets@0.0.5", + "libcrux-secrets@0.0.7", + "libcrux-sha2@0.0.9", + "libcrux-traits@0.0.7", + "libcrux-traits@0.0.9", + "proc-macro2@1.0.107", + "quote@1.0.47", + "rand@0.10.3", + "rand_core@0.10.1", + "syn@2.0.119", + "syn@3.0.9", + "unicode-ident@1.0.27" + ] + }, + { + "name": "openssl", + "seconds": [ + 9.86, + 10.21, + 10.06 + ], + "median_seconds": 10.06, + "cpu_seconds": [ + 20.55, + 21.29, + 21.48 + ], + "median_cpu_seconds": 21.29, + "stripped_bytes": 377912, + "tools": [ + "cc", + "pkg-config" + ], + "packages": [ + "bitflags@2.13.2", + "build-cost-openssl@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "foreign-types-shared@0.1.1", + "foreign-types@0.3.2", + "libc@0.2.191", + "openssl-macros@0.1.1", + "openssl-sys@0.9.118", + "openssl@0.10.82", + "pkg-config@0.3.34", + "proc-macro2@1.0.107", + "quote@1.0.47", + "shlex@2.0.1", + "syn@2.0.119", + "unicode-ident@1.0.27", + "vcpkg@0.2.15" + ] + }, + { + "name": "openssl-vendored", + "seconds": [ + 105.41, + 111.58, + 108.36 + ], + "median_seconds": 108.36, + "cpu_seconds": [ + 356.93, + 378.27, + 364.86 + ], + "median_cpu_seconds": 364.86, + "stripped_bytes": 5133408, + "tools": [ + "cc", + "make", + "perl" + ], + "packages": [ + "bitflags@2.13.2", + "build-cost-openssl@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "foreign-types-shared@0.1.1", + "foreign-types@0.3.2", + "libc@0.2.191", + "openssl-macros@0.1.1", + "openssl-src@300.6.1+3.6.3", + "openssl-sys@0.9.118", + "openssl@0.10.82", + "pkg-config@0.3.34", + "proc-macro2@1.0.107", + "quote@1.0.47", + "shlex@2.0.1", + "syn@2.0.119", + "unicode-ident@1.0.27", + "vcpkg@0.2.15" + ] + }, + { + "name": "rustls-rind", + "seconds": [ + 16.54, + 16.59, + 16.95 + ], + "median_seconds": 16.59, + "cpu_seconds": [ + 54.12, + 53.69, + 55.23 + ], + "median_cpu_seconds": 54.12, + "stripped_bytes": 2953200, + "tools": [], + "packages": [ + "build-cost-rustls@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "once_cell@1.21.4", + "rind-rustls@0.1.13", + "rind@0.1.13", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-rind-lean", + "seconds": [ + 16.64, + 16.6, + 18.15 + ], + "median_seconds": 16.64, + "cpu_seconds": [ + 54.04, + 54.15, + 59.42 + ], + "median_cpu_seconds": 54.15, + "stripped_bytes": 1821248, + "tools": [], + "packages": [ + "build-cost-rustls@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "once_cell@1.21.4", + "rind-rustls@0.1.13", + "rind@0.1.13", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-aws-lc-rs", + "seconds": [ + 55.0, + 53.81, + 53.95 + ], + "median_seconds": 53.95, + "cpu_seconds": [ + 139.65, + 138.08, + 137.52 + ], + "median_cpu_seconds": 138.08, + "stripped_bytes": 4114504, + "tools": [ + "cc" + ], + "packages": [ + "aws-lc-rs@1.19.0", + "aws-lc-sys@0.47.0", + "build-cost-rustls@0.0.0", + "cc@1.11.1", + "cmake@0.1.58", + "dunce@1.0.5", + "find-msvc-tools@0.1.15", + "fs_extra@1.3.0", + "jobserver@0.1.35", + "libc@0.2.191", + "once_cell@1.21.4", + "pkg-config@0.3.34", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "shlex@2.0.1", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-ring", + "seconds": [ + 26.73, + 28.03, + 27.3 + ], + "median_seconds": 27.3, + "cpu_seconds": [ + 51.22, + 53.51, + 52.06 + ], + "median_cpu_seconds": 52.06, + "stripped_bytes": 1943808, + "tools": [ + "cc" + ], + "packages": [ + "build-cost-rustls@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "getrandom@0.2.17", + "libc@0.2.191", + "once_cell@1.21.4", + "ring@0.17.14", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "shlex@2.0.1", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + } + ] + } +} diff --git a/benchmarks/data/ovh-sea.json b/benchmarks/data/ovh-sea.json new file mode 100644 index 000000000..911ccc37a --- /dev/null +++ b/benchmarks/data/ovh-sea.json @@ -0,0 +1,3901 @@ +{ + "schema": 1, + "host": "ovh-sea", + "commit": "6b185382a621d6ffe630db4118adc464bc4d158a", + "started": "2026-11-06T17:41:16+00:00", + "cpu": { + "model": "Intel Core Processor (Haswell, no TSX)", + "arch": "x86_64", + "logical_cpus": 4 + }, + "os": "NixOS 26.11 (Zokor) (Linux 6.18.40)", + "toolchain": { + "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", + "cargo": "cargo 1.98.1 (797e8a9bc 2026-08-05)" + }, + "libraries": { + "rind": { + "rind": "0.1.13", + "rind-rustls": "0.1.13" + }, + "aws-lc-rs": { + "aws-lc-rs": "1.19.0", + "aws-lc-sys": "0.47.0" + }, + "ring": { + "ring": "0.17.14" + }, + "rustcrypto": { + "aes-gcm": "0.11.1", + "chacha20poly1305": "0.11.0", + "sha2": "0.11.1", + "sha3": "0.12.0", + "hmac": "0.13.0", + "hkdf": "0.13.0", + "p256": "0.14.0", + "p384": "0.14.0", + "p521": "0.14.0", + "rsa": "0.10.0-rc.19", + "ml-kem": "0.3.4", + "ed25519-dalek": "3.0.0", + "x25519-dalek": "3.0.0" + }, + "graviola": { + "graviola": "0.4.3", + "rustls-graviola": "0.4.0" + }, + "libcrux": { + "libcrux-aes": "0.0.10", + "libcrux-chacha20poly1305": "0.0.10", + "libcrux-ecdh": "0.0.9", + "libcrux-ecdsa": "0.0.9", + "libcrux-ed25519": "0.0.10", + "libcrux-hkdf": "0.0.9", + "libcrux-hmac": "0.0.9", + "libcrux-ml-kem": "0.0.11", + "libcrux-rsa": "0.0.9", + "libcrux-sha2": "0.0.9", + "libcrux-sha3": "0.0.11" + }, + "openssl": { + "openssl": "0.10.82", + "openssl-sys": "0.9.118", + "rustls-openssl": "0.4.2", + "linked": "OpenSSL 3.5.9 29 Sep 2026 (Library: OpenSSL 3.5.9 29 Sep 2026)" + }, + "tls": { + "rustls": "0.23.46" + } + }, + "rind_cpu": { + "cpuid": { + "intel": 1, + "adx": 0, + "aes": 1, + "vaes": 0, + "pclmulqdq": 1, + "vpclmulqdq": 0, + "bmi1": 1, + "bmi2": 1, + "movbe": 1, + "popcnt": 1, + "ssse3": 1, + "sse4.1": 1, + "avx": 1, + "avx2": 1, + "avx512f": 0, + "avx512dq": 0, + "avx512ifma": 0, + "avx512bw": 0, + "avx512vl": 0, + "avx512vbmi": 0, + "avx512vbmi2": 0, + "sha": 0, + "sha512": 0 + }, + "compatible": 1, + "supports_avx512_aes_gcm": 0 + }, + "refused": { + "graviola": [ + "adx" + ] + }, + "status": "ok", + "finished": "2026-11-06T18:15:41+00:00", + "criterion_args": [ + "--noplot", + "--warm-up-time", + "1", + "--measurement-time", + "3", + "^(rustls\\-full\\-handshake\\-group/x25519mlkem768/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-group/x25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-group/secp256r1/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-key/ed25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-full\\-handshake\\-key/rsa\\-2048/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-resumed\\-handshake/x25519/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rustls\\-bulk/chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes128\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes128\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes256\\-gcm/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|aes256\\-gcm\\-open/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|chacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/32B|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|xchacha20poly1305/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|quic\\-header\\-protection/aes128/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|quic\\-header\\-protection/aes256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|quic\\-header\\-protection/chacha20/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|x25519\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|ed25519\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|ed25519\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p256\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|sha512/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/16KB|hmac\\-sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/64B|hmac\\-sha256/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)/1350B|hkdf\\-sha256/extract\\-expand/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|hkdf\\-sha256/expand/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pkcs1\\-sha256\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pkcs1\\-sha256\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pss\\-sha256\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|rsa2048\\-pss\\-sha256\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-keygen/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-encaps/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|mlkem768\\-decaps/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p384\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdh/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdsa\\-sign/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl)|p521\\-ecdsa\\-verify/(rind|aws\\-lc\\-rs|ring|rustcrypto|p256\\-rustcrypto|p384\\-rustcrypto|dalek|libcrux|libcrux\\-ml\\-kem|openssl))$" + ], + "load": { + "limit_cpus": 1.0, + "busy_cpus_before_build": 0.0, + "busy_cpus_before_run": 0.0, + "other_busy_cpus_during_run": 0.01, + "noisy": false + }, + "results": [ + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/x25519mlkem768/aws-lc-rs", + "ns": 697587.918936013, + "ns_low": 693644.8096922103, + "ns_high": 702389.3176438033, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/x25519mlkem768/openssl", + "ns": 1304871.7241666666, + "ns_low": 1298838.8273958338, + "ns_high": 1312242.5990625005, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519mlkem768/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/x25519mlkem768/rind", + "ns": 580070.8522535836, + "ns_low": 578063.745320753, + "ns_high": 582207.8421230813, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/x25519/aws-lc-rs", + "ns": 517472.1455977538, + "ns_low": 513924.7964587482, + "ns_high": 521596.1639105391, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/x25519/openssl", + "ns": 1067381.7210994533, + "ns_low": 1064435.4190441635, + "ns_high": 1070893.0048889793, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/x25519/rind", + "ns": 449997.26245603664, + "ns_low": 448500.7174174668, + "ns_high": 451688.39607188833, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/x25519/{lib}", + "library": "ring", + "id": "rustls-full-handshake-group/x25519/ring", + "ns": 526350.2519728092, + "ns_low": 523545.5831906791, + "ns_high": 529736.4078901267, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-group/secp256r1/aws-lc-rs", + "ns": 572315.3799305453, + "ns_low": 571498.3709028953, + "ns_high": 573166.4067211078, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-group/secp256r1/openssl", + "ns": 1149494.4526496232, + "ns_low": 1147069.8542883068, + "ns_high": 1152136.6642047453, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "rind", + "id": "rustls-full-handshake-group/secp256r1/rind", + "ns": 509551.24073444656, + "ns_low": 507650.1286491854, + "ns_high": 511632.0403247918, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-group/secp256r1/{lib}", + "library": "ring", + "id": "rustls-full-handshake-group/secp256r1/ring", + "ns": 541384.423118073, + "ns_low": 539981.5529314115, + "ns_high": 543081.435313996, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-key/ed25519/aws-lc-rs", + "ns": 437118.909237476, + "ns_low": 435150.6325947546, + "ns_high": 439431.11386638216, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-key/ed25519/openssl", + "ns": 1153660.5928624205, + "ns_low": 1148381.0355935085, + "ns_high": 1159812.4261420395, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "rind", + "id": "rustls-full-handshake-key/ed25519/rind", + "ns": 379565.67424708145, + "ns_low": 378083.1945844165, + "ns_high": 381330.29873452085, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/ed25519/{lib}", + "library": "ring", + "id": "rustls-full-handshake-key/ed25519/ring", + "ns": 477339.2318782326, + "ns_low": 469528.4956064883, + "ns_high": 488898.9812417554, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "aws-lc-rs", + "id": "rustls-full-handshake-key/rsa-2048/aws-lc-rs", + "ns": 1182098.706401655, + "ns_low": 1179502.631667018, + "ns_high": 1184976.6230784724, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "openssl", + "id": "rustls-full-handshake-key/rsa-2048/openssl", + "ns": 1761154.5641176468, + "ns_low": 1755027.6862647054, + "ns_high": 1767536.8204852939, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "rind", + "id": "rustls-full-handshake-key/rsa-2048/rind", + "ns": 1087760.8974080095, + "ns_low": 1084037.855946011, + "ns_high": 1091430.0602487465, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-full-handshake-key/rsa-2048/{lib}", + "library": "ring", + "id": "rustls-full-handshake-key/rsa-2048/ring", + "ns": 1378970.0236363634, + "ns_low": 1373450.4496931818, + "ns_high": 1385261.9454318173, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "aws-lc-rs", + "id": "rustls-resumed-handshake/x25519/aws-lc-rs", + "ns": 250868.4463868775, + "ns_low": 250174.39178015722, + "ns_high": 251635.5050858022, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "openssl", + "id": "rustls-resumed-handshake/x25519/openssl", + "ns": 704864.4479178366, + "ns_low": 701813.4346072137, + "ns_high": 709097.4096182099, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "rind", + "id": "rustls-resumed-handshake/x25519/rind", + "ns": 192781.41297768583, + "ns_low": 191490.5263152363, + "ns_high": 194150.40153126672, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-resumed-handshake/x25519/{lib}", + "library": "ring", + "id": "rustls-resumed-handshake/x25519/ring", + "ns": 266288.75710359094, + "ns_low": 262711.30604424444, + "ns_high": 271210.98082880303, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/aes128-gcm/aws-lc-rs", + "ns": 677993.8318841436, + "ns_low": 676667.2102104069, + "ns_high": 679553.7450690509, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "openssl", + "id": "rustls-bulk/aes128-gcm/openssl", + "ns": 750676.0541805823, + "ns_low": 748111.1832328946, + "ns_high": 753510.2731331948, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "rind", + "id": "rustls-bulk/aes128-gcm/rind", + "ns": 665478.3594680065, + "ns_low": 664576.6295801877, + "ns_high": 666327.2734710351, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes128-gcm/{lib}", + "library": "ring", + "id": "rustls-bulk/aes128-gcm/ring", + "ns": 670852.5871996453, + "ns_low": 666985.3326311975, + "ns_high": 676114.5895750287, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/aes256-gcm/aws-lc-rs", + "ns": 857110.3417142013, + "ns_low": 848520.0935313707, + "ns_high": 867689.8566829689, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "openssl", + "id": "rustls-bulk/aes256-gcm/openssl", + "ns": 936989.4061918132, + "ns_low": 929356.3928866686, + "ns_high": 946498.8321411329, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "rind", + "id": "rustls-bulk/aes256-gcm/rind", + "ns": 845843.2419890646, + "ns_low": 841129.7259116044, + "ns_high": 851013.4045084717, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/aes256-gcm/{lib}", + "library": "ring", + "id": "rustls-bulk/aes256-gcm/ring", + "ns": 831859.2882192995, + "ns_low": 828246.4608023966, + "ns_high": 836761.8733605715, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "aws-lc-rs", + "id": "rustls-bulk/chacha20poly1305/aws-lc-rs", + "ns": 1433374.3838095237, + "ns_low": 1430268.6377857141, + "ns_high": 1436644.5372499998, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "openssl", + "id": "rustls-bulk/chacha20poly1305/openssl", + "ns": 1709869.176111111, + "ns_low": 1701903.395972222, + "ns_high": 1720230.6243333323, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "rind", + "id": "rustls-bulk/chacha20poly1305/rind", + "ns": 1439686.0633333332, + "ns_low": 1434179.3824047628, + "ns_high": 1446069.4372142856, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "rustls-bulk/chacha20poly1305/{lib}", + "library": "ring", + "id": "rustls-bulk/chacha20poly1305/ring", + "ns": 1449057.8738095236, + "ns_low": 1434332.4219404757, + "ns_high": 1467719.5737738083, + "throughput": { + "Bytes": 1048576 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/32B", + "ns": 136.6099850872974, + "ns_low": 135.59281154334042, + "ns_high": 138.38478784793264, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "libcrux", + "id": "aes128-gcm/libcrux/32B", + "ns": 437.50147435265916, + "ns_low": 435.2053121630123, + "ns_high": 440.13690229554294, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "openssl", + "id": "aes128-gcm/openssl/32B", + "ns": 235.46023317412858, + "ns_low": 234.21262679566541, + "ns_high": 236.992463810924, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "rind", + "id": "aes128-gcm/rind/32B", + "ns": 68.11039453549736, + "ns_low": 67.25508554643885, + "ns_high": 69.0681424894262, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "ring", + "id": "aes128-gcm/ring/32B", + "ns": 108.78811146076384, + "ns_low": 107.95110382262365, + "ns_high": 109.95071545074154, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/32B", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/32B", + "ns": 154.6203847311635, + "ns_low": 153.75857779377918, + "ns_high": 156.1546199881885, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/1350B", + "ns": 438.7459795083986, + "ns_low": 437.24736936758194, + "ns_high": 440.9150955647501, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "libcrux", + "id": "aes128-gcm/libcrux/1350B", + "ns": 5294.915394467805, + "ns_low": 5288.189796906874, + "ns_high": 5301.9650464789465, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "openssl", + "id": "aes128-gcm/openssl/1350B", + "ns": 534.4955974998575, + "ns_low": 533.6455132839731, + "ns_high": 535.5120256213289, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "rind", + "id": "aes128-gcm/rind/1350B", + "ns": 380.28610992282086, + "ns_low": 378.86064371149126, + "ns_high": 381.69466682046266, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "ring", + "id": "aes128-gcm/ring/1350B", + "ns": 438.0732209620216, + "ns_low": 433.83633704035327, + "ns_high": 442.8028602462939, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/1350B", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/1350B", + "ns": 846.4115297697516, + "ns_low": 845.2440078389809, + "ns_high": 847.6639355656275, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes128-gcm/aws-lc-rs/16KB", + "ns": 3695.497284411542, + "ns_low": 3681.838875167814, + "ns_high": 3709.237796382122, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "libcrux", + "id": "aes128-gcm/libcrux/16KB", + "ns": 60591.44610373873, + "ns_low": 60398.031527480336, + "ns_high": 60874.400266384444, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "openssl", + "id": "aes128-gcm/openssl/16KB", + "ns": 3838.39029026061, + "ns_low": 3822.642990763743, + "ns_high": 3854.274904116619, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "rind", + "id": "aes128-gcm/rind/16KB", + "ns": 3671.4841154361793, + "ns_low": 3639.8258043194924, + "ns_high": 3707.746704692474, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "ring", + "id": "aes128-gcm/ring/16KB", + "ns": 3605.853827460358, + "ns_low": 3595.075278735175, + "ns_high": 3620.4492757587464, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm/{lib}/16KB", + "library": "rustcrypto", + "id": "aes128-gcm/rustcrypto/16KB", + "ns": 8623.901831450949, + "ns_low": 8604.254390782067, + "ns_high": 8654.429627254844, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/32B", + "ns": 140.23680002452832, + "ns_low": 139.26941654296488, + "ns_high": 141.33595798842373, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/32B", + "ns": 464.53281099966017, + "ns_low": 463.4245499893151, + "ns_high": 465.7269999242334, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "openssl", + "id": "aes128-gcm-open/openssl/32B", + "ns": 240.55073868809694, + "ns_low": 239.7727360242465, + "ns_high": 241.40389594360246, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "rind", + "id": "aes128-gcm-open/rind/32B", + "ns": 59.595365039427755, + "ns_low": 59.37687668593665, + "ns_high": 59.851600196163155, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "ring", + "id": "aes128-gcm-open/ring/32B", + "ns": 125.8033180271117, + "ns_low": 123.86080860033742, + "ns_high": 129.01239479799412, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/32B", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/32B", + "ns": 160.84403296304652, + "ns_low": 160.41679853663877, + "ns_high": 161.2750223103362, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/1350B", + "ns": 437.1246330849415, + "ns_low": 436.48132584978873, + "ns_high": 437.74769113387003, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/1350B", + "ns": 5318.088003361903, + "ns_low": 5311.091210799063, + "ns_high": 5325.612763206624, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "openssl", + "id": "aes128-gcm-open/openssl/1350B", + "ns": 546.4000299008213, + "ns_low": 545.0460095315701, + "ns_high": 547.9365469203661, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "rind", + "id": "aes128-gcm-open/rind/1350B", + "ns": 371.18036353430324, + "ns_low": 369.24253737100815, + "ns_high": 373.33649958740233, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "ring", + "id": "aes128-gcm-open/ring/1350B", + "ns": 422.4882773459436, + "ns_low": 421.8573815390594, + "ns_high": 423.1751890413752, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/1350B", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/1350B", + "ns": 874.4385882207293, + "ns_low": 872.2337794427389, + "ns_high": 876.7107949388358, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes128-gcm-open/aws-lc-rs/16KB", + "ns": 3814.6836191851103, + "ns_low": 3808.7998924659923, + "ns_high": 3820.537334215475, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "libcrux", + "id": "aes128-gcm-open/libcrux/16KB", + "ns": 60041.29874804197, + "ns_low": 59938.18357202869, + "ns_high": 60155.0116904714, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "openssl", + "id": "aes128-gcm-open/openssl/16KB", + "ns": 3947.1211818882575, + "ns_low": 3941.23146632432, + "ns_high": 3953.8393829743627, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "rind", + "id": "aes128-gcm-open/rind/16KB", + "ns": 3756.537350040124, + "ns_low": 3750.334138906431, + "ns_high": 3763.076911393034, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "ring", + "id": "aes128-gcm-open/ring/16KB", + "ns": 3802.889480276675, + "ns_low": 3792.7644459233043, + "ns_high": 3813.859375365563, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes128-gcm-open/{lib}/16KB", + "library": "rustcrypto", + "id": "aes128-gcm-open/rustcrypto/16KB", + "ns": 8760.05484575056, + "ns_low": 8750.195284090452, + "ns_high": 8769.758866043936, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/32B", + "ns": 146.96321035408144, + "ns_low": 146.54667236782612, + "ns_high": 147.3934413539849, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "libcrux", + "id": "aes256-gcm/libcrux/32B", + "ns": 525.3286183652839, + "ns_low": 524.6665698650514, + "ns_high": 526.0136407396493, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "openssl", + "id": "aes256-gcm/openssl/32B", + "ns": 244.575206662808, + "ns_low": 243.87209953528026, + "ns_high": 245.38502369584447, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "rind", + "id": "aes256-gcm/rind/32B", + "ns": 73.65807817106521, + "ns_low": 73.4412478700961, + "ns_high": 73.90841108764795, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "ring", + "id": "aes256-gcm/ring/32B", + "ns": 118.57260034202241, + "ns_low": 116.96678249936899, + "ns_high": 120.33986316303339, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/32B", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/32B", + "ns": 165.83910420092147, + "ns_low": 165.53044799083526, + "ns_high": 166.18441430908103, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/1350B", + "ns": 556.4464293627367, + "ns_low": 555.072439676602, + "ns_high": 557.8717997925869, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "libcrux", + "id": "aes256-gcm/libcrux/1350B", + "ns": 6917.730174788045, + "ns_low": 6875.280872175469, + "ns_high": 6972.720430944379, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "openssl", + "id": "aes256-gcm/openssl/1350B", + "ns": 651.2793014088784, + "ns_low": 649.3198605296834, + "ns_high": 653.5094307066786, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "rind", + "id": "aes256-gcm/rind/1350B", + "ns": 507.38835531784775, + "ns_low": 504.8934143738526, + "ns_high": 510.32851687987255, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "ring", + "id": "aes256-gcm/ring/1350B", + "ns": 549.6953890555116, + "ns_low": 545.5941875870486, + "ns_high": 554.8561823395788, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/1350B", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/1350B", + "ns": 957.7182697731384, + "ns_low": 955.8464831625201, + "ns_high": 959.6078789561359, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes256-gcm/aws-lc-rs/16KB", + "ns": 5082.919816449393, + "ns_low": 5067.484637022695, + "ns_high": 5100.82651363129, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "libcrux", + "id": "aes256-gcm/libcrux/16KB", + "ns": 78495.66815649475, + "ns_low": 77952.41765625469, + "ns_high": 79427.19751201848, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "openssl", + "id": "aes256-gcm/openssl/16KB", + "ns": 5151.082295732413, + "ns_low": 5124.8209838675, + "ns_high": 5180.439726794824, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "rind", + "id": "aes256-gcm/rind/16KB", + "ns": 4990.722705457859, + "ns_low": 4961.386946934752, + "ns_high": 5027.7507769925505, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "ring", + "id": "aes256-gcm/ring/16KB", + "ns": 4971.244280404906, + "ns_low": 4961.796556559494, + "ns_high": 4981.5048228124415, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm/{lib}/16KB", + "library": "rustcrypto", + "id": "aes256-gcm/rustcrypto/16KB", + "ns": 9939.547243731837, + "ns_low": 9910.054251681902, + "ns_high": 9969.58583494828, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/32B", + "ns": 147.3810805178917, + "ns_low": 146.21902713872458, + "ns_high": 148.8559591733171, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/32B", + "ns": 562.6359461345422, + "ns_low": 560.4375132651398, + "ns_high": 565.8625757503409, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "openssl", + "id": "aes256-gcm-open/openssl/32B", + "ns": 248.19308961671726, + "ns_low": 247.32726144890773, + "ns_high": 249.05824148157754, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "rind", + "id": "aes256-gcm-open/rind/32B", + "ns": 68.93984520449908, + "ns_low": 67.41606475027005, + "ns_high": 71.14414988433796, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "ring", + "id": "aes256-gcm-open/ring/32B", + "ns": 125.91968995478804, + "ns_low": 124.97860924094184, + "ns_high": 127.262822111562, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/32B", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/32B", + "ns": 172.18471121740788, + "ns_low": 171.57080300908035, + "ns_high": 173.02225307629934, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/1350B", + "ns": 566.2380311000097, + "ns_low": 563.9993626836018, + "ns_high": 568.6154484361399, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/1350B", + "ns": 6910.064999074277, + "ns_low": 6876.03501250818, + "ns_high": 6970.301046286679, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "openssl", + "id": "aes256-gcm-open/openssl/1350B", + "ns": 660.6351184791789, + "ns_low": 658.3091873351522, + "ns_high": 663.0758022531268, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "rind", + "id": "aes256-gcm-open/rind/1350B", + "ns": 482.3828201756338, + "ns_low": 481.0354234805328, + "ns_high": 483.73686468251196, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "ring", + "id": "aes256-gcm-open/ring/1350B", + "ns": 544.1193784315286, + "ns_low": 540.9968075524832, + "ns_high": 547.8109722900673, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/1350B", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/1350B", + "ns": 999.9526443907708, + "ns_low": 998.1519563903406, + "ns_high": 1001.8639406069802, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "aws-lc-rs", + "id": "aes256-gcm-open/aws-lc-rs/16KB", + "ns": 5252.115081471226, + "ns_low": 5230.355586159251, + "ns_high": 5276.667233114943, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "libcrux", + "id": "aes256-gcm-open/libcrux/16KB", + "ns": 78359.2666876016, + "ns_low": 78131.6678450846, + "ns_high": 78590.79993158203, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "openssl", + "id": "aes256-gcm-open/openssl/16KB", + "ns": 5431.6566969540845, + "ns_low": 5359.002471779468, + "ns_high": 5519.2498950483805, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "rind", + "id": "aes256-gcm-open/rind/16KB", + "ns": 5130.143908610199, + "ns_low": 5116.332387768339, + "ns_high": 5145.559008128321, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "ring", + "id": "aes256-gcm-open/ring/16KB", + "ns": 5225.0212367574895, + "ns_low": 5149.428467236498, + "ns_high": 5350.7973245131125, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "aes256-gcm-open/{lib}/16KB", + "library": "rustcrypto", + "id": "aes256-gcm-open/rustcrypto/16KB", + "ns": 10039.150895096593, + "ns_low": 10021.435960801155, + "ns_high": 10061.642594578698, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/32B", + "ns": 209.94139263863033, + "ns_low": 209.1314255632066, + "ns_high": 210.91743571631372, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/32B", + "ns": 415.6526728830884, + "ns_low": 414.8434829650981, + "ns_high": 416.43970310794447, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "openssl", + "id": "chacha20poly1305/openssl/32B", + "ns": 488.58653660820005, + "ns_low": 487.95963202813783, + "ns_high": 489.29355054481755, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "rind", + "id": "chacha20poly1305/rind/32B", + "ns": 188.35050560291774, + "ns_low": 187.77637746578628, + "ns_high": 189.02808459519824, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "ring", + "id": "chacha20poly1305/ring/32B", + "ns": 188.84717108009426, + "ns_low": 188.59154266460777, + "ns_high": 189.17105095735147, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/32B", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/32B", + "ns": 1748.880537729654, + "ns_low": 1745.479045895801, + "ns_high": 1753.095274569118, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/1350B", + "ns": 1052.279760772418, + "ns_low": 1051.2133113510129, + "ns_high": 1053.2994534343636, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/1350B", + "ns": 4596.025634106694, + "ns_low": 4587.854760118119, + "ns_high": 4606.301664626347, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "openssl", + "id": "chacha20poly1305/openssl/1350B", + "ns": 1583.34143995729, + "ns_low": 1579.3663007899502, + "ns_high": 1587.4958284227926, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "rind", + "id": "chacha20poly1305/rind/1350B", + "ns": 1036.5240239164966, + "ns_low": 1034.7793865114543, + "ns_high": 1038.5752884625385, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "ring", + "id": "chacha20poly1305/ring/1350B", + "ns": 1039.8163773098465, + "ns_low": 1037.9153017438452, + "ns_high": 1041.9668354400878, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/1350B", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/1350B", + "ns": 3150.3741620046867, + "ns_low": 3147.7123673119577, + "ns_high": 3152.957489724914, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "aws-lc-rs", + "id": "chacha20poly1305/aws-lc-rs/16KB", + "ns": 9694.841975207553, + "ns_low": 9677.909094093984, + "ns_high": 9712.196843145308, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "libcrux", + "id": "chacha20poly1305/libcrux/16KB", + "ns": 51630.961635141124, + "ns_low": 51529.46887603607, + "ns_high": 51735.85715071593, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "openssl", + "id": "chacha20poly1305/openssl/16KB", + "ns": 10829.052391633193, + "ns_low": 10796.457865767772, + "ns_high": 10872.913350138824, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "rind", + "id": "chacha20poly1305/rind/16KB", + "ns": 9557.674779332943, + "ns_low": 9538.133564872971, + "ns_high": 9579.384692560041, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "ring", + "id": "chacha20poly1305/ring/16KB", + "ns": 9930.826395267355, + "ns_low": 9755.195491186865, + "ns_high": 10232.301526462199, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "chacha20poly1305/{lib}/16KB", + "library": "rustcrypto", + "id": "chacha20poly1305/rustcrypto/16KB", + "ns": 18344.285176457943, + "ns_low": 18321.784475345572, + "ns_high": 18368.5324874776, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/32B", + "ns": 434.0029234389254, + "ns_low": 431.7751835144619, + "ns_high": 436.5288155739336, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/32B", + "ns": 639.9848106452437, + "ns_low": 629.4500627960797, + "ns_high": 652.836036491914, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "rind", + "id": "xchacha20poly1305/rind/32B", + "ns": 401.645045275225, + "ns_low": 400.26540824680217, + "ns_high": 403.1080397141349, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/32B", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/32B", + "ns": 1979.8741663937803, + "ns_low": 1972.5639602565907, + "ns_high": 1987.8902857388034, + "throughput": { + "Bytes": 32 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/1350B", + "ns": 1293.2636784564115, + "ns_low": 1285.1063334362925, + "ns_high": 1302.5148536039826, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/1350B", + "ns": 4818.743462415241, + "ns_low": 4810.354417805709, + "ns_high": 4827.609689029769, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "rind", + "id": "xchacha20poly1305/rind/1350B", + "ns": 1263.731780163091, + "ns_low": 1258.2572211773004, + "ns_high": 1269.6739284062492, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/1350B", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/1350B", + "ns": 3403.914086157614, + "ns_low": 3386.7537221777284, + "ns_high": 3428.945028376068, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "aws-lc-rs", + "id": "xchacha20poly1305/aws-lc-rs/16KB", + "ns": 9943.466185557361, + "ns_low": 9894.508006853182, + "ns_high": 10011.29563604384, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "libcrux", + "id": "xchacha20poly1305/libcrux/16KB", + "ns": 52014.76180828531, + "ns_low": 51759.35388517907, + "ns_high": 52323.90067872405, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "rind", + "id": "xchacha20poly1305/rind/16KB", + "ns": 10024.46457046451, + "ns_low": 9916.869824833444, + "ns_high": 10154.951275939591, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "xchacha20poly1305/{lib}/16KB", + "library": "rustcrypto", + "id": "xchacha20poly1305/rustcrypto/16KB", + "ns": 18765.69316416063, + "ns_low": 18636.85802497983, + "ns_high": 18926.21183740366, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes128/aws-lc-rs", + "ns": 11.483260658262632, + "ns_low": 11.420504607653156, + "ns_high": 11.573943448341218, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "rind", + "id": "quic-header-protection/aes128/rind", + "ns": 6.926591618304113, + "ns_low": 6.900571840630975, + "ns_high": 6.952731716112086, + "throughput": null + }, + { + "operation": "quic-header-protection/aes128/{lib}", + "library": "ring", + "id": "quic-header-protection/aes128/ring", + "ns": 11.770388724625613, + "ns_low": 11.757809174292593, + "ns_high": 11.783671929139409, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/aes256/aws-lc-rs", + "ns": 14.703369470697373, + "ns_low": 14.662427647724854, + "ns_high": 14.758396071141318, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "rind", + "id": "quic-header-protection/aes256/rind", + "ns": 9.313861664388003, + "ns_low": 9.26909721606858, + "ns_high": 9.37322639242399, + "throughput": null + }, + { + "operation": "quic-header-protection/aes256/{lib}", + "library": "ring", + "id": "quic-header-protection/aes256/ring", + "ns": 14.507616598713883, + "ns_low": 14.481998001246136, + "ns_high": 14.540807069453093, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "aws-lc-rs", + "id": "quic-header-protection/chacha20/aws-lc-rs", + "ns": 152.17716377531795, + "ns_low": 151.5947842167032, + "ns_high": 152.92628852498325, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "rind", + "id": "quic-header-protection/chacha20/rind", + "ns": 122.2103441474563, + "ns_low": 121.66429262007343, + "ns_high": 122.84877295444097, + "throughput": null + }, + { + "operation": "quic-header-protection/chacha20/{lib}", + "library": "ring", + "id": "quic-header-protection/chacha20/ring", + "ns": 139.05518040836085, + "ns_low": 137.26395062452443, + "ns_high": 141.99570893835903, + "throughput": null + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "x25519-ecdh/aws-lc-rs", + "ns": 51154.24648367076, + "ns_low": 50882.322579931424, + "ns_high": 51474.23547779886, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "libcrux", + "id": "x25519-ecdh/libcrux", + "ns": 113849.87160730998, + "ns_low": 113003.58783629068, + "ns_high": 114897.56196834383, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "openssl", + "id": "x25519-ecdh/openssl", + "ns": 94946.70990521226, + "ns_low": 94752.36855073863, + "ns_high": 95154.61056227879, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "rind", + "id": "x25519-ecdh/rind", + "ns": 51103.42669597557, + "ns_low": 49975.10400989156, + "ns_high": 52569.34668350204, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "ring", + "id": "x25519-ecdh/ring", + "ns": 76217.52326547954, + "ns_low": 74607.18868753246, + "ns_high": 78097.93662117593, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "x25519-ecdh/{lib}", + "library": "rustcrypto", + "id": "x25519-ecdh/dalek", + "ns": 87594.29622749056, + "ns_low": 87469.93747003283, + "ns_high": 87745.72582160146, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdh/aws-lc-rs", + "ns": 83706.08079714581, + "ns_low": 83191.39428927422, + "ns_high": 84404.19069465218, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "libcrux", + "id": "p256-ecdh/libcrux", + "ns": 431733.51651839813, + "ns_low": 428868.5601109566, + "ns_high": 436069.2466672278, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "openssl", + "id": "p256-ecdh/openssl", + "ns": 135756.23655268212, + "ns_low": 134212.33680786254, + "ns_high": 137828.2685674645, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "rind", + "id": "p256-ecdh/rind", + "ns": 78746.6354496084, + "ns_low": 78378.28779019318, + "ns_high": 79218.22905875157, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "ring", + "id": "p256-ecdh/ring", + "ns": 83409.7622964386, + "ns_low": 82934.81865028501, + "ns_high": 83968.53038413175, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdh/{lib}", + "library": "rustcrypto", + "id": "p256-ecdh/p256-rustcrypto", + "ns": 363808.4665760307, + "ns_low": 362826.65020022326, + "ns_high": 365012.38446046825, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "aws-lc-rs", + "id": "ed25519-sign/aws-lc-rs", + "ns": 12646.891724114575, + "ns_low": 12537.741826581081, + "ns_high": 12789.83864462204, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "libcrux", + "id": "ed25519-sign/libcrux", + "ns": 73351.9091933074, + "ns_low": 73111.35612009844, + "ns_high": 73600.60118476949, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "openssl", + "id": "ed25519-sign/openssl", + "ns": 41958.18805694301, + "ns_low": 41657.43885341298, + "ns_high": 42321.32123057718, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "rind", + "id": "ed25519-sign/rind", + "ns": 11679.276694570248, + "ns_low": 11610.745159670145, + "ns_high": 11768.519749698153, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "ring", + "id": "ed25519-sign/ring", + "ns": 28948.09908758893, + "ns_low": 28884.01353492508, + "ns_high": 29008.653348521926, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-sign/{lib}", + "library": "rustcrypto", + "id": "ed25519-sign/dalek", + "ns": 23736.56593246638, + "ns_low": 23590.16765738764, + "ns_high": 23915.21472426904, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "aws-lc-rs", + "id": "ed25519-verify/aws-lc-rs", + "ns": 57625.93610811827, + "ns_low": 57503.47765534129, + "ns_high": 57753.77329216127, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "libcrux", + "id": "ed25519-verify/libcrux", + "ns": 93989.85154890329, + "ns_low": 93653.09888504217, + "ns_high": 94385.94660330948, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "openssl", + "id": "ed25519-verify/openssl", + "ns": 136496.0913314615, + "ns_low": 135171.7077593455, + "ns_high": 138515.5705986422, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "rind", + "id": "ed25519-verify/rind", + "ns": 58965.211801389094, + "ns_low": 58427.046739679194, + "ns_high": 59583.58046530534, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "ring", + "id": "ed25519-verify/ring", + "ns": 59239.83330870401, + "ns_low": 59096.28470222501, + "ns_high": 59418.264496222204, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "ed25519-verify/{lib}", + "library": "rustcrypto", + "id": "ed25519-verify/dalek", + "ns": 45803.96189279909, + "ns_low": 45310.090119643835, + "ns_high": 46483.770816864584, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdsa-sign/aws-lc-rs", + "ns": 23932.414768494164, + "ns_low": 23815.78702184355, + "ns_high": 24066.83760999177, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "libcrux", + "id": "p256-ecdsa-sign/libcrux", + "ns": 156952.54117260233, + "ns_low": 156342.7944525037, + "ns_high": 157744.73879154166, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p256-ecdsa-sign/openssl", + "ns": 31820.57784433746, + "ns_low": 31615.531324584586, + "ns_high": 32087.16481301595, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "rind", + "id": "p256-ecdsa-sign/rind", + "ns": 21442.19206316367, + "ns_low": 21328.14036082203, + "ns_high": 21586.823769220813, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "ring", + "id": "p256-ecdsa-sign/ring", + "ns": 24843.19019370967, + "ns_low": 24788.069306333822, + "ns_high": 24896.70608153479, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p256-ecdsa-sign/rustcrypto", + "ns": 107391.07118762622, + "ns_low": 106184.99630647735, + "ns_high": 108899.98378267675, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p256-ecdsa-verify/aws-lc-rs", + "ns": 74538.25972033397, + "ns_low": 74335.06552752823, + "ns_high": 74810.11096704638, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "libcrux", + "id": "p256-ecdsa-verify/libcrux", + "ns": 363171.31543076696, + "ns_low": 362564.8303595513, + "ns_high": 363760.5580812779, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p256-ecdsa-verify/openssl", + "ns": 111982.85246588838, + "ns_low": 111650.41598349379, + "ns_high": 112363.4112517627, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "rind", + "id": "p256-ecdsa-verify/rind", + "ns": 77752.47548839959, + "ns_low": 77039.4897154486, + "ns_high": 78652.17951588957, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "ring", + "id": "p256-ecdsa-verify/ring", + "ns": 78729.60025786907, + "ns_low": 77442.98754873897, + "ns_high": 80744.87235880527, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p256-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p256-ecdsa-verify/rustcrypto", + "ns": 305785.25233042706, + "ns_low": 304964.7577678378, + "ns_high": 306661.49470349104, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/64B", + "ns": 480.64618161438455, + "ns_low": 477.14927763910964, + "ns_high": 485.3349989601089, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "libcrux", + "id": "sha256/libcrux/64B", + "ns": 759.692732588277, + "ns_low": 750.8127370662675, + "ns_high": 771.1543700139448, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "openssl", + "id": "sha256/openssl/64B", + "ns": 801.4269664712307, + "ns_low": 785.267118729012, + "ns_high": 822.5405536163626, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "rind", + "id": "sha256/rind/64B", + "ns": 386.2987198800622, + "ns_low": 383.6244803123773, + "ns_high": 389.66892324613156, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "ring", + "id": "sha256/ring/64B", + "ns": 432.3279173934439, + "ns_low": 427.383517673938, + "ns_high": 438.02724775600115, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/64B", + "library": "rustcrypto", + "id": "sha256/rustcrypto/64B", + "ns": 733.6435732851769, + "ns_low": 727.1684862781728, + "ns_high": 741.8106290795176, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/1350B", + "ns": 4747.314673641041, + "ns_low": 4601.000870011477, + "ns_high": 4933.325321664505, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "libcrux", + "id": "sha256/libcrux/1350B", + "ns": 8244.36288559913, + "ns_low": 8134.560416461559, + "ns_high": 8429.089584136807, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "openssl", + "id": "sha256/openssl/1350B", + "ns": 4222.715871036013, + "ns_low": 4169.863423789467, + "ns_high": 4281.60777139415, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "rind", + "id": "sha256/rind/1350B", + "ns": 3853.482848206855, + "ns_low": 3809.249375603825, + "ns_high": 3923.1092968852286, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "ring", + "id": "sha256/ring/1350B", + "ns": 4307.22671789567, + "ns_low": 4244.801848872831, + "ns_high": 4406.766706862851, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/1350B", + "library": "rustcrypto", + "id": "sha256/rustcrypto/1350B", + "ns": 8292.475777811542, + "ns_low": 8082.467963215759, + "ns_high": 8513.137909750465, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "aws-lc-rs", + "id": "sha256/aws-lc-rs/16KB", + "ns": 49408.89867617359, + "ns_low": 48666.38651301802, + "ns_high": 50363.69758936629, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "libcrux", + "id": "sha256/libcrux/16KB", + "ns": 97660.92416601574, + "ns_low": 95995.94440625193, + "ns_high": 99595.06362346216, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "openssl", + "id": "sha256/openssl/16KB", + "ns": 43722.22853174017, + "ns_low": 43573.26705889253, + "ns_high": 43902.09438802399, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "rind", + "id": "sha256/rind/16KB", + "ns": 43509.78053600456, + "ns_low": 43354.59617322054, + "ns_high": 43664.63137523477, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "ring", + "id": "sha256/ring/16KB", + "ns": 51350.26182401019, + "ns_low": 50381.071508286775, + "ns_high": 52431.192781553524, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha256/{lib}/16KB", + "library": "rustcrypto", + "id": "sha256/rustcrypto/16KB", + "ns": 92836.25690008233, + "ns_low": 90796.61011908515, + "ns_high": 95509.17364657561, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/64B", + "ns": 361.7604888618896, + "ns_low": 356.7135135068354, + "ns_high": 367.8217555199207, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "libcrux", + "id": "sha512/libcrux/64B", + "ns": 443.370149531737, + "ns_low": 442.0737159729153, + "ns_high": 444.92022569114357, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "openssl", + "id": "sha512/openssl/64B", + "ns": 681.8311451579739, + "ns_low": 680.3453572338321, + "ns_high": 683.5756956943482, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "rind", + "id": "sha512/rind/64B", + "ns": 303.5145497390219, + "ns_low": 303.0880206101137, + "ns_high": 304.00256026769915, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "ring", + "id": "sha512/ring/64B", + "ns": 330.60064511645595, + "ns_low": 324.2395851613834, + "ns_high": 337.72125599039106, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/64B", + "library": "rustcrypto", + "id": "sha512/rustcrypto/64B", + "ns": 423.8744729460607, + "ns_low": 419.064058973674, + "ns_high": 429.9847817139204, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/1350B", + "ns": 3036.72605884469, + "ns_low": 2996.1724859051583, + "ns_high": 3090.951120883342, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "libcrux", + "id": "sha512/libcrux/1350B", + "ns": 4662.517735792853, + "ns_low": 4654.143966406731, + "ns_high": 4671.991266047853, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "openssl", + "id": "sha512/openssl/1350B", + "ns": 2991.7156423910596, + "ns_low": 2979.5690693943075, + "ns_high": 3005.330917737347, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "rind", + "id": "sha512/rind/1350B", + "ns": 2541.6296227292073, + "ns_low": 2531.2544133400725, + "ns_high": 2554.1973870780816, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "ring", + "id": "sha512/ring/1350B", + "ns": 2972.598631743021, + "ns_low": 2964.8535200403244, + "ns_high": 2981.3738265878433, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/1350B", + "library": "rustcrypto", + "id": "sha512/rustcrypto/1350B", + "ns": 4174.071239755351, + "ns_low": 4116.818565270215, + "ns_high": 4258.098793599639, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "aws-lc-rs", + "id": "sha512/aws-lc-rs/16KB", + "ns": 34418.10276258969, + "ns_low": 33976.473371738335, + "ns_high": 35051.94147670779, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "libcrux", + "id": "sha512/libcrux/16KB", + "ns": 54800.13570482421, + "ns_low": 54575.53246685665, + "ns_high": 55061.685071548374, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "openssl", + "id": "sha512/openssl/16KB", + "ns": 29588.8675006861, + "ns_low": 29415.990453282175, + "ns_high": 29804.67404042305, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "rind", + "id": "sha512/rind/16KB", + "ns": 29119.25021877881, + "ns_low": 28936.564178289264, + "ns_high": 29328.759662462693, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "ring", + "id": "sha512/ring/16KB", + "ns": 33886.18462161141, + "ns_low": 33733.469059931165, + "ns_high": 34052.6477966907, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "sha512/{lib}/16KB", + "library": "rustcrypto", + "id": "sha512/rustcrypto/16KB", + "ns": 47691.35707676393, + "ns_low": 47515.38963188181, + "ns_high": 47895.77026718008, + "throughput": { + "Bytes": 16384 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "aws-lc-rs", + "id": "hmac-sha256/aws-lc-rs/64B", + "ns": 1244.5257492442292, + "ns_low": 1238.9409576396224, + "ns_high": 1250.4766589832434, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "libcrux", + "id": "hmac-sha256/libcrux/64B", + "ns": 1831.8100377558485, + "ns_low": 1829.0580804281449, + "ns_high": 1834.2114396150512, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "openssl", + "id": "hmac-sha256/openssl/64B", + "ns": 5656.875490637337, + "ns_low": 5647.1045117691765, + "ns_high": 5667.145281491101, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "rind", + "id": "hmac-sha256/rind/64B", + "ns": 962.694732759652, + "ns_low": 961.1780893585578, + "ns_high": 964.3487983954583, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "ring", + "id": "hmac-sha256/ring/64B", + "ns": 1089.7268042655453, + "ns_low": 1084.7416029127423, + "ns_high": 1095.7924582791711, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/64B", + "library": "rustcrypto", + "id": "hmac-sha256/rustcrypto/64B", + "ns": 1821.9248977231132, + "ns_low": 1818.5681191240067, + "ns_high": 1825.9253229399997, + "throughput": { + "Bytes": 64 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "aws-lc-rs", + "id": "hmac-sha256/aws-lc-rs/1350B", + "ns": 5113.914636190845, + "ns_low": 5091.106365246135, + "ns_high": 5138.813563530436, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "libcrux", + "id": "hmac-sha256/libcrux/1350B", + "ns": 9237.564658717078, + "ns_low": 9205.131794833977, + "ns_high": 9272.16604217234, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "openssl", + "id": "hmac-sha256/openssl/1350B", + "ns": 9083.198771004081, + "ns_low": 9040.676025681983, + "ns_high": 9135.031933882343, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "rind", + "id": "hmac-sha256/rind/1350B", + "ns": 4308.594563630313, + "ns_low": 4289.421474782656, + "ns_high": 4336.281348031282, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "ring", + "id": "hmac-sha256/ring/1350B", + "ns": 4968.710714441865, + "ns_low": 4945.896625122962, + "ns_high": 4996.7438219312035, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hmac-sha256/{lib}/1350B", + "library": "rustcrypto", + "id": "hmac-sha256/rustcrypto/1350B", + "ns": 8947.465204887038, + "ns_low": 8896.36244031908, + "ns_high": 9013.557408774202, + "throughput": { + "Bytes": 1350 + } + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "aws-lc-rs", + "id": "hkdf-sha256/extract-expand/aws-lc-rs", + "ns": 2012.9203064964436, + "ns_low": 2000.4999717167832, + "ns_high": 2027.1343165238839, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "libcrux", + "id": "hkdf-sha256/extract-expand/libcrux", + "ns": 3081.382937314042, + "ns_low": 3061.156280343609, + "ns_high": 3105.809436635225, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "openssl", + "id": "hkdf-sha256/extract-expand/openssl", + "ns": 6796.854206543789, + "ns_low": 6770.2841021342265, + "ns_high": 6823.765417008679, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "rind", + "id": "hkdf-sha256/extract-expand/rind", + "ns": 1702.0669149939479, + "ns_low": 1691.7936957498207, + "ns_high": 1714.7158343240394, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "ring", + "id": "hkdf-sha256/extract-expand/ring", + "ns": 1854.473464646304, + "ns_low": 1844.4995012166178, + "ns_high": 1866.3305913597767, + "throughput": null + }, + { + "operation": "hkdf-sha256/extract-expand/{lib}", + "library": "rustcrypto", + "id": "hkdf-sha256/extract-expand/rustcrypto", + "ns": 3011.7551418498538, + "ns_low": 3004.0542078809417, + "ns_high": 3021.4261987397645, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "aws-lc-rs", + "id": "hkdf-sha256/expand/aws-lc-rs", + "ns": 973.3637829728165, + "ns_low": 970.7428095876486, + "ns_high": 976.2507300219058, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "libcrux", + "id": "hkdf-sha256/expand/libcrux", + "ns": 1584.4218023677688, + "ns_low": 1566.6302846645362, + "ns_high": 1607.4626903995581, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "openssl", + "id": "hkdf-sha256/expand/openssl", + "ns": 4615.439281069898, + "ns_low": 4514.776492852204, + "ns_high": 4763.523403454742, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "rind", + "id": "hkdf-sha256/expand/rind", + "ns": 464.4744837253186, + "ns_low": 460.85469739219997, + "ns_high": 469.2365890209188, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "ring", + "id": "hkdf-sha256/expand/ring", + "ns": 507.7793171269799, + "ns_low": 506.03103540085203, + "ns_high": 509.75166694467765, + "throughput": null + }, + { + "operation": "hkdf-sha256/expand/{lib}", + "library": "rustcrypto", + "id": "hkdf-sha256/expand/rustcrypto", + "ns": 773.4597892594564, + "ns_low": 771.8900455632737, + "ns_high": 774.9263839592572, + "throughput": null + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pkcs1-sha256-sign/aws-lc-rs", + "ns": 779047.8207595685, + "ns_low": 775298.0241843876, + "ns_high": 783217.6626388666, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "openssl", + "id": "rsa2048-pkcs1-sha256-sign/openssl", + "ns": 777229.6132259495, + "ns_low": 775997.2970869943, + "ns_high": 778615.9028444024, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "rind", + "id": "rsa2048-pkcs1-sha256-sign/rind", + "ns": 740758.8283316093, + "ns_low": 738891.5145319696, + "ns_high": 743073.7628279444, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "ring", + "id": "rsa2048-pkcs1-sha256-sign/ring", + "ns": 982447.1935953894, + "ns_low": 980366.8587644005, + "ns_high": 984904.2215930668, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-sign/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pkcs1-sha256-sign/rustcrypto", + "ns": 1778697.9370588236, + "ns_low": 1770457.7120441175, + "ns_high": 1788099.2463235287, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pkcs1-sha256-verify/aws-lc-rs", + "ns": 32954.693972382316, + "ns_low": 32818.59553769813, + "ns_high": 33128.45969261027, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "openssl", + "id": "rsa2048-pkcs1-sha256-verify/openssl", + "ns": 47304.2221413875, + "ns_low": 47246.03125629786, + "ns_high": 47359.492033481954, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "rind", + "id": "rsa2048-pkcs1-sha256-verify/rind", + "ns": 29502.638538052313, + "ns_low": 29450.879390530343, + "ns_high": 29556.391570428284, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "ring", + "id": "rsa2048-pkcs1-sha256-verify/ring", + "ns": 37723.676550539385, + "ns_low": 37633.33315259597, + "ns_high": 37834.68311648389, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pkcs1-sha256-verify/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pkcs1-sha256-verify/rustcrypto", + "ns": 88471.80279676581, + "ns_low": 88093.96691291795, + "ns_high": 88892.1813846609, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pss-sha256-sign/aws-lc-rs", + "ns": 772149.7946977981, + "ns_low": 770412.9717133276, + "ns_high": 774387.2357900856, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "libcrux", + "id": "rsa2048-pss-sha256-sign/libcrux", + "ns": 10859449.680000002, + "ns_low": 10796606.70425, + "ns_high": 10926331.176999997, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "openssl", + "id": "rsa2048-pss-sha256-sign/openssl", + "ns": 796267.1515531255, + "ns_low": 791325.337439253, + "ns_high": 803812.6170334748, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "rind", + "id": "rsa2048-pss-sha256-sign/rind", + "ns": 743947.6341421605, + "ns_low": 740273.4583404398, + "ns_high": 749087.5065062193, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "ring", + "id": "rsa2048-pss-sha256-sign/ring", + "ns": 987951.9649238954, + "ns_low": 983010.9769777976, + "ns_high": 994382.7489735378, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-sign/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pss-sha256-sign/rustcrypto", + "ns": 1813561.7870588247, + "ns_low": 1779727.4612941183, + "ns_high": 1859020.019544118, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "aws-lc-rs", + "id": "rsa2048-pss-sha256-verify/aws-lc-rs", + "ns": 35482.65967732682, + "ns_low": 35176.46334044514, + "ns_high": 35921.342191417105, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "libcrux", + "id": "rsa2048-pss-sha256-verify/libcrux", + "ns": 583126.2419639427, + "ns_low": 577582.4033848919, + "ns_high": 590147.1341161837, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "openssl", + "id": "rsa2048-pss-sha256-verify/openssl", + "ns": 50437.23024703217, + "ns_low": 50355.11474902008, + "ns_high": 50524.204781826375, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "rind", + "id": "rsa2048-pss-sha256-verify/rind", + "ns": 31994.044637365543, + "ns_low": 31936.80317213631, + "ns_high": 32050.884428521225, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "ring", + "id": "rsa2048-pss-sha256-verify/ring", + "ns": 40124.80990808335, + "ns_low": 40048.784571230564, + "ns_high": 40203.93377931496, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "rsa2048-pss-sha256-verify/{lib}", + "library": "rustcrypto", + "id": "rsa2048-pss-sha256-verify/rustcrypto", + "ns": 106800.19336584405, + "ns_low": 105924.02715305386, + "ns_high": 107986.81410125394, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-keygen/aws-lc-rs", + "ns": 23214.38320165509, + "ns_low": 23098.973660365413, + "ns_high": 23408.18084666944, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "libcrux", + "id": "mlkem768-keygen/libcrux-ml-kem", + "ns": 34540.68618346821, + "ns_low": 34394.41286614846, + "ns_high": 34718.48531391103, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "openssl", + "id": "mlkem768-keygen/openssl", + "ns": 62775.46412501847, + "ns_low": 62274.60688213811, + "ns_high": 63379.37131987449, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "rind", + "id": "mlkem768-keygen/rind", + "ns": 17436.16063783804, + "ns_low": 17413.7420096809, + "ns_high": 17462.362936807345, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-keygen/{lib}", + "library": "rustcrypto", + "id": "mlkem768-keygen/rustcrypto", + "ns": 92844.02752686356, + "ns_low": 92202.18737869004, + "ns_high": 93687.91733778807, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-encaps/aws-lc-rs", + "ns": 23942.49096429505, + "ns_low": 23671.911058687776, + "ns_high": 24413.597456330324, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "libcrux", + "id": "mlkem768-encaps/libcrux-ml-kem", + "ns": 31261.733599433785, + "ns_low": 31138.010848267073, + "ns_high": 31395.6659440663, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "openssl", + "id": "mlkem768-encaps/openssl", + "ns": 63411.593215014036, + "ns_low": 63266.16338999154, + "ns_high": 63560.54021112985, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "rind", + "id": "mlkem768-encaps/rind", + "ns": 18360.71722154305, + "ns_low": 18281.517630389684, + "ns_high": 18435.91518077925, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-encaps/{lib}", + "library": "rustcrypto", + "id": "mlkem768-encaps/rustcrypto", + "ns": 101884.20730752179, + "ns_low": 101574.50837869143, + "ns_high": 102196.34051260527, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "aws-lc-rs", + "id": "mlkem768-decaps/aws-lc-rs", + "ns": 27568.208452651234, + "ns_low": 27472.02483508931, + "ns_high": 27680.835212009388, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "libcrux", + "id": "mlkem768-decaps/libcrux-ml-kem", + "ns": 33118.7282907246, + "ns_low": 33022.09519272807, + "ns_high": 33213.491088252726, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "openssl", + "id": "mlkem768-decaps/openssl", + "ns": 48938.01372679633, + "ns_low": 48778.48573419149, + "ns_high": 49132.67444540484, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "rind", + "id": "mlkem768-decaps/rind", + "ns": 12146.596583912122, + "ns_low": 12072.63745843972, + "ns_high": 12251.755009004992, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "mlkem768-decaps/{lib}", + "library": "rustcrypto", + "id": "mlkem768-decaps/rustcrypto", + "ns": 130574.72164681542, + "ns_low": 129256.44856616376, + "ns_high": 132670.29028032513, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdh/aws-lc-rs", + "ns": 291937.0898581351, + "ns_low": 291346.6880792163, + "ns_high": 292617.5665186405, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "openssl", + "id": "p384-ecdh/openssl", + "ns": 765553.0923481602, + "ns_low": 755558.6144764089, + "ns_high": 778162.2807583929, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "rind", + "id": "p384-ecdh/rind", + "ns": 264085.8792896902, + "ns_low": 263510.406796773, + "ns_high": 264710.4092215481, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "ring", + "id": "p384-ecdh/ring", + "ns": 980959.5281720113, + "ns_low": 978648.3265383056, + "ns_high": 983959.2665745486, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdh/{lib}", + "library": "rustcrypto", + "id": "p384-ecdh/p384-rustcrypto", + "ns": 1204517.1304, + "ns_low": 1191715.9484699997, + "ns_high": 1221928.9485599997, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdsa-sign/aws-lc-rs", + "ns": 126328.61154721443, + "ns_low": 125765.02606098716, + "ns_high": 127055.14330940178, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p384-ecdsa-sign/openssl", + "ns": 253004.53187921777, + "ns_low": 251338.34112815183, + "ns_high": 255417.14942767087, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "rind", + "id": "p384-ecdsa-sign/rind", + "ns": 67075.02933648588, + "ns_low": 66861.75448176688, + "ns_high": 67292.11296089138, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "ring", + "id": "p384-ecdsa-sign/ring", + "ns": 534870.3892773755, + "ns_low": 532540.7955380719, + "ns_high": 537856.1088611638, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p384-ecdsa-sign/rustcrypto", + "ns": 262542.02687650855, + "ns_low": 261837.500052238, + "ns_high": 263271.2175012911, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p384-ecdsa-verify/aws-lc-rs", + "ns": 299752.60144820454, + "ns_low": 297799.12421023456, + "ns_high": 302146.23392438435, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p384-ecdsa-verify/openssl", + "ns": 612235.1118161667, + "ns_low": 610727.937573676, + "ns_high": 613723.3478762012, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "rind", + "id": "p384-ecdsa-verify/rind", + "ns": 247759.01335500713, + "ns_low": 247474.07161622864, + "ns_high": 248054.76134221422, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "ring", + "id": "p384-ecdsa-verify/ring", + "ns": 951587.25308704, + "ns_low": 949961.3240153949, + "ns_high": 953280.3341718446, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p384-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p384-ecdsa-verify/rustcrypto", + "ns": 1049110.146445988, + "ns_low": 1044058.4762268167, + "ns_high": 1055154.3606164057, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdh/aws-lc-rs", + "ns": 479778.03748485295, + "ns_low": 477301.69494299765, + "ns_high": 484393.23940514645, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "openssl", + "id": "p521-ecdh/openssl", + "ns": 722006.8985399734, + "ns_low": 717739.2950441606, + "ns_high": 727308.2205658572, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "rind", + "id": "p521-ecdh/rind", + "ns": 442807.08133737254, + "ns_low": 441422.3178403558, + "ns_high": 444507.49808898696, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdh/{lib}", + "library": "rustcrypto", + "id": "p521-ecdh/rustcrypto", + "ns": 1186792.4992307695, + "ns_low": 1184012.1305192304, + "ns_high": 1189676.821317308, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdsa-sign/aws-lc-rs", + "ns": 256020.4393103788, + "ns_low": 253816.45263514595, + "ns_high": 259590.77893998162, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "openssl", + "id": "p521-ecdsa-sign/openssl", + "ns": 344793.91982266883, + "ns_low": 343548.988108702, + "ns_high": 346149.40110860334, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "rind", + "id": "p521-ecdsa-sign/rind", + "ns": 116503.07833357963, + "ns_low": 115826.90328149499, + "ns_high": 117327.14795543674, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-sign/{lib}", + "library": "rustcrypto", + "id": "p521-ecdsa-sign/rustcrypto", + "ns": 287244.5921540811, + "ns_low": 285487.6150594087, + "ns_high": 289448.30039148213, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "aws-lc-rs", + "id": "p521-ecdsa-verify/aws-lc-rs", + "ns": 519346.17429732525, + "ns_low": 518737.7564342129, + "ns_high": 519936.0191115187, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "openssl", + "id": "p521-ecdsa-verify/openssl", + "ns": 699483.4341362495, + "ns_low": 696285.5606107417, + "ns_high": 702877.6881427548, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "rind", + "id": "p521-ecdsa-verify/rind", + "ns": 402023.3828993646, + "ns_low": 400898.19421379984, + "ns_high": 403145.91481237335, + "throughput": { + "Elements": 1 + } + }, + { + "operation": "p521-ecdsa-verify/{lib}", + "library": "rustcrypto", + "id": "p521-ecdsa-verify/rustcrypto", + "ns": 975404.3490557115, + "ns_low": 970595.5693366365, + "ns_high": 981146.4723011588, + "throughput": { + "Elements": 1 + } + } + ], + "build_cost": { + "status": "ok", + "started": "2026-11-06T18:15:41+00:00", + "host": { + "hostname": "moq-load", + "os": "Linux 6.18.40", + "arch": "x86_64", + "cpu": "Intel Core Processor (Haswell, no TSX)", + "cpus": 4, + "jobs": "4", + "rustc": "rustc 1.98.1 (48a229cea 2026-09-01)", + "cc": "gcc (GCC) 16.2.0" + }, + "runs": 3, + "builds": [ + { + "name": "rind", + "seconds": [ + 11.65, + 11.67, + 12.15 + ], + "median_seconds": 11.67, + "cpu_seconds": [ + 20.82, + 20.87, + 21.52 + ], + "median_cpu_seconds": 20.87, + "stripped_bytes": 877664, + "tools": [], + "packages": [ + "build-cost-rind@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "rind@0.1.13" + ] + }, + { + "name": "aws-lc-rs", + "seconds": [ + 38.7, + 37.61, + 37.52 + ], + "median_seconds": 37.61, + "cpu_seconds": [ + 95.43, + 93.67, + 92.97 + ], + "median_cpu_seconds": 93.67, + "stripped_bytes": 2991408, + "tools": [ + "cc" + ], + "packages": [ + "aws-lc-rs@1.19.0", + "aws-lc-sys@0.47.0", + "build-cost-aws-lc-rs@0.0.0", + "cc@1.11.1", + "cmake@0.1.58", + "dunce@1.0.5", + "find-msvc-tools@0.1.15", + "fs_extra@1.3.0", + "jobserver@0.1.35", + "libc@0.2.191", + "pkg-config@0.3.34", + "shlex@2.0.1", + "untrusted@0.7.1", + "zeroize@1.9.1" + ] + }, + { + "name": "ring", + "seconds": [ + 14.43, + 14.5, + 14.51 + ], + "median_seconds": 14.5, + "cpu_seconds": [ + 19.0, + 19.07, + 19.07 + ], + "median_cpu_seconds": 19.07, + "stripped_bytes": 744328, + "tools": [ + "cc" + ], + "packages": [ + "build-cost-ring@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "getrandom@0.2.17", + "libc@0.2.191", + "ring@0.17.14", + "shlex@2.0.1", + "untrusted@0.9.0" + ] + }, + { + "name": "rustcrypto", + "seconds": [ + 10.41, + 10.57, + 10.22 + ], + "median_seconds": 10.41, + "cpu_seconds": [ + 36.76, + 37.05, + 36.56 + ], + "median_cpu_seconds": 36.76, + "stripped_bytes": 540640, + "tools": [], + "packages": [ + "aead@0.6.1", + "aes-gcm@0.11.1", + "aes@0.9.4", + "autocfg@1.5.1", + "base16ct@1.0.0", + "base64ct@1.8.3", + "block-buffer@0.12.1", + "build-cost-rustcrypto@0.0.0", + "cfg-if@1.0.5", + "cipher@0.5.2", + "cmov@0.5.4", + "const-oid@0.10.2", + "cpubits@0.1.1", + "cpufeatures@0.3.1", + "crypto-bigint@0.7.10", + "crypto-common@0.2.2", + "ctr@0.10.1", + "ctutils@0.4.8", + "curve25519-dalek-derive@0.1.1", + "curve25519-dalek@5.0.0", + "der@0.8.3", + "digest@0.11.3", + "ecdsa@0.17.0", + "elliptic-curve@0.14.3", + "ff@0.14.0", + "getrandom@0.4.3", + "ghash@0.6.0", + "group@0.14.0", + "hmac@0.13.0", + "hybrid-array@0.4.15", + "inout@0.2.5", + "libc@0.2.191", + "num-traits@0.2.19", + "p256@0.14.0", + "pem-rfc7468@1.0.0", + "pkcs8@0.11.0", + "polyval@0.7.3", + "primefield@0.14.0", + "primeorder@0.14.0", + "proc-macro2@1.0.107", + "quote@1.0.47", + "rand_core@0.10.1", + "rfc6979@0.6.0", + "rustc_version@0.4.1", + "sec1@0.8.1", + "semver@1.0.28", + "sha2@0.11.1", + "signature@3.0.0", + "spki@0.8.1", + "subtle@2.6.1", + "syn@2.0.119", + "typenum@1.20.1", + "unicode-ident@1.0.27", + "universal-hash@0.6.1", + "wnaf@0.14.1", + "x25519-dalek@3.0.0", + "zeroize@1.9.1" + ] + }, + { + "name": "libcrux", + "seconds": [ + 15.25, + 15.18, + 15.65 + ], + "median_seconds": 15.25, + "cpu_seconds": [ + 31.71, + 31.53, + 32.46 + ], + "median_cpu_seconds": 31.71, + "stripped_bytes": 745888, + "tools": [], + "packages": [ + "build-cost-libcrux@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "hax-lib-macros@0.3.6", + "hax-lib@0.3.6", + "libc@0.2.191", + "libcrux-aesgcm@0.0.8", + "libcrux-curve25519@0.0.9", + "libcrux-ecdh@0.0.9", + "libcrux-ecdsa@0.0.9", + "libcrux-hacl-rs@0.0.6", + "libcrux-intrinsics@0.0.7", + "libcrux-macros@0.0.4", + "libcrux-p256@0.0.9", + "libcrux-platform@0.0.3", + "libcrux-secrets@0.0.5", + "libcrux-secrets@0.0.7", + "libcrux-sha2@0.0.9", + "libcrux-traits@0.0.7", + "libcrux-traits@0.0.9", + "proc-macro2@1.0.107", + "quote@1.0.47", + "rand@0.10.3", + "rand_core@0.10.1", + "syn@2.0.119", + "syn@3.0.9", + "unicode-ident@1.0.27" + ] + }, + { + "name": "openssl", + "seconds": [ + 8.68, + 8.5, + 8.55 + ], + "median_seconds": 8.55, + "cpu_seconds": [ + 18.15, + 18.21, + 18.02 + ], + "median_cpu_seconds": 18.15, + "stripped_bytes": 377912, + "tools": [ + "cc", + "pkg-config" + ], + "packages": [ + "bitflags@2.13.2", + "build-cost-openssl@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "foreign-types-shared@0.1.1", + "foreign-types@0.3.2", + "libc@0.2.191", + "openssl-macros@0.1.1", + "openssl-sys@0.9.118", + "openssl@0.10.82", + "pkg-config@0.3.34", + "proc-macro2@1.0.107", + "quote@1.0.47", + "shlex@2.0.1", + "syn@2.0.119", + "unicode-ident@1.0.27", + "vcpkg@0.2.15" + ] + }, + { + "name": "openssl-vendored", + "seconds": [ + 94.05, + 94.2, + 93.64 + ], + "median_seconds": 94.05, + "cpu_seconds": [ + 317.41, + 316.44, + 315.77 + ], + "median_cpu_seconds": 316.44, + "stripped_bytes": 5133408, + "tools": [ + "cc", + "make", + "perl" + ], + "packages": [ + "bitflags@2.13.2", + "build-cost-openssl@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "foreign-types-shared@0.1.1", + "foreign-types@0.3.2", + "libc@0.2.191", + "openssl-macros@0.1.1", + "openssl-src@300.6.1+3.6.3", + "openssl-sys@0.9.118", + "openssl@0.10.82", + "pkg-config@0.3.34", + "proc-macro2@1.0.107", + "quote@1.0.47", + "shlex@2.0.1", + "syn@2.0.119", + "unicode-ident@1.0.27", + "vcpkg@0.2.15" + ] + }, + { + "name": "rustls-rind", + "seconds": [ + 14.62, + 14.69, + 14.72 + ], + "median_seconds": 14.69, + "cpu_seconds": [ + 47.76, + 47.9, + 47.82 + ], + "median_cpu_seconds": 47.82, + "stripped_bytes": 2953200, + "tools": [], + "packages": [ + "build-cost-rustls@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "once_cell@1.21.4", + "rind-rustls@0.1.13", + "rind@0.1.13", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-rind-lean", + "seconds": [ + 14.5, + 14.64, + 14.85 + ], + "median_seconds": 14.64, + "cpu_seconds": [ + 47.48, + 47.77, + 48.57 + ], + "median_cpu_seconds": 47.77, + "stripped_bytes": 1821248, + "tools": [], + "packages": [ + "build-cost-rustls@0.0.0", + "cfg-if@1.0.5", + "getrandom@0.4.3", + "libc@0.2.191", + "once_cell@1.21.4", + "rind-rustls@0.1.13", + "rind@0.1.13", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-aws-lc-rs", + "seconds": [ + 47.62, + 47.13, + 48.49 + ], + "median_seconds": 47.62, + "cpu_seconds": [ + 122.38, + 120.51, + 124.06 + ], + "median_cpu_seconds": 122.38, + "stripped_bytes": 4114504, + "tools": [ + "cc" + ], + "packages": [ + "aws-lc-rs@1.19.0", + "aws-lc-sys@0.47.0", + "build-cost-rustls@0.0.0", + "cc@1.11.1", + "cmake@0.1.58", + "dunce@1.0.5", + "find-msvc-tools@0.1.15", + "fs_extra@1.3.0", + "jobserver@0.1.35", + "libc@0.2.191", + "once_cell@1.21.4", + "pkg-config@0.3.34", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "shlex@2.0.1", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + }, + { + "name": "rustls-ring", + "seconds": [ + 24.05, + 24.53, + 24.38 + ], + "median_seconds": 24.38, + "cpu_seconds": [ + 46.66, + 47.17, + 47.18 + ], + "median_cpu_seconds": 47.17, + "stripped_bytes": 1943808, + "tools": [ + "cc" + ], + "packages": [ + "build-cost-rustls@0.0.0", + "cc@1.11.1", + "cfg-if@1.0.5", + "find-msvc-tools@0.1.15", + "getrandom@0.2.17", + "libc@0.2.191", + "once_cell@1.21.4", + "ring@0.17.14", + "rustls-pki-types@1.15.1", + "rustls-webpki@0.103.16", + "rustls@0.23.46", + "shlex@2.0.1", + "subtle@2.6.1", + "untrusted@0.9.0", + "webpki-roots@1.0.11", + "zeroize@1.9.1" + ] + } + ] + } +} diff --git a/benchmarks/desktop-dark.svg b/benchmarks/desktop-dark.svg index 3aab748c1..5a042ea60 100644 --- a/benchmarks/desktop-dark.svg +++ b/benchmarks/desktop-dark.svg @@ -28,792 +28,792 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 176.38 µs, 1.00× the fastest -176.38 µs -full handshake, X25519MLKEM768, aws-lc-rs: 237.01 µs, 1.34× the fastest -237.01 µs -full handshake, X25519MLKEM768, graviola: 188.12 µs, 1.07× the fastest -188.12 µs -full handshake, X25519MLKEM768, OpenSSL: 435.26 µs, 2.47× the fastest -435.26 µs +full handshake, X25519MLKEM768, rind: 174.97 µs, 1.00× the fastest +174.97 µs +full handshake, X25519MLKEM768, aws-lc-rs: 235.60 µs, 1.35× the fastest +235.60 µs +full handshake, X25519MLKEM768, graviola: 191.49 µs, 1.09× the fastest +191.49 µs +full handshake, X25519MLKEM768, OpenSSL: 437.46 µs, 2.50× the fastest +437.46 µs full handshake, X25519 -full handshake, X25519, rind: 152.03 µs, 1.00× the fastest -152.03 µs -full handshake, X25519, aws-lc-rs: 205.12 µs, 1.35× the fastest -205.12 µs -full handshake, X25519, ring: 221.18 µs, 1.45× the fastest -221.18 µs -full handshake, X25519, graviola: 161.32 µs, 1.06× the fastest -161.32 µs -full handshake, X25519, OpenSSL: 365.01 µs, 2.40× the fastest -365.01 µs +full handshake, X25519, rind: 152.75 µs, 1.00× the fastest +152.75 µs +full handshake, X25519, aws-lc-rs: 203.62 µs, 1.33× the fastest +203.62 µs +full handshake, X25519, ring: 222.88 µs, 1.46× the fastest +222.88 µs +full handshake, X25519, graviola: 162.55 µs, 1.06× the fastest +162.55 µs +full handshake, X25519, OpenSSL: 367.79 µs, 2.41× the fastest +367.79 µs full handshake, P-256 -full handshake, P-256, rind: 175.55 µs, 1.00× the fastest -175.55 µs -full handshake, P-256, aws-lc-rs: 227.34 µs, 1.30× the fastest -227.34 µs -full handshake, P-256, ring: 223.24 µs, 1.27× the fastest -223.24 µs -full handshake, P-256, graviola: 194.81 µs, 1.11× the fastest -194.81 µs -full handshake, P-256, OpenSSL: 403.92 µs, 2.30× the fastest -403.92 µs +full handshake, P-256, rind: 175.68 µs, 1.00× the fastest +175.68 µs +full handshake, P-256, aws-lc-rs: 228.85 µs, 1.30× the fastest +228.85 µs +full handshake, P-256, ring: 221.72 µs, 1.26× the fastest +221.72 µs +full handshake, P-256, graviola: 193.10 µs, 1.10× the fastest +193.10 µs +full handshake, P-256, OpenSSL: 406.49 µs, 2.31× the fastest +406.49 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 123.00 µs, 1.00× the fastest -123.00 µs -full handshake, Ed25519 certificate, aws-lc-rs: 166.65 µs, 1.35× the fastest -166.65 µs -full handshake, Ed25519 certificate, ring: 202.37 µs, 1.65× the fastest -202.37 µs -full handshake, Ed25519 certificate, graviola: 125.59 µs, 1.02× the fastest -125.59 µs -full handshake, Ed25519 certificate, OpenSSL: 374.89 µs, 3.05× the fastest -374.89 µs +full handshake, Ed25519 certificate, rind: 123.11 µs, 1.00× the fastest +123.11 µs +full handshake, Ed25519 certificate, aws-lc-rs: 168.12 µs, 1.37× the fastest +168.12 µs +full handshake, Ed25519 certificate, ring: 205.53 µs, 1.67× the fastest +205.53 µs +full handshake, Ed25519 certificate, graviola: 125.46 µs, 1.02× the fastest +125.46 µs +full handshake, Ed25519 certificate, OpenSSL: 373.29 µs, 3.03× the fastest +373.29 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 493.89 µs, 1.13× the fastest -493.89 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 479.50 µs, 1.09× the fastest -479.50 µs -full handshake, RSA-2048 certificate, ring: 487.61 µs, 1.11× the fastest -487.61 µs -full handshake, RSA-2048 certificate, graviola: 438.68 µs, 1.00× the fastest -438.68 µs -full handshake, RSA-2048 certificate, OpenSSL: 684.14 µs, 1.56× the fastest -684.14 µs +full handshake, RSA-2048 certificate, rind: 428.67 µs, 1.00× the fastest +428.67 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 485.87 µs, 1.13× the fastest +485.87 µs +full handshake, RSA-2048 certificate, ring: 493.81 µs, 1.15× the fastest +493.81 µs +full handshake, RSA-2048 certificate, graviola: 440.23 µs, 1.03× the fastest +440.23 µs +full handshake, RSA-2048 certificate, OpenSSL: 682.29 µs, 1.59× the fastest +682.29 µs resumed handshake, X25519 -resumed handshake, X25519, rind: 55.16 µs, 1.00× the fastest -55.16 µs -resumed handshake, X25519, aws-lc-rs: 101.03 µs, 1.83× the fastest -101.03 µs -resumed handshake, X25519, ring: 111.69 µs, 2.02× the fastest -111.69 µs -resumed handshake, X25519, graviola: 55.45 µs, 1.01× the fastest -55.45 µs -resumed handshake, X25519, OpenSSL: 229.74 µs, 4.16× the fastest -229.74 µs +resumed handshake, X25519, rind: 54.19 µs, 1.00× the fastest +54.19 µs +resumed handshake, X25519, aws-lc-rs: 102.84 µs, 1.90× the fastest +102.84 µs +resumed handshake, X25519, ring: 113.00 µs, 2.09× the fastest +113.00 µs +resumed handshake, X25519, graviola: 55.16 µs, 1.02× the fastest +55.16 µs +resumed handshake, X25519, OpenSSL: 231.44 µs, 4.27× the fastest +231.44 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 169.85 µs, 1.00× the fastest -169.85 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 234.65 µs, 1.38× the fastest -234.65 µs -1 MB transfer, AES-128-GCM, ring: 171.60 µs, 1.01× the fastest -171.60 µs -1 MB transfer, AES-128-GCM, graviola: 288.23 µs, 1.70× the fastest -288.23 µs -1 MB transfer, AES-128-GCM, OpenSSL: 255.06 µs, 1.50× the fastest -255.06 µs +1 MB transfer, AES-128-GCM, rind: 193.36 µs, 1.11× the fastest +193.36 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 241.18 µs, 1.38× the fastest +241.18 µs +1 MB transfer, AES-128-GCM, ring: 174.96 µs, 1.00× the fastest +174.96 µs +1 MB transfer, AES-128-GCM, graviola: 294.75 µs, 1.68× the fastest +294.75 µs +1 MB transfer, AES-128-GCM, OpenSSL: 255.72 µs, 1.46× the fastest +255.72 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 186.02 µs, 1.00× the fastest -186.02 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 270.36 µs, 1.45× the fastest -270.36 µs -1 MB transfer, AES-256-GCM, ring: 188.28 µs, 1.01× the fastest -188.28 µs -1 MB transfer, AES-256-GCM, graviola: 332.16 µs, 1.79× the fastest -332.16 µs -1 MB transfer, AES-256-GCM, OpenSSL: 285.87 µs, 1.54× the fastest -285.87 µs +1 MB transfer, AES-256-GCM, rind: 189.84 µs, 1.00× the fastest +189.84 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 272.23 µs, 1.43× the fastest +272.23 µs +1 MB transfer, AES-256-GCM, ring: 192.15 µs, 1.01× the fastest +192.15 µs +1 MB transfer, AES-256-GCM, graviola: 338.97 µs, 1.79× the fastest +338.97 µs +1 MB transfer, AES-256-GCM, OpenSSL: 292.12 µs, 1.54× the fastest +292.12 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 587.48 µs, 1.00× the fastest -587.48 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 586.46 µs, 1.00× the fastest -586.46 µs -1 MB transfer, ChaCha20-Poly1305, ring: 588.81 µs, 1.00× the fastest -588.81 µs -1 MB transfer, ChaCha20-Poly1305, graviola: 1.16 ms, 1.97× the fastest -1.16 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 658.14 µs, 1.12× the fastest -658.14 µs +1 MB transfer, ChaCha20-Poly1305, rind: 621.49 µs, 1.04× the fastest +621.49 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 609.72 µs, 1.02× the fastest +609.72 µs +1 MB transfer, ChaCha20-Poly1305, ring: 594.88 µs, 1.00× the fastest +594.88 µs +1 MB transfer, ChaCha20-Poly1305, graviola: 1.17 ms, 1.97× the fastest +1.17 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 661.80 µs, 1.11× the fastest +661.80 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 19 ns, 1.00× the fastest -19 ns -AES-128-GCM seal, 32 B, aws-lc-rs: 37 ns, 1.93× the fastest +AES-128-GCM seal, 32 B, rind: 18 ns, 1.00× the fastest +18 ns +AES-128-GCM seal, 32 B, aws-lc-rs: 37 ns, 2.03× the fastest 37 ns -AES-128-GCM seal, 32 B, ring: 42 ns, 2.17× the fastest +AES-128-GCM seal, 32 B, ring: 42 ns, 2.30× the fastest 42 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 73 ns, 3.76× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek: 73 ns, 3.98× the fastest 73 ns -AES-128-GCM seal, 32 B, graviola: 42 ns, 2.19× the fastest +AES-128-GCM seal, 32 B, graviola: 42 ns, 2.33× the fastest 42 ns -AES-128-GCM seal, 32 B, libcrux: 171 ns, 8.78× the fastest -171 ns -AES-128-GCM seal, 32 B, OpenSSL: 55 ns, 2.85× the fastest +AES-128-GCM seal, 32 B, libcrux: 168 ns, 9.19× the fastest +168 ns +AES-128-GCM seal, 32 B, OpenSSL: 55 ns, 3.02× the fastest 55 ns AES-128-GCM seal, 1350 B AES-128-GCM seal, 1350 B, rind: 94 ns, 1.00× the fastest 94 ns -AES-128-GCM seal, 1350 B, aws-lc-rs: 152 ns, 1.62× the fastest -152 ns -AES-128-GCM seal, 1350 B, ring: 119 ns, 1.27× the fastest -119 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 276 ns, 2.95× the fastest -276 ns -AES-128-GCM seal, 1350 B, graviola: 226 ns, 2.41× the fastest -226 ns -AES-128-GCM seal, 1350 B, libcrux: 1.98 µs, 21.10× the fastest -1.98 µs -AES-128-GCM seal, 1350 B, OpenSSL: 159 ns, 1.70× the fastest -159 ns +AES-128-GCM seal, 1350 B, aws-lc-rs: 149 ns, 1.59× the fastest +149 ns +AES-128-GCM seal, 1350 B, ring: 118 ns, 1.26× the fastest +118 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 272 ns, 2.90× the fastest +272 ns +AES-128-GCM seal, 1350 B, graviola: 227 ns, 2.42× the fastest +227 ns +AES-128-GCM seal, 1350 B, libcrux: 1.94 µs, 20.74× the fastest +1.94 µs +AES-128-GCM seal, 1350 B, OpenSSL: 163 ns, 1.74× the fastest +163 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 772 ns, 1.00× the fastest -772 ns -AES-128-GCM seal, 16 KB, aws-lc-rs: 1.33 µs, 1.72× the fastest +AES-128-GCM seal, 16 KB, rind: 781 ns, 1.00× the fastest +781 ns +AES-128-GCM seal, 16 KB, aws-lc-rs: 1.33 µs, 1.70× the fastest 1.33 µs -AES-128-GCM seal, 16 KB, ring: 795 ns, 1.03× the fastest -795 ns -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 2.45 µs, 3.18× the fastest -2.45 µs -AES-128-GCM seal, 16 KB, graviola: 2.05 µs, 2.65× the fastest -2.05 µs -AES-128-GCM seal, 16 KB, libcrux: 22.01 µs, 28.52× the fastest -22.01 µs -AES-128-GCM seal, 16 KB, OpenSSL: 1.34 µs, 1.74× the fastest +AES-128-GCM seal, 16 KB, ring: 799 ns, 1.02× the fastest +799 ns +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 2.49 µs, 3.19× the fastest +2.49 µs +AES-128-GCM seal, 16 KB, graviola: 2.02 µs, 2.59× the fastest +2.02 µs +AES-128-GCM seal, 16 KB, libcrux: 22.02 µs, 28.20× the fastest +22.02 µs +AES-128-GCM seal, 16 KB, OpenSSL: 1.34 µs, 1.72× the fastest 1.34 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 23 ns, 1.00× the fastest -23 ns -AES-128-GCM open, 32 B, aws-lc-rs: 37 ns, 1.57× the fastest +AES-128-GCM open, 32 B, rind: 28 ns, 1.00× the fastest +28 ns +AES-128-GCM open, 32 B, aws-lc-rs: 37 ns, 1.31× the fastest 37 ns -AES-128-GCM open, 32 B, ring: 42 ns, 1.79× the fastest +AES-128-GCM open, 32 B, ring: 42 ns, 1.49× the fastest 42 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 78 ns, 3.32× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek: 78 ns, 2.73× the fastest 78 ns -AES-128-GCM open, 32 B, graviola: 35 ns, 1.52× the fastest -35 ns -AES-128-GCM open, 32 B, libcrux: 161 ns, 6.89× the fastest -161 ns -AES-128-GCM open, 32 B, OpenSSL: 58 ns, 2.50× the fastest +AES-128-GCM open, 32 B, graviola: 36 ns, 1.26× the fastest +36 ns +AES-128-GCM open, 32 B, libcrux: 159 ns, 5.59× the fastest +159 ns +AES-128-GCM open, 32 B, OpenSSL: 58 ns, 2.02× the fastest 58 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 101 ns, 1.00× the fastest -101 ns -AES-128-GCM open, 1350 B, aws-lc-rs: 149 ns, 1.47× the fastest +AES-128-GCM open, 1350 B, rind: 99 ns, 1.00× the fastest +99 ns +AES-128-GCM open, 1350 B, aws-lc-rs: 149 ns, 1.51× the fastest 149 ns -AES-128-GCM open, 1350 B, ring: 113 ns, 1.12× the fastest -113 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 283 ns, 2.81× the fastest -283 ns -AES-128-GCM open, 1350 B, graviola: 176 ns, 1.75× the fastest +AES-128-GCM open, 1350 B, ring: 114 ns, 1.16× the fastest +114 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 282 ns, 2.86× the fastest +282 ns +AES-128-GCM open, 1350 B, graviola: 176 ns, 1.79× the fastest 176 ns -AES-128-GCM open, 1350 B, libcrux: 1.99 µs, 19.73× the fastest -1.99 µs -AES-128-GCM open, 1350 B, OpenSSL: 157 ns, 1.56× the fastest -157 ns +AES-128-GCM open, 1350 B, libcrux: 2.00 µs, 20.29× the fastest +2.00 µs +AES-128-GCM open, 1350 B, OpenSSL: 159 ns, 1.62× the fastest +159 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 812 ns, 1.00× the fastest -812 ns -AES-128-GCM open, 16 KB, aws-lc-rs: 1.26 µs, 1.55× the fastest -1.26 µs -AES-128-GCM open, 16 KB, ring: 823 ns, 1.01× the fastest -823 ns -AES-128-GCM open, 16 KB, RustCrypto + dalek: 2.51 µs, 3.09× the fastest -2.51 µs -AES-128-GCM open, 16 KB, graviola: 1.40 µs, 1.72× the fastest -1.40 µs -AES-128-GCM open, 16 KB, libcrux: 22.00 µs, 27.09× the fastest -22.00 µs -AES-128-GCM open, 16 KB, OpenSSL: 1.29 µs, 1.58× the fastest -1.29 µs +AES-128-GCM open, 16 KB, rind: 816 ns, 1.00× the fastest +816 ns +AES-128-GCM open, 16 KB, aws-lc-rs: 1.28 µs, 1.56× the fastest +1.28 µs +AES-128-GCM open, 16 KB, ring: 829 ns, 1.02× the fastest +829 ns +AES-128-GCM open, 16 KB, RustCrypto + dalek: 2.54 µs, 3.12× the fastest +2.54 µs +AES-128-GCM open, 16 KB, graviola: 1.42 µs, 1.73× the fastest +1.42 µs +AES-128-GCM open, 16 KB, libcrux: 22.31 µs, 27.33× the fastest +22.31 µs +AES-128-GCM open, 16 KB, OpenSSL: 1.30 µs, 1.59× the fastest +1.30 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 21 ns, 1.00× the fastest -21 ns -AES-256-GCM seal, 32 B, aws-lc-rs: 39 ns, 1.87× the fastest -39 ns -AES-256-GCM seal, 32 B, ring: 43 ns, 2.07× the fastest +AES-256-GCM seal, 32 B, rind: 20 ns, 1.00× the fastest +20 ns +AES-256-GCM seal, 32 B, aws-lc-rs: 40 ns, 1.99× the fastest +40 ns +AES-256-GCM seal, 32 B, ring: 43 ns, 2.16× the fastest 43 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 78 ns, 3.73× the fastest -78 ns -AES-256-GCM seal, 32 B, graviola: 45 ns, 2.14× the fastest -45 ns -AES-256-GCM seal, 32 B, libcrux: 218 ns, 10.42× the fastest -218 ns -AES-256-GCM seal, 32 B, OpenSSL: 58 ns, 2.78× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek: 77 ns, 3.90× the fastest +77 ns +AES-256-GCM seal, 32 B, graviola: 44 ns, 2.22× the fastest +44 ns +AES-256-GCM seal, 32 B, libcrux: 216 ns, 10.88× the fastest +216 ns +AES-256-GCM seal, 32 B, OpenSSL: 58 ns, 2.93× the fastest 58 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 109 ns, 1.00× the fastest -109 ns -AES-256-GCM seal, 1350 B, aws-lc-rs: 176 ns, 1.62× the fastest -176 ns -AES-256-GCM seal, 1350 B, ring: 135 ns, 1.25× the fastest -135 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 312 ns, 2.88× the fastest -312 ns -AES-256-GCM seal, 1350 B, graviola: 261 ns, 2.41× the fastest -261 ns -AES-256-GCM seal, 1350 B, libcrux: 2.86 µs, 26.33× the fastest -2.86 µs -AES-256-GCM seal, 1350 B, OpenSSL: 184 ns, 1.69× the fastest -184 ns +AES-256-GCM seal, 1350 B, rind: 106 ns, 1.00× the fastest +106 ns +AES-256-GCM seal, 1350 B, aws-lc-rs: 173 ns, 1.63× the fastest +173 ns +AES-256-GCM seal, 1350 B, ring: 133 ns, 1.25× the fastest +133 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 313 ns, 2.94× the fastest +313 ns +AES-256-GCM seal, 1350 B, graviola: 258 ns, 2.42× the fastest +258 ns +AES-256-GCM seal, 1350 B, libcrux: 2.83 µs, 26.55× the fastest +2.83 µs +AES-256-GCM seal, 1350 B, OpenSSL: 186 ns, 1.75× the fastest +186 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 924 ns, 1.00× the fastest -924 ns -AES-256-GCM seal, 16 KB, aws-lc-rs: 1.58 µs, 1.71× the fastest -1.58 µs -AES-256-GCM seal, 16 KB, ring: 953 ns, 1.03× the fastest -953 ns -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 2.91 µs, 3.15× the fastest +AES-256-GCM seal, 16 KB, rind: 925 ns, 1.00× the fastest +925 ns +AES-256-GCM seal, 16 KB, aws-lc-rs: 1.56 µs, 1.69× the fastest +1.56 µs +AES-256-GCM seal, 16 KB, ring: 946 ns, 1.02× the fastest +946 ns +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 2.91 µs, 3.14× the fastest 2.91 µs -AES-256-GCM seal, 16 KB, graviola: 2.42 µs, 2.62× the fastest -2.42 µs -AES-256-GCM seal, 16 KB, libcrux: 32.27 µs, 34.93× the fastest -32.27 µs -AES-256-GCM seal, 16 KB, OpenSSL: 1.57 µs, 1.70× the fastest -1.57 µs +AES-256-GCM seal, 16 KB, graviola: 2.46 µs, 2.66× the fastest +2.46 µs +AES-256-GCM seal, 16 KB, libcrux: 32.69 µs, 35.34× the fastest +32.69 µs +AES-256-GCM seal, 16 KB, OpenSSL: 1.59 µs, 1.72× the fastest +1.59 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 24 ns, 1.00× the fastest -24 ns -AES-256-GCM open, 32 B, aws-lc-rs: 37 ns, 1.53× the fastest -37 ns -AES-256-GCM open, 32 B, ring: 44 ns, 1.81× the fastest -44 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 81 ns, 3.34× the fastest -81 ns -AES-256-GCM open, 32 B, graviola: 38 ns, 1.54× the fastest +AES-256-GCM open, 32 B, rind: 28 ns, 1.00× the fastest +28 ns +AES-256-GCM open, 32 B, aws-lc-rs: 38 ns, 1.37× the fastest +38 ns +AES-256-GCM open, 32 B, ring: 45 ns, 1.61× the fastest +45 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 82 ns, 2.98× the fastest +82 ns +AES-256-GCM open, 32 B, graviola: 38 ns, 1.37× the fastest 38 ns -AES-256-GCM open, 32 B, libcrux: 218 ns, 8.95× the fastest +AES-256-GCM open, 32 B, libcrux: 218 ns, 7.86× the fastest 218 ns -AES-256-GCM open, 32 B, OpenSSL: 61 ns, 2.52× the fastest -61 ns +AES-256-GCM open, 32 B, OpenSSL: 62 ns, 2.22× the fastest +62 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 110 ns, 1.00× the fastest -110 ns -AES-256-GCM open, 1350 B, aws-lc-rs: 174 ns, 1.59× the fastest -174 ns -AES-256-GCM open, 1350 B, ring: 123 ns, 1.12× the fastest -123 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 323 ns, 2.95× the fastest -323 ns -AES-256-GCM open, 1350 B, graviola: 203 ns, 1.86× the fastest +AES-256-GCM open, 1350 B, rind: 107 ns, 1.00× the fastest +107 ns +AES-256-GCM open, 1350 B, aws-lc-rs: 173 ns, 1.62× the fastest +173 ns +AES-256-GCM open, 1350 B, ring: 124 ns, 1.16× the fastest +124 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 322 ns, 3.01× the fastest +322 ns +AES-256-GCM open, 1350 B, graviola: 203 ns, 1.90× the fastest 203 ns -AES-256-GCM open, 1350 B, libcrux: 2.86 µs, 26.07× the fastest -2.86 µs -AES-256-GCM open, 1350 B, OpenSSL: 188 ns, 1.72× the fastest -188 ns +AES-256-GCM open, 1350 B, libcrux: 2.85 µs, 26.66× the fastest +2.85 µs +AES-256-GCM open, 1350 B, OpenSSL: 189 ns, 1.77× the fastest +189 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 926 ns, 1.00× the fastest -926 ns -AES-256-GCM open, 16 KB, aws-lc-rs: 1.58 µs, 1.71× the fastest -1.58 µs -AES-256-GCM open, 16 KB, ring: 939 ns, 1.01× the fastest -939 ns -AES-256-GCM open, 16 KB, RustCrypto + dalek: 2.97 µs, 3.20× the fastest -2.97 µs -AES-256-GCM open, 16 KB, graviola: 1.75 µs, 1.89× the fastest -1.75 µs -AES-256-GCM open, 16 KB, libcrux: 32.50 µs, 35.10× the fastest -32.50 µs -AES-256-GCM open, 16 KB, OpenSSL: 1.60 µs, 1.73× the fastest +AES-256-GCM open, 16 KB, rind: 917 ns, 1.00× the fastest +917 ns +AES-256-GCM open, 16 KB, aws-lc-rs: 1.57 µs, 1.71× the fastest +1.57 µs +AES-256-GCM open, 16 KB, ring: 921 ns, 1.00× the fastest +921 ns +AES-256-GCM open, 16 KB, RustCrypto + dalek: 2.96 µs, 3.23× the fastest +2.96 µs +AES-256-GCM open, 16 KB, graviola: 1.74 µs, 1.90× the fastest +1.74 µs +AES-256-GCM open, 16 KB, libcrux: 32.51 µs, 35.44× the fastest +32.51 µs +AES-256-GCM open, 16 KB, OpenSSL: 1.60 µs, 1.75× the fastest 1.60 µs ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind: 99 ns, 1.00× the fastest -99 ns -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 105 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 32 B, rind: 100 ns, 1.00× the fastest +100 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 105 ns, 1.05× the fastest 105 ns ChaCha20-Poly1305 seal, 32 B, ring: 101 ns, 1.01× the fastest 101 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.06 µs, 10.71× the fastest -1.06 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 180 ns, 1.81× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.07 µs, 10.75× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 32 B, graviola: 180 ns, 1.80× the fastest 180 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 157 ns, 1.58× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +ChaCha20-Poly1305 seal, 32 B, libcrux: 157 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step 157 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 177 ns, 1.78× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 177 ns, 1.77× the fastest 177 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 447 ns, 1.00× the fastest -447 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 453 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind: 441 ns, 1.00× the fastest +441 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 453 ns, 1.03× the fastest 453 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 446 ns, 1.00× the fastest -446 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.67 µs, 3.75× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring: 447 ns, 1.01× the fastest +447 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.67 µs, 3.79× the fastest 1.67 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 911 ns, 2.04× the fastest -911 ns -ChaCha20-Poly1305 seal, 1350 B, libcrux: 1.78 µs, 3.98× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -1.78 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 589 ns, 1.32× the fastest -589 ns +ChaCha20-Poly1305 seal, 1350 B, graviola: 905 ns, 2.05× the fastest +905 ns +ChaCha20-Poly1305 seal, 1350 B, libcrux: 1.78 µs, 4.03× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +1.78 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 590 ns, 1.34× the fastest +590 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 4.13 µs, 1.00× the fastest -4.13 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.13 µs, 1.00× the fastest -4.13 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 4.12 µs, 1.00× the fastest -4.12 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.15 µs, 1.98× the fastest -8.15 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 8.36 µs, 2.03× the fastest -8.36 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 19.36 µs, 4.70× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -19.36 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, rind: 4.17 µs, 1.01× the fastest +4.17 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.15 µs, 1.00× the fastest +4.15 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 4.14 µs, 1.00× the fastest +4.14 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.14 µs, 1.97× the fastest +8.14 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 8.30 µs, 2.01× the fastest +8.30 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 19.63 µs, 4.74× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +19.63 µs ✓ ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 4.41 µs, 1.07× the fastest 4.41 µs XChaCha20-Poly1305 seal, 32 B XChaCha20-Poly1305 seal, 32 B, rind: 188 ns, 1.00× the fastest 188 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 196 ns, 1.04× the fastest -196 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.15 µs, 6.09× the fastest -1.15 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 259 ns, 1.37× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 199 ns, 1.06× the fastest +199 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 889 ns, 4.72× the fastest +889 ns +XChaCha20-Poly1305 seal, 32 B, graviola: 259 ns, 1.38× the fastest 259 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 243 ns, 1.29× the fastest -243 ns +XChaCha20-Poly1305 seal, 32 B, libcrux: 248 ns, 1.32× the fastest +248 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 528 ns, 1.00× the fastest -528 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 541 ns, 1.03× the fastest -541 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.76 µs, 3.33× the fastest -1.76 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 987 ns, 1.87× the fastest -987 ns -XChaCha20-Poly1305 seal, 1350 B, libcrux: 1.83 µs, 3.47× the fastest -1.83 µs +XChaCha20-Poly1305 seal, 1350 B, rind: 838 ns, 1.22× the fastest +838 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 687 ns, 1.00× the fastest +687 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.74 µs, 2.54× the fastest +1.74 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.35 µs, 1.97× the fastest +1.35 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.56 µs, 3.73× the fastest +2.56 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 4.20 µs, 1.00× the fastest -4.20 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.29 µs, 1.02× the fastest -4.29 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.25 µs, 1.97× the fastest -8.25 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 8.30 µs, 1.98× the fastest -8.30 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 19.58 µs, 4.67× the fastest -19.58 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 6.26 µs, 1.00× the fastest +6.26 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.27 µs, 1.00× the fastest +6.27 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.28 µs, 1.96× the fastest +12.28 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 12.79 µs, 2.04× the fastest +12.79 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 27.40 µs, 4.37× the fastest +27.40 µs QUIC header protection AES-128 header protection AES-128 header protection, rind: 2 ns, 1.00× the fastest 2 ns -AES-128 header protection, aws-lc-rs: 3 ns, 1.78× the fastest +AES-128 header protection, aws-lc-rs: 3 ns, 1.59× the fastest 3 ns -AES-128 header protection, ring: 3 ns, 1.85× the fastest +AES-128 header protection, ring: 3 ns, 1.68× the fastest 3 ns AES-256 header protection AES-256 header protection, rind: 2 ns, 1.00× the fastest 2 ns -AES-256 header protection, aws-lc-rs: 4 ns, 1.64× the fastest -4 ns -AES-256 header protection, ring: 5 ns, 2.17× the fastest +AES-256 header protection, aws-lc-rs: 5 ns, 2.06× the fastest +5 ns +AES-256 header protection, ring: 5 ns, 2.16× the fastest 5 ns ChaCha20 header protection ChaCha20 header protection, rind: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included 54 ns ✓ -ChaCha20 header protection, aws-lc-rs: 69 ns, 1.27× the fastest +ChaCha20 header protection, aws-lc-rs: 69 ns, 1.28× the fastest 69 ns ChaCha20 header protection, ring: 61 ns, 1.14× the fastest 61 ns Key agreement X25519 -X25519, rind: 17.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -17.94 µs ✓ -X25519, aws-lc-rs: 19.14 µs, 1.07× the fastest -19.14 µs -X25519, ring: 35.19 µs, 1.96× the fastest -35.19 µs -X25519, RustCrypto + dalek: 36.03 µs, 2.01× the fastest -36.03 µs -X25519, graviola: 18.25 µs, 1.02× the fastest -18.25 µs -X25519, libcrux: 42.71 µs, 2.38× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -42.71 µs ✓ -X25519, OpenSSL: 33.93 µs, 1.89× the fastest -33.93 µs +X25519, rind: 19.68 µs, 1.06× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +19.68 µs ✓ +X25519, aws-lc-rs: 19.54 µs, 1.06× the fastest +19.54 µs +X25519, ring: 35.63 µs, 1.93× the fastest +35.63 µs +X25519, RustCrypto + dalek: 36.52 µs, 1.97× the fastest +36.52 µs +X25519, graviola: 18.50 µs, 1.00× the fastest +18.50 µs +X25519, libcrux: 43.11 µs, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +43.11 µs ✓ +X25519, OpenSSL: 34.02 µs, 1.84× the fastest +34.02 µs P-256 ECDH -P-256 ECDH, rind: 29.99 µs, 1.00× the fastest -29.99 µs -P-256 ECDH, aws-lc-rs: 32.02 µs, 1.07× the fastest -32.02 µs -P-256 ECDH, ring: 34.21 µs, 1.14× the fastest -34.21 µs -P-256 ECDH, RustCrypto + dalek: 120.66 µs, 4.02× the fastest -120.66 µs -P-256 ECDH, graviola: 32.86 µs, 1.10× the fastest -32.86 µs -P-256 ECDH, libcrux: 168.88 µs, 5.63× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -168.88 µs ✓ -P-256 ECDH, OpenSSL: 52.96 µs, 1.77× the fastest -52.96 µs +P-256 ECDH, rind: 29.85 µs, 1.00× the fastest +29.85 µs +P-256 ECDH, aws-lc-rs: 32.27 µs, 1.08× the fastest +32.27 µs +P-256 ECDH, ring: 34.14 µs, 1.14× the fastest +34.14 µs +P-256 ECDH, RustCrypto + dalek: 123.01 µs, 4.12× the fastest +123.01 µs +P-256 ECDH, graviola: 33.46 µs, 1.12× the fastest +33.46 µs +P-256 ECDH, libcrux: 169.87 µs, 5.69× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +169.87 µs ✓ +P-256 ECDH, OpenSSL: 52.91 µs, 1.77× the fastest +52.91 µs Signatures Ed25519 sign -Ed25519 sign, rind: 4.29 µs, 1.00× the fastest -4.29 µs -Ed25519 sign, aws-lc-rs: 4.44 µs, 1.04× the fastest -4.44 µs -Ed25519 sign, ring: 13.30 µs, 3.10× the fastest -13.30 µs -Ed25519 sign, RustCrypto + dalek: 9.56 µs, 2.23× the fastest -9.56 µs -Ed25519 sign, graviola: 4.37 µs, 1.02× the fastest -4.37 µs -Ed25519 sign, libcrux: 29.05 µs, 6.78× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -29.05 µs ✓ -Ed25519 sign, OpenSSL: 13.47 µs, 3.14× the fastest -13.47 µs +Ed25519 sign, rind: 4.15 µs, 1.00× the fastest +4.15 µs +Ed25519 sign, aws-lc-rs: 4.56 µs, 1.10× the fastest +4.56 µs +Ed25519 sign, ring: 13.14 µs, 3.16× the fastest +13.14 µs +Ed25519 sign, RustCrypto + dalek: 9.61 µs, 2.31× the fastest +9.61 µs +Ed25519 sign, graviola: 4.39 µs, 1.06× the fastest +4.39 µs +Ed25519 sign, libcrux: 28.97 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +28.97 µs ✓ +Ed25519 sign, OpenSSL: 13.69 µs, 3.30× the fastest +13.69 µs Ed25519 verify -Ed25519 verify, rind: 21.87 µs, 1.01× the fastest -21.87 µs -Ed25519 verify, aws-lc-rs: 21.82 µs, 1.01× the fastest -21.82 µs -Ed25519 verify, ring: 26.51 µs, 1.23× the fastest -26.51 µs -Ed25519 verify, RustCrypto + dalek: 22.15 µs, 1.03× the fastest -22.15 µs -Ed25519 verify, graviola: 21.56 µs, 1.00× the fastest -21.56 µs -Ed25519 verify, libcrux: 41.91 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -41.91 µs ✓ -Ed25519 verify, OpenSSL: 45.62 µs, 2.12× the fastest -45.62 µs +Ed25519 verify, rind: 21.75 µs, 1.01× the fastest +21.75 µs +Ed25519 verify, aws-lc-rs: 21.56 µs, 1.00× the fastest +21.56 µs +Ed25519 verify, ring: 26.22 µs, 1.22× the fastest +26.22 µs +Ed25519 verify, RustCrypto + dalek: 21.88 µs, 1.02× the fastest +21.88 µs +Ed25519 verify, graviola: 21.61 µs, 1.00× the fastest +21.61 µs +Ed25519 verify, libcrux: 42.16 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +42.16 µs ✓ +Ed25519 verify, OpenSSL: 45.59 µs, 2.11× the fastest +45.59 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 7.08 µs, 1.00× the fastest -7.08 µs -P-256 ECDSA sign, aws-lc-rs: 12.42 µs, 1.75× the fastest -12.42 µs -P-256 ECDSA sign, ring: 12.38 µs, 1.75× the fastest -12.38 µs -P-256 ECDSA sign, RustCrypto + dalek: 31.49 µs, 4.45× the fastest -31.49 µs -P-256 ECDSA sign, graviola: 8.81 µs, 1.24× the fastest -8.81 µs -P-256 ECDSA sign, libcrux: 60.93 µs, 8.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -60.93 µs ✓ -P-256 ECDSA sign, OpenSSL: 14.37 µs, 2.03× the fastest -14.37 µs +P-256 ECDSA sign, rind: 6.84 µs, 1.00× the fastest +6.84 µs +P-256 ECDSA sign, aws-lc-rs: 12.33 µs, 1.80× the fastest +12.33 µs +P-256 ECDSA sign, ring: 12.24 µs, 1.79× the fastest +12.24 µs +P-256 ECDSA sign, RustCrypto + dalek: 31.65 µs, 4.63× the fastest +31.65 µs +P-256 ECDSA sign, graviola: 9.26 µs, 1.35× the fastest +9.26 µs +P-256 ECDSA sign, libcrux: 61.34 µs, 8.97× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +61.34 µs ✓ +P-256 ECDSA sign, OpenSSL: 14.33 µs, 2.09× the fastest +14.33 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 30.78 µs, 1.01× the fastest -30.78 µs -P-256 ECDSA verify, aws-lc-rs: 30.34 µs, 1.00× the fastest -30.34 µs -P-256 ECDSA verify, ring: 33.20 µs, 1.09× the fastest -33.20 µs -P-256 ECDSA verify, RustCrypto + dalek: 102.68 µs, 3.38× the fastest -102.68 µs -P-256 ECDSA verify, graviola: 32.93 µs, 1.09× the fastest -32.93 µs -P-256 ECDSA verify, libcrux: 146.39 µs, 4.83× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -146.39 µs ✓ -P-256 ECDSA verify, OpenSSL: 46.07 µs, 1.52× the fastest -46.07 µs +P-256 ECDSA verify, rind: 30.95 µs, 1.03× the fastest +30.95 µs +P-256 ECDSA verify, aws-lc-rs: 30.08 µs, 1.00× the fastest +30.08 µs +P-256 ECDSA verify, ring: 33.74 µs, 1.12× the fastest +33.74 µs +P-256 ECDSA verify, RustCrypto + dalek: 104.58 µs, 3.48× the fastest +104.58 µs +P-256 ECDSA verify, graviola: 32.89 µs, 1.09× the fastest +32.89 µs +P-256 ECDSA verify, libcrux: 147.11 µs, 4.89× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +147.11 µs ✓ +P-256 ECDSA verify, OpenSSL: 46.41 µs, 1.54× the fastest +46.41 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 56 ns, 1.44× the fastest -56 ns -SHA-256, 64 B, aws-lc-rs: 57 ns, 1.46× the fastest +SHA-256, 64 B, rind: 28 ns, 1.00× the fastest +28 ns +SHA-256, 64 B, aws-lc-rs: 57 ns, 2.02× the fastest 57 ns -SHA-256, 64 B, ring: 57 ns, 1.46× the fastest -57 ns -SHA-256, 64 B, RustCrypto + dalek: 39 ns, 1.00× the fastest -39 ns -SHA-256, 64 B, graviola: 40 ns, 1.03× the fastest -40 ns -SHA-256, 64 B, libcrux: 212 ns, 5.41× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -212 ns ✓ -SHA-256, 64 B, OpenSSL: 157 ns, 4.01× the fastest -157 ns +SHA-256, 64 B, ring: 58 ns, 2.04× the fastest +58 ns +SHA-256, 64 B, RustCrypto + dalek: 40 ns, 1.41× the fastest +40 ns +SHA-256, 64 B, graviola: 41 ns, 1.45× the fastest +41 ns +SHA-256, 64 B, libcrux: 211 ns, 7.50× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +211 ns ✓ +SHA-256, 64 B, OpenSSL: 161 ns, 5.72× the fastest +161 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 298 ns, 1.02× the fastest -298 ns -SHA-256, 1350 B, aws-lc-rs: 311 ns, 1.07× the fastest -311 ns -SHA-256, 1350 B, ring: 299 ns, 1.03× the fastest -299 ns -SHA-256, 1350 B, RustCrypto + dalek: 292 ns, 1.00× the fastest -292 ns -SHA-256, 1350 B, graviola: 298 ns, 1.02× the fastest -298 ns -SHA-256, 1350 B, libcrux: 2.30 µs, 7.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -2.30 µs ✓ -SHA-256, 1350 B, OpenSSL: 412 ns, 1.41× the fastest -412 ns +SHA-256, 1350 B, rind: 279 ns, 1.00× the fastest +279 ns +SHA-256, 1350 B, aws-lc-rs: 312 ns, 1.12× the fastest +312 ns +SHA-256, 1350 B, ring: 304 ns, 1.09× the fastest +304 ns +SHA-256, 1350 B, RustCrypto + dalek: 296 ns, 1.06× the fastest +296 ns +SHA-256, 1350 B, graviola: 297 ns, 1.06× the fastest +297 ns +SHA-256, 1350 B, libcrux: 2.31 µs, 8.25× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +2.31 µs ✓ +SHA-256, 1350 B, OpenSSL: 415 ns, 1.48× the fastest +415 ns SHA-256, 16 KB -SHA-256, 16 KB, rind: 3.21 µs, 1.00× the fastest -3.21 µs -SHA-256, 16 KB, aws-lc-rs: 3.23 µs, 1.00× the fastest -3.23 µs -SHA-256, 16 KB, ring: 3.22 µs, 1.00× the fastest -3.22 µs -SHA-256, 16 KB, RustCrypto + dalek: 3.21 µs, 1.00× the fastest -3.21 µs -SHA-256, 16 KB, graviola: 3.22 µs, 1.00× the fastest -3.22 µs -SHA-256, 16 KB, libcrux: 26.37 µs, 8.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -26.37 µs ✓ -SHA-256, 16 KB, OpenSSL: 3.38 µs, 1.05× the fastest -3.38 µs +SHA-256, 16 KB, rind: 3.24 µs, 1.00× the fastest +3.24 µs +SHA-256, 16 KB, aws-lc-rs: 3.28 µs, 1.01× the fastest +3.28 µs +SHA-256, 16 KB, ring: 3.28 µs, 1.01× the fastest +3.28 µs +SHA-256, 16 KB, RustCrypto + dalek: 3.26 µs, 1.01× the fastest +3.26 µs +SHA-256, 16 KB, graviola: 3.27 µs, 1.01× the fastest +3.27 µs +SHA-256, 16 KB, libcrux: 26.81 µs, 8.27× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +26.81 µs ✓ +SHA-256, 16 KB, OpenSSL: 3.39 µs, 1.05× the fastest +3.39 µs SHA-512, 64 B -SHA-512, 64 B, rind: 132 ns, 1.05× the fastest -132 ns -SHA-512, 64 B, aws-lc-rs: 133 ns, 1.06× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -133 ns ✓ -SHA-512, 64 B, ring: 139 ns, 1.11× the fastest -139 ns -SHA-512, 64 B, RustCrypto + dalek: 125 ns, 1.00× the fastest -125 ns -SHA-512, 64 B, graviola: 146 ns, 1.17× the fastest -146 ns -SHA-512, 64 B, libcrux: 163 ns, 1.30× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -163 ns ✓ -SHA-512, 64 B, OpenSSL: 227 ns, 1.81× the fastest -227 ns +SHA-512, 64 B, rind: 60 ns, 1.00× the fastest +60 ns +SHA-512, 64 B, aws-lc-rs: 136 ns, 2.27× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +136 ns ✓ +SHA-512, 64 B, ring: 142 ns, 2.36× the fastest +142 ns +SHA-512, 64 B, RustCrypto + dalek: 120 ns, 1.99× the fastest +120 ns +SHA-512, 64 B, graviola: 150 ns, 2.49× the fastest +150 ns +SHA-512, 64 B, libcrux: 167 ns, 2.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +167 ns ✓ +SHA-512, 64 B, OpenSSL: 233 ns, 3.87× the fastest +233 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 1.23 µs, 1.05× the fastest -1.23 µs -SHA-512, 1350 B, aws-lc-rs: 1.26 µs, 1.08× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -1.26 µs ✓ -SHA-512, 1350 B, ring: 1.26 µs, 1.07× the fastest +SHA-512, 1350 B, rind: 470 ns, 1.00× the fastest +470 ns +SHA-512, 1350 B, aws-lc-rs: 1.27 µs, 2.69× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +1.27 µs ✓ +SHA-512, 1350 B, ring: 1.26 µs, 2.69× the fastest 1.26 µs -SHA-512, 1350 B, RustCrypto + dalek: 1.17 µs, 1.00× the fastest -1.17 µs -SHA-512, 1350 B, graviola: 1.50 µs, 1.28× the fastest -1.50 µs -SHA-512, 1350 B, libcrux: 1.72 µs, 1.47× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -1.72 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.19 µs, 1.02× the fastest -1.19 µs +SHA-512, 1350 B, RustCrypto + dalek: 1.18 µs, 2.50× the fastest +1.18 µs +SHA-512, 1350 B, graviola: 1.51 µs, 3.21× the fastest +1.51 µs +SHA-512, 1350 B, libcrux: 1.69 µs, 3.59× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +1.69 µs ✓ +SHA-512, 1350 B, OpenSSL: 1.20 µs, 2.55× the fastest +1.20 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 14.31 µs, 1.16× the fastest -14.31 µs -SHA-512, 16 KB, aws-lc-rs: 14.09 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -14.09 µs ✓ -SHA-512, 16 KB, ring: 14.09 µs, 1.15× the fastest -14.09 µs -SHA-512, 16 KB, RustCrypto + dalek: 13.36 µs, 1.09× the fastest -13.36 µs -SHA-512, 16 KB, graviola: 17.62 µs, 1.43× the fastest -17.62 µs -SHA-512, 16 KB, libcrux: 19.80 µs, 1.61× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -19.80 µs ✓ -SHA-512, 16 KB, OpenSSL: 12.30 µs, 1.00× the fastest -12.30 µs +SHA-512, 16 KB, rind: 2.68 µs, 1.00× the fastest +2.68 µs +SHA-512, 16 KB, aws-lc-rs: 14.32 µs, 5.34× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +14.32 µs ✓ +SHA-512, 16 KB, ring: 14.36 µs, 5.35× the fastest +14.36 µs +SHA-512, 16 KB, RustCrypto + dalek: 13.55 µs, 5.05× the fastest +13.55 µs +SHA-512, 16 KB, graviola: 17.96 µs, 6.70× the fastest +17.96 µs +SHA-512, 16 KB, libcrux: 20.01 µs, 7.46× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +20.01 µs ✓ +SHA-512, 16 KB, OpenSSL: 12.51 µs, 4.66× the fastest +12.51 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 87 ns, 1.00× the fastest -87 ns -HMAC-SHA256, 64 B, aws-lc-rs: 177 ns, 2.03× the fastest -177 ns -HMAC-SHA256, 64 B, ring: 143 ns, 1.64× the fastest -143 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 103 ns, 1.18× the fastest -103 ns -HMAC-SHA256, 64 B, graviola: 109 ns, 1.26× the fastest -109 ns -HMAC-SHA256, 64 B, libcrux: 547 ns, 6.27× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -547 ns ✓ -HMAC-SHA256, 64 B, OpenSSL: 1.54 µs, 17.65× the fastest -1.54 µs +HMAC-SHA256, 64 B, rind: 75 ns, 1.00× the fastest +75 ns +HMAC-SHA256, 64 B, aws-lc-rs: 180 ns, 2.38× the fastest +180 ns +HMAC-SHA256, 64 B, ring: 145 ns, 1.93× the fastest +145 ns +HMAC-SHA256, 64 B, RustCrypto + dalek: 104 ns, 1.39× the fastest +104 ns +HMAC-SHA256, 64 B, graviola: 115 ns, 1.52× the fastest +115 ns +HMAC-SHA256, 64 B, libcrux: 536 ns, 7.12× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +536 ns ✓ +HMAC-SHA256, 64 B, OpenSSL: 1.56 µs, 20.76× the fastest +1.56 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 340 ns, 1.00× the fastest -340 ns -HMAC-SHA256, 1350 B, aws-lc-rs: 433 ns, 1.27× the fastest -433 ns -HMAC-SHA256, 1350 B, ring: 396 ns, 1.16× the fastest -396 ns -HMAC-SHA256, 1350 B, RustCrypto + dalek: 355 ns, 1.04× the fastest -355 ns -HMAC-SHA256, 1350 B, graviola: 364 ns, 1.07× the fastest -364 ns -HMAC-SHA256, 1350 B, libcrux: 2.78 µs, 8.18× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -2.78 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 1.80 µs, 5.29× the fastest -1.80 µs +HMAC-SHA256, 1350 B, rind: 327 ns, 1.00× the fastest +327 ns +HMAC-SHA256, 1350 B, aws-lc-rs: 434 ns, 1.33× the fastest +434 ns +HMAC-SHA256, 1350 B, ring: 399 ns, 1.22× the fastest +399 ns +HMAC-SHA256, 1350 B, RustCrypto + dalek: 358 ns, 1.09× the fastest +358 ns +HMAC-SHA256, 1350 B, graviola: 363 ns, 1.11× the fastest +363 ns +HMAC-SHA256, 1350 B, libcrux: 2.66 µs, 8.15× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +2.66 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 1.83 µs, 5.60× the fastest +1.83 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 192 ns, 1.00× the fastest -192 ns -HKDF-SHA256 extract and expand, aws-lc-rs: 290 ns, 1.51× the fastest -290 ns -HKDF-SHA256 extract and expand, ring: 300 ns, 1.56× the fastest -300 ns -HKDF-SHA256 extract and expand, RustCrypto + dalek: 221 ns, 1.15× the fastest -221 ns -HKDF-SHA256 extract and expand, libcrux: 971 ns, 5.05× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -971 ns ✓ -HKDF-SHA256 extract and expand, OpenSSL: 1.73 µs, 8.99× the fastest -1.73 µs +HKDF-SHA256 extract and expand, rind: 152 ns, 1.00× the fastest +152 ns +HKDF-SHA256 extract and expand, aws-lc-rs: 288 ns, 1.90× the fastest +288 ns +HKDF-SHA256 extract and expand, ring: 305 ns, 2.01× the fastest +305 ns +HKDF-SHA256 extract and expand, RustCrypto + dalek: 223 ns, 1.47× the fastest +223 ns +HKDF-SHA256 extract and expand, libcrux: 965 ns, 6.36× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +965 ns ✓ +HKDF-SHA256 extract and expand, OpenSSL: 1.76 µs, 11.57× the fastest +1.76 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 81 ns, 1.00× the fastest -81 ns -HKDF-SHA256 expand, aws-lc-rs: 126 ns, 1.55× the fastest +HKDF-SHA256 expand, rind: 47 ns, 1.00× the fastest +47 ns +HKDF-SHA256 expand, aws-lc-rs: 126 ns, 2.70× the fastest 126 ns -HKDF-SHA256 expand, ring: 120 ns, 1.48× the fastest -120 ns -HKDF-SHA256 expand, RustCrypto + dalek: 84 ns, 1.03× the fastest -84 ns -HKDF-SHA256 expand, libcrux: 456 ns, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -456 ns ✓ -HKDF-SHA256 expand, OpenSSL: 1.24 µs, 15.25× the fastest -1.24 µs +HKDF-SHA256 expand, ring: 122 ns, 2.63× the fastest +122 ns +HKDF-SHA256 expand, RustCrypto + dalek: 85 ns, 1.83× the fastest +85 ns +HKDF-SHA256 expand, libcrux: 484 ns, 10.38× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +484 ns ✓ +HKDF-SHA256 expand, OpenSSL: 1.25 µs, 26.79× the fastest +1.25 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 400.25 µs, 1.19× the fastest -400.25 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 349.67 µs, 1.04× the fastest -349.67 µs -RSA-2048 PKCS#1 sign, ring: 336.09 µs, 1.00× the fastest -336.09 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 592.98 µs, 1.76× the fastest -592.98 µs -RSA-2048 PKCS#1 sign, graviola: 341.78 µs, 1.02× the fastest -341.78 µs -RSA-2048 PKCS#1 sign, OpenSSL: 389.03 µs, 1.16× the fastest -389.03 µs +RSA-2048 PKCS#1 sign, rind: 348.43 µs, 1.02× the fastest +348.43 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 349.47 µs, 1.02× the fastest +349.47 µs +RSA-2048 PKCS#1 sign, ring: 341.11 µs, 1.00× the fastest +341.11 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 588.67 µs, 1.73× the fastest +588.67 µs +RSA-2048 PKCS#1 sign, graviola: 343.91 µs, 1.01× the fastest +343.91 µs +RSA-2048 PKCS#1 sign, OpenSSL: 397.72 µs, 1.17× the fastest +397.72 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 8.99 µs, 1.00× the fastest -8.99 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 10.99 µs, 1.22× the fastest -10.99 µs -RSA-2048 PKCS#1 verify, ring: 12.56 µs, 1.40× the fastest -12.56 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 29.03 µs, 3.23× the fastest -29.03 µs -RSA-2048 PKCS#1 verify, graviola: 13.94 µs, 1.55× the fastest -13.94 µs -RSA-2048 PKCS#1 verify, OpenSSL: 15.50 µs, 1.72× the fastest -15.50 µs +RSA-2048 PKCS#1 verify, rind: 8.97 µs, 1.00× the fastest +8.97 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 10.86 µs, 1.21× the fastest +10.86 µs +RSA-2048 PKCS#1 verify, ring: 12.70 µs, 1.41× the fastest +12.70 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 29.41 µs, 3.28× the fastest +29.41 µs +RSA-2048 PKCS#1 verify, graviola: 14.06 µs, 1.57× the fastest +14.06 µs +RSA-2048 PKCS#1 verify, OpenSSL: 15.59 µs, 1.74× the fastest +15.59 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 393.47 µs, 1.17× the fastest -393.47 µs -RSA-2048 PSS sign, aws-lc-rs: 353.37 µs, 1.05× the fastest -353.37 µs -RSA-2048 PSS sign, ring: 336.61 µs, 1.00× the fastest -336.61 µs -RSA-2048 PSS sign, RustCrypto + dalek: 582.39 µs, 1.73× the fastest -582.39 µs -RSA-2048 PSS sign, graviola: 336.99 µs, 1.00× the fastest -336.99 µs -RSA-2048 PSS sign, libcrux: 3.76 ms, 11.16× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -3.76 ms ✓ -RSA-2048 PSS sign, OpenSSL: 399.27 µs, 1.19× the fastest -399.27 µs +RSA-2048 PSS sign, rind: 346.52 µs, 1.01× the fastest +346.52 µs +RSA-2048 PSS sign, aws-lc-rs: 350.45 µs, 1.03× the fastest +350.45 µs +RSA-2048 PSS sign, ring: 341.45 µs, 1.00× the fastest +341.45 µs +RSA-2048 PSS sign, RustCrypto + dalek: 588.33 µs, 1.72× the fastest +588.33 µs +RSA-2048 PSS sign, graviola: 342.67 µs, 1.00× the fastest +342.67 µs +RSA-2048 PSS sign, libcrux: 4.10 ms, 12.00× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +4.10 ms ✓ +RSA-2048 PSS sign, OpenSSL: 395.81 µs, 1.16× the fastest +395.81 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 9.45 µs, 1.00× the fastest -9.45 µs -RSA-2048 PSS verify, aws-lc-rs: 11.06 µs, 1.17× the fastest -11.06 µs -RSA-2048 PSS verify, ring: 13.17 µs, 1.39× the fastest -13.17 µs -RSA-2048 PSS verify, RustCrypto + dalek: 35.09 µs, 3.71× the fastest -35.09 µs -RSA-2048 PSS verify, graviola: 14.43 µs, 1.53× the fastest -14.43 µs -RSA-2048 PSS verify, libcrux: 247.95 µs, 26.25× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -247.95 µs ✓ -RSA-2048 PSS verify, OpenSSL: 16.29 µs, 1.72× the fastest -16.29 µs +RSA-2048 PSS verify, rind: 9.18 µs, 1.00× the fastest +9.18 µs +RSA-2048 PSS verify, aws-lc-rs: 11.17 µs, 1.22× the fastest +11.17 µs +RSA-2048 PSS verify, ring: 13.31 µs, 1.45× the fastest +13.31 µs +RSA-2048 PSS verify, RustCrypto + dalek: 35.62 µs, 3.88× the fastest +35.62 µs +RSA-2048 PSS verify, graviola: 14.44 µs, 1.57× the fastest +14.44 µs +RSA-2048 PSS verify, libcrux: 252.13 µs, 27.46× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +252.13 µs ✓ +RSA-2048 PSS verify, OpenSSL: 16.36 µs, 1.78× the fastest +16.36 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 6.47 µs, 1.00× the fastest -6.47 µs -ML-KEM-768 key generation, aws-lc-rs: 8.18 µs, 1.26× the fastest -8.18 µs -ML-KEM-768 key generation, RustCrypto + dalek: 40.16 µs, 6.21× the fastest -40.16 µs -ML-KEM-768 key generation, graviola: 7.68 µs, 1.19× the fastest -7.68 µs -ML-KEM-768 key generation, libcrux: 15.00 µs, 2.32× the fastest -15.00 µs -ML-KEM-768 key generation, OpenSSL: 19.58 µs, 3.03× the fastest -19.58 µs +ML-KEM-768 key generation, rind: 6.45 µs, 1.00× the fastest +6.45 µs +ML-KEM-768 key generation, aws-lc-rs: 8.27 µs, 1.28× the fastest +8.27 µs +ML-KEM-768 key generation, RustCrypto + dalek: 40.26 µs, 6.24× the fastest +40.26 µs +ML-KEM-768 key generation, graviola: 7.67 µs, 1.19× the fastest +7.67 µs +ML-KEM-768 key generation, libcrux: 15.15 µs, 2.35× the fastest +15.15 µs +ML-KEM-768 key generation, OpenSSL: 19.80 µs, 3.07× the fastest +19.80 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 6.71 µs, 1.00× the fastest -6.71 µs -ML-KEM-768 encapsulate, aws-lc-rs: 8.59 µs, 1.28× the fastest -8.59 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 42.13 µs, 6.28× the fastest -42.13 µs -ML-KEM-768 encapsulate, graviola: 9.13 µs, 1.36× the fastest -9.13 µs -ML-KEM-768 encapsulate, libcrux: 12.80 µs, 1.91× the fastest -12.80 µs -ML-KEM-768 encapsulate, OpenSSL: 18.57 µs, 2.77× the fastest -18.57 µs +ML-KEM-768 encapsulate, rind: 6.65 µs, 1.00× the fastest +6.65 µs +ML-KEM-768 encapsulate, aws-lc-rs: 8.68 µs, 1.31× the fastest +8.68 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 41.71 µs, 6.27× the fastest +41.71 µs +ML-KEM-768 encapsulate, graviola: 9.11 µs, 1.37× the fastest +9.11 µs +ML-KEM-768 encapsulate, libcrux: 12.94 µs, 1.94× the fastest +12.94 µs +ML-KEM-768 encapsulate, OpenSSL: 18.77 µs, 2.82× the fastest +18.77 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 4.83 µs, 1.00× the fastest -4.83 µs -ML-KEM-768 decapsulate, aws-lc-rs: 8.92 µs, 1.85× the fastest -8.92 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 55.21 µs, 11.43× the fastest -55.21 µs -ML-KEM-768 decapsulate, graviola: 6.56 µs, 1.36× the fastest -6.56 µs -ML-KEM-768 decapsulate, libcrux: 13.50 µs, 2.79× the fastest -13.50 µs -ML-KEM-768 decapsulate, OpenSSL: 16.07 µs, 3.33× the fastest -16.07 µs +ML-KEM-768 decapsulate, rind: 4.69 µs, 1.00× the fastest +4.69 µs +ML-KEM-768 decapsulate, aws-lc-rs: 9.02 µs, 1.92× the fastest +9.02 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 54.19 µs, 11.55× the fastest +54.19 µs +ML-KEM-768 decapsulate, graviola: 6.59 µs, 1.41× the fastest +6.59 µs +ML-KEM-768 decapsulate, libcrux: 13.44 µs, 2.87× the fastest +13.44 µs +ML-KEM-768 decapsulate, OpenSSL: 16.05 µs, 3.42× the fastest +16.05 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 100.00 µs, 1.00× the fastest -100.00 µs -P-384 ECDH, aws-lc-rs: 111.30 µs, 1.11× the fastest -111.30 µs -P-384 ECDH, ring: 370.25 µs, 3.70× the fastest -370.25 µs -P-384 ECDH, RustCrypto + dalek: 430.31 µs, 4.30× the fastest -430.31 µs -P-384 ECDH, graviola: 171.49 µs, 1.71× the fastest -171.49 µs -P-384 ECDH, OpenSSL: 262.12 µs, 2.62× the fastest -262.12 µs +P-384 ECDH, rind: 100.08 µs, 1.00× the fastest +100.08 µs +P-384 ECDH, aws-lc-rs: 111.11 µs, 1.11× the fastest +111.11 µs +P-384 ECDH, ring: 369.71 µs, 3.69× the fastest +369.71 µs +P-384 ECDH, RustCrypto + dalek: 401.25 µs, 4.01× the fastest +401.25 µs +P-384 ECDH, graviola: 170.94 µs, 1.71× the fastest +170.94 µs +P-384 ECDH, OpenSSL: 264.84 µs, 2.65× the fastest +264.84 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 25.54 µs, 1.00× the fastest -25.54 µs -P-384 ECDSA sign, aws-lc-rs: 46.52 µs, 1.82× the fastest +P-384 ECDSA sign, rind: 23.53 µs, 1.00× the fastest +23.53 µs +P-384 ECDSA sign, aws-lc-rs: 46.52 µs, 1.98× the fastest 46.52 µs -P-384 ECDSA sign, ring: 198.39 µs, 7.77× the fastest -198.39 µs -P-384 ECDSA sign, RustCrypto + dalek: 104.37 µs, 4.09× the fastest -104.37 µs -P-384 ECDSA sign, graviola: 89.42 µs, 3.50× the fastest -89.42 µs -P-384 ECDSA sign, OpenSSL: 89.07 µs, 3.49× the fastest -89.07 µs +P-384 ECDSA sign, ring: 200.86 µs, 8.54× the fastest +200.86 µs +P-384 ECDSA sign, RustCrypto + dalek: 86.86 µs, 3.69× the fastest +86.86 µs +P-384 ECDSA sign, graviola: 90.69 µs, 3.85× the fastest +90.69 µs +P-384 ECDSA sign, OpenSSL: 89.64 µs, 3.81× the fastest +89.64 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 98.58 µs, 1.00× the fastest -98.58 µs -P-384 ECDSA verify, aws-lc-rs: 115.28 µs, 1.17× the fastest -115.28 µs -P-384 ECDSA verify, ring: 359.23 µs, 3.64× the fastest -359.23 µs -P-384 ECDSA verify, RustCrypto + dalek: 360.90 µs, 3.66× the fastest -360.90 µs -P-384 ECDSA verify, graviola: 168.94 µs, 1.71× the fastest -168.94 µs -P-384 ECDSA verify, OpenSSL: 215.87 µs, 2.19× the fastest -215.87 µs +P-384 ECDSA verify, rind: 98.87 µs, 1.00× the fastest +98.87 µs +P-384 ECDSA verify, aws-lc-rs: 116.66 µs, 1.18× the fastest +116.66 µs +P-384 ECDSA verify, ring: 360.29 µs, 3.64× the fastest +360.29 µs +P-384 ECDSA verify, RustCrypto + dalek: 360.21 µs, 3.64× the fastest +360.21 µs +P-384 ECDSA verify, graviola: 167.40 µs, 1.69× the fastest +167.40 µs +P-384 ECDSA verify, OpenSSL: 215.86 µs, 2.18× the fastest +215.86 µs P-521 ECDH -P-521 ECDH, rind: 160.40 µs, 1.00× the fastest -160.40 µs -P-521 ECDH, aws-lc-rs: 171.49 µs, 1.07× the fastest -171.49 µs -P-521 ECDH, RustCrypto + dalek: 433.75 µs, 2.70× the fastest -433.75 µs -P-521 ECDH, OpenSSL: 274.16 µs, 1.71× the fastest -274.16 µs +P-521 ECDH, rind: 160.77 µs, 1.00× the fastest +160.77 µs +P-521 ECDH, aws-lc-rs: 170.98 µs, 1.06× the fastest +170.98 µs +P-521 ECDH, RustCrypto + dalek: 431.17 µs, 2.68× the fastest +431.17 µs +P-521 ECDH, OpenSSL: 276.21 µs, 1.72× the fastest +276.21 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 43.70 µs, 1.00× the fastest -43.70 µs -P-521 ECDSA sign, aws-lc-rs: 88.46 µs, 2.02× the fastest -88.46 µs -P-521 ECDSA sign, RustCrypto + dalek: 94.28 µs, 2.16× the fastest -94.28 µs -P-521 ECDSA sign, OpenSSL: 127.75 µs, 2.92× the fastest -127.75 µs +P-521 ECDSA sign, rind: 40.56 µs, 1.00× the fastest +40.56 µs +P-521 ECDSA sign, aws-lc-rs: 89.64 µs, 2.21× the fastest +89.64 µs +P-521 ECDSA sign, RustCrypto + dalek: 95.29 µs, 2.35× the fastest +95.29 µs +P-521 ECDSA sign, OpenSSL: 129.20 µs, 3.19× the fastest +129.20 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 145.01 µs, 1.00× the fastest -145.01 µs -P-521 ECDSA verify, aws-lc-rs: 184.47 µs, 1.27× the fastest -184.47 µs -P-521 ECDSA verify, RustCrypto + dalek: 359.53 µs, 2.48× the fastest -359.53 µs -P-521 ECDSA verify, OpenSSL: 261.07 µs, 1.80× the fastest -261.07 µs +P-521 ECDSA verify, rind: 147.09 µs, 1.00× the fastest +147.09 µs +P-521 ECDSA verify, aws-lc-rs: 186.61 µs, 1.27× the fastest +186.61 µs +P-521 ECDSA verify, RustCrypto + dalek: 359.57 µs, 2.44× the fastest +359.57 µs +P-521 ECDSA verify, OpenSSL: 267.51 µs, 1.82× the fastest +267.51 µs diff --git a/benchmarks/desktop.svg b/benchmarks/desktop.svg index 81a021d4b..aade5ced5 100644 --- a/benchmarks/desktop.svg +++ b/benchmarks/desktop.svg @@ -28,792 +28,792 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 176.38 µs, 1.00× the fastest -176.38 µs -full handshake, X25519MLKEM768, aws-lc-rs: 237.01 µs, 1.34× the fastest -237.01 µs -full handshake, X25519MLKEM768, graviola: 188.12 µs, 1.07× the fastest -188.12 µs -full handshake, X25519MLKEM768, OpenSSL: 435.26 µs, 2.47× the fastest -435.26 µs +full handshake, X25519MLKEM768, rind: 174.97 µs, 1.00× the fastest +174.97 µs +full handshake, X25519MLKEM768, aws-lc-rs: 235.60 µs, 1.35× the fastest +235.60 µs +full handshake, X25519MLKEM768, graviola: 191.49 µs, 1.09× the fastest +191.49 µs +full handshake, X25519MLKEM768, OpenSSL: 437.46 µs, 2.50× the fastest +437.46 µs full handshake, X25519 -full handshake, X25519, rind: 152.03 µs, 1.00× the fastest -152.03 µs -full handshake, X25519, aws-lc-rs: 205.12 µs, 1.35× the fastest -205.12 µs -full handshake, X25519, ring: 221.18 µs, 1.45× the fastest -221.18 µs -full handshake, X25519, graviola: 161.32 µs, 1.06× the fastest -161.32 µs -full handshake, X25519, OpenSSL: 365.01 µs, 2.40× the fastest -365.01 µs +full handshake, X25519, rind: 152.75 µs, 1.00× the fastest +152.75 µs +full handshake, X25519, aws-lc-rs: 203.62 µs, 1.33× the fastest +203.62 µs +full handshake, X25519, ring: 222.88 µs, 1.46× the fastest +222.88 µs +full handshake, X25519, graviola: 162.55 µs, 1.06× the fastest +162.55 µs +full handshake, X25519, OpenSSL: 367.79 µs, 2.41× the fastest +367.79 µs full handshake, P-256 -full handshake, P-256, rind: 175.55 µs, 1.00× the fastest -175.55 µs -full handshake, P-256, aws-lc-rs: 227.34 µs, 1.30× the fastest -227.34 µs -full handshake, P-256, ring: 223.24 µs, 1.27× the fastest -223.24 µs -full handshake, P-256, graviola: 194.81 µs, 1.11× the fastest -194.81 µs -full handshake, P-256, OpenSSL: 403.92 µs, 2.30× the fastest -403.92 µs +full handshake, P-256, rind: 175.68 µs, 1.00× the fastest +175.68 µs +full handshake, P-256, aws-lc-rs: 228.85 µs, 1.30× the fastest +228.85 µs +full handshake, P-256, ring: 221.72 µs, 1.26× the fastest +221.72 µs +full handshake, P-256, graviola: 193.10 µs, 1.10× the fastest +193.10 µs +full handshake, P-256, OpenSSL: 406.49 µs, 2.31× the fastest +406.49 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 123.00 µs, 1.00× the fastest -123.00 µs -full handshake, Ed25519 certificate, aws-lc-rs: 166.65 µs, 1.35× the fastest -166.65 µs -full handshake, Ed25519 certificate, ring: 202.37 µs, 1.65× the fastest -202.37 µs -full handshake, Ed25519 certificate, graviola: 125.59 µs, 1.02× the fastest -125.59 µs -full handshake, Ed25519 certificate, OpenSSL: 374.89 µs, 3.05× the fastest -374.89 µs +full handshake, Ed25519 certificate, rind: 123.11 µs, 1.00× the fastest +123.11 µs +full handshake, Ed25519 certificate, aws-lc-rs: 168.12 µs, 1.37× the fastest +168.12 µs +full handshake, Ed25519 certificate, ring: 205.53 µs, 1.67× the fastest +205.53 µs +full handshake, Ed25519 certificate, graviola: 125.46 µs, 1.02× the fastest +125.46 µs +full handshake, Ed25519 certificate, OpenSSL: 373.29 µs, 3.03× the fastest +373.29 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 493.89 µs, 1.13× the fastest -493.89 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 479.50 µs, 1.09× the fastest -479.50 µs -full handshake, RSA-2048 certificate, ring: 487.61 µs, 1.11× the fastest -487.61 µs -full handshake, RSA-2048 certificate, graviola: 438.68 µs, 1.00× the fastest -438.68 µs -full handshake, RSA-2048 certificate, OpenSSL: 684.14 µs, 1.56× the fastest -684.14 µs +full handshake, RSA-2048 certificate, rind: 428.67 µs, 1.00× the fastest +428.67 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 485.87 µs, 1.13× the fastest +485.87 µs +full handshake, RSA-2048 certificate, ring: 493.81 µs, 1.15× the fastest +493.81 µs +full handshake, RSA-2048 certificate, graviola: 440.23 µs, 1.03× the fastest +440.23 µs +full handshake, RSA-2048 certificate, OpenSSL: 682.29 µs, 1.59× the fastest +682.29 µs resumed handshake, X25519 -resumed handshake, X25519, rind: 55.16 µs, 1.00× the fastest -55.16 µs -resumed handshake, X25519, aws-lc-rs: 101.03 µs, 1.83× the fastest -101.03 µs -resumed handshake, X25519, ring: 111.69 µs, 2.02× the fastest -111.69 µs -resumed handshake, X25519, graviola: 55.45 µs, 1.01× the fastest -55.45 µs -resumed handshake, X25519, OpenSSL: 229.74 µs, 4.16× the fastest -229.74 µs +resumed handshake, X25519, rind: 54.19 µs, 1.00× the fastest +54.19 µs +resumed handshake, X25519, aws-lc-rs: 102.84 µs, 1.90× the fastest +102.84 µs +resumed handshake, X25519, ring: 113.00 µs, 2.09× the fastest +113.00 µs +resumed handshake, X25519, graviola: 55.16 µs, 1.02× the fastest +55.16 µs +resumed handshake, X25519, OpenSSL: 231.44 µs, 4.27× the fastest +231.44 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 169.85 µs, 1.00× the fastest -169.85 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 234.65 µs, 1.38× the fastest -234.65 µs -1 MB transfer, AES-128-GCM, ring: 171.60 µs, 1.01× the fastest -171.60 µs -1 MB transfer, AES-128-GCM, graviola: 288.23 µs, 1.70× the fastest -288.23 µs -1 MB transfer, AES-128-GCM, OpenSSL: 255.06 µs, 1.50× the fastest -255.06 µs +1 MB transfer, AES-128-GCM, rind: 193.36 µs, 1.11× the fastest +193.36 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 241.18 µs, 1.38× the fastest +241.18 µs +1 MB transfer, AES-128-GCM, ring: 174.96 µs, 1.00× the fastest +174.96 µs +1 MB transfer, AES-128-GCM, graviola: 294.75 µs, 1.68× the fastest +294.75 µs +1 MB transfer, AES-128-GCM, OpenSSL: 255.72 µs, 1.46× the fastest +255.72 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 186.02 µs, 1.00× the fastest -186.02 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 270.36 µs, 1.45× the fastest -270.36 µs -1 MB transfer, AES-256-GCM, ring: 188.28 µs, 1.01× the fastest -188.28 µs -1 MB transfer, AES-256-GCM, graviola: 332.16 µs, 1.79× the fastest -332.16 µs -1 MB transfer, AES-256-GCM, OpenSSL: 285.87 µs, 1.54× the fastest -285.87 µs +1 MB transfer, AES-256-GCM, rind: 189.84 µs, 1.00× the fastest +189.84 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 272.23 µs, 1.43× the fastest +272.23 µs +1 MB transfer, AES-256-GCM, ring: 192.15 µs, 1.01× the fastest +192.15 µs +1 MB transfer, AES-256-GCM, graviola: 338.97 µs, 1.79× the fastest +338.97 µs +1 MB transfer, AES-256-GCM, OpenSSL: 292.12 µs, 1.54× the fastest +292.12 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 587.48 µs, 1.00× the fastest -587.48 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 586.46 µs, 1.00× the fastest -586.46 µs -1 MB transfer, ChaCha20-Poly1305, ring: 588.81 µs, 1.00× the fastest -588.81 µs -1 MB transfer, ChaCha20-Poly1305, graviola: 1.16 ms, 1.97× the fastest -1.16 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 658.14 µs, 1.12× the fastest -658.14 µs +1 MB transfer, ChaCha20-Poly1305, rind: 621.49 µs, 1.04× the fastest +621.49 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 609.72 µs, 1.02× the fastest +609.72 µs +1 MB transfer, ChaCha20-Poly1305, ring: 594.88 µs, 1.00× the fastest +594.88 µs +1 MB transfer, ChaCha20-Poly1305, graviola: 1.17 ms, 1.97× the fastest +1.17 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 661.80 µs, 1.11× the fastest +661.80 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 19 ns, 1.00× the fastest -19 ns -AES-128-GCM seal, 32 B, aws-lc-rs: 37 ns, 1.93× the fastest +AES-128-GCM seal, 32 B, rind: 18 ns, 1.00× the fastest +18 ns +AES-128-GCM seal, 32 B, aws-lc-rs: 37 ns, 2.03× the fastest 37 ns -AES-128-GCM seal, 32 B, ring: 42 ns, 2.17× the fastest +AES-128-GCM seal, 32 B, ring: 42 ns, 2.30× the fastest 42 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 73 ns, 3.76× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek: 73 ns, 3.98× the fastest 73 ns -AES-128-GCM seal, 32 B, graviola: 42 ns, 2.19× the fastest +AES-128-GCM seal, 32 B, graviola: 42 ns, 2.33× the fastest 42 ns -AES-128-GCM seal, 32 B, libcrux: 171 ns, 8.78× the fastest -171 ns -AES-128-GCM seal, 32 B, OpenSSL: 55 ns, 2.85× the fastest +AES-128-GCM seal, 32 B, libcrux: 168 ns, 9.19× the fastest +168 ns +AES-128-GCM seal, 32 B, OpenSSL: 55 ns, 3.02× the fastest 55 ns AES-128-GCM seal, 1350 B AES-128-GCM seal, 1350 B, rind: 94 ns, 1.00× the fastest 94 ns -AES-128-GCM seal, 1350 B, aws-lc-rs: 152 ns, 1.62× the fastest -152 ns -AES-128-GCM seal, 1350 B, ring: 119 ns, 1.27× the fastest -119 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 276 ns, 2.95× the fastest -276 ns -AES-128-GCM seal, 1350 B, graviola: 226 ns, 2.41× the fastest -226 ns -AES-128-GCM seal, 1350 B, libcrux: 1.98 µs, 21.10× the fastest -1.98 µs -AES-128-GCM seal, 1350 B, OpenSSL: 159 ns, 1.70× the fastest -159 ns +AES-128-GCM seal, 1350 B, aws-lc-rs: 149 ns, 1.59× the fastest +149 ns +AES-128-GCM seal, 1350 B, ring: 118 ns, 1.26× the fastest +118 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 272 ns, 2.90× the fastest +272 ns +AES-128-GCM seal, 1350 B, graviola: 227 ns, 2.42× the fastest +227 ns +AES-128-GCM seal, 1350 B, libcrux: 1.94 µs, 20.74× the fastest +1.94 µs +AES-128-GCM seal, 1350 B, OpenSSL: 163 ns, 1.74× the fastest +163 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 772 ns, 1.00× the fastest -772 ns -AES-128-GCM seal, 16 KB, aws-lc-rs: 1.33 µs, 1.72× the fastest +AES-128-GCM seal, 16 KB, rind: 781 ns, 1.00× the fastest +781 ns +AES-128-GCM seal, 16 KB, aws-lc-rs: 1.33 µs, 1.70× the fastest 1.33 µs -AES-128-GCM seal, 16 KB, ring: 795 ns, 1.03× the fastest -795 ns -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 2.45 µs, 3.18× the fastest -2.45 µs -AES-128-GCM seal, 16 KB, graviola: 2.05 µs, 2.65× the fastest -2.05 µs -AES-128-GCM seal, 16 KB, libcrux: 22.01 µs, 28.52× the fastest -22.01 µs -AES-128-GCM seal, 16 KB, OpenSSL: 1.34 µs, 1.74× the fastest +AES-128-GCM seal, 16 KB, ring: 799 ns, 1.02× the fastest +799 ns +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 2.49 µs, 3.19× the fastest +2.49 µs +AES-128-GCM seal, 16 KB, graviola: 2.02 µs, 2.59× the fastest +2.02 µs +AES-128-GCM seal, 16 KB, libcrux: 22.02 µs, 28.20× the fastest +22.02 µs +AES-128-GCM seal, 16 KB, OpenSSL: 1.34 µs, 1.72× the fastest 1.34 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 23 ns, 1.00× the fastest -23 ns -AES-128-GCM open, 32 B, aws-lc-rs: 37 ns, 1.57× the fastest -37 ns -AES-128-GCM open, 32 B, ring: 42 ns, 1.79× the fastest -42 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 78 ns, 3.32× the fastest +AES-128-GCM open, 32 B, rind: 28 ns, 1.00× the fastest +28 ns +AES-128-GCM open, 32 B, aws-lc-rs: 37 ns, 1.31× the fastest +37 ns +AES-128-GCM open, 32 B, ring: 42 ns, 1.49× the fastest +42 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 78 ns, 2.73× the fastest 78 ns -AES-128-GCM open, 32 B, graviola: 35 ns, 1.52× the fastest -35 ns -AES-128-GCM open, 32 B, libcrux: 161 ns, 6.89× the fastest -161 ns -AES-128-GCM open, 32 B, OpenSSL: 58 ns, 2.50× the fastest +AES-128-GCM open, 32 B, graviola: 36 ns, 1.26× the fastest +36 ns +AES-128-GCM open, 32 B, libcrux: 159 ns, 5.59× the fastest +159 ns +AES-128-GCM open, 32 B, OpenSSL: 58 ns, 2.02× the fastest 58 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 101 ns, 1.00× the fastest -101 ns -AES-128-GCM open, 1350 B, aws-lc-rs: 149 ns, 1.47× the fastest -149 ns -AES-128-GCM open, 1350 B, ring: 113 ns, 1.12× the fastest -113 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 283 ns, 2.81× the fastest -283 ns -AES-128-GCM open, 1350 B, graviola: 176 ns, 1.75× the fastest +AES-128-GCM open, 1350 B, rind: 99 ns, 1.00× the fastest +99 ns +AES-128-GCM open, 1350 B, aws-lc-rs: 149 ns, 1.51× the fastest +149 ns +AES-128-GCM open, 1350 B, ring: 114 ns, 1.16× the fastest +114 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 282 ns, 2.86× the fastest +282 ns +AES-128-GCM open, 1350 B, graviola: 176 ns, 1.79× the fastest 176 ns -AES-128-GCM open, 1350 B, libcrux: 1.99 µs, 19.73× the fastest -1.99 µs -AES-128-GCM open, 1350 B, OpenSSL: 157 ns, 1.56× the fastest -157 ns +AES-128-GCM open, 1350 B, libcrux: 2.00 µs, 20.29× the fastest +2.00 µs +AES-128-GCM open, 1350 B, OpenSSL: 159 ns, 1.62× the fastest +159 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 812 ns, 1.00× the fastest -812 ns -AES-128-GCM open, 16 KB, aws-lc-rs: 1.26 µs, 1.55× the fastest -1.26 µs -AES-128-GCM open, 16 KB, ring: 823 ns, 1.01× the fastest -823 ns -AES-128-GCM open, 16 KB, RustCrypto + dalek: 2.51 µs, 3.09× the fastest -2.51 µs -AES-128-GCM open, 16 KB, graviola: 1.40 µs, 1.72× the fastest -1.40 µs -AES-128-GCM open, 16 KB, libcrux: 22.00 µs, 27.09× the fastest -22.00 µs -AES-128-GCM open, 16 KB, OpenSSL: 1.29 µs, 1.58× the fastest -1.29 µs +AES-128-GCM open, 16 KB, rind: 816 ns, 1.00× the fastest +816 ns +AES-128-GCM open, 16 KB, aws-lc-rs: 1.28 µs, 1.56× the fastest +1.28 µs +AES-128-GCM open, 16 KB, ring: 829 ns, 1.02× the fastest +829 ns +AES-128-GCM open, 16 KB, RustCrypto + dalek: 2.54 µs, 3.12× the fastest +2.54 µs +AES-128-GCM open, 16 KB, graviola: 1.42 µs, 1.73× the fastest +1.42 µs +AES-128-GCM open, 16 KB, libcrux: 22.31 µs, 27.33× the fastest +22.31 µs +AES-128-GCM open, 16 KB, OpenSSL: 1.30 µs, 1.59× the fastest +1.30 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 21 ns, 1.00× the fastest -21 ns -AES-256-GCM seal, 32 B, aws-lc-rs: 39 ns, 1.87× the fastest -39 ns -AES-256-GCM seal, 32 B, ring: 43 ns, 2.07× the fastest +AES-256-GCM seal, 32 B, rind: 20 ns, 1.00× the fastest +20 ns +AES-256-GCM seal, 32 B, aws-lc-rs: 40 ns, 1.99× the fastest +40 ns +AES-256-GCM seal, 32 B, ring: 43 ns, 2.16× the fastest 43 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 78 ns, 3.73× the fastest -78 ns -AES-256-GCM seal, 32 B, graviola: 45 ns, 2.14× the fastest -45 ns -AES-256-GCM seal, 32 B, libcrux: 218 ns, 10.42× the fastest -218 ns -AES-256-GCM seal, 32 B, OpenSSL: 58 ns, 2.78× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek: 77 ns, 3.90× the fastest +77 ns +AES-256-GCM seal, 32 B, graviola: 44 ns, 2.22× the fastest +44 ns +AES-256-GCM seal, 32 B, libcrux: 216 ns, 10.88× the fastest +216 ns +AES-256-GCM seal, 32 B, OpenSSL: 58 ns, 2.93× the fastest 58 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 109 ns, 1.00× the fastest -109 ns -AES-256-GCM seal, 1350 B, aws-lc-rs: 176 ns, 1.62× the fastest -176 ns -AES-256-GCM seal, 1350 B, ring: 135 ns, 1.25× the fastest -135 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 312 ns, 2.88× the fastest -312 ns -AES-256-GCM seal, 1350 B, graviola: 261 ns, 2.41× the fastest -261 ns -AES-256-GCM seal, 1350 B, libcrux: 2.86 µs, 26.33× the fastest -2.86 µs -AES-256-GCM seal, 1350 B, OpenSSL: 184 ns, 1.69× the fastest -184 ns +AES-256-GCM seal, 1350 B, rind: 106 ns, 1.00× the fastest +106 ns +AES-256-GCM seal, 1350 B, aws-lc-rs: 173 ns, 1.63× the fastest +173 ns +AES-256-GCM seal, 1350 B, ring: 133 ns, 1.25× the fastest +133 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 313 ns, 2.94× the fastest +313 ns +AES-256-GCM seal, 1350 B, graviola: 258 ns, 2.42× the fastest +258 ns +AES-256-GCM seal, 1350 B, libcrux: 2.83 µs, 26.55× the fastest +2.83 µs +AES-256-GCM seal, 1350 B, OpenSSL: 186 ns, 1.75× the fastest +186 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 924 ns, 1.00× the fastest -924 ns -AES-256-GCM seal, 16 KB, aws-lc-rs: 1.58 µs, 1.71× the fastest -1.58 µs -AES-256-GCM seal, 16 KB, ring: 953 ns, 1.03× the fastest -953 ns -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 2.91 µs, 3.15× the fastest +AES-256-GCM seal, 16 KB, rind: 925 ns, 1.00× the fastest +925 ns +AES-256-GCM seal, 16 KB, aws-lc-rs: 1.56 µs, 1.69× the fastest +1.56 µs +AES-256-GCM seal, 16 KB, ring: 946 ns, 1.02× the fastest +946 ns +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 2.91 µs, 3.14× the fastest 2.91 µs -AES-256-GCM seal, 16 KB, graviola: 2.42 µs, 2.62× the fastest -2.42 µs -AES-256-GCM seal, 16 KB, libcrux: 32.27 µs, 34.93× the fastest -32.27 µs -AES-256-GCM seal, 16 KB, OpenSSL: 1.57 µs, 1.70× the fastest -1.57 µs +AES-256-GCM seal, 16 KB, graviola: 2.46 µs, 2.66× the fastest +2.46 µs +AES-256-GCM seal, 16 KB, libcrux: 32.69 µs, 35.34× the fastest +32.69 µs +AES-256-GCM seal, 16 KB, OpenSSL: 1.59 µs, 1.72× the fastest +1.59 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 24 ns, 1.00× the fastest -24 ns -AES-256-GCM open, 32 B, aws-lc-rs: 37 ns, 1.53× the fastest -37 ns -AES-256-GCM open, 32 B, ring: 44 ns, 1.81× the fastest -44 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 81 ns, 3.34× the fastest -81 ns -AES-256-GCM open, 32 B, graviola: 38 ns, 1.54× the fastest -38 ns -AES-256-GCM open, 32 B, libcrux: 218 ns, 8.95× the fastest +AES-256-GCM open, 32 B, rind: 28 ns, 1.00× the fastest +28 ns +AES-256-GCM open, 32 B, aws-lc-rs: 38 ns, 1.37× the fastest +38 ns +AES-256-GCM open, 32 B, ring: 45 ns, 1.61× the fastest +45 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 82 ns, 2.98× the fastest +82 ns +AES-256-GCM open, 32 B, graviola: 38 ns, 1.37× the fastest +38 ns +AES-256-GCM open, 32 B, libcrux: 218 ns, 7.86× the fastest 218 ns -AES-256-GCM open, 32 B, OpenSSL: 61 ns, 2.52× the fastest -61 ns +AES-256-GCM open, 32 B, OpenSSL: 62 ns, 2.22× the fastest +62 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 110 ns, 1.00× the fastest -110 ns -AES-256-GCM open, 1350 B, aws-lc-rs: 174 ns, 1.59× the fastest -174 ns -AES-256-GCM open, 1350 B, ring: 123 ns, 1.12× the fastest -123 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 323 ns, 2.95× the fastest -323 ns -AES-256-GCM open, 1350 B, graviola: 203 ns, 1.86× the fastest +AES-256-GCM open, 1350 B, rind: 107 ns, 1.00× the fastest +107 ns +AES-256-GCM open, 1350 B, aws-lc-rs: 173 ns, 1.62× the fastest +173 ns +AES-256-GCM open, 1350 B, ring: 124 ns, 1.16× the fastest +124 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 322 ns, 3.01× the fastest +322 ns +AES-256-GCM open, 1350 B, graviola: 203 ns, 1.90× the fastest 203 ns -AES-256-GCM open, 1350 B, libcrux: 2.86 µs, 26.07× the fastest -2.86 µs -AES-256-GCM open, 1350 B, OpenSSL: 188 ns, 1.72× the fastest -188 ns +AES-256-GCM open, 1350 B, libcrux: 2.85 µs, 26.66× the fastest +2.85 µs +AES-256-GCM open, 1350 B, OpenSSL: 189 ns, 1.77× the fastest +189 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 926 ns, 1.00× the fastest -926 ns -AES-256-GCM open, 16 KB, aws-lc-rs: 1.58 µs, 1.71× the fastest -1.58 µs -AES-256-GCM open, 16 KB, ring: 939 ns, 1.01× the fastest -939 ns -AES-256-GCM open, 16 KB, RustCrypto + dalek: 2.97 µs, 3.20× the fastest -2.97 µs -AES-256-GCM open, 16 KB, graviola: 1.75 µs, 1.89× the fastest -1.75 µs -AES-256-GCM open, 16 KB, libcrux: 32.50 µs, 35.10× the fastest -32.50 µs -AES-256-GCM open, 16 KB, OpenSSL: 1.60 µs, 1.73× the fastest +AES-256-GCM open, 16 KB, rind: 917 ns, 1.00× the fastest +917 ns +AES-256-GCM open, 16 KB, aws-lc-rs: 1.57 µs, 1.71× the fastest +1.57 µs +AES-256-GCM open, 16 KB, ring: 921 ns, 1.00× the fastest +921 ns +AES-256-GCM open, 16 KB, RustCrypto + dalek: 2.96 µs, 3.23× the fastest +2.96 µs +AES-256-GCM open, 16 KB, graviola: 1.74 µs, 1.90× the fastest +1.74 µs +AES-256-GCM open, 16 KB, libcrux: 32.51 µs, 35.44× the fastest +32.51 µs +AES-256-GCM open, 16 KB, OpenSSL: 1.60 µs, 1.75× the fastest 1.60 µs ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind: 99 ns, 1.00× the fastest -99 ns -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 105 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 32 B, rind: 100 ns, 1.00× the fastest +100 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 105 ns, 1.05× the fastest 105 ns ChaCha20-Poly1305 seal, 32 B, ring: 101 ns, 1.01× the fastest 101 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.06 µs, 10.71× the fastest -1.06 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 180 ns, 1.81× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.07 µs, 10.75× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 32 B, graviola: 180 ns, 1.80× the fastest 180 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 157 ns, 1.58× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +ChaCha20-Poly1305 seal, 32 B, libcrux: 157 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step 157 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 177 ns, 1.78× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 177 ns, 1.77× the fastest 177 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 447 ns, 1.00× the fastest -447 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 453 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind: 441 ns, 1.00× the fastest +441 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 453 ns, 1.03× the fastest 453 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 446 ns, 1.00× the fastest -446 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.67 µs, 3.75× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring: 447 ns, 1.01× the fastest +447 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.67 µs, 3.79× the fastest 1.67 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 911 ns, 2.04× the fastest -911 ns -ChaCha20-Poly1305 seal, 1350 B, libcrux: 1.78 µs, 3.98× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +ChaCha20-Poly1305 seal, 1350 B, graviola: 905 ns, 2.05× the fastest +905 ns +ChaCha20-Poly1305 seal, 1350 B, libcrux: 1.78 µs, 4.03× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step 1.78 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 589 ns, 1.32× the fastest -589 ns +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 590 ns, 1.34× the fastest +590 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 4.13 µs, 1.00× the fastest -4.13 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.13 µs, 1.00× the fastest -4.13 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 4.12 µs, 1.00× the fastest -4.12 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.15 µs, 1.98× the fastest -8.15 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 8.36 µs, 2.03× the fastest -8.36 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 19.36 µs, 4.70× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -19.36 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, rind: 4.17 µs, 1.01× the fastest +4.17 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.15 µs, 1.00× the fastest +4.15 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 4.14 µs, 1.00× the fastest +4.14 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.14 µs, 1.97× the fastest +8.14 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 8.30 µs, 2.01× the fastest +8.30 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 19.63 µs, 4.74× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +19.63 µs ✓ ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 4.41 µs, 1.07× the fastest 4.41 µs XChaCha20-Poly1305 seal, 32 B XChaCha20-Poly1305 seal, 32 B, rind: 188 ns, 1.00× the fastest 188 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 196 ns, 1.04× the fastest -196 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.15 µs, 6.09× the fastest -1.15 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 259 ns, 1.37× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 199 ns, 1.06× the fastest +199 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 889 ns, 4.72× the fastest +889 ns +XChaCha20-Poly1305 seal, 32 B, graviola: 259 ns, 1.38× the fastest 259 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 243 ns, 1.29× the fastest -243 ns +XChaCha20-Poly1305 seal, 32 B, libcrux: 248 ns, 1.32× the fastest +248 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 528 ns, 1.00× the fastest -528 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 541 ns, 1.03× the fastest -541 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.76 µs, 3.33× the fastest -1.76 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 987 ns, 1.87× the fastest -987 ns -XChaCha20-Poly1305 seal, 1350 B, libcrux: 1.83 µs, 3.47× the fastest -1.83 µs +XChaCha20-Poly1305 seal, 1350 B, rind: 838 ns, 1.22× the fastest +838 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 687 ns, 1.00× the fastest +687 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.74 µs, 2.54× the fastest +1.74 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.35 µs, 1.97× the fastest +1.35 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.56 µs, 3.73× the fastest +2.56 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 4.20 µs, 1.00× the fastest -4.20 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.29 µs, 1.02× the fastest -4.29 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 8.25 µs, 1.97× the fastest -8.25 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 8.30 µs, 1.98× the fastest -8.30 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 19.58 µs, 4.67× the fastest -19.58 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 6.26 µs, 1.00× the fastest +6.26 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.27 µs, 1.00× the fastest +6.27 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.28 µs, 1.96× the fastest +12.28 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 12.79 µs, 2.04× the fastest +12.79 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 27.40 µs, 4.37× the fastest +27.40 µs QUIC header protection AES-128 header protection AES-128 header protection, rind: 2 ns, 1.00× the fastest 2 ns -AES-128 header protection, aws-lc-rs: 3 ns, 1.78× the fastest +AES-128 header protection, aws-lc-rs: 3 ns, 1.59× the fastest 3 ns -AES-128 header protection, ring: 3 ns, 1.85× the fastest +AES-128 header protection, ring: 3 ns, 1.68× the fastest 3 ns AES-256 header protection AES-256 header protection, rind: 2 ns, 1.00× the fastest 2 ns -AES-256 header protection, aws-lc-rs: 4 ns, 1.64× the fastest -4 ns -AES-256 header protection, ring: 5 ns, 2.17× the fastest +AES-256 header protection, aws-lc-rs: 5 ns, 2.06× the fastest +5 ns +AES-256 header protection, ring: 5 ns, 2.16× the fastest 5 ns ChaCha20 header protection ChaCha20 header protection, rind: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included 54 ns ✓ -ChaCha20 header protection, aws-lc-rs: 69 ns, 1.27× the fastest +ChaCha20 header protection, aws-lc-rs: 69 ns, 1.28× the fastest 69 ns ChaCha20 header protection, ring: 61 ns, 1.14× the fastest 61 ns Key agreement X25519 -X25519, rind: 17.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -17.94 µs ✓ -X25519, aws-lc-rs: 19.14 µs, 1.07× the fastest -19.14 µs -X25519, ring: 35.19 µs, 1.96× the fastest -35.19 µs -X25519, RustCrypto + dalek: 36.03 µs, 2.01× the fastest -36.03 µs -X25519, graviola: 18.25 µs, 1.02× the fastest -18.25 µs -X25519, libcrux: 42.71 µs, 2.38× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -42.71 µs ✓ -X25519, OpenSSL: 33.93 µs, 1.89× the fastest -33.93 µs +X25519, rind: 19.68 µs, 1.06× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +19.68 µs ✓ +X25519, aws-lc-rs: 19.54 µs, 1.06× the fastest +19.54 µs +X25519, ring: 35.63 µs, 1.93× the fastest +35.63 µs +X25519, RustCrypto + dalek: 36.52 µs, 1.97× the fastest +36.52 µs +X25519, graviola: 18.50 µs, 1.00× the fastest +18.50 µs +X25519, libcrux: 43.11 µs, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +43.11 µs ✓ +X25519, OpenSSL: 34.02 µs, 1.84× the fastest +34.02 µs P-256 ECDH -P-256 ECDH, rind: 29.99 µs, 1.00× the fastest -29.99 µs -P-256 ECDH, aws-lc-rs: 32.02 µs, 1.07× the fastest -32.02 µs -P-256 ECDH, ring: 34.21 µs, 1.14× the fastest -34.21 µs -P-256 ECDH, RustCrypto + dalek: 120.66 µs, 4.02× the fastest -120.66 µs -P-256 ECDH, graviola: 32.86 µs, 1.10× the fastest -32.86 µs -P-256 ECDH, libcrux: 168.88 µs, 5.63× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -168.88 µs ✓ -P-256 ECDH, OpenSSL: 52.96 µs, 1.77× the fastest -52.96 µs +P-256 ECDH, rind: 29.85 µs, 1.00× the fastest +29.85 µs +P-256 ECDH, aws-lc-rs: 32.27 µs, 1.08× the fastest +32.27 µs +P-256 ECDH, ring: 34.14 µs, 1.14× the fastest +34.14 µs +P-256 ECDH, RustCrypto + dalek: 123.01 µs, 4.12× the fastest +123.01 µs +P-256 ECDH, graviola: 33.46 µs, 1.12× the fastest +33.46 µs +P-256 ECDH, libcrux: 169.87 µs, 5.69× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +169.87 µs ✓ +P-256 ECDH, OpenSSL: 52.91 µs, 1.77× the fastest +52.91 µs Signatures Ed25519 sign -Ed25519 sign, rind: 4.29 µs, 1.00× the fastest -4.29 µs -Ed25519 sign, aws-lc-rs: 4.44 µs, 1.04× the fastest -4.44 µs -Ed25519 sign, ring: 13.30 µs, 3.10× the fastest -13.30 µs -Ed25519 sign, RustCrypto + dalek: 9.56 µs, 2.23× the fastest -9.56 µs -Ed25519 sign, graviola: 4.37 µs, 1.02× the fastest -4.37 µs -Ed25519 sign, libcrux: 29.05 µs, 6.78× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -29.05 µs ✓ -Ed25519 sign, OpenSSL: 13.47 µs, 3.14× the fastest -13.47 µs +Ed25519 sign, rind: 4.15 µs, 1.00× the fastest +4.15 µs +Ed25519 sign, aws-lc-rs: 4.56 µs, 1.10× the fastest +4.56 µs +Ed25519 sign, ring: 13.14 µs, 3.16× the fastest +13.14 µs +Ed25519 sign, RustCrypto + dalek: 9.61 µs, 2.31× the fastest +9.61 µs +Ed25519 sign, graviola: 4.39 µs, 1.06× the fastest +4.39 µs +Ed25519 sign, libcrux: 28.97 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +28.97 µs ✓ +Ed25519 sign, OpenSSL: 13.69 µs, 3.30× the fastest +13.69 µs Ed25519 verify -Ed25519 verify, rind: 21.87 µs, 1.01× the fastest -21.87 µs -Ed25519 verify, aws-lc-rs: 21.82 µs, 1.01× the fastest -21.82 µs -Ed25519 verify, ring: 26.51 µs, 1.23× the fastest -26.51 µs -Ed25519 verify, RustCrypto + dalek: 22.15 µs, 1.03× the fastest -22.15 µs -Ed25519 verify, graviola: 21.56 µs, 1.00× the fastest -21.56 µs -Ed25519 verify, libcrux: 41.91 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -41.91 µs ✓ -Ed25519 verify, OpenSSL: 45.62 µs, 2.12× the fastest -45.62 µs +Ed25519 verify, rind: 21.75 µs, 1.01× the fastest +21.75 µs +Ed25519 verify, aws-lc-rs: 21.56 µs, 1.00× the fastest +21.56 µs +Ed25519 verify, ring: 26.22 µs, 1.22× the fastest +26.22 µs +Ed25519 verify, RustCrypto + dalek: 21.88 µs, 1.02× the fastest +21.88 µs +Ed25519 verify, graviola: 21.61 µs, 1.00× the fastest +21.61 µs +Ed25519 verify, libcrux: 42.16 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +42.16 µs ✓ +Ed25519 verify, OpenSSL: 45.59 µs, 2.11× the fastest +45.59 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 7.08 µs, 1.00× the fastest -7.08 µs -P-256 ECDSA sign, aws-lc-rs: 12.42 µs, 1.75× the fastest -12.42 µs -P-256 ECDSA sign, ring: 12.38 µs, 1.75× the fastest -12.38 µs -P-256 ECDSA sign, RustCrypto + dalek: 31.49 µs, 4.45× the fastest -31.49 µs -P-256 ECDSA sign, graviola: 8.81 µs, 1.24× the fastest -8.81 µs -P-256 ECDSA sign, libcrux: 60.93 µs, 8.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -60.93 µs ✓ -P-256 ECDSA sign, OpenSSL: 14.37 µs, 2.03× the fastest -14.37 µs +P-256 ECDSA sign, rind: 6.84 µs, 1.00× the fastest +6.84 µs +P-256 ECDSA sign, aws-lc-rs: 12.33 µs, 1.80× the fastest +12.33 µs +P-256 ECDSA sign, ring: 12.24 µs, 1.79× the fastest +12.24 µs +P-256 ECDSA sign, RustCrypto + dalek: 31.65 µs, 4.63× the fastest +31.65 µs +P-256 ECDSA sign, graviola: 9.26 µs, 1.35× the fastest +9.26 µs +P-256 ECDSA sign, libcrux: 61.34 µs, 8.97× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +61.34 µs ✓ +P-256 ECDSA sign, OpenSSL: 14.33 µs, 2.09× the fastest +14.33 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 30.78 µs, 1.01× the fastest -30.78 µs -P-256 ECDSA verify, aws-lc-rs: 30.34 µs, 1.00× the fastest -30.34 µs -P-256 ECDSA verify, ring: 33.20 µs, 1.09× the fastest -33.20 µs -P-256 ECDSA verify, RustCrypto + dalek: 102.68 µs, 3.38× the fastest -102.68 µs -P-256 ECDSA verify, graviola: 32.93 µs, 1.09× the fastest -32.93 µs -P-256 ECDSA verify, libcrux: 146.39 µs, 4.83× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -146.39 µs ✓ -P-256 ECDSA verify, OpenSSL: 46.07 µs, 1.52× the fastest -46.07 µs +P-256 ECDSA verify, rind: 30.95 µs, 1.03× the fastest +30.95 µs +P-256 ECDSA verify, aws-lc-rs: 30.08 µs, 1.00× the fastest +30.08 µs +P-256 ECDSA verify, ring: 33.74 µs, 1.12× the fastest +33.74 µs +P-256 ECDSA verify, RustCrypto + dalek: 104.58 µs, 3.48× the fastest +104.58 µs +P-256 ECDSA verify, graviola: 32.89 µs, 1.09× the fastest +32.89 µs +P-256 ECDSA verify, libcrux: 147.11 µs, 4.89× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +147.11 µs ✓ +P-256 ECDSA verify, OpenSSL: 46.41 µs, 1.54× the fastest +46.41 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 56 ns, 1.44× the fastest -56 ns -SHA-256, 64 B, aws-lc-rs: 57 ns, 1.46× the fastest -57 ns -SHA-256, 64 B, ring: 57 ns, 1.46× the fastest -57 ns -SHA-256, 64 B, RustCrypto + dalek: 39 ns, 1.00× the fastest -39 ns -SHA-256, 64 B, graviola: 40 ns, 1.03× the fastest -40 ns -SHA-256, 64 B, libcrux: 212 ns, 5.41× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -212 ns ✓ -SHA-256, 64 B, OpenSSL: 157 ns, 4.01× the fastest -157 ns +SHA-256, 64 B, rind: 28 ns, 1.00× the fastest +28 ns +SHA-256, 64 B, aws-lc-rs: 57 ns, 2.02× the fastest +57 ns +SHA-256, 64 B, ring: 58 ns, 2.04× the fastest +58 ns +SHA-256, 64 B, RustCrypto + dalek: 40 ns, 1.41× the fastest +40 ns +SHA-256, 64 B, graviola: 41 ns, 1.45× the fastest +41 ns +SHA-256, 64 B, libcrux: 211 ns, 7.50× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +211 ns ✓ +SHA-256, 64 B, OpenSSL: 161 ns, 5.72× the fastest +161 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 298 ns, 1.02× the fastest -298 ns -SHA-256, 1350 B, aws-lc-rs: 311 ns, 1.07× the fastest -311 ns -SHA-256, 1350 B, ring: 299 ns, 1.03× the fastest -299 ns -SHA-256, 1350 B, RustCrypto + dalek: 292 ns, 1.00× the fastest -292 ns -SHA-256, 1350 B, graviola: 298 ns, 1.02× the fastest -298 ns -SHA-256, 1350 B, libcrux: 2.30 µs, 7.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -2.30 µs ✓ -SHA-256, 1350 B, OpenSSL: 412 ns, 1.41× the fastest -412 ns +SHA-256, 1350 B, rind: 279 ns, 1.00× the fastest +279 ns +SHA-256, 1350 B, aws-lc-rs: 312 ns, 1.12× the fastest +312 ns +SHA-256, 1350 B, ring: 304 ns, 1.09× the fastest +304 ns +SHA-256, 1350 B, RustCrypto + dalek: 296 ns, 1.06× the fastest +296 ns +SHA-256, 1350 B, graviola: 297 ns, 1.06× the fastest +297 ns +SHA-256, 1350 B, libcrux: 2.31 µs, 8.25× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +2.31 µs ✓ +SHA-256, 1350 B, OpenSSL: 415 ns, 1.48× the fastest +415 ns SHA-256, 16 KB -SHA-256, 16 KB, rind: 3.21 µs, 1.00× the fastest -3.21 µs -SHA-256, 16 KB, aws-lc-rs: 3.23 µs, 1.00× the fastest -3.23 µs -SHA-256, 16 KB, ring: 3.22 µs, 1.00× the fastest -3.22 µs -SHA-256, 16 KB, RustCrypto + dalek: 3.21 µs, 1.00× the fastest -3.21 µs -SHA-256, 16 KB, graviola: 3.22 µs, 1.00× the fastest -3.22 µs -SHA-256, 16 KB, libcrux: 26.37 µs, 8.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -26.37 µs ✓ -SHA-256, 16 KB, OpenSSL: 3.38 µs, 1.05× the fastest -3.38 µs +SHA-256, 16 KB, rind: 3.24 µs, 1.00× the fastest +3.24 µs +SHA-256, 16 KB, aws-lc-rs: 3.28 µs, 1.01× the fastest +3.28 µs +SHA-256, 16 KB, ring: 3.28 µs, 1.01× the fastest +3.28 µs +SHA-256, 16 KB, RustCrypto + dalek: 3.26 µs, 1.01× the fastest +3.26 µs +SHA-256, 16 KB, graviola: 3.27 µs, 1.01× the fastest +3.27 µs +SHA-256, 16 KB, libcrux: 26.81 µs, 8.27× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +26.81 µs ✓ +SHA-256, 16 KB, OpenSSL: 3.39 µs, 1.05× the fastest +3.39 µs SHA-512, 64 B -SHA-512, 64 B, rind: 132 ns, 1.05× the fastest -132 ns -SHA-512, 64 B, aws-lc-rs: 133 ns, 1.06× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -133 ns ✓ -SHA-512, 64 B, ring: 139 ns, 1.11× the fastest -139 ns -SHA-512, 64 B, RustCrypto + dalek: 125 ns, 1.00× the fastest -125 ns -SHA-512, 64 B, graviola: 146 ns, 1.17× the fastest -146 ns -SHA-512, 64 B, libcrux: 163 ns, 1.30× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -163 ns ✓ -SHA-512, 64 B, OpenSSL: 227 ns, 1.81× the fastest -227 ns +SHA-512, 64 B, rind: 60 ns, 1.00× the fastest +60 ns +SHA-512, 64 B, aws-lc-rs: 136 ns, 2.27× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +136 ns ✓ +SHA-512, 64 B, ring: 142 ns, 2.36× the fastest +142 ns +SHA-512, 64 B, RustCrypto + dalek: 120 ns, 1.99× the fastest +120 ns +SHA-512, 64 B, graviola: 150 ns, 2.49× the fastest +150 ns +SHA-512, 64 B, libcrux: 167 ns, 2.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +167 ns ✓ +SHA-512, 64 B, OpenSSL: 233 ns, 3.87× the fastest +233 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 1.23 µs, 1.05× the fastest -1.23 µs -SHA-512, 1350 B, aws-lc-rs: 1.26 µs, 1.08× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -1.26 µs ✓ -SHA-512, 1350 B, ring: 1.26 µs, 1.07× the fastest -1.26 µs -SHA-512, 1350 B, RustCrypto + dalek: 1.17 µs, 1.00× the fastest -1.17 µs -SHA-512, 1350 B, graviola: 1.50 µs, 1.28× the fastest -1.50 µs -SHA-512, 1350 B, libcrux: 1.72 µs, 1.47× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -1.72 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.19 µs, 1.02× the fastest -1.19 µs +SHA-512, 1350 B, rind: 470 ns, 1.00× the fastest +470 ns +SHA-512, 1350 B, aws-lc-rs: 1.27 µs, 2.69× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +1.27 µs ✓ +SHA-512, 1350 B, ring: 1.26 µs, 2.69× the fastest +1.26 µs +SHA-512, 1350 B, RustCrypto + dalek: 1.18 µs, 2.50× the fastest +1.18 µs +SHA-512, 1350 B, graviola: 1.51 µs, 3.21× the fastest +1.51 µs +SHA-512, 1350 B, libcrux: 1.69 µs, 3.59× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +1.69 µs ✓ +SHA-512, 1350 B, OpenSSL: 1.20 µs, 2.55× the fastest +1.20 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 14.31 µs, 1.16× the fastest -14.31 µs -SHA-512, 16 KB, aws-lc-rs: 14.09 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -14.09 µs ✓ -SHA-512, 16 KB, ring: 14.09 µs, 1.15× the fastest -14.09 µs -SHA-512, 16 KB, RustCrypto + dalek: 13.36 µs, 1.09× the fastest -13.36 µs -SHA-512, 16 KB, graviola: 17.62 µs, 1.43× the fastest -17.62 µs -SHA-512, 16 KB, libcrux: 19.80 µs, 1.61× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -19.80 µs ✓ -SHA-512, 16 KB, OpenSSL: 12.30 µs, 1.00× the fastest -12.30 µs +SHA-512, 16 KB, rind: 2.68 µs, 1.00× the fastest +2.68 µs +SHA-512, 16 KB, aws-lc-rs: 14.32 µs, 5.34× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +14.32 µs ✓ +SHA-512, 16 KB, ring: 14.36 µs, 5.35× the fastest +14.36 µs +SHA-512, 16 KB, RustCrypto + dalek: 13.55 µs, 5.05× the fastest +13.55 µs +SHA-512, 16 KB, graviola: 17.96 µs, 6.70× the fastest +17.96 µs +SHA-512, 16 KB, libcrux: 20.01 µs, 7.46× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +20.01 µs ✓ +SHA-512, 16 KB, OpenSSL: 12.51 µs, 4.66× the fastest +12.51 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 87 ns, 1.00× the fastest -87 ns -HMAC-SHA256, 64 B, aws-lc-rs: 177 ns, 2.03× the fastest -177 ns -HMAC-SHA256, 64 B, ring: 143 ns, 1.64× the fastest -143 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 103 ns, 1.18× the fastest -103 ns -HMAC-SHA256, 64 B, graviola: 109 ns, 1.26× the fastest -109 ns -HMAC-SHA256, 64 B, libcrux: 547 ns, 6.27× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -547 ns ✓ -HMAC-SHA256, 64 B, OpenSSL: 1.54 µs, 17.65× the fastest -1.54 µs +HMAC-SHA256, 64 B, rind: 75 ns, 1.00× the fastest +75 ns +HMAC-SHA256, 64 B, aws-lc-rs: 180 ns, 2.38× the fastest +180 ns +HMAC-SHA256, 64 B, ring: 145 ns, 1.93× the fastest +145 ns +HMAC-SHA256, 64 B, RustCrypto + dalek: 104 ns, 1.39× the fastest +104 ns +HMAC-SHA256, 64 B, graviola: 115 ns, 1.52× the fastest +115 ns +HMAC-SHA256, 64 B, libcrux: 536 ns, 7.12× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +536 ns ✓ +HMAC-SHA256, 64 B, OpenSSL: 1.56 µs, 20.76× the fastest +1.56 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 340 ns, 1.00× the fastest -340 ns -HMAC-SHA256, 1350 B, aws-lc-rs: 433 ns, 1.27× the fastest -433 ns -HMAC-SHA256, 1350 B, ring: 396 ns, 1.16× the fastest -396 ns -HMAC-SHA256, 1350 B, RustCrypto + dalek: 355 ns, 1.04× the fastest -355 ns -HMAC-SHA256, 1350 B, graviola: 364 ns, 1.07× the fastest -364 ns -HMAC-SHA256, 1350 B, libcrux: 2.78 µs, 8.18× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -2.78 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 1.80 µs, 5.29× the fastest -1.80 µs +HMAC-SHA256, 1350 B, rind: 327 ns, 1.00× the fastest +327 ns +HMAC-SHA256, 1350 B, aws-lc-rs: 434 ns, 1.33× the fastest +434 ns +HMAC-SHA256, 1350 B, ring: 399 ns, 1.22× the fastest +399 ns +HMAC-SHA256, 1350 B, RustCrypto + dalek: 358 ns, 1.09× the fastest +358 ns +HMAC-SHA256, 1350 B, graviola: 363 ns, 1.11× the fastest +363 ns +HMAC-SHA256, 1350 B, libcrux: 2.66 µs, 8.15× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +2.66 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 1.83 µs, 5.60× the fastest +1.83 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 192 ns, 1.00× the fastest -192 ns -HKDF-SHA256 extract and expand, aws-lc-rs: 290 ns, 1.51× the fastest -290 ns -HKDF-SHA256 extract and expand, ring: 300 ns, 1.56× the fastest -300 ns -HKDF-SHA256 extract and expand, RustCrypto + dalek: 221 ns, 1.15× the fastest -221 ns -HKDF-SHA256 extract and expand, libcrux: 971 ns, 5.05× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -971 ns ✓ -HKDF-SHA256 extract and expand, OpenSSL: 1.73 µs, 8.99× the fastest -1.73 µs +HKDF-SHA256 extract and expand, rind: 152 ns, 1.00× the fastest +152 ns +HKDF-SHA256 extract and expand, aws-lc-rs: 288 ns, 1.90× the fastest +288 ns +HKDF-SHA256 extract and expand, ring: 305 ns, 2.01× the fastest +305 ns +HKDF-SHA256 extract and expand, RustCrypto + dalek: 223 ns, 1.47× the fastest +223 ns +HKDF-SHA256 extract and expand, libcrux: 965 ns, 6.36× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +965 ns ✓ +HKDF-SHA256 extract and expand, OpenSSL: 1.76 µs, 11.57× the fastest +1.76 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 81 ns, 1.00× the fastest -81 ns -HKDF-SHA256 expand, aws-lc-rs: 126 ns, 1.55× the fastest +HKDF-SHA256 expand, rind: 47 ns, 1.00× the fastest +47 ns +HKDF-SHA256 expand, aws-lc-rs: 126 ns, 2.70× the fastest 126 ns -HKDF-SHA256 expand, ring: 120 ns, 1.48× the fastest -120 ns -HKDF-SHA256 expand, RustCrypto + dalek: 84 ns, 1.03× the fastest -84 ns -HKDF-SHA256 expand, libcrux: 456 ns, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -456 ns ✓ -HKDF-SHA256 expand, OpenSSL: 1.24 µs, 15.25× the fastest -1.24 µs +HKDF-SHA256 expand, ring: 122 ns, 2.63× the fastest +122 ns +HKDF-SHA256 expand, RustCrypto + dalek: 85 ns, 1.83× the fastest +85 ns +HKDF-SHA256 expand, libcrux: 484 ns, 10.38× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +484 ns ✓ +HKDF-SHA256 expand, OpenSSL: 1.25 µs, 26.79× the fastest +1.25 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 400.25 µs, 1.19× the fastest -400.25 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 349.67 µs, 1.04× the fastest -349.67 µs -RSA-2048 PKCS#1 sign, ring: 336.09 µs, 1.00× the fastest -336.09 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 592.98 µs, 1.76× the fastest -592.98 µs -RSA-2048 PKCS#1 sign, graviola: 341.78 µs, 1.02× the fastest -341.78 µs -RSA-2048 PKCS#1 sign, OpenSSL: 389.03 µs, 1.16× the fastest -389.03 µs +RSA-2048 PKCS#1 sign, rind: 348.43 µs, 1.02× the fastest +348.43 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 349.47 µs, 1.02× the fastest +349.47 µs +RSA-2048 PKCS#1 sign, ring: 341.11 µs, 1.00× the fastest +341.11 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 588.67 µs, 1.73× the fastest +588.67 µs +RSA-2048 PKCS#1 sign, graviola: 343.91 µs, 1.01× the fastest +343.91 µs +RSA-2048 PKCS#1 sign, OpenSSL: 397.72 µs, 1.17× the fastest +397.72 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 8.99 µs, 1.00× the fastest -8.99 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 10.99 µs, 1.22× the fastest -10.99 µs -RSA-2048 PKCS#1 verify, ring: 12.56 µs, 1.40× the fastest -12.56 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 29.03 µs, 3.23× the fastest -29.03 µs -RSA-2048 PKCS#1 verify, graviola: 13.94 µs, 1.55× the fastest -13.94 µs -RSA-2048 PKCS#1 verify, OpenSSL: 15.50 µs, 1.72× the fastest -15.50 µs +RSA-2048 PKCS#1 verify, rind: 8.97 µs, 1.00× the fastest +8.97 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 10.86 µs, 1.21× the fastest +10.86 µs +RSA-2048 PKCS#1 verify, ring: 12.70 µs, 1.41× the fastest +12.70 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 29.41 µs, 3.28× the fastest +29.41 µs +RSA-2048 PKCS#1 verify, graviola: 14.06 µs, 1.57× the fastest +14.06 µs +RSA-2048 PKCS#1 verify, OpenSSL: 15.59 µs, 1.74× the fastest +15.59 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 393.47 µs, 1.17× the fastest -393.47 µs -RSA-2048 PSS sign, aws-lc-rs: 353.37 µs, 1.05× the fastest -353.37 µs -RSA-2048 PSS sign, ring: 336.61 µs, 1.00× the fastest -336.61 µs -RSA-2048 PSS sign, RustCrypto + dalek: 582.39 µs, 1.73× the fastest -582.39 µs -RSA-2048 PSS sign, graviola: 336.99 µs, 1.00× the fastest -336.99 µs -RSA-2048 PSS sign, libcrux: 3.76 ms, 11.16× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -3.76 ms ✓ -RSA-2048 PSS sign, OpenSSL: 399.27 µs, 1.19× the fastest -399.27 µs +RSA-2048 PSS sign, rind: 346.52 µs, 1.01× the fastest +346.52 µs +RSA-2048 PSS sign, aws-lc-rs: 350.45 µs, 1.03× the fastest +350.45 µs +RSA-2048 PSS sign, ring: 341.45 µs, 1.00× the fastest +341.45 µs +RSA-2048 PSS sign, RustCrypto + dalek: 588.33 µs, 1.72× the fastest +588.33 µs +RSA-2048 PSS sign, graviola: 342.67 µs, 1.00× the fastest +342.67 µs +RSA-2048 PSS sign, libcrux: 4.10 ms, 12.00× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +4.10 ms ✓ +RSA-2048 PSS sign, OpenSSL: 395.81 µs, 1.16× the fastest +395.81 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 9.45 µs, 1.00× the fastest -9.45 µs -RSA-2048 PSS verify, aws-lc-rs: 11.06 µs, 1.17× the fastest -11.06 µs -RSA-2048 PSS verify, ring: 13.17 µs, 1.39× the fastest -13.17 µs -RSA-2048 PSS verify, RustCrypto + dalek: 35.09 µs, 3.71× the fastest -35.09 µs -RSA-2048 PSS verify, graviola: 14.43 µs, 1.53× the fastest -14.43 µs -RSA-2048 PSS verify, libcrux: 247.95 µs, 26.25× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -247.95 µs ✓ -RSA-2048 PSS verify, OpenSSL: 16.29 µs, 1.72× the fastest -16.29 µs +RSA-2048 PSS verify, rind: 9.18 µs, 1.00× the fastest +9.18 µs +RSA-2048 PSS verify, aws-lc-rs: 11.17 µs, 1.22× the fastest +11.17 µs +RSA-2048 PSS verify, ring: 13.31 µs, 1.45× the fastest +13.31 µs +RSA-2048 PSS verify, RustCrypto + dalek: 35.62 µs, 3.88× the fastest +35.62 µs +RSA-2048 PSS verify, graviola: 14.44 µs, 1.57× the fastest +14.44 µs +RSA-2048 PSS verify, libcrux: 252.13 µs, 27.46× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +252.13 µs ✓ +RSA-2048 PSS verify, OpenSSL: 16.36 µs, 1.78× the fastest +16.36 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 6.47 µs, 1.00× the fastest -6.47 µs -ML-KEM-768 key generation, aws-lc-rs: 8.18 µs, 1.26× the fastest -8.18 µs -ML-KEM-768 key generation, RustCrypto + dalek: 40.16 µs, 6.21× the fastest -40.16 µs -ML-KEM-768 key generation, graviola: 7.68 µs, 1.19× the fastest -7.68 µs -ML-KEM-768 key generation, libcrux: 15.00 µs, 2.32× the fastest -15.00 µs -ML-KEM-768 key generation, OpenSSL: 19.58 µs, 3.03× the fastest -19.58 µs +ML-KEM-768 key generation, rind: 6.45 µs, 1.00× the fastest +6.45 µs +ML-KEM-768 key generation, aws-lc-rs: 8.27 µs, 1.28× the fastest +8.27 µs +ML-KEM-768 key generation, RustCrypto + dalek: 40.26 µs, 6.24× the fastest +40.26 µs +ML-KEM-768 key generation, graviola: 7.67 µs, 1.19× the fastest +7.67 µs +ML-KEM-768 key generation, libcrux: 15.15 µs, 2.35× the fastest +15.15 µs +ML-KEM-768 key generation, OpenSSL: 19.80 µs, 3.07× the fastest +19.80 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 6.71 µs, 1.00× the fastest -6.71 µs -ML-KEM-768 encapsulate, aws-lc-rs: 8.59 µs, 1.28× the fastest -8.59 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 42.13 µs, 6.28× the fastest -42.13 µs -ML-KEM-768 encapsulate, graviola: 9.13 µs, 1.36× the fastest -9.13 µs -ML-KEM-768 encapsulate, libcrux: 12.80 µs, 1.91× the fastest -12.80 µs -ML-KEM-768 encapsulate, OpenSSL: 18.57 µs, 2.77× the fastest -18.57 µs +ML-KEM-768 encapsulate, rind: 6.65 µs, 1.00× the fastest +6.65 µs +ML-KEM-768 encapsulate, aws-lc-rs: 8.68 µs, 1.31× the fastest +8.68 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 41.71 µs, 6.27× the fastest +41.71 µs +ML-KEM-768 encapsulate, graviola: 9.11 µs, 1.37× the fastest +9.11 µs +ML-KEM-768 encapsulate, libcrux: 12.94 µs, 1.94× the fastest +12.94 µs +ML-KEM-768 encapsulate, OpenSSL: 18.77 µs, 2.82× the fastest +18.77 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 4.83 µs, 1.00× the fastest -4.83 µs -ML-KEM-768 decapsulate, aws-lc-rs: 8.92 µs, 1.85× the fastest -8.92 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 55.21 µs, 11.43× the fastest -55.21 µs -ML-KEM-768 decapsulate, graviola: 6.56 µs, 1.36× the fastest -6.56 µs -ML-KEM-768 decapsulate, libcrux: 13.50 µs, 2.79× the fastest -13.50 µs -ML-KEM-768 decapsulate, OpenSSL: 16.07 µs, 3.33× the fastest -16.07 µs +ML-KEM-768 decapsulate, rind: 4.69 µs, 1.00× the fastest +4.69 µs +ML-KEM-768 decapsulate, aws-lc-rs: 9.02 µs, 1.92× the fastest +9.02 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 54.19 µs, 11.55× the fastest +54.19 µs +ML-KEM-768 decapsulate, graviola: 6.59 µs, 1.41× the fastest +6.59 µs +ML-KEM-768 decapsulate, libcrux: 13.44 µs, 2.87× the fastest +13.44 µs +ML-KEM-768 decapsulate, OpenSSL: 16.05 µs, 3.42× the fastest +16.05 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 100.00 µs, 1.00× the fastest -100.00 µs -P-384 ECDH, aws-lc-rs: 111.30 µs, 1.11× the fastest -111.30 µs -P-384 ECDH, ring: 370.25 µs, 3.70× the fastest -370.25 µs -P-384 ECDH, RustCrypto + dalek: 430.31 µs, 4.30× the fastest -430.31 µs -P-384 ECDH, graviola: 171.49 µs, 1.71× the fastest -171.49 µs -P-384 ECDH, OpenSSL: 262.12 µs, 2.62× the fastest -262.12 µs +P-384 ECDH, rind: 100.08 µs, 1.00× the fastest +100.08 µs +P-384 ECDH, aws-lc-rs: 111.11 µs, 1.11× the fastest +111.11 µs +P-384 ECDH, ring: 369.71 µs, 3.69× the fastest +369.71 µs +P-384 ECDH, RustCrypto + dalek: 401.25 µs, 4.01× the fastest +401.25 µs +P-384 ECDH, graviola: 170.94 µs, 1.71× the fastest +170.94 µs +P-384 ECDH, OpenSSL: 264.84 µs, 2.65× the fastest +264.84 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 25.54 µs, 1.00× the fastest -25.54 µs -P-384 ECDSA sign, aws-lc-rs: 46.52 µs, 1.82× the fastest +P-384 ECDSA sign, rind: 23.53 µs, 1.00× the fastest +23.53 µs +P-384 ECDSA sign, aws-lc-rs: 46.52 µs, 1.98× the fastest 46.52 µs -P-384 ECDSA sign, ring: 198.39 µs, 7.77× the fastest -198.39 µs -P-384 ECDSA sign, RustCrypto + dalek: 104.37 µs, 4.09× the fastest -104.37 µs -P-384 ECDSA sign, graviola: 89.42 µs, 3.50× the fastest -89.42 µs -P-384 ECDSA sign, OpenSSL: 89.07 µs, 3.49× the fastest -89.07 µs +P-384 ECDSA sign, ring: 200.86 µs, 8.54× the fastest +200.86 µs +P-384 ECDSA sign, RustCrypto + dalek: 86.86 µs, 3.69× the fastest +86.86 µs +P-384 ECDSA sign, graviola: 90.69 µs, 3.85× the fastest +90.69 µs +P-384 ECDSA sign, OpenSSL: 89.64 µs, 3.81× the fastest +89.64 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 98.58 µs, 1.00× the fastest -98.58 µs -P-384 ECDSA verify, aws-lc-rs: 115.28 µs, 1.17× the fastest -115.28 µs -P-384 ECDSA verify, ring: 359.23 µs, 3.64× the fastest -359.23 µs -P-384 ECDSA verify, RustCrypto + dalek: 360.90 µs, 3.66× the fastest -360.90 µs -P-384 ECDSA verify, graviola: 168.94 µs, 1.71× the fastest -168.94 µs -P-384 ECDSA verify, OpenSSL: 215.87 µs, 2.19× the fastest -215.87 µs +P-384 ECDSA verify, rind: 98.87 µs, 1.00× the fastest +98.87 µs +P-384 ECDSA verify, aws-lc-rs: 116.66 µs, 1.18× the fastest +116.66 µs +P-384 ECDSA verify, ring: 360.29 µs, 3.64× the fastest +360.29 µs +P-384 ECDSA verify, RustCrypto + dalek: 360.21 µs, 3.64× the fastest +360.21 µs +P-384 ECDSA verify, graviola: 167.40 µs, 1.69× the fastest +167.40 µs +P-384 ECDSA verify, OpenSSL: 215.86 µs, 2.18× the fastest +215.86 µs P-521 ECDH -P-521 ECDH, rind: 160.40 µs, 1.00× the fastest -160.40 µs -P-521 ECDH, aws-lc-rs: 171.49 µs, 1.07× the fastest -171.49 µs -P-521 ECDH, RustCrypto + dalek: 433.75 µs, 2.70× the fastest -433.75 µs -P-521 ECDH, OpenSSL: 274.16 µs, 1.71× the fastest -274.16 µs +P-521 ECDH, rind: 160.77 µs, 1.00× the fastest +160.77 µs +P-521 ECDH, aws-lc-rs: 170.98 µs, 1.06× the fastest +170.98 µs +P-521 ECDH, RustCrypto + dalek: 431.17 µs, 2.68× the fastest +431.17 µs +P-521 ECDH, OpenSSL: 276.21 µs, 1.72× the fastest +276.21 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 43.70 µs, 1.00× the fastest -43.70 µs -P-521 ECDSA sign, aws-lc-rs: 88.46 µs, 2.02× the fastest -88.46 µs -P-521 ECDSA sign, RustCrypto + dalek: 94.28 µs, 2.16× the fastest -94.28 µs -P-521 ECDSA sign, OpenSSL: 127.75 µs, 2.92× the fastest -127.75 µs +P-521 ECDSA sign, rind: 40.56 µs, 1.00× the fastest +40.56 µs +P-521 ECDSA sign, aws-lc-rs: 89.64 µs, 2.21× the fastest +89.64 µs +P-521 ECDSA sign, RustCrypto + dalek: 95.29 µs, 2.35× the fastest +95.29 µs +P-521 ECDSA sign, OpenSSL: 129.20 µs, 3.19× the fastest +129.20 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 145.01 µs, 1.00× the fastest -145.01 µs -P-521 ECDSA verify, aws-lc-rs: 184.47 µs, 1.27× the fastest -184.47 µs -P-521 ECDSA verify, RustCrypto + dalek: 359.53 µs, 2.48× the fastest -359.53 µs -P-521 ECDSA verify, OpenSSL: 261.07 µs, 1.80× the fastest -261.07 µs +P-521 ECDSA verify, rind: 147.09 µs, 1.00× the fastest +147.09 µs +P-521 ECDSA verify, aws-lc-rs: 186.61 µs, 1.27× the fastest +186.61 µs +P-521 ECDSA verify, RustCrypto + dalek: 359.57 µs, 2.44× the fastest +359.57 µs +P-521 ECDSA verify, OpenSSL: 267.51 µs, 1.82× the fastest +267.51 µs diff --git a/benchmarks/gaps.toml b/benchmarks/gaps.toml index 4f4eea354..417abe7a9 100644 --- a/benchmarks/gaps.toml +++ b/benchmarks/gaps.toml @@ -13,35 +13,25 @@ # quest the speed quest that closes it, or # reason why it stays -[[gap]] -operations = ["rsa2048-pkcs1-sha256-sign", "rsa2048-pss-sha256-sign", "rustls-full-handshake-key/rsa-2048"] -on = ["nixos", "desktop", "nixos2"] -quest = "/quest/m2/speed/x86-rsa2048-sign.md" - [[gap]] operations = ["sha256/64B"] -on = ["nixos", "desktop"] -reason = "Narrowed by [#352](https://github.com/moq-dev/rind/pull/352), after this data: on the SHA extensions the last block is padded and the digest written in registers, and `digest::Context::finish` takes `&mut self`, so it no longer copies the context. Interleaved runs on `nixos` measured rind at 1.16× RustCrypto's time and 1.03× graviola's at 64 B, from 1.44×, and ahead of both at 32 B; `digest::digest` beats RustCrypto at 64 B. Most of the rest is the context's wipe on drop, which aws-lc does and RustCrypto does not: a build without it measured level with RustCrypto." - -[[gap]] -operations = ["sha512/16KB"] -on = ["nixos", "desktop", "nixos2"] -reason = "Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: CPUs with AVX2 run OpenSSL's AVX2 routine, the one OpenSSL runs on `nixos2`, and those with the SHA512 instructions OpenSSL's routine for them. Interleaved runs measured rind at 0.96× OpenSSL's time on `nixos` and 0.22× on `desktop`. The next refresh drops this entry." +on = ["nixos"] +reason = "Narrowed by [#352](https://github.com/moq-dev/rind/pull/352): on the SHA extensions the last block is padded and the digest written in registers, and `digest::Context::finish` takes `&mut self`, so it no longer copies the context. Most of the rest was the context's wipe on drop, which a build without it measured level with RustCrypto, and [#394](https://github.com/moq-dev/rind/pull/394) removed it after this data. The next refresh rechecks it." [[gap]] -operations = ["sha256/16KB"] -on = ["nixos2"] -reason = "Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: CPUs with AVX2 but without the SHA extensions run OpenSSL's AVX2 routine, the one OpenSSL runs on `nixos2`. The next refresh drops this entry." +operations = ["rsa2048-pkcs1-sha256-sign"] +on = ["nixos"] +reason = "Noise: other work kept 5 CPUs busy during this run, in which PSS signing, the same exponentiation, measured 0.95× graviola's time. Interleaved runs on `nixos` the same morning measured rind's PKCS#1 signing at 436 to 446 µs against graviola's 432 to 542 µs and ring's 459 to 568 µs. The next refresh rechecks it." [[gap]] -operations = ["sha512/1350B"] -on = ["nixos"] -reason = "Closed by [#353](https://github.com/moq-dev/rind/pull/353), after this data: Zen 3 runs OpenSSL's AVX2 routine rather than aws-lc's scalar one, which interleaved runs measured at 0.84× OpenSSL's time at this size. The next refresh drops this entry." +operations = ["rustls-bulk/aes128-gcm", "xchacha20poly1305/1350B"] +on = ["desktop"] +reason = "Noise: other work kept 5 CPUs busy during this run. The run before it measured 0.99× ring's and 0.97× aws-lc-rs's time, and neither shows on another host. The next refresh rechecks both." [[gap]] -operations = ["ed25519-verify", "mlkem768-encaps"] -on = ["nixos2"] -reason = "From an older run than the other hosts', before [#339](https://github.com/moq-dev/rind/pull/339) reworked Ed25519 for its proof. Neither shows on the other hosts, and the next refresh rechecks both." +operations = ["ed25519-verify"] +on = ["ovh-iad", "ovh-sea"] +reason = "These VPSes' virtual CPUs hide ADX, as CPUs older than Broadwell and Zen lack it, and there rind runs s2n-bignum's verified `_alt` routines, which RustCrypto's AVX2 backend beats." [[gap]] operations = ["p256-ecdsa-verify/*"] diff --git a/benchmarks/headline-dark.svg b/benchmarks/headline-dark.svg index 622df5ac0..7e42cfd2d 100644 --- a/benchmarks/headline-dark.svg +++ b/benchmarks/headline-dark.svg @@ -1,120 +1,114 @@ Time over rind's for common TLS and QUIC operations and a rustls client's build Time over rind's: shorter is faster -The geometric mean over nixos, desktop, and nixos2 (x86_64), with a whisker across them. BENCHMARKS.md has every time. +The geometric mean over nixos, desktop, nixos2, ovh-iad, and ovh-sea (x86_64), with a whisker across them. BENCHMARKS.md has every time. full handshake, X25519MLKEM768 rind -full handshake, X25519MLKEM768, rind: nixos 239.83 µs, 1.00× rind's; desktop 176.38 µs, 1.00× rind's; nixos2 311.29 µs, 1.00× rind's -1× +full handshake, X25519MLKEM768, rind: nixos 260.78 µs, 1.00× rind's; desktop 174.97 µs, 1.00× rind's; nixos2 302.43 µs, 1.00× rind's; ovh-iad 676.16 µs, 1.00× rind's; ovh-sea 585.86 µs, 1.00× rind's +1× aws-lc-rs -full handshake, X25519MLKEM768, aws-lc-rs: nixos 308.49 µs, 1.29× rind's; desktop 237.01 µs, 1.34× rind's; nixos2 452.02 µs, 1.45× rind's - - +full handshake, X25519MLKEM768, aws-lc-rs: nixos 331.87 µs, 1.27× rind's; desktop 235.60 µs, 1.35× rind's; nixos2 458.06 µs, 1.51× rind's; ovh-iad 776.76 µs, 1.15× rind's; ovh-sea 682.34 µs, 1.16× rind's + + -1.36× +1.28× ring not offered AES-128-GCM seal, 1350 B rind -AES-128-GCM seal, 1350 B, rind: nixos 170 ns, 1.00× rind's; desktop 94 ns, 1.00× rind's; nixos2 264 ns, 1.00× rind's -1× +AES-128-GCM seal, 1350 B, rind: nixos 165 ns, 1.00× rind's; desktop 94 ns, 1.00× rind's; nixos2 246 ns, 1.00× rind's; ovh-iad 398 ns, 1.00× rind's; ovh-sea 387 ns, 1.00× rind's +1× aws-lc-rs -AES-128-GCM seal, 1350 B, aws-lc-rs: nixos 289 ns, 1.70× rind's; desktop 152 ns, 1.62× rind's; nixos2 287 ns, 1.09× rind's - - +AES-128-GCM seal, 1350 B, aws-lc-rs: nixos 291 ns, 1.77× rind's; desktop 149 ns, 1.59× rind's; nixos2 285 ns, 1.16× rind's; ovh-iad 500 ns, 1.26× rind's; ovh-sea 445 ns, 1.15× rind's + + -1.44× +1.36× ring -AES-128-GCM seal, 1350 B, ring: nixos 184 ns, 1.08× rind's; desktop 119 ns, 1.27× rind's; nixos2 280 ns, 1.06× rind's - - - -1.13× +AES-128-GCM seal, 1350 B, ring: nixos 191 ns, 1.16× rind's; desktop 118 ns, 1.26× rind's; nixos2 277 ns, 1.13× rind's; ovh-iad 463 ns, 1.17× rind's; ovh-sea 427 ns, 1.10× rind's + + + +1.16× ChaCha20-Poly1305 seal, 1350 B rind -ChaCha20-Poly1305 seal, 1350 B, rind: nixos 530 ns, 1.00× rind's; desktop 447 ns, 1.00× rind's; nixos2 691 ns, 1.00× rind's -1× +ChaCha20-Poly1305 seal, 1350 B, rind: nixos 533 ns, 1.00× rind's; desktop 441 ns, 1.00× rind's; nixos2 718 ns, 1.00× rind's; ovh-iad 1.08 µs, 1.00× rind's; ovh-sea 1.03 µs, 1.00× rind's +1× aws-lc-rs -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: nixos 535 ns, 1.01× rind's; desktop 453 ns, 1.01× rind's; nixos2 700 ns, 1.01× rind's - - +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: nixos 532 ns, 1.00× rind's; desktop 453 ns, 1.03× rind's; nixos2 755 ns, 1.05× rind's; ovh-iad 1.07 µs, 1.00× rind's; ovh-sea 1.06 µs, 1.03× rind's + + -1.01× +1.02× ring -ChaCha20-Poly1305 seal, 1350 B, ring: nixos 531 ns, 1.00× rind's; desktop 446 ns, 1.00× rind's; nixos2 686 ns, 0.99× rind's - - - -1.00× +ChaCha20-Poly1305 seal, 1350 B, ring: nixos 527 ns, 0.99× rind's; desktop 447 ns, 1.01× rind's; nixos2 714 ns, 1.00× rind's; ovh-iad 1.07 µs, 0.99× rind's; ovh-sea 1.04 µs, 1.01× rind's + + + +1.00× X25519 rind -X25519, rind: nixos 24.80 µs, 1.00× rind's; desktop 17.94 µs, 1.00× rind's; nixos2 26.86 µs, 1.00× rind's -1× +X25519, rind: nixos 23.97 µs, 1.00× rind's; desktop 19.68 µs, 1.00× rind's; nixos2 25.00 µs, 1.00× rind's; ovh-iad 50.92 µs, 1.00× rind's; ovh-sea 49.74 µs, 1.00× rind's +1× aws-lc-rs -X25519, aws-lc-rs: nixos 25.24 µs, 1.02× rind's; desktop 19.14 µs, 1.07× rind's; nixos2 33.12 µs, 1.23× rind's - - - -1.10× +X25519, aws-lc-rs: nixos 24.61 µs, 1.03× rind's; desktop 19.54 µs, 0.99× rind's; nixos2 30.89 µs, 1.24× rind's; ovh-iad 53.04 µs, 1.04× rind's; ovh-sea 50.78 µs, 1.02× rind's + + + +1.06× ring -X25519, ring: nixos 47.40 µs, 1.91× rind's; desktop 35.19 µs, 1.96× rind's; nixos2 55.23 µs, 2.06× rind's - - +X25519, ring: nixos 46.72 µs, 1.95× rind's; desktop 35.63 µs, 1.81× rind's; nixos2 53.60 µs, 2.14× rind's; ovh-iad 80.26 µs, 1.58× rind's; ovh-sea 75.97 µs, 1.53× rind's + + -1.98× +1.79× P-256 ECDSA sign rind -P-256 ECDSA sign, rind: nixos 8.98 µs, 1.00× rind's; desktop 7.08 µs, 1.00× rind's; nixos2 15.72 µs, 1.00× rind's -1× +P-256 ECDSA sign, rind: nixos 9.62 µs, 1.00× rind's; desktop 6.84 µs, 1.00× rind's; nixos2 13.11 µs, 1.00× rind's; ovh-iad 23.25 µs, 1.00× rind's; ovh-sea 21.44 µs, 1.00× rind's +1× aws-lc-rs -P-256 ECDSA sign, aws-lc-rs: nixos 11.96 µs, 1.33× rind's; desktop 12.42 µs, 1.75× rind's; nixos2 22.35 µs, 1.42× rind's - - +P-256 ECDSA sign, aws-lc-rs: nixos 12.66 µs, 1.32× rind's; desktop 12.33 µs, 1.80× rind's; nixos2 19.80 µs, 1.51× rind's; ovh-iad 25.45 µs, 1.09× rind's; ovh-sea 23.66 µs, 1.10× rind's + + -1.49× +1.34× ring -P-256 ECDSA sign, ring: nixos 12.76 µs, 1.42× rind's; desktop 12.38 µs, 1.75× rind's; nixos2 16.56 µs, 1.05× rind's - - - -1.38× +P-256 ECDSA sign, ring: nixos 13.68 µs, 1.42× rind's; desktop 12.24 µs, 1.79× rind's; nixos2 14.86 µs, 1.13× rind's; ovh-iad 26.75 µs, 1.15× rind's; ovh-sea 25.02 µs, 1.17× rind's + + + +1.31× RSA-2048 PSS sign rind -RSA-2048 PSS sign, rind: nixos 475.37 µs, 1.00× rind's; desktop 393.47 µs, 1.00× rind's; nixos2 576.25 µs, 1.00× rind's -1× +RSA-2048 PSS sign, rind: nixos 424.30 µs, 1.00× rind's; desktop 346.52 µs, 1.00× rind's; nixos2 445.92 µs, 1.00× rind's; ovh-iad 785.33 µs, 1.00× rind's; ovh-sea 743.83 µs, 1.00× rind's +1× aws-lc-rs -RSA-2048 PSS sign, aws-lc-rs: nixos 436.71 µs, 0.92× rind's; desktop 353.37 µs, 0.90× rind's; nixos2 459.05 µs, 0.80× rind's - - - -0.87× +RSA-2048 PSS sign, aws-lc-rs: nixos 481.00 µs, 1.13× rind's; desktop 350.45 µs, 1.01× rind's; nixos2 461.87 µs, 1.04× rind's; ovh-iad 842.38 µs, 1.07× rind's; ovh-sea 772.63 µs, 1.04× rind's + + + +1.06× ring -RSA-2048 PSS sign, ring: nixos 424.64 µs, 0.89× rind's; desktop 336.61 µs, 0.86× rind's; nixos2 440.44 µs, 0.76× rind's - - - -0.84× +RSA-2048 PSS sign, ring: nixos 471.53 µs, 1.11× rind's; desktop 341.45 µs, 0.99× rind's; nixos2 437.28 µs, 0.98× rind's; ovh-iad 1.13 ms, 1.44× rind's; ovh-sea 993.35 µs, 1.34× rind's + + + +1.16× cold build of a rustls client rind -cold build of a rustls client, rind: nixos 4.8 s, 1.00× rind's; desktop 3.5 s, 1.00× rind's; nixos2 16.6 s, 1.00× rind's -1× +cold build of a rustls client, rind: nixos2 11.3 s, 1.00× rind's +1× aws-lc-rs -cold build of a rustls client, aws-lc-rs: nixos 19.8 s, 4.11× rind's; desktop 14.4 s, 4.12× rind's; nixos2 63.4 s, 3.82× rind's - - - -4.01×, needs cc +cold build of a rustls client, aws-lc-rs: nixos2 36.6 s, 3.23× rind's +3.23×, needs cc ring -cold build of a rustls client, ring: nixos 10.1 s, 2.10× rind's; desktop 7.5 s, 2.15× rind's; nixos2 22.9 s, 1.38× rind's - - - -1.84×, needs cc +cold build of a rustls client, ring: nixos2 16.4 s, 1.45× rind's +1.45×, needs cc diff --git a/benchmarks/headline.svg b/benchmarks/headline.svg index 57dc75662..2970e2b15 100644 --- a/benchmarks/headline.svg +++ b/benchmarks/headline.svg @@ -1,120 +1,114 @@ Time over rind's for common TLS and QUIC operations and a rustls client's build Time over rind's: shorter is faster -The geometric mean over nixos, desktop, and nixos2 (x86_64), with a whisker across them. BENCHMARKS.md has every time. +The geometric mean over nixos, desktop, nixos2, ovh-iad, and ovh-sea (x86_64), with a whisker across them. BENCHMARKS.md has every time. full handshake, X25519MLKEM768 rind -full handshake, X25519MLKEM768, rind: nixos 239.83 µs, 1.00× rind's; desktop 176.38 µs, 1.00× rind's; nixos2 311.29 µs, 1.00× rind's -1× +full handshake, X25519MLKEM768, rind: nixos 260.78 µs, 1.00× rind's; desktop 174.97 µs, 1.00× rind's; nixos2 302.43 µs, 1.00× rind's; ovh-iad 676.16 µs, 1.00× rind's; ovh-sea 585.86 µs, 1.00× rind's +1× aws-lc-rs -full handshake, X25519MLKEM768, aws-lc-rs: nixos 308.49 µs, 1.29× rind's; desktop 237.01 µs, 1.34× rind's; nixos2 452.02 µs, 1.45× rind's - - +full handshake, X25519MLKEM768, aws-lc-rs: nixos 331.87 µs, 1.27× rind's; desktop 235.60 µs, 1.35× rind's; nixos2 458.06 µs, 1.51× rind's; ovh-iad 776.76 µs, 1.15× rind's; ovh-sea 682.34 µs, 1.16× rind's + + -1.36× +1.28× ring not offered AES-128-GCM seal, 1350 B rind -AES-128-GCM seal, 1350 B, rind: nixos 170 ns, 1.00× rind's; desktop 94 ns, 1.00× rind's; nixos2 264 ns, 1.00× rind's -1× +AES-128-GCM seal, 1350 B, rind: nixos 165 ns, 1.00× rind's; desktop 94 ns, 1.00× rind's; nixos2 246 ns, 1.00× rind's; ovh-iad 398 ns, 1.00× rind's; ovh-sea 387 ns, 1.00× rind's +1× aws-lc-rs -AES-128-GCM seal, 1350 B, aws-lc-rs: nixos 289 ns, 1.70× rind's; desktop 152 ns, 1.62× rind's; nixos2 287 ns, 1.09× rind's - - +AES-128-GCM seal, 1350 B, aws-lc-rs: nixos 291 ns, 1.77× rind's; desktop 149 ns, 1.59× rind's; nixos2 285 ns, 1.16× rind's; ovh-iad 500 ns, 1.26× rind's; ovh-sea 445 ns, 1.15× rind's + + -1.44× +1.36× ring -AES-128-GCM seal, 1350 B, ring: nixos 184 ns, 1.08× rind's; desktop 119 ns, 1.27× rind's; nixos2 280 ns, 1.06× rind's - - - -1.13× +AES-128-GCM seal, 1350 B, ring: nixos 191 ns, 1.16× rind's; desktop 118 ns, 1.26× rind's; nixos2 277 ns, 1.13× rind's; ovh-iad 463 ns, 1.17× rind's; ovh-sea 427 ns, 1.10× rind's + + + +1.16× ChaCha20-Poly1305 seal, 1350 B rind -ChaCha20-Poly1305 seal, 1350 B, rind: nixos 530 ns, 1.00× rind's; desktop 447 ns, 1.00× rind's; nixos2 691 ns, 1.00× rind's -1× +ChaCha20-Poly1305 seal, 1350 B, rind: nixos 533 ns, 1.00× rind's; desktop 441 ns, 1.00× rind's; nixos2 718 ns, 1.00× rind's; ovh-iad 1.08 µs, 1.00× rind's; ovh-sea 1.03 µs, 1.00× rind's +1× aws-lc-rs -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: nixos 535 ns, 1.01× rind's; desktop 453 ns, 1.01× rind's; nixos2 700 ns, 1.01× rind's - - +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: nixos 532 ns, 1.00× rind's; desktop 453 ns, 1.03× rind's; nixos2 755 ns, 1.05× rind's; ovh-iad 1.07 µs, 1.00× rind's; ovh-sea 1.06 µs, 1.03× rind's + + -1.01× +1.02× ring -ChaCha20-Poly1305 seal, 1350 B, ring: nixos 531 ns, 1.00× rind's; desktop 446 ns, 1.00× rind's; nixos2 686 ns, 0.99× rind's - - - -1.00× +ChaCha20-Poly1305 seal, 1350 B, ring: nixos 527 ns, 0.99× rind's; desktop 447 ns, 1.01× rind's; nixos2 714 ns, 1.00× rind's; ovh-iad 1.07 µs, 0.99× rind's; ovh-sea 1.04 µs, 1.01× rind's + + + +1.00× X25519 rind -X25519, rind: nixos 24.80 µs, 1.00× rind's; desktop 17.94 µs, 1.00× rind's; nixos2 26.86 µs, 1.00× rind's -1× +X25519, rind: nixos 23.97 µs, 1.00× rind's; desktop 19.68 µs, 1.00× rind's; nixos2 25.00 µs, 1.00× rind's; ovh-iad 50.92 µs, 1.00× rind's; ovh-sea 49.74 µs, 1.00× rind's +1× aws-lc-rs -X25519, aws-lc-rs: nixos 25.24 µs, 1.02× rind's; desktop 19.14 µs, 1.07× rind's; nixos2 33.12 µs, 1.23× rind's - - - -1.10× +X25519, aws-lc-rs: nixos 24.61 µs, 1.03× rind's; desktop 19.54 µs, 0.99× rind's; nixos2 30.89 µs, 1.24× rind's; ovh-iad 53.04 µs, 1.04× rind's; ovh-sea 50.78 µs, 1.02× rind's + + + +1.06× ring -X25519, ring: nixos 47.40 µs, 1.91× rind's; desktop 35.19 µs, 1.96× rind's; nixos2 55.23 µs, 2.06× rind's - - +X25519, ring: nixos 46.72 µs, 1.95× rind's; desktop 35.63 µs, 1.81× rind's; nixos2 53.60 µs, 2.14× rind's; ovh-iad 80.26 µs, 1.58× rind's; ovh-sea 75.97 µs, 1.53× rind's + + -1.98× +1.79× P-256 ECDSA sign rind -P-256 ECDSA sign, rind: nixos 8.98 µs, 1.00× rind's; desktop 7.08 µs, 1.00× rind's; nixos2 15.72 µs, 1.00× rind's -1× +P-256 ECDSA sign, rind: nixos 9.62 µs, 1.00× rind's; desktop 6.84 µs, 1.00× rind's; nixos2 13.11 µs, 1.00× rind's; ovh-iad 23.25 µs, 1.00× rind's; ovh-sea 21.44 µs, 1.00× rind's +1× aws-lc-rs -P-256 ECDSA sign, aws-lc-rs: nixos 11.96 µs, 1.33× rind's; desktop 12.42 µs, 1.75× rind's; nixos2 22.35 µs, 1.42× rind's - - +P-256 ECDSA sign, aws-lc-rs: nixos 12.66 µs, 1.32× rind's; desktop 12.33 µs, 1.80× rind's; nixos2 19.80 µs, 1.51× rind's; ovh-iad 25.45 µs, 1.09× rind's; ovh-sea 23.66 µs, 1.10× rind's + + -1.49× +1.34× ring -P-256 ECDSA sign, ring: nixos 12.76 µs, 1.42× rind's; desktop 12.38 µs, 1.75× rind's; nixos2 16.56 µs, 1.05× rind's - - - -1.38× +P-256 ECDSA sign, ring: nixos 13.68 µs, 1.42× rind's; desktop 12.24 µs, 1.79× rind's; nixos2 14.86 µs, 1.13× rind's; ovh-iad 26.75 µs, 1.15× rind's; ovh-sea 25.02 µs, 1.17× rind's + + + +1.31× RSA-2048 PSS sign rind -RSA-2048 PSS sign, rind: nixos 475.37 µs, 1.00× rind's; desktop 393.47 µs, 1.00× rind's; nixos2 576.25 µs, 1.00× rind's -1× +RSA-2048 PSS sign, rind: nixos 424.30 µs, 1.00× rind's; desktop 346.52 µs, 1.00× rind's; nixos2 445.92 µs, 1.00× rind's; ovh-iad 785.33 µs, 1.00× rind's; ovh-sea 743.83 µs, 1.00× rind's +1× aws-lc-rs -RSA-2048 PSS sign, aws-lc-rs: nixos 436.71 µs, 0.92× rind's; desktop 353.37 µs, 0.90× rind's; nixos2 459.05 µs, 0.80× rind's - - - -0.87× +RSA-2048 PSS sign, aws-lc-rs: nixos 481.00 µs, 1.13× rind's; desktop 350.45 µs, 1.01× rind's; nixos2 461.87 µs, 1.04× rind's; ovh-iad 842.38 µs, 1.07× rind's; ovh-sea 772.63 µs, 1.04× rind's + + + +1.06× ring -RSA-2048 PSS sign, ring: nixos 424.64 µs, 0.89× rind's; desktop 336.61 µs, 0.86× rind's; nixos2 440.44 µs, 0.76× rind's - - - -0.84× +RSA-2048 PSS sign, ring: nixos 471.53 µs, 1.11× rind's; desktop 341.45 µs, 0.99× rind's; nixos2 437.28 µs, 0.98× rind's; ovh-iad 1.13 ms, 1.44× rind's; ovh-sea 993.35 µs, 1.34× rind's + + + +1.16× cold build of a rustls client rind -cold build of a rustls client, rind: nixos 4.8 s, 1.00× rind's; desktop 3.5 s, 1.00× rind's; nixos2 16.6 s, 1.00× rind's -1× +cold build of a rustls client, rind: nixos2 11.3 s, 1.00× rind's +1× aws-lc-rs -cold build of a rustls client, aws-lc-rs: nixos 19.8 s, 4.11× rind's; desktop 14.4 s, 4.12× rind's; nixos2 63.4 s, 3.82× rind's - - - -4.01×, needs cc +cold build of a rustls client, aws-lc-rs: nixos2 36.6 s, 3.23× rind's +3.23×, needs cc ring -cold build of a rustls client, ring: nixos 10.1 s, 2.10× rind's; desktop 7.5 s, 2.15× rind's; nixos2 22.9 s, 1.38× rind's - - - -1.84×, needs cc +cold build of a rustls client, ring: nixos2 16.4 s, 1.45× rind's +1.45×, needs cc diff --git a/benchmarks/nixos-dark.svg b/benchmarks/nixos-dark.svg index 6ec0695be..c7a97aa1d 100644 --- a/benchmarks/nixos-dark.svg +++ b/benchmarks/nixos-dark.svg @@ -28,284 +28,284 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 239.83 µs, 1.00× the fastest -239.83 µs -full handshake, X25519MLKEM768, aws-lc-rs: 308.49 µs, 1.29× the fastest -308.49 µs -full handshake, X25519MLKEM768, graviola: 258.62 µs, 1.08× the fastest -258.62 µs -full handshake, X25519MLKEM768, OpenSSL: 805.54 µs, 3.36× the fastest -805.54 µs +full handshake, X25519MLKEM768, rind: 260.78 µs, 1.00× the fastest +260.78 µs +full handshake, X25519MLKEM768, aws-lc-rs: 331.87 µs, 1.27× the fastest +331.87 µs +full handshake, X25519MLKEM768, graviola: 342.68 µs, 1.31× the fastest +342.68 µs +full handshake, X25519MLKEM768, OpenSSL: 802.57 µs, 3.08× the fastest +802.57 µs full handshake, X25519 -full handshake, X25519, rind: 215.61 µs, 1.00× the fastest -215.61 µs -full handshake, X25519, aws-lc-rs: 277.77 µs, 1.29× the fastest -277.77 µs -full handshake, X25519, ring: 296.66 µs, 1.38× the fastest -296.66 µs -full handshake, X25519, graviola: 225.37 µs, 1.05× the fastest -225.37 µs -full handshake, X25519, OpenSSL: 578.47 µs, 2.68× the fastest -578.47 µs +full handshake, X25519, rind: 227.82 µs, 1.00× the fastest +227.82 µs +full handshake, X25519, aws-lc-rs: 292.13 µs, 1.28× the fastest +292.13 µs +full handshake, X25519, ring: 328.46 µs, 1.44× the fastest +328.46 µs +full handshake, X25519, graviola: 238.70 µs, 1.05× the fastest +238.70 µs +full handshake, X25519, OpenSSL: 574.28 µs, 2.52× the fastest +574.28 µs full handshake, P-256 -full handshake, P-256, rind: 248.67 µs, 1.00× the fastest -248.67 µs -full handshake, P-256, aws-lc-rs: 312.54 µs, 1.26× the fastest -312.54 µs -full handshake, P-256, ring: 296.53 µs, 1.19× the fastest -296.53 µs -full handshake, P-256, graviola: 266.19 µs, 1.07× the fastest -266.19 µs -full handshake, P-256, OpenSSL: 639.58 µs, 2.57× the fastest -639.58 µs +full handshake, P-256, rind: 242.76 µs, 1.00× the fastest +242.76 µs +full handshake, P-256, aws-lc-rs: 304.37 µs, 1.25× the fastest +304.37 µs +full handshake, P-256, ring: 281.93 µs, 1.16× the fastest +281.93 µs +full handshake, P-256, graviola: 270.05 µs, 1.11× the fastest +270.05 µs +full handshake, P-256, OpenSSL: 624.35 µs, 2.57× the fastest +624.35 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 176.45 µs, 1.01× the fastest -176.45 µs -full handshake, Ed25519 certificate, aws-lc-rs: 226.97 µs, 1.30× the fastest -226.97 µs -full handshake, Ed25519 certificate, ring: 289.56 µs, 1.65× the fastest -289.56 µs -full handshake, Ed25519 certificate, graviola: 175.24 µs, 1.00× the fastest -175.24 µs -full handshake, Ed25519 certificate, OpenSSL: 647.87 µs, 3.70× the fastest -647.87 µs +full handshake, Ed25519 certificate, rind: 186.73 µs, 1.00× the fastest +186.73 µs +full handshake, Ed25519 certificate, aws-lc-rs: 233.43 µs, 1.25× the fastest +233.43 µs +full handshake, Ed25519 certificate, ring: 292.96 µs, 1.57× the fastest +292.96 µs +full handshake, Ed25519 certificate, graviola: 186.05 µs, 1.00× the fastest +186.05 µs +full handshake, Ed25519 certificate, OpenSSL: 640.40 µs, 3.44× the fastest +640.40 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 644.89 µs, 1.11× the fastest -644.89 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 650.26 µs, 1.12× the fastest -650.26 µs -full handshake, RSA-2048 certificate, ring: 666.29 µs, 1.14× the fastest -666.29 µs -full handshake, RSA-2048 certificate, graviola: 582.45 µs, 1.00× the fastest -582.45 µs -full handshake, RSA-2048 certificate, OpenSSL: 931.27 µs, 1.60× the fastest -931.27 µs +full handshake, RSA-2048 certificate, rind: 550.14 µs, 1.00× the fastest +550.14 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 646.28 µs, 1.17× the fastest +646.28 µs +full handshake, RSA-2048 certificate, ring: 647.36 µs, 1.18× the fastest +647.36 µs +full handshake, RSA-2048 certificate, graviola: 567.91 µs, 1.03× the fastest +567.91 µs +full handshake, RSA-2048 certificate, OpenSSL: 992.05 µs, 1.80× the fastest +992.05 µs resumed handshake, X25519 -resumed handshake, X25519, rind: 81.83 µs, 1.00× the fastest -81.83 µs -resumed handshake, X25519, aws-lc-rs: 137.94 µs, 1.69× the fastest -137.94 µs -resumed handshake, X25519, ring: 162.09 µs, 1.98× the fastest -162.09 µs -resumed handshake, X25519, graviola: 87.66 µs, 1.07× the fastest -87.66 µs -resumed handshake, X25519, OpenSSL: 461.94 µs, 5.65× the fastest -461.94 µs +resumed handshake, X25519, rind: 77.19 µs, 1.00× the fastest +77.19 µs +resumed handshake, X25519, aws-lc-rs: 132.67 µs, 1.72× the fastest +132.67 µs +resumed handshake, X25519, ring: 158.11 µs, 2.05× the fastest +158.11 µs +resumed handshake, X25519, graviola: 77.33 µs, 1.00× the fastest +77.33 µs +resumed handshake, X25519, OpenSSL: 370.51 µs, 4.80× the fastest +370.51 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 290.62 µs, 1.00× the fastest -290.62 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 459.42 µs, 1.58× the fastest -459.42 µs -1 MB transfer, AES-128-GCM, ring: 314.22 µs, 1.08× the fastest -314.22 µs -1 MB transfer, AES-128-GCM, graviola: 453.27 µs, 1.56× the fastest -453.27 µs -1 MB transfer, AES-128-GCM, OpenSSL: 492.29 µs, 1.69× the fastest -492.29 µs +1 MB transfer, AES-128-GCM, rind: 289.43 µs, 1.03× the fastest +289.43 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 458.21 µs, 1.62× the fastest +458.21 µs +1 MB transfer, AES-128-GCM, ring: 282.22 µs, 1.00× the fastest +282.22 µs +1 MB transfer, AES-128-GCM, graviola: 424.38 µs, 1.50× the fastest +424.38 µs +1 MB transfer, AES-128-GCM, OpenSSL: 469.84 µs, 1.66× the fastest +469.84 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 310.98 µs, 1.02× the fastest -310.98 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 487.61 µs, 1.60× the fastest -487.61 µs -1 MB transfer, AES-256-GCM, ring: 305.27 µs, 1.00× the fastest -305.27 µs -1 MB transfer, AES-256-GCM, graviola: 513.59 µs, 1.68× the fastest -513.59 µs -1 MB transfer, AES-256-GCM, OpenSSL: 607.83 µs, 1.99× the fastest -607.83 µs +1 MB transfer, AES-256-GCM, rind: 292.74 µs, 1.01× the fastest +292.74 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 461.28 µs, 1.59× the fastest +461.28 µs +1 MB transfer, AES-256-GCM, ring: 289.90 µs, 1.00× the fastest +289.90 µs +1 MB transfer, AES-256-GCM, graviola: 490.29 µs, 1.69× the fastest +490.29 µs +1 MB transfer, AES-256-GCM, OpenSSL: 533.20 µs, 1.84× the fastest +533.20 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 739.91 µs, 1.00× the fastest -739.91 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 739.12 µs, 1.00× the fastest -739.12 µs -1 MB transfer, ChaCha20-Poly1305, ring: 747.52 µs, 1.01× the fastest -747.52 µs -1 MB transfer, ChaCha20-Poly1305, graviola: 1.49 ms, 2.02× the fastest -1.49 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 855.61 µs, 1.16× the fastest -855.61 µs +1 MB transfer, ChaCha20-Poly1305, rind: 688.78 µs, 1.00× the fastest +688.78 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 687.53 µs, 1.00× the fastest +687.53 µs +1 MB transfer, ChaCha20-Poly1305, ring: 693.01 µs, 1.01× the fastest +693.01 µs +1 MB transfer, ChaCha20-Poly1305, graviola: 1.37 ms, 2.00× the fastest +1.37 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 782.98 µs, 1.14× the fastest +782.98 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 40 ns, 1.00× the fastest -40 ns -AES-128-GCM seal, 32 B, aws-lc-rs: 81 ns, 2.00× the fastest -81 ns -AES-128-GCM seal, 32 B, ring: 54 ns, 1.34× the fastest -54 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 95 ns, 2.35× the fastest -95 ns -AES-128-GCM seal, 32 B, graviola: 67 ns, 1.67× the fastest -67 ns -AES-128-GCM seal, 32 B, libcrux: 308 ns, 7.60× the fastest -308 ns -AES-128-GCM seal, 32 B, OpenSSL: 114 ns, 2.81× the fastest -114 ns +AES-128-GCM seal, 32 B, rind: 39 ns, 1.00× the fastest +39 ns +AES-128-GCM seal, 32 B, aws-lc-rs: 78 ns, 2.02× the fastest +78 ns +AES-128-GCM seal, 32 B, ring: 56 ns, 1.45× the fastest +56 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 97 ns, 2.50× the fastest +97 ns +AES-128-GCM seal, 32 B, graviola: 70 ns, 1.80× the fastest +70 ns +AES-128-GCM seal, 32 B, libcrux: 321 ns, 8.29× the fastest +321 ns +AES-128-GCM seal, 32 B, OpenSSL: 115 ns, 2.97× the fastest +115 ns AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind: 170 ns, 1.00× the fastest -170 ns -AES-128-GCM seal, 1350 B, aws-lc-rs: 289 ns, 1.70× the fastest -289 ns -AES-128-GCM seal, 1350 B, ring: 184 ns, 1.08× the fastest -184 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 435 ns, 2.55× the fastest -435 ns -AES-128-GCM seal, 1350 B, graviola: 296 ns, 1.74× the fastest -296 ns -AES-128-GCM seal, 1350 B, libcrux: 3.91 µs, 22.95× the fastest -3.91 µs -AES-128-GCM seal, 1350 B, OpenSSL: 323 ns, 1.90× the fastest -323 ns +AES-128-GCM seal, 1350 B, rind: 165 ns, 1.00× the fastest +165 ns +AES-128-GCM seal, 1350 B, aws-lc-rs: 291 ns, 1.77× the fastest +291 ns +AES-128-GCM seal, 1350 B, ring: 191 ns, 1.16× the fastest +191 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 434 ns, 2.63× the fastest +434 ns +AES-128-GCM seal, 1350 B, graviola: 295 ns, 1.79× the fastest +295 ns +AES-128-GCM seal, 1350 B, libcrux: 4.72 µs, 28.63× the fastest +4.72 µs +AES-128-GCM seal, 1350 B, OpenSSL: 326 ns, 1.98× the fastest +326 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 1.39 µs, 1.00× the fastest -1.39 µs -AES-128-GCM seal, 16 KB, aws-lc-rs: 2.58 µs, 1.85× the fastest -2.58 µs -AES-128-GCM seal, 16 KB, ring: 1.43 µs, 1.03× the fastest -1.43 µs -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 4.18 µs, 3.00× the fastest -4.18 µs -AES-128-GCM seal, 16 KB, graviola: 2.58 µs, 1.85× the fastest -2.58 µs -AES-128-GCM seal, 16 KB, libcrux: 44.41 µs, 31.87× the fastest -44.41 µs -AES-128-GCM seal, 16 KB, OpenSSL: 2.62 µs, 1.88× the fastest -2.62 µs +AES-128-GCM seal, 16 KB, rind: 1.38 µs, 1.00× the fastest +1.38 µs +AES-128-GCM seal, 16 KB, aws-lc-rs: 2.63 µs, 1.91× the fastest +2.63 µs +AES-128-GCM seal, 16 KB, ring: 1.39 µs, 1.01× the fastest +1.39 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 4.28 µs, 3.10× the fastest +4.28 µs +AES-128-GCM seal, 16 KB, graviola: 2.57 µs, 1.86× the fastest +2.57 µs +AES-128-GCM seal, 16 KB, libcrux: 53.90 µs, 39.11× the fastest +53.90 µs +AES-128-GCM seal, 16 KB, OpenSSL: 2.61 µs, 1.89× the fastest +2.61 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 47 ns, 1.00× the fastest -47 ns -AES-128-GCM open, 32 B, aws-lc-rs: 72 ns, 1.53× the fastest +AES-128-GCM open, 32 B, rind: 44 ns, 1.00× the fastest +44 ns +AES-128-GCM open, 32 B, aws-lc-rs: 72 ns, 1.63× the fastest 72 ns -AES-128-GCM open, 32 B, ring: 58 ns, 1.24× the fastest +AES-128-GCM open, 32 B, ring: 58 ns, 1.30× the fastest 58 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 102 ns, 2.16× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek: 102 ns, 2.29× the fastest 102 ns -AES-128-GCM open, 32 B, graviola: 65 ns, 1.39× the fastest +AES-128-GCM open, 32 B, graviola: 65 ns, 1.46× the fastest 65 ns -AES-128-GCM open, 32 B, libcrux: 320 ns, 6.81× the fastest -320 ns -AES-128-GCM open, 32 B, OpenSSL: 118 ns, 2.52× the fastest +AES-128-GCM open, 32 B, libcrux: 317 ns, 7.15× the fastest +317 ns +AES-128-GCM open, 32 B, OpenSSL: 118 ns, 2.65× the fastest 118 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 175 ns, 1.00× the fastest -175 ns -AES-128-GCM open, 1350 B, aws-lc-rs: 295 ns, 1.68× the fastest -295 ns +AES-128-GCM open, 1350 B, rind: 174 ns, 1.00× the fastest +174 ns +AES-128-GCM open, 1350 B, aws-lc-rs: 298 ns, 1.71× the fastest +298 ns AES-128-GCM open, 1350 B, ring: 185 ns, 1.06× the fastest 185 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 448 ns, 2.56× the fastest -448 ns -AES-128-GCM open, 1350 B, graviola: 307 ns, 1.75× the fastest -307 ns -AES-128-GCM open, 1350 B, libcrux: 3.93 µs, 22.44× the fastest -3.93 µs -AES-128-GCM open, 1350 B, OpenSSL: 332 ns, 1.90× the fastest -332 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 451 ns, 2.58× the fastest +451 ns +AES-128-GCM open, 1350 B, graviola: 305 ns, 1.75× the fastest +305 ns +AES-128-GCM open, 1350 B, libcrux: 3.92 µs, 22.46× the fastest +3.92 µs +AES-128-GCM open, 1350 B, OpenSSL: 333 ns, 1.91× the fastest +333 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 1.45 µs, 1.00× the fastest -1.45 µs -AES-128-GCM open, 16 KB, aws-lc-rs: 2.71 µs, 1.87× the fastest -2.71 µs -AES-128-GCM open, 16 KB, ring: 1.48 µs, 1.02× the fastest -1.48 µs -AES-128-GCM open, 16 KB, RustCrypto + dalek: 4.28 µs, 2.95× the fastest -4.28 µs -AES-128-GCM open, 16 KB, graviola: 2.66 µs, 1.83× the fastest -2.66 µs -AES-128-GCM open, 16 KB, libcrux: 44.58 µs, 30.67× the fastest -44.58 µs -AES-128-GCM open, 16 KB, OpenSSL: 2.75 µs, 1.89× the fastest -2.75 µs +AES-128-GCM open, 16 KB, rind: 1.44 µs, 1.00× the fastest +1.44 µs +AES-128-GCM open, 16 KB, aws-lc-rs: 2.72 µs, 1.89× the fastest +2.72 µs +AES-128-GCM open, 16 KB, ring: 1.45 µs, 1.01× the fastest +1.45 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 4.29 µs, 2.98× the fastest +4.29 µs +AES-128-GCM open, 16 KB, graviola: 2.65 µs, 1.84× the fastest +2.65 µs +AES-128-GCM open, 16 KB, libcrux: 44.29 µs, 30.79× the fastest +44.29 µs +AES-128-GCM open, 16 KB, OpenSSL: 2.77 µs, 1.93× the fastest +2.77 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 44 ns, 1.00× the fastest -44 ns -AES-256-GCM seal, 32 B, aws-lc-rs: 81 ns, 1.84× the fastest -81 ns -AES-256-GCM seal, 32 B, ring: 58 ns, 1.31× the fastest -58 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.29× the fastest +AES-256-GCM seal, 32 B, rind: 41 ns, 1.00× the fastest +41 ns +AES-256-GCM seal, 32 B, aws-lc-rs: 82 ns, 1.99× the fastest +82 ns +AES-256-GCM seal, 32 B, ring: 57 ns, 1.38× the fastest +57 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.45× the fastest 101 ns -AES-256-GCM seal, 32 B, graviola: 73 ns, 1.67× the fastest -73 ns -AES-256-GCM seal, 32 B, libcrux: 426 ns, 9.69× the fastest +AES-256-GCM seal, 32 B, graviola: 74 ns, 1.81× the fastest +74 ns +AES-256-GCM seal, 32 B, libcrux: 426 ns, 10.35× the fastest 426 ns -AES-256-GCM seal, 32 B, OpenSSL: 119 ns, 2.70× the fastest -119 ns +AES-256-GCM seal, 32 B, OpenSSL: 118 ns, 2.87× the fastest +118 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 188 ns, 1.00× the fastest -188 ns -AES-256-GCM seal, 1350 B, aws-lc-rs: 313 ns, 1.66× the fastest -313 ns -AES-256-GCM seal, 1350 B, ring: 206 ns, 1.10× the fastest -206 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 488 ns, 2.60× the fastest -488 ns -AES-256-GCM seal, 1350 B, graviola: 338 ns, 1.80× the fastest -338 ns -AES-256-GCM seal, 1350 B, libcrux: 6.96 µs, 37.07× the fastest -6.96 µs -AES-256-GCM seal, 1350 B, OpenSSL: 345 ns, 1.84× the fastest +AES-256-GCM seal, 1350 B, rind: 184 ns, 1.00× the fastest +184 ns +AES-256-GCM seal, 1350 B, aws-lc-rs: 311 ns, 1.69× the fastest +311 ns +AES-256-GCM seal, 1350 B, ring: 205 ns, 1.11× the fastest +205 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 489 ns, 2.65× the fastest +489 ns +AES-256-GCM seal, 1350 B, graviola: 337 ns, 1.83× the fastest +337 ns +AES-256-GCM seal, 1350 B, libcrux: 6.91 µs, 37.50× the fastest +6.91 µs +AES-256-GCM seal, 1350 B, OpenSSL: 345 ns, 1.87× the fastest 345 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 1.54 µs, 1.00× the fastest -1.54 µs -AES-256-GCM seal, 16 KB, aws-lc-rs: 2.79 µs, 1.81× the fastest -2.79 µs -AES-256-GCM seal, 16 KB, ring: 1.56 µs, 1.01× the fastest -1.56 µs -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 4.83 µs, 3.14× the fastest -4.83 µs -AES-256-GCM seal, 16 KB, graviola: 3.00 µs, 1.95× the fastest -3.00 µs -AES-256-GCM seal, 16 KB, libcrux: 80.86 µs, 52.58× the fastest -80.86 µs -AES-256-GCM seal, 16 KB, OpenSSL: 2.82 µs, 1.83× the fastest +AES-256-GCM seal, 16 KB, rind: 1.51 µs, 1.00× the fastest +1.51 µs +AES-256-GCM seal, 16 KB, aws-lc-rs: 2.78 µs, 1.84× the fastest +2.78 µs +AES-256-GCM seal, 16 KB, ring: 1.53 µs, 1.01× the fastest +1.53 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 4.78 µs, 3.16× the fastest +4.78 µs +AES-256-GCM seal, 16 KB, graviola: 2.98 µs, 1.97× the fastest +2.98 µs +AES-256-GCM seal, 16 KB, libcrux: 80.61 µs, 53.39× the fastest +80.61 µs +AES-256-GCM seal, 16 KB, OpenSSL: 2.82 µs, 1.87× the fastest 2.82 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 52 ns, 1.00× the fastest -52 ns -AES-256-GCM open, 32 B, aws-lc-rs: 82 ns, 1.56× the fastest -82 ns -AES-256-GCM open, 32 B, ring: 62 ns, 1.18× the fastest -62 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 111 ns, 2.12× the fastest -111 ns -AES-256-GCM open, 32 B, graviola: 68 ns, 1.30× the fastest +AES-256-GCM open, 32 B, rind: 48 ns, 1.00× the fastest +48 ns +AES-256-GCM open, 32 B, aws-lc-rs: 79 ns, 1.62× the fastest +79 ns +AES-256-GCM open, 32 B, ring: 61 ns, 1.25× the fastest +61 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 109 ns, 2.24× the fastest +109 ns +AES-256-GCM open, 32 B, graviola: 68 ns, 1.39× the fastest 68 ns -AES-256-GCM open, 32 B, libcrux: 442 ns, 8.43× the fastest -442 ns -AES-256-GCM open, 32 B, OpenSSL: 121 ns, 2.30× the fastest -121 ns +AES-256-GCM open, 32 B, libcrux: 441 ns, 9.10× the fastest +441 ns +AES-256-GCM open, 32 B, OpenSSL: 122 ns, 2.52× the fastest +122 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 194 ns, 1.00× the fastest -194 ns -AES-256-GCM open, 1350 B, aws-lc-rs: 320 ns, 1.65× the fastest -320 ns -AES-256-GCM open, 1350 B, ring: 205 ns, 1.06× the fastest -205 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 507 ns, 2.61× the fastest -507 ns -AES-256-GCM open, 1350 B, graviola: 342 ns, 1.76× the fastest -342 ns -AES-256-GCM open, 1350 B, libcrux: 6.39 µs, 32.91× the fastest -6.39 µs -AES-256-GCM open, 1350 B, OpenSSL: 358 ns, 1.84× the fastest -358 ns +AES-256-GCM open, 1350 B, rind: 192 ns, 1.00× the fastest +192 ns +AES-256-GCM open, 1350 B, aws-lc-rs: 322 ns, 1.68× the fastest +322 ns +AES-256-GCM open, 1350 B, ring: 204 ns, 1.06× the fastest +204 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 508 ns, 2.65× the fastest +508 ns +AES-256-GCM open, 1350 B, graviola: 341 ns, 1.78× the fastest +341 ns +AES-256-GCM open, 1350 B, libcrux: 6.79 µs, 35.42× the fastest +6.79 µs +AES-256-GCM open, 1350 B, OpenSSL: 354 ns, 1.85× the fastest +354 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 1.62 µs, 1.00× the fastest -1.62 µs -AES-256-GCM open, 16 KB, aws-lc-rs: 2.89 µs, 1.79× the fastest -2.89 µs -AES-256-GCM open, 16 KB, ring: 1.65 µs, 1.02× the fastest -1.65 µs -AES-256-GCM open, 16 KB, RustCrypto + dalek: 4.92 µs, 3.04× the fastest -4.92 µs -AES-256-GCM open, 16 KB, graviola: 3.05 µs, 1.89× the fastest -3.05 µs -AES-256-GCM open, 16 KB, libcrux: 74.38 µs, 46.05× the fastest -74.38 µs -AES-256-GCM open, 16 KB, OpenSSL: 2.96 µs, 1.83× the fastest -2.96 µs +AES-256-GCM open, 16 KB, rind: 1.60 µs, 1.00× the fastest +1.60 µs +AES-256-GCM open, 16 KB, aws-lc-rs: 2.92 µs, 1.82× the fastest +2.92 µs +AES-256-GCM open, 16 KB, ring: 1.62 µs, 1.01× the fastest +1.62 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 4.93 µs, 3.08× the fastest +4.93 µs +AES-256-GCM open, 16 KB, graviola: 3.04 µs, 1.90× the fastest +3.04 µs +AES-256-GCM open, 16 KB, libcrux: 79.19 µs, 49.38× the fastest +79.19 µs +AES-256-GCM open, 16 KB, OpenSSL: 2.98 µs, 1.86× the fastest +2.98 µs ChaCha20-Poly1305 seal, 32 B ChaCha20-Poly1305 seal, 32 B, rind: 114 ns, 1.01× the fastest 114 ns @@ -313,507 +313,507 @@ 119 ns ChaCha20-Poly1305 seal, 32 B, ring: 113 ns, 1.00× the fastest 113 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.18 µs, 10.45× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.18 µs, 10.48× the fastest 1.18 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 216 ns, 1.91× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola: 216 ns, 1.92× the fastest 216 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 218 ns, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -218 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 255 ns, 2.26× the fastest -255 ns +ChaCha20-Poly1305 seal, 32 B, libcrux: 220 ns, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +220 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 257 ns, 2.29× the fastest +257 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 530 ns, 1.00× the fastest -530 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 535 ns, 1.01× the fastest -535 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 531 ns, 1.00× the fastest -531 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.92 µs, 3.63× the fastest -1.92 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 1.08 µs, 2.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind: 533 ns, 1.01× the fastest +533 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 532 ns, 1.01× the fastest +532 ns +ChaCha20-Poly1305 seal, 1350 B, ring: 527 ns, 1.00× the fastest +527 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.93 µs, 3.65× the fastest +1.93 µs +ChaCha20-Poly1305 seal, 1350 B, graviola: 1.08 µs, 2.05× the fastest 1.08 µs -ChaCha20-Poly1305 seal, 1350 B, libcrux: 2.33 µs, 4.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -2.33 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 742 ns, 1.40× the fastest -742 ns +ChaCha20-Poly1305 seal, 1350 B, libcrux: 2.34 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +2.34 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 745 ns, 1.41× the fastest +745 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 4.58 µs, 1.01× the fastest -4.58 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.62 µs, 1.02× the fastest -4.62 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 4.55 µs, 1.00× the fastest -4.55 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 9.81 µs, 2.15× the fastest -9.81 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 9.87 µs, 2.17× the fastest -9.87 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 26.03 µs, 5.72× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -26.03 µs ✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 5.10 µs, 1.12× the fastest -5.10 µs +ChaCha20-Poly1305 seal, 16 KB, rind: 4.68 µs, 1.00× the fastest +4.68 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.78 µs, 1.02× the fastest +4.78 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 4.68 µs, 1.00× the fastest +4.68 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 10.09 µs, 2.16× the fastest +10.09 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 10.15 µs, 2.17× the fastest +10.15 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 26.70 µs, 5.71× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +26.70 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 5.14 µs, 1.10× the fastest +5.14 µs XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind: 242 ns, 1.00× the fastest -242 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 263 ns, 1.09× the fastest -263 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.35 µs, 5.61× the fastest -1.35 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 348 ns, 1.44× the fastest -348 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 336 ns, 1.39× the fastest -336 ns +XChaCha20-Poly1305 seal, 32 B, rind: 243 ns, 1.00× the fastest +243 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 267 ns, 1.10× the fastest +267 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.36 µs, 5.60× the fastest +1.36 µs +XChaCha20-Poly1305 seal, 32 B, graviola: 357 ns, 1.47× the fastest +357 ns +XChaCha20-Poly1305 seal, 32 B, libcrux: 351 ns, 1.45× the fastest +351 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 653 ns, 1.00× the fastest -653 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 673 ns, 1.03× the fastest -673 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.06 µs, 3.16× the fastest -2.06 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 1.20 µs, 1.84× the fastest -1.20 µs -XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.45 µs, 3.75× the fastest -2.45 µs +XChaCha20-Poly1305 seal, 1350 B, rind: 775 ns, 1.07× the fastest +775 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 723 ns, 1.00× the fastest +723 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.18 µs, 3.01× the fastest +2.18 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.31 µs, 1.81× the fastest +1.31 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.70 µs, 3.73× the fastest +2.70 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 4.76 µs, 1.00× the fastest -4.76 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.74 µs, 1.00× the fastest -4.74 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 9.95 µs, 2.10× the fastest -9.95 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 10.02 µs, 2.11× the fastest -10.02 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 26.08 µs, 5.50× the fastest -26.08 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 5.23 µs, 1.00× the fastest +5.23 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 5.37 µs, 1.03× the fastest +5.37 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 11.38 µs, 2.17× the fastest +11.38 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 10.80 µs, 2.06× the fastest +10.80 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 28.66 µs, 5.48× the fastest +28.66 µs QUIC header protection AES-128 header protection AES-128 header protection, rind: 4 ns, 1.00× the fastest 4 ns -AES-128 header protection, aws-lc-rs: 6 ns, 1.51× the fastest +AES-128 header protection, aws-lc-rs: 6 ns, 1.45× the fastest 6 ns -AES-128 header protection, ring: 7 ns, 1.67× the fastest +AES-128 header protection, ring: 7 ns, 1.74× the fastest 7 ns AES-256 header protection AES-256 header protection, rind: 6 ns, 1.00× the fastest 6 ns -AES-256 header protection, aws-lc-rs: 8 ns, 1.40× the fastest +AES-256 header protection, aws-lc-rs: 8 ns, 1.32× the fastest 8 ns -AES-256 header protection, ring: 9 ns, 1.60× the fastest -9 ns +AES-256 header protection, ring: 10 ns, 1.64× the fastest +10 ns ChaCha20 header protection ChaCha20 header protection, rind: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included 61 ns ✓ -ChaCha20 header protection, aws-lc-rs: 81 ns, 1.34× the fastest -81 ns -ChaCha20 header protection, ring: 75 ns, 1.23× the fastest -75 ns +ChaCha20 header protection, aws-lc-rs: 82 ns, 1.34× the fastest +82 ns +ChaCha20 header protection, ring: 74 ns, 1.22× the fastest +74 ns Key agreement X25519 -X25519, rind: 24.80 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -24.80 µs ✓ -X25519, aws-lc-rs: 25.24 µs, 1.02× the fastest -25.24 µs -X25519, ring: 47.40 µs, 1.92× the fastest -47.40 µs -X25519, RustCrypto + dalek: 53.79 µs, 2.18× the fastest -53.79 µs -X25519, graviola: 24.65 µs, 1.00× the fastest -24.65 µs -X25519, libcrux: 64.51 µs, 2.62× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -64.51 µs ✓ -X25519, OpenSSL: 49.46 µs, 2.01× the fastest -49.46 µs +X25519, rind: 23.97 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +23.97 µs ✓ +X25519, aws-lc-rs: 24.61 µs, 1.03× the fastest +24.61 µs +X25519, ring: 46.72 µs, 1.95× the fastest +46.72 µs +X25519, RustCrypto + dalek: 52.09 µs, 2.18× the fastest +52.09 µs +X25519, graviola: 23.94 µs, 1.00× the fastest +23.94 µs +X25519, libcrux: 64.60 µs, 2.70× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +64.60 µs ✓ +X25519, OpenSSL: 49.70 µs, 2.08× the fastest +49.70 µs P-256 ECDH -P-256 ECDH, rind: 39.18 µs, 1.00× the fastest -39.18 µs -P-256 ECDH, aws-lc-rs: 41.12 µs, 1.05× the fastest -41.12 µs -P-256 ECDH, ring: 41.79 µs, 1.07× the fastest -41.79 µs -P-256 ECDH, RustCrypto + dalek: 256.63 µs, 6.55× the fastest -256.63 µs -P-256 ECDH, graviola: 41.91 µs, 1.07× the fastest -41.91 µs -P-256 ECDH, libcrux: 246.51 µs, 6.29× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -246.51 µs ✓ -P-256 ECDH, OpenSSL: 68.12 µs, 1.74× the fastest -68.12 µs +P-256 ECDH, rind: 42.82 µs, 1.01× the fastest +42.82 µs +P-256 ECDH, aws-lc-rs: 42.60 µs, 1.00× the fastest +42.60 µs +P-256 ECDH, ring: 46.05 µs, 1.08× the fastest +46.05 µs +P-256 ECDH, RustCrypto + dalek: 268.62 µs, 6.31× the fastest +268.62 µs +P-256 ECDH, graviola: 47.87 µs, 1.12× the fastest +47.87 µs +P-256 ECDH, libcrux: 268.70 µs, 6.31× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +268.70 µs ✓ +P-256 ECDH, OpenSSL: 71.25 µs, 1.67× the fastest +71.25 µs Signatures Ed25519 sign -Ed25519 sign, rind: 5.79 µs, 1.00× the fastest -5.79 µs -Ed25519 sign, aws-lc-rs: 6.10 µs, 1.05× the fastest -6.10 µs -Ed25519 sign, ring: 17.26 µs, 2.98× the fastest -17.26 µs -Ed25519 sign, RustCrypto + dalek: 13.36 µs, 2.31× the fastest -13.36 µs -Ed25519 sign, graviola: 5.79 µs, 1.00× the fastest -5.79 µs -Ed25519 sign, libcrux: 40.33 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -40.33 µs ✓ -Ed25519 sign, OpenSSL: 23.40 µs, 4.04× the fastest -23.40 µs +Ed25519 sign, rind: 5.72 µs, 1.00× the fastest +5.72 µs +Ed25519 sign, aws-lc-rs: 6.13 µs, 1.07× the fastest +6.13 µs +Ed25519 sign, ring: 17.23 µs, 3.01× the fastest +17.23 µs +Ed25519 sign, RustCrypto + dalek: 13.30 µs, 2.33× the fastest +13.30 µs +Ed25519 sign, graviola: 5.83 µs, 1.02× the fastest +5.83 µs +Ed25519 sign, libcrux: 41.37 µs, 7.24× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +41.37 µs ✓ +Ed25519 sign, OpenSSL: 23.38 µs, 4.09× the fastest +23.38 µs Ed25519 verify -Ed25519 verify, rind: 27.18 µs, 1.09× the fastest -27.18 µs -Ed25519 verify, aws-lc-rs: 27.25 µs, 1.09× the fastest -27.25 µs -Ed25519 verify, ring: 34.90 µs, 1.40× the fastest -34.90 µs -Ed25519 verify, RustCrypto + dalek: 24.97 µs, 1.00× the fastest -24.97 µs -Ed25519 verify, graviola: 27.14 µs, 1.09× the fastest -27.14 µs -Ed25519 verify, libcrux: 54.65 µs, 2.19× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -54.65 µs ✓ -Ed25519 verify, OpenSSL: 79.44 µs, 3.18× the fastest -79.44 µs +Ed25519 verify, rind: 27.15 µs, 1.09× the fastest +27.15 µs +Ed25519 verify, aws-lc-rs: 27.03 µs, 1.09× the fastest +27.03 µs +Ed25519 verify, ring: 34.76 µs, 1.40× the fastest +34.76 µs +Ed25519 verify, RustCrypto + dalek: 24.83 µs, 1.00× the fastest +24.83 µs +Ed25519 verify, graviola: 27.08 µs, 1.09× the fastest +27.08 µs +Ed25519 verify, libcrux: 54.52 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +54.52 µs ✓ +Ed25519 verify, OpenSSL: 79.25 µs, 3.19× the fastest +79.25 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 8.98 µs, 1.00× the fastest -8.98 µs -P-256 ECDSA sign, aws-lc-rs: 11.96 µs, 1.33× the fastest -11.96 µs -P-256 ECDSA sign, ring: 12.76 µs, 1.42× the fastest -12.76 µs -P-256 ECDSA sign, RustCrypto + dalek: 64.84 µs, 7.22× the fastest -64.84 µs -P-256 ECDSA sign, graviola: 10.48 µs, 1.17× the fastest -10.48 µs -P-256 ECDSA sign, libcrux: 87.54 µs, 9.75× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -87.54 µs ✓ -P-256 ECDSA sign, OpenSSL: 16.42 µs, 1.83× the fastest -16.42 µs +P-256 ECDSA sign, rind: 9.62 µs, 1.00× the fastest +9.62 µs +P-256 ECDSA sign, aws-lc-rs: 12.66 µs, 1.32× the fastest +12.66 µs +P-256 ECDSA sign, ring: 13.68 µs, 1.42× the fastest +13.68 µs +P-256 ECDSA sign, RustCrypto + dalek: 70.62 µs, 7.34× the fastest +70.62 µs +P-256 ECDSA sign, graviola: 11.49 µs, 1.19× the fastest +11.49 µs +P-256 ECDSA sign, libcrux: 95.47 µs, 9.92× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +95.47 µs ✓ +P-256 ECDSA sign, OpenSSL: 18.04 µs, 1.88× the fastest +18.04 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 38.23 µs, 1.00× the fastest -38.23 µs -P-256 ECDSA verify, aws-lc-rs: 38.71 µs, 1.01× the fastest -38.71 µs -P-256 ECDSA verify, ring: 39.16 µs, 1.02× the fastest -39.16 µs -P-256 ECDSA verify, RustCrypto + dalek: 217.96 µs, 5.70× the fastest -217.96 µs -P-256 ECDSA verify, graviola: 40.39 µs, 1.06× the fastest -40.39 µs -P-256 ECDSA verify, libcrux: 208.08 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -208.08 µs ✓ -P-256 ECDSA verify, OpenSSL: 57.01 µs, 1.49× the fastest -57.01 µs +P-256 ECDSA verify, rind: 39.25 µs, 1.00× the fastest +39.25 µs +P-256 ECDSA verify, aws-lc-rs: 40.24 µs, 1.03× the fastest +40.24 µs +P-256 ECDSA verify, ring: 41.25 µs, 1.05× the fastest +41.25 µs +P-256 ECDSA verify, RustCrypto + dalek: 226.27 µs, 5.77× the fastest +226.27 µs +P-256 ECDSA verify, graviola: 41.92 µs, 1.07× the fastest +41.92 µs +P-256 ECDSA verify, libcrux: 215.83 µs, 5.50× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +215.83 µs ✓ +P-256 ECDSA verify, OpenSSL: 60.27 µs, 1.54× the fastest +60.27 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 80 ns, 1.38× the fastest -80 ns -SHA-256, 64 B, aws-lc-rs: 101 ns, 1.75× the fastest -101 ns -SHA-256, 64 B, ring: 86 ns, 1.48× the fastest -86 ns -SHA-256, 64 B, RustCrypto + dalek: 58 ns, 1.00× the fastest -58 ns -SHA-256, 64 B, graviola: 67 ns, 1.17× the fastest +SHA-256, 64 B, rind: 69 ns, 1.17× the fastest +69 ns +SHA-256, 64 B, aws-lc-rs: 96 ns, 1.63× the fastest +96 ns +SHA-256, 64 B, ring: 78 ns, 1.34× the fastest +78 ns +SHA-256, 64 B, RustCrypto + dalek: 59 ns, 1.00× the fastest +59 ns +SHA-256, 64 B, graviola: 67 ns, 1.15× the fastest 67 ns -SHA-256, 64 B, libcrux: 355 ns, 6.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -355 ns ✓ -SHA-256, 64 B, OpenSSL: 243 ns, 4.20× the fastest -243 ns +SHA-256, 64 B, libcrux: 385 ns, 6.56× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +385 ns ✓ +SHA-256, 64 B, OpenSSL: 244 ns, 4.15× the fastest +244 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 653 ns, 1.03× the fastest -653 ns -SHA-256, 1350 B, aws-lc-rs: 669 ns, 1.06× the fastest -669 ns -SHA-256, 1350 B, ring: 662 ns, 1.05× the fastest -662 ns -SHA-256, 1350 B, RustCrypto + dalek: 631 ns, 1.00× the fastest -631 ns -SHA-256, 1350 B, graviola: 642 ns, 1.02× the fastest -642 ns -SHA-256, 1350 B, libcrux: 3.77 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -3.77 µs ✓ -SHA-256, 1350 B, OpenSSL: 827 ns, 1.31× the fastest -827 ns +SHA-256, 1350 B, rind: 620 ns, 1.00× the fastest +620 ns +SHA-256, 1350 B, aws-lc-rs: 740 ns, 1.20× the fastest +740 ns +SHA-256, 1350 B, ring: 637 ns, 1.03× the fastest +637 ns +SHA-256, 1350 B, RustCrypto + dalek: 618 ns, 1.00× the fastest +618 ns +SHA-256, 1350 B, graviola: 637 ns, 1.03× the fastest +637 ns +SHA-256, 1350 B, libcrux: 3.71 µs, 6.00× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +3.71 µs ✓ +SHA-256, 1350 B, OpenSSL: 815 ns, 1.32× the fastest +815 ns SHA-256, 16 KB -SHA-256, 16 KB, rind: 7.24 µs, 1.00× the fastest -7.24 µs -SHA-256, 16 KB, aws-lc-rs: 7.38 µs, 1.02× the fastest -7.38 µs -SHA-256, 16 KB, ring: 7.40 µs, 1.02× the fastest -7.40 µs -SHA-256, 16 KB, RustCrypto + dalek: 7.32 µs, 1.01× the fastest -7.32 µs -SHA-256, 16 KB, graviola: 7.31 µs, 1.01× the fastest -7.31 µs -SHA-256, 16 KB, libcrux: 45.19 µs, 6.24× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -45.19 µs ✓ -SHA-256, 16 KB, OpenSSL: 7.52 µs, 1.04× the fastest -7.52 µs +SHA-256, 16 KB, rind: 6.86 µs, 1.00× the fastest +6.86 µs +SHA-256, 16 KB, aws-lc-rs: 6.88 µs, 1.00× the fastest +6.88 µs +SHA-256, 16 KB, ring: 6.97 µs, 1.01× the fastest +6.97 µs +SHA-256, 16 KB, RustCrypto + dalek: 7.22 µs, 1.05× the fastest +7.22 µs +SHA-256, 16 KB, graviola: 7.08 µs, 1.03× the fastest +7.08 µs +SHA-256, 16 KB, libcrux: 43.12 µs, 6.28× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +43.12 µs ✓ +SHA-256, 16 KB, OpenSSL: 7.37 µs, 1.07× the fastest +7.37 µs SHA-512, 64 B -SHA-512, 64 B, rind: 195 ns, 1.05× the fastest -195 ns -SHA-512, 64 B, aws-lc-rs: 233 ns, 1.26× the fastest -233 ns -SHA-512, 64 B, ring: 202 ns, 1.09× the fastest -202 ns -SHA-512, 64 B, RustCrypto + dalek: 203 ns, 1.10× the fastest -203 ns -SHA-512, 64 B, graviola: 185 ns, 1.00× the fastest -185 ns -SHA-512, 64 B, libcrux: 268 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -268 ns ✓ -SHA-512, 64 B, OpenSSL: 390 ns, 2.11× the fastest -390 ns +SHA-512, 64 B, rind: 138 ns, 1.00× the fastest +138 ns +SHA-512, 64 B, aws-lc-rs: 224 ns, 1.62× the fastest +224 ns +SHA-512, 64 B, ring: 198 ns, 1.43× the fastest +198 ns +SHA-512, 64 B, RustCrypto + dalek: 192 ns, 1.39× the fastest +192 ns +SHA-512, 64 B, graviola: 206 ns, 1.49× the fastest +206 ns +SHA-512, 64 B, libcrux: 246 ns, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +246 ns ✓ +SHA-512, 64 B, OpenSSL: 355 ns, 2.57× the fastest +355 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 2.75 µs, 1.83× the fastest -2.75 µs -SHA-512, 1350 B, aws-lc-rs: 2.31 µs, 1.54× the fastest -2.31 µs -SHA-512, 1350 B, ring: 1.97 µs, 1.31× the fastest -1.97 µs -SHA-512, 1350 B, RustCrypto + dalek: 2.66 µs, 1.77× the fastest -2.66 µs -SHA-512, 1350 B, graviola: 1.96 µs, 1.30× the fastest -1.96 µs -SHA-512, 1350 B, libcrux: 2.80 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -2.80 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.50 µs, 1.00× the fastest -1.50 µs +SHA-512, 1350 B, rind: 1.77 µs, 1.01× the fastest +1.77 µs +SHA-512, 1350 B, aws-lc-rs: 1.90 µs, 1.08× the fastest +1.90 µs +SHA-512, 1350 B, ring: 1.87 µs, 1.06× the fastest +1.87 µs +SHA-512, 1350 B, RustCrypto + dalek: 1.92 µs, 1.09× the fastest +1.92 µs +SHA-512, 1350 B, graviola: 1.98 µs, 1.13× the fastest +1.98 µs +SHA-512, 1350 B, libcrux: 2.94 µs, 1.67× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +2.94 µs ✓ +SHA-512, 1350 B, OpenSSL: 1.76 µs, 1.00× the fastest +1.76 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 20.37 µs, 1.37× the fastest -20.37 µs -SHA-512, 16 KB, aws-lc-rs: 20.45 µs, 1.38× the fastest -20.45 µs -SHA-512, 16 KB, ring: 20.63 µs, 1.39× the fastest -20.63 µs -SHA-512, 16 KB, RustCrypto + dalek: 20.78 µs, 1.40× the fastest -20.78 µs -SHA-512, 16 KB, graviola: 21.56 µs, 1.45× the fastest -21.56 µs -SHA-512, 16 KB, libcrux: 29.02 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -29.02 µs ✓ -SHA-512, 16 KB, OpenSSL: 14.83 µs, 1.00× the fastest -14.83 µs +SHA-512, 16 KB, rind: 16.28 µs, 1.07× the fastest +16.28 µs +SHA-512, 16 KB, aws-lc-rs: 25.17 µs, 1.66× the fastest +25.17 µs +SHA-512, 16 KB, ring: 25.38 µs, 1.68× the fastest +25.38 µs +SHA-512, 16 KB, RustCrypto + dalek: 24.12 µs, 1.59× the fastest +24.12 µs +SHA-512, 16 KB, graviola: 21.04 µs, 1.39× the fastest +21.04 µs +SHA-512, 16 KB, libcrux: 29.75 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +29.75 µs ✓ +SHA-512, 16 KB, OpenSSL: 15.14 µs, 1.00× the fastest +15.14 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 153 ns, 1.00× the fastest -153 ns -HMAC-SHA256, 64 B, aws-lc-rs: 263 ns, 1.72× the fastest -263 ns -HMAC-SHA256, 64 B, ring: 214 ns, 1.39× the fastest +HMAC-SHA256, 64 B, rind: 147 ns, 1.00× the fastest +147 ns +HMAC-SHA256, 64 B, aws-lc-rs: 264 ns, 1.80× the fastest +264 ns +HMAC-SHA256, 64 B, ring: 214 ns, 1.45× the fastest 214 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 155 ns, 1.01× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek: 155 ns, 1.06× the fastest 155 ns -HMAC-SHA256, 64 B, graviola: 170 ns, 1.11× the fastest -170 ns -HMAC-SHA256, 64 B, libcrux: 823 ns, 5.37× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -823 ns ✓ -HMAC-SHA256, 64 B, OpenSSL: 2.49 µs, 16.24× the fastest -2.49 µs +HMAC-SHA256, 64 B, graviola: 172 ns, 1.17× the fastest +172 ns +HMAC-SHA256, 64 B, libcrux: 851 ns, 5.79× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +851 ns ✓ +HMAC-SHA256, 64 B, OpenSSL: 2.57 µs, 17.50× the fastest +2.57 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 678 ns, 1.00× the fastest -678 ns -HMAC-SHA256, 1350 B, aws-lc-rs: 794 ns, 1.17× the fastest -794 ns -HMAC-SHA256, 1350 B, ring: 749 ns, 1.11× the fastest -749 ns -HMAC-SHA256, 1350 B, RustCrypto + dalek: 681 ns, 1.00× the fastest -681 ns -HMAC-SHA256, 1350 B, graviola: 696 ns, 1.03× the fastest -696 ns -HMAC-SHA256, 1350 B, libcrux: 4.05 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -4.05 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 3.03 µs, 4.46× the fastest -3.03 µs +HMAC-SHA256, 1350 B, rind: 692 ns, 1.00× the fastest +692 ns +HMAC-SHA256, 1350 B, aws-lc-rs: 853 ns, 1.23× the fastest +853 ns +HMAC-SHA256, 1350 B, ring: 791 ns, 1.14× the fastest +791 ns +HMAC-SHA256, 1350 B, RustCrypto + dalek: 728 ns, 1.05× the fastest +728 ns +HMAC-SHA256, 1350 B, graviola: 731 ns, 1.06× the fastest +731 ns +HMAC-SHA256, 1350 B, libcrux: 4.39 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +4.39 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 3.11 µs, 4.50× the fastest +3.11 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 304 ns, 1.00× the fastest -304 ns -HKDF-SHA256 extract and expand, aws-lc-rs: 376 ns, 1.24× the fastest -376 ns -HKDF-SHA256 extract and expand, ring: 398 ns, 1.31× the fastest -398 ns -HKDF-SHA256 extract and expand, RustCrypto + dalek: 310 ns, 1.02× the fastest -310 ns -HKDF-SHA256 extract and expand, libcrux: 1.37 µs, 4.52× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +HKDF-SHA256 extract and expand, rind: 257 ns, 1.00× the fastest +257 ns +HKDF-SHA256 extract and expand, aws-lc-rs: 369 ns, 1.44× the fastest +369 ns +HKDF-SHA256 extract and expand, ring: 399 ns, 1.55× the fastest +399 ns +HKDF-SHA256 extract and expand, RustCrypto + dalek: 309 ns, 1.20× the fastest +309 ns +HKDF-SHA256 extract and expand, libcrux: 1.37 µs, 5.34× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step 1.37 µs ✓ -HKDF-SHA256 extract and expand, OpenSSL: 2.77 µs, 9.12× the fastest -2.77 µs +HKDF-SHA256 extract and expand, OpenSSL: 2.72 µs, 10.57× the fastest +2.72 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 104 ns, 1.01× the fastest -104 ns -HKDF-SHA256 expand, aws-lc-rs: 178 ns, 1.73× the fastest -178 ns -HKDF-SHA256 expand, ring: 142 ns, 1.38× the fastest +HKDF-SHA256 expand, rind: 89 ns, 1.00× the fastest +89 ns +HKDF-SHA256 expand, aws-lc-rs: 179 ns, 2.02× the fastest +179 ns +HKDF-SHA256 expand, ring: 142 ns, 1.60× the fastest 142 ns -HKDF-SHA256 expand, RustCrypto + dalek: 103 ns, 1.00× the fastest +HKDF-SHA256 expand, RustCrypto + dalek: 103 ns, 1.16× the fastest 103 ns -HKDF-SHA256 expand, libcrux: 706 ns, 6.88× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -706 ns ✓ -HKDF-SHA256 expand, OpenSSL: 1.96 µs, 19.03× the fastest -1.96 µs +HKDF-SHA256 expand, libcrux: 714 ns, 8.06× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +714 ns ✓ +HKDF-SHA256 expand, OpenSSL: 2.00 µs, 22.59× the fastest +2.00 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 474.44 µs, 1.15× the fastest -474.44 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 435.90 µs, 1.06× the fastest -435.90 µs -RSA-2048 PKCS#1 sign, ring: 423.03 µs, 1.03× the fastest -423.03 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 987.29 µs, 2.40× the fastest -987.29 µs -RSA-2048 PKCS#1 sign, graviola: 411.78 µs, 1.00× the fastest -411.78 µs -RSA-2048 PKCS#1 sign, OpenSSL: 437.30 µs, 1.06× the fastest -437.30 µs +RSA-2048 PKCS#1 sign, rind: 523.17 µs, 1.10× the fastest +523.17 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 532.39 µs, 1.12× the fastest +532.39 µs +RSA-2048 PKCS#1 sign, ring: 523.12 µs, 1.10× the fastest +523.12 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.26 ms, 2.66× the fastest +1.26 ms +RSA-2048 PKCS#1 sign, graviola: 474.44 µs, 1.00× the fastest +474.44 µs +RSA-2048 PKCS#1 sign, OpenSSL: 520.25 µs, 1.10× the fastest +520.25 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 14.79 µs, 1.08× the fastest -14.79 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 13.65 µs, 1.00× the fastest -13.65 µs -RSA-2048 PKCS#1 verify, ring: 15.38 µs, 1.13× the fastest -15.38 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 50.57 µs, 3.71× the fastest -50.57 µs -RSA-2048 PKCS#1 verify, graviola: 24.70 µs, 1.81× the fastest -24.70 µs -RSA-2048 PKCS#1 verify, OpenSSL: 22.22 µs, 1.63× the fastest -22.22 µs +RSA-2048 PKCS#1 verify, rind: 12.28 µs, 1.00× the fastest +12.28 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 14.60 µs, 1.19× the fastest +14.60 µs +RSA-2048 PKCS#1 verify, ring: 16.56 µs, 1.35× the fastest +16.56 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 54.06 µs, 4.40× the fastest +54.06 µs +RSA-2048 PKCS#1 verify, graviola: 19.25 µs, 1.57× the fastest +19.25 µs +RSA-2048 PKCS#1 verify, OpenSSL: 23.59 µs, 1.92× the fastest +23.59 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 475.37 µs, 1.15× the fastest -475.37 µs -RSA-2048 PSS sign, aws-lc-rs: 436.71 µs, 1.06× the fastest -436.71 µs -RSA-2048 PSS sign, ring: 424.64 µs, 1.03× the fastest -424.64 µs -RSA-2048 PSS sign, RustCrypto + dalek: 995.72 µs, 2.41× the fastest -995.72 µs -RSA-2048 PSS sign, graviola: 413.56 µs, 1.00× the fastest -413.56 µs -RSA-2048 PSS sign, libcrux: 4.79 ms, 11.59× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -4.79 ms ✓ -RSA-2048 PSS sign, OpenSSL: 439.05 µs, 1.06× the fastest -439.05 µs +RSA-2048 PSS sign, rind: 424.30 µs, 1.00× the fastest +424.30 µs +RSA-2048 PSS sign, aws-lc-rs: 481.00 µs, 1.13× the fastest +481.00 µs +RSA-2048 PSS sign, ring: 471.53 µs, 1.11× the fastest +471.53 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.06 ms, 2.50× the fastest +1.06 ms +RSA-2048 PSS sign, graviola: 448.54 µs, 1.06× the fastest +448.54 µs +RSA-2048 PSS sign, libcrux: 5.86 ms, 13.81× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +5.86 ms ✓ +RSA-2048 PSS sign, OpenSSL: 474.99 µs, 1.12× the fastest +474.99 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 11.82 µs, 1.00× the fastest -11.82 µs -RSA-2048 PSS verify, aws-lc-rs: 14.33 µs, 1.21× the fastest -14.33 µs -RSA-2048 PSS verify, ring: 16.27 µs, 1.38× the fastest -16.27 µs -RSA-2048 PSS verify, RustCrypto + dalek: 96.98 µs, 8.20× the fastest -96.98 µs -RSA-2048 PSS verify, graviola: 21.66 µs, 1.83× the fastest -21.66 µs -RSA-2048 PSS verify, libcrux: 465.38 µs, 39.36× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -465.38 µs ✓ -RSA-2048 PSS verify, OpenSSL: 23.36 µs, 1.98× the fastest -23.36 µs +RSA-2048 PSS verify, rind: 12.67 µs, 1.00× the fastest +12.67 µs +RSA-2048 PSS verify, aws-lc-rs: 15.94 µs, 1.26× the fastest +15.94 µs +RSA-2048 PSS verify, ring: 18.03 µs, 1.42× the fastest +18.03 µs +RSA-2048 PSS verify, RustCrypto + dalek: 64.70 µs, 5.11× the fastest +64.70 µs +RSA-2048 PSS verify, graviola: 19.63 µs, 1.55× the fastest +19.63 µs +RSA-2048 PSS verify, libcrux: 312.23 µs, 24.64× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +312.23 µs ✓ +RSA-2048 PSS verify, OpenSSL: 23.60 µs, 1.86× the fastest +23.60 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 8.05 µs, 1.00× the fastest -8.05 µs -ML-KEM-768 key generation, aws-lc-rs: 9.20 µs, 1.14× the fastest -9.20 µs -ML-KEM-768 key generation, RustCrypto + dalek: 58.01 µs, 7.20× the fastest -58.01 µs -ML-KEM-768 key generation, graviola: 8.74 µs, 1.09× the fastest -8.74 µs -ML-KEM-768 key generation, libcrux: 17.51 µs, 2.17× the fastest -17.51 µs -ML-KEM-768 key generation, OpenSSL: 26.11 µs, 3.24× the fastest -26.11 µs +ML-KEM-768 key generation, rind: 8.43 µs, 1.00× the fastest +8.43 µs +ML-KEM-768 key generation, aws-lc-rs: 9.41 µs, 1.12× the fastest +9.41 µs +ML-KEM-768 key generation, RustCrypto + dalek: 60.18 µs, 7.14× the fastest +60.18 µs +ML-KEM-768 key generation, graviola: 9.28 µs, 1.10× the fastest +9.28 µs +ML-KEM-768 key generation, libcrux: 18.15 µs, 2.15× the fastest +18.15 µs +ML-KEM-768 key generation, OpenSSL: 26.82 µs, 3.18× the fastest +26.82 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 8.33 µs, 1.00× the fastest -8.33 µs -ML-KEM-768 encapsulate, aws-lc-rs: 9.38 µs, 1.13× the fastest -9.38 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 67.87 µs, 8.15× the fastest -67.87 µs -ML-KEM-768 encapsulate, graviola: 10.25 µs, 1.23× the fastest -10.25 µs -ML-KEM-768 encapsulate, libcrux: 14.93 µs, 1.79× the fastest -14.93 µs -ML-KEM-768 encapsulate, OpenSSL: 27.30 µs, 3.28× the fastest -27.30 µs +ML-KEM-768 encapsulate, rind: 8.53 µs, 1.00× the fastest +8.53 µs +ML-KEM-768 encapsulate, aws-lc-rs: 10.41 µs, 1.22× the fastest +10.41 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 72.03 µs, 8.44× the fastest +72.03 µs +ML-KEM-768 encapsulate, graviola: 10.95 µs, 1.28× the fastest +10.95 µs +ML-KEM-768 encapsulate, libcrux: 16.03 µs, 1.88× the fastest +16.03 µs +ML-KEM-768 encapsulate, OpenSSL: 30.02 µs, 3.52× the fastest +30.02 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 5.93 µs, 1.00× the fastest -5.93 µs -ML-KEM-768 decapsulate, aws-lc-rs: 11.29 µs, 1.90× the fastest -11.29 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 87.75 µs, 14.80× the fastest -87.75 µs -ML-KEM-768 decapsulate, graviola: 7.10 µs, 1.20× the fastest -7.10 µs -ML-KEM-768 decapsulate, libcrux: 15.64 µs, 2.64× the fastest -15.64 µs -ML-KEM-768 decapsulate, OpenSSL: 22.36 µs, 3.77× the fastest -22.36 µs +ML-KEM-768 decapsulate, rind: 6.07 µs, 1.00× the fastest +6.07 µs +ML-KEM-768 decapsulate, aws-lc-rs: 11.96 µs, 1.97× the fastest +11.96 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 95.17 µs, 15.68× the fastest +95.17 µs +ML-KEM-768 decapsulate, graviola: 7.72 µs, 1.27× the fastest +7.72 µs +ML-KEM-768 decapsulate, libcrux: 16.22 µs, 2.67× the fastest +16.22 µs +ML-KEM-768 decapsulate, OpenSSL: 24.64 µs, 4.06× the fastest +24.64 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 129.00 µs, 1.00× the fastest -129.00 µs -P-384 ECDH, aws-lc-rs: 145.14 µs, 1.13× the fastest -145.14 µs -P-384 ECDH, ring: 580.80 µs, 4.50× the fastest -580.80 µs -P-384 ECDH, RustCrypto + dalek: 782.25 µs, 6.06× the fastest -782.25 µs -P-384 ECDH, graviola: 206.07 µs, 1.60× the fastest -206.07 µs -P-384 ECDH, OpenSSL: 451.93 µs, 3.50× the fastest -451.93 µs +P-384 ECDH, rind: 179.71 µs, 1.00× the fastest +179.71 µs +P-384 ECDH, aws-lc-rs: 180.49 µs, 1.00× the fastest +180.49 µs +P-384 ECDH, ring: 601.49 µs, 3.35× the fastest +601.49 µs +P-384 ECDH, RustCrypto + dalek: 1.04 ms, 5.80× the fastest +1.04 ms +P-384 ECDH, graviola: 302.57 µs, 1.68× the fastest +302.57 µs +P-384 ECDH, OpenSSL: 656.67 µs, 3.65× the fastest +656.67 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 33.91 µs, 1.00× the fastest -33.91 µs -P-384 ECDSA sign, aws-lc-rs: 64.48 µs, 1.90× the fastest -64.48 µs -P-384 ECDSA sign, ring: 313.48 µs, 9.25× the fastest -313.48 µs -P-384 ECDSA sign, RustCrypto + dalek: 183.17 µs, 5.40× the fastest -183.17 µs -P-384 ECDSA sign, graviola: 110.14 µs, 3.25× the fastest -110.14 µs -P-384 ECDSA sign, OpenSSL: 151.27 µs, 4.46× the fastest -151.27 µs +P-384 ECDSA sign, rind: 53.07 µs, 1.00× the fastest +53.07 µs +P-384 ECDSA sign, aws-lc-rs: 97.47 µs, 1.84× the fastest +97.47 µs +P-384 ECDSA sign, ring: 474.64 µs, 8.94× the fastest +474.64 µs +P-384 ECDSA sign, RustCrypto + dalek: 238.31 µs, 4.49× the fastest +238.31 µs +P-384 ECDSA sign, graviola: 185.15 µs, 3.49× the fastest +185.15 µs +P-384 ECDSA sign, OpenSSL: 235.52 µs, 4.44× the fastest +235.52 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 121.08 µs, 1.00× the fastest -121.08 µs -P-384 ECDSA verify, aws-lc-rs: 151.44 µs, 1.25× the fastest -151.44 µs -P-384 ECDSA verify, ring: 560.90 µs, 4.63× the fastest -560.90 µs -P-384 ECDSA verify, RustCrypto + dalek: 670.20 µs, 5.54× the fastest -670.20 µs -P-384 ECDSA verify, graviola: 204.92 µs, 1.69× the fastest -204.92 µs -P-384 ECDSA verify, OpenSSL: 371.49 µs, 3.07× the fastest -371.49 µs +P-384 ECDSA verify, rind: 157.33 µs, 1.00× the fastest +157.33 µs +P-384 ECDSA verify, aws-lc-rs: 199.21 µs, 1.27× the fastest +199.21 µs +P-384 ECDSA verify, ring: 727.10 µs, 4.62× the fastest +727.10 µs +P-384 ECDSA verify, RustCrypto + dalek: 872.06 µs, 5.54× the fastest +872.06 µs +P-384 ECDSA verify, graviola: 315.99 µs, 2.01× the fastest +315.99 µs +P-384 ECDSA verify, OpenSSL: 551.89 µs, 3.51× the fastest +551.89 µs P-521 ECDH -P-521 ECDH, rind: 221.05 µs, 1.00× the fastest -221.05 µs -P-521 ECDH, aws-lc-rs: 235.94 µs, 1.07× the fastest -235.94 µs -P-521 ECDH, RustCrypto + dalek: 604.98 µs, 2.74× the fastest -604.98 µs -P-521 ECDH, OpenSSL: 390.71 µs, 1.77× the fastest -390.71 µs +P-521 ECDH, rind: 283.91 µs, 1.00× the fastest +283.91 µs +P-521 ECDH, aws-lc-rs: 288.17 µs, 1.01× the fastest +288.17 µs +P-521 ECDH, RustCrypto + dalek: 868.41 µs, 3.06× the fastest +868.41 µs +P-521 ECDH, OpenSSL: 505.62 µs, 1.78× the fastest +505.62 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 56.66 µs, 1.00× the fastest -56.66 µs -P-521 ECDSA sign, aws-lc-rs: 125.99 µs, 2.22× the fastest -125.99 µs -P-521 ECDSA sign, RustCrypto + dalek: 144.49 µs, 2.55× the fastest -144.49 µs -P-521 ECDSA sign, OpenSSL: 186.41 µs, 3.29× the fastest -186.41 µs +P-521 ECDSA sign, rind: 58.32 µs, 1.00× the fastest +58.32 µs +P-521 ECDSA sign, aws-lc-rs: 152.35 µs, 2.61× the fastest +152.35 µs +P-521 ECDSA sign, RustCrypto + dalek: 177.47 µs, 3.04× the fastest +177.47 µs +P-521 ECDSA sign, OpenSSL: 219.60 µs, 3.77× the fastest +219.60 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 191.80 µs, 1.00× the fastest -191.80 µs -P-521 ECDSA verify, aws-lc-rs: 257.70 µs, 1.34× the fastest -257.70 µs -P-521 ECDSA verify, RustCrypto + dalek: 481.75 µs, 2.51× the fastest -481.75 µs -P-521 ECDSA verify, OpenSSL: 379.62 µs, 1.98× the fastest -379.62 µs +P-521 ECDSA verify, rind: 222.28 µs, 1.00× the fastest +222.28 µs +P-521 ECDSA verify, aws-lc-rs: 327.35 µs, 1.47× the fastest +327.35 µs +P-521 ECDSA verify, RustCrypto + dalek: 610.17 µs, 2.75× the fastest +610.17 µs +P-521 ECDSA verify, OpenSSL: 473.66 µs, 2.13× the fastest +473.66 µs diff --git a/benchmarks/nixos.svg b/benchmarks/nixos.svg index d1657ba8f..3fae2187f 100644 --- a/benchmarks/nixos.svg +++ b/benchmarks/nixos.svg @@ -28,284 +28,284 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 239.83 µs, 1.00× the fastest -239.83 µs -full handshake, X25519MLKEM768, aws-lc-rs: 308.49 µs, 1.29× the fastest -308.49 µs -full handshake, X25519MLKEM768, graviola: 258.62 µs, 1.08× the fastest -258.62 µs -full handshake, X25519MLKEM768, OpenSSL: 805.54 µs, 3.36× the fastest -805.54 µs +full handshake, X25519MLKEM768, rind: 260.78 µs, 1.00× the fastest +260.78 µs +full handshake, X25519MLKEM768, aws-lc-rs: 331.87 µs, 1.27× the fastest +331.87 µs +full handshake, X25519MLKEM768, graviola: 342.68 µs, 1.31× the fastest +342.68 µs +full handshake, X25519MLKEM768, OpenSSL: 802.57 µs, 3.08× the fastest +802.57 µs full handshake, X25519 -full handshake, X25519, rind: 215.61 µs, 1.00× the fastest -215.61 µs -full handshake, X25519, aws-lc-rs: 277.77 µs, 1.29× the fastest -277.77 µs -full handshake, X25519, ring: 296.66 µs, 1.38× the fastest -296.66 µs -full handshake, X25519, graviola: 225.37 µs, 1.05× the fastest -225.37 µs -full handshake, X25519, OpenSSL: 578.47 µs, 2.68× the fastest -578.47 µs +full handshake, X25519, rind: 227.82 µs, 1.00× the fastest +227.82 µs +full handshake, X25519, aws-lc-rs: 292.13 µs, 1.28× the fastest +292.13 µs +full handshake, X25519, ring: 328.46 µs, 1.44× the fastest +328.46 µs +full handshake, X25519, graviola: 238.70 µs, 1.05× the fastest +238.70 µs +full handshake, X25519, OpenSSL: 574.28 µs, 2.52× the fastest +574.28 µs full handshake, P-256 -full handshake, P-256, rind: 248.67 µs, 1.00× the fastest -248.67 µs -full handshake, P-256, aws-lc-rs: 312.54 µs, 1.26× the fastest -312.54 µs -full handshake, P-256, ring: 296.53 µs, 1.19× the fastest -296.53 µs -full handshake, P-256, graviola: 266.19 µs, 1.07× the fastest -266.19 µs -full handshake, P-256, OpenSSL: 639.58 µs, 2.57× the fastest -639.58 µs +full handshake, P-256, rind: 242.76 µs, 1.00× the fastest +242.76 µs +full handshake, P-256, aws-lc-rs: 304.37 µs, 1.25× the fastest +304.37 µs +full handshake, P-256, ring: 281.93 µs, 1.16× the fastest +281.93 µs +full handshake, P-256, graviola: 270.05 µs, 1.11× the fastest +270.05 µs +full handshake, P-256, OpenSSL: 624.35 µs, 2.57× the fastest +624.35 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 176.45 µs, 1.01× the fastest -176.45 µs -full handshake, Ed25519 certificate, aws-lc-rs: 226.97 µs, 1.30× the fastest -226.97 µs -full handshake, Ed25519 certificate, ring: 289.56 µs, 1.65× the fastest -289.56 µs -full handshake, Ed25519 certificate, graviola: 175.24 µs, 1.00× the fastest -175.24 µs -full handshake, Ed25519 certificate, OpenSSL: 647.87 µs, 3.70× the fastest -647.87 µs +full handshake, Ed25519 certificate, rind: 186.73 µs, 1.00× the fastest +186.73 µs +full handshake, Ed25519 certificate, aws-lc-rs: 233.43 µs, 1.25× the fastest +233.43 µs +full handshake, Ed25519 certificate, ring: 292.96 µs, 1.57× the fastest +292.96 µs +full handshake, Ed25519 certificate, graviola: 186.05 µs, 1.00× the fastest +186.05 µs +full handshake, Ed25519 certificate, OpenSSL: 640.40 µs, 3.44× the fastest +640.40 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 644.89 µs, 1.11× the fastest -644.89 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 650.26 µs, 1.12× the fastest -650.26 µs -full handshake, RSA-2048 certificate, ring: 666.29 µs, 1.14× the fastest -666.29 µs -full handshake, RSA-2048 certificate, graviola: 582.45 µs, 1.00× the fastest -582.45 µs -full handshake, RSA-2048 certificate, OpenSSL: 931.27 µs, 1.60× the fastest -931.27 µs +full handshake, RSA-2048 certificate, rind: 550.14 µs, 1.00× the fastest +550.14 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 646.28 µs, 1.17× the fastest +646.28 µs +full handshake, RSA-2048 certificate, ring: 647.36 µs, 1.18× the fastest +647.36 µs +full handshake, RSA-2048 certificate, graviola: 567.91 µs, 1.03× the fastest +567.91 µs +full handshake, RSA-2048 certificate, OpenSSL: 992.05 µs, 1.80× the fastest +992.05 µs resumed handshake, X25519 -resumed handshake, X25519, rind: 81.83 µs, 1.00× the fastest -81.83 µs -resumed handshake, X25519, aws-lc-rs: 137.94 µs, 1.69× the fastest -137.94 µs -resumed handshake, X25519, ring: 162.09 µs, 1.98× the fastest -162.09 µs -resumed handshake, X25519, graviola: 87.66 µs, 1.07× the fastest -87.66 µs -resumed handshake, X25519, OpenSSL: 461.94 µs, 5.65× the fastest -461.94 µs +resumed handshake, X25519, rind: 77.19 µs, 1.00× the fastest +77.19 µs +resumed handshake, X25519, aws-lc-rs: 132.67 µs, 1.72× the fastest +132.67 µs +resumed handshake, X25519, ring: 158.11 µs, 2.05× the fastest +158.11 µs +resumed handshake, X25519, graviola: 77.33 µs, 1.00× the fastest +77.33 µs +resumed handshake, X25519, OpenSSL: 370.51 µs, 4.80× the fastest +370.51 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 290.62 µs, 1.00× the fastest -290.62 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 459.42 µs, 1.58× the fastest -459.42 µs -1 MB transfer, AES-128-GCM, ring: 314.22 µs, 1.08× the fastest -314.22 µs -1 MB transfer, AES-128-GCM, graviola: 453.27 µs, 1.56× the fastest -453.27 µs -1 MB transfer, AES-128-GCM, OpenSSL: 492.29 µs, 1.69× the fastest -492.29 µs +1 MB transfer, AES-128-GCM, rind: 289.43 µs, 1.03× the fastest +289.43 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 458.21 µs, 1.62× the fastest +458.21 µs +1 MB transfer, AES-128-GCM, ring: 282.22 µs, 1.00× the fastest +282.22 µs +1 MB transfer, AES-128-GCM, graviola: 424.38 µs, 1.50× the fastest +424.38 µs +1 MB transfer, AES-128-GCM, OpenSSL: 469.84 µs, 1.66× the fastest +469.84 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 310.98 µs, 1.02× the fastest -310.98 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 487.61 µs, 1.60× the fastest -487.61 µs -1 MB transfer, AES-256-GCM, ring: 305.27 µs, 1.00× the fastest -305.27 µs -1 MB transfer, AES-256-GCM, graviola: 513.59 µs, 1.68× the fastest -513.59 µs -1 MB transfer, AES-256-GCM, OpenSSL: 607.83 µs, 1.99× the fastest -607.83 µs +1 MB transfer, AES-256-GCM, rind: 292.74 µs, 1.01× the fastest +292.74 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 461.28 µs, 1.59× the fastest +461.28 µs +1 MB transfer, AES-256-GCM, ring: 289.90 µs, 1.00× the fastest +289.90 µs +1 MB transfer, AES-256-GCM, graviola: 490.29 µs, 1.69× the fastest +490.29 µs +1 MB transfer, AES-256-GCM, OpenSSL: 533.20 µs, 1.84× the fastest +533.20 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 739.91 µs, 1.00× the fastest -739.91 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 739.12 µs, 1.00× the fastest -739.12 µs -1 MB transfer, ChaCha20-Poly1305, ring: 747.52 µs, 1.01× the fastest -747.52 µs -1 MB transfer, ChaCha20-Poly1305, graviola: 1.49 ms, 2.02× the fastest -1.49 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 855.61 µs, 1.16× the fastest -855.61 µs +1 MB transfer, ChaCha20-Poly1305, rind: 688.78 µs, 1.00× the fastest +688.78 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 687.53 µs, 1.00× the fastest +687.53 µs +1 MB transfer, ChaCha20-Poly1305, ring: 693.01 µs, 1.01× the fastest +693.01 µs +1 MB transfer, ChaCha20-Poly1305, graviola: 1.37 ms, 2.00× the fastest +1.37 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 782.98 µs, 1.14× the fastest +782.98 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 40 ns, 1.00× the fastest -40 ns -AES-128-GCM seal, 32 B, aws-lc-rs: 81 ns, 2.00× the fastest -81 ns -AES-128-GCM seal, 32 B, ring: 54 ns, 1.34× the fastest -54 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 95 ns, 2.35× the fastest -95 ns -AES-128-GCM seal, 32 B, graviola: 67 ns, 1.67× the fastest -67 ns -AES-128-GCM seal, 32 B, libcrux: 308 ns, 7.60× the fastest -308 ns -AES-128-GCM seal, 32 B, OpenSSL: 114 ns, 2.81× the fastest -114 ns +AES-128-GCM seal, 32 B, rind: 39 ns, 1.00× the fastest +39 ns +AES-128-GCM seal, 32 B, aws-lc-rs: 78 ns, 2.02× the fastest +78 ns +AES-128-GCM seal, 32 B, ring: 56 ns, 1.45× the fastest +56 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 97 ns, 2.50× the fastest +97 ns +AES-128-GCM seal, 32 B, graviola: 70 ns, 1.80× the fastest +70 ns +AES-128-GCM seal, 32 B, libcrux: 321 ns, 8.29× the fastest +321 ns +AES-128-GCM seal, 32 B, OpenSSL: 115 ns, 2.97× the fastest +115 ns AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind: 170 ns, 1.00× the fastest -170 ns -AES-128-GCM seal, 1350 B, aws-lc-rs: 289 ns, 1.70× the fastest -289 ns -AES-128-GCM seal, 1350 B, ring: 184 ns, 1.08× the fastest -184 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 435 ns, 2.55× the fastest -435 ns -AES-128-GCM seal, 1350 B, graviola: 296 ns, 1.74× the fastest -296 ns -AES-128-GCM seal, 1350 B, libcrux: 3.91 µs, 22.95× the fastest -3.91 µs -AES-128-GCM seal, 1350 B, OpenSSL: 323 ns, 1.90× the fastest -323 ns +AES-128-GCM seal, 1350 B, rind: 165 ns, 1.00× the fastest +165 ns +AES-128-GCM seal, 1350 B, aws-lc-rs: 291 ns, 1.77× the fastest +291 ns +AES-128-GCM seal, 1350 B, ring: 191 ns, 1.16× the fastest +191 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 434 ns, 2.63× the fastest +434 ns +AES-128-GCM seal, 1350 B, graviola: 295 ns, 1.79× the fastest +295 ns +AES-128-GCM seal, 1350 B, libcrux: 4.72 µs, 28.63× the fastest +4.72 µs +AES-128-GCM seal, 1350 B, OpenSSL: 326 ns, 1.98× the fastest +326 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 1.39 µs, 1.00× the fastest -1.39 µs -AES-128-GCM seal, 16 KB, aws-lc-rs: 2.58 µs, 1.85× the fastest -2.58 µs -AES-128-GCM seal, 16 KB, ring: 1.43 µs, 1.03× the fastest -1.43 µs -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 4.18 µs, 3.00× the fastest -4.18 µs -AES-128-GCM seal, 16 KB, graviola: 2.58 µs, 1.85× the fastest -2.58 µs -AES-128-GCM seal, 16 KB, libcrux: 44.41 µs, 31.87× the fastest -44.41 µs -AES-128-GCM seal, 16 KB, OpenSSL: 2.62 µs, 1.88× the fastest -2.62 µs +AES-128-GCM seal, 16 KB, rind: 1.38 µs, 1.00× the fastest +1.38 µs +AES-128-GCM seal, 16 KB, aws-lc-rs: 2.63 µs, 1.91× the fastest +2.63 µs +AES-128-GCM seal, 16 KB, ring: 1.39 µs, 1.01× the fastest +1.39 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 4.28 µs, 3.10× the fastest +4.28 µs +AES-128-GCM seal, 16 KB, graviola: 2.57 µs, 1.86× the fastest +2.57 µs +AES-128-GCM seal, 16 KB, libcrux: 53.90 µs, 39.11× the fastest +53.90 µs +AES-128-GCM seal, 16 KB, OpenSSL: 2.61 µs, 1.89× the fastest +2.61 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 47 ns, 1.00× the fastest -47 ns -AES-128-GCM open, 32 B, aws-lc-rs: 72 ns, 1.53× the fastest +AES-128-GCM open, 32 B, rind: 44 ns, 1.00× the fastest +44 ns +AES-128-GCM open, 32 B, aws-lc-rs: 72 ns, 1.63× the fastest 72 ns -AES-128-GCM open, 32 B, ring: 58 ns, 1.24× the fastest +AES-128-GCM open, 32 B, ring: 58 ns, 1.30× the fastest 58 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 102 ns, 2.16× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek: 102 ns, 2.29× the fastest 102 ns -AES-128-GCM open, 32 B, graviola: 65 ns, 1.39× the fastest +AES-128-GCM open, 32 B, graviola: 65 ns, 1.46× the fastest 65 ns -AES-128-GCM open, 32 B, libcrux: 320 ns, 6.81× the fastest -320 ns -AES-128-GCM open, 32 B, OpenSSL: 118 ns, 2.52× the fastest +AES-128-GCM open, 32 B, libcrux: 317 ns, 7.15× the fastest +317 ns +AES-128-GCM open, 32 B, OpenSSL: 118 ns, 2.65× the fastest 118 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 175 ns, 1.00× the fastest -175 ns -AES-128-GCM open, 1350 B, aws-lc-rs: 295 ns, 1.68× the fastest -295 ns +AES-128-GCM open, 1350 B, rind: 174 ns, 1.00× the fastest +174 ns +AES-128-GCM open, 1350 B, aws-lc-rs: 298 ns, 1.71× the fastest +298 ns AES-128-GCM open, 1350 B, ring: 185 ns, 1.06× the fastest 185 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 448 ns, 2.56× the fastest -448 ns -AES-128-GCM open, 1350 B, graviola: 307 ns, 1.75× the fastest -307 ns -AES-128-GCM open, 1350 B, libcrux: 3.93 µs, 22.44× the fastest -3.93 µs -AES-128-GCM open, 1350 B, OpenSSL: 332 ns, 1.90× the fastest -332 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 451 ns, 2.58× the fastest +451 ns +AES-128-GCM open, 1350 B, graviola: 305 ns, 1.75× the fastest +305 ns +AES-128-GCM open, 1350 B, libcrux: 3.92 µs, 22.46× the fastest +3.92 µs +AES-128-GCM open, 1350 B, OpenSSL: 333 ns, 1.91× the fastest +333 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 1.45 µs, 1.00× the fastest -1.45 µs -AES-128-GCM open, 16 KB, aws-lc-rs: 2.71 µs, 1.87× the fastest -2.71 µs -AES-128-GCM open, 16 KB, ring: 1.48 µs, 1.02× the fastest -1.48 µs -AES-128-GCM open, 16 KB, RustCrypto + dalek: 4.28 µs, 2.95× the fastest -4.28 µs -AES-128-GCM open, 16 KB, graviola: 2.66 µs, 1.83× the fastest -2.66 µs -AES-128-GCM open, 16 KB, libcrux: 44.58 µs, 30.67× the fastest -44.58 µs -AES-128-GCM open, 16 KB, OpenSSL: 2.75 µs, 1.89× the fastest -2.75 µs +AES-128-GCM open, 16 KB, rind: 1.44 µs, 1.00× the fastest +1.44 µs +AES-128-GCM open, 16 KB, aws-lc-rs: 2.72 µs, 1.89× the fastest +2.72 µs +AES-128-GCM open, 16 KB, ring: 1.45 µs, 1.01× the fastest +1.45 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 4.29 µs, 2.98× the fastest +4.29 µs +AES-128-GCM open, 16 KB, graviola: 2.65 µs, 1.84× the fastest +2.65 µs +AES-128-GCM open, 16 KB, libcrux: 44.29 µs, 30.79× the fastest +44.29 µs +AES-128-GCM open, 16 KB, OpenSSL: 2.77 µs, 1.93× the fastest +2.77 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 44 ns, 1.00× the fastest -44 ns -AES-256-GCM seal, 32 B, aws-lc-rs: 81 ns, 1.84× the fastest -81 ns -AES-256-GCM seal, 32 B, ring: 58 ns, 1.31× the fastest -58 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.29× the fastest +AES-256-GCM seal, 32 B, rind: 41 ns, 1.00× the fastest +41 ns +AES-256-GCM seal, 32 B, aws-lc-rs: 82 ns, 1.99× the fastest +82 ns +AES-256-GCM seal, 32 B, ring: 57 ns, 1.38× the fastest +57 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.45× the fastest 101 ns -AES-256-GCM seal, 32 B, graviola: 73 ns, 1.67× the fastest -73 ns -AES-256-GCM seal, 32 B, libcrux: 426 ns, 9.69× the fastest +AES-256-GCM seal, 32 B, graviola: 74 ns, 1.81× the fastest +74 ns +AES-256-GCM seal, 32 B, libcrux: 426 ns, 10.35× the fastest 426 ns -AES-256-GCM seal, 32 B, OpenSSL: 119 ns, 2.70× the fastest -119 ns +AES-256-GCM seal, 32 B, OpenSSL: 118 ns, 2.87× the fastest +118 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 188 ns, 1.00× the fastest -188 ns -AES-256-GCM seal, 1350 B, aws-lc-rs: 313 ns, 1.66× the fastest -313 ns -AES-256-GCM seal, 1350 B, ring: 206 ns, 1.10× the fastest -206 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 488 ns, 2.60× the fastest -488 ns -AES-256-GCM seal, 1350 B, graviola: 338 ns, 1.80× the fastest -338 ns -AES-256-GCM seal, 1350 B, libcrux: 6.96 µs, 37.07× the fastest -6.96 µs -AES-256-GCM seal, 1350 B, OpenSSL: 345 ns, 1.84× the fastest +AES-256-GCM seal, 1350 B, rind: 184 ns, 1.00× the fastest +184 ns +AES-256-GCM seal, 1350 B, aws-lc-rs: 311 ns, 1.69× the fastest +311 ns +AES-256-GCM seal, 1350 B, ring: 205 ns, 1.11× the fastest +205 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 489 ns, 2.65× the fastest +489 ns +AES-256-GCM seal, 1350 B, graviola: 337 ns, 1.83× the fastest +337 ns +AES-256-GCM seal, 1350 B, libcrux: 6.91 µs, 37.50× the fastest +6.91 µs +AES-256-GCM seal, 1350 B, OpenSSL: 345 ns, 1.87× the fastest 345 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 1.54 µs, 1.00× the fastest -1.54 µs -AES-256-GCM seal, 16 KB, aws-lc-rs: 2.79 µs, 1.81× the fastest -2.79 µs -AES-256-GCM seal, 16 KB, ring: 1.56 µs, 1.01× the fastest -1.56 µs -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 4.83 µs, 3.14× the fastest -4.83 µs -AES-256-GCM seal, 16 KB, graviola: 3.00 µs, 1.95× the fastest -3.00 µs -AES-256-GCM seal, 16 KB, libcrux: 80.86 µs, 52.58× the fastest -80.86 µs -AES-256-GCM seal, 16 KB, OpenSSL: 2.82 µs, 1.83× the fastest +AES-256-GCM seal, 16 KB, rind: 1.51 µs, 1.00× the fastest +1.51 µs +AES-256-GCM seal, 16 KB, aws-lc-rs: 2.78 µs, 1.84× the fastest +2.78 µs +AES-256-GCM seal, 16 KB, ring: 1.53 µs, 1.01× the fastest +1.53 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 4.78 µs, 3.16× the fastest +4.78 µs +AES-256-GCM seal, 16 KB, graviola: 2.98 µs, 1.97× the fastest +2.98 µs +AES-256-GCM seal, 16 KB, libcrux: 80.61 µs, 53.39× the fastest +80.61 µs +AES-256-GCM seal, 16 KB, OpenSSL: 2.82 µs, 1.87× the fastest 2.82 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 52 ns, 1.00× the fastest -52 ns -AES-256-GCM open, 32 B, aws-lc-rs: 82 ns, 1.56× the fastest -82 ns -AES-256-GCM open, 32 B, ring: 62 ns, 1.18× the fastest -62 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 111 ns, 2.12× the fastest -111 ns -AES-256-GCM open, 32 B, graviola: 68 ns, 1.30× the fastest +AES-256-GCM open, 32 B, rind: 48 ns, 1.00× the fastest +48 ns +AES-256-GCM open, 32 B, aws-lc-rs: 79 ns, 1.62× the fastest +79 ns +AES-256-GCM open, 32 B, ring: 61 ns, 1.25× the fastest +61 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 109 ns, 2.24× the fastest +109 ns +AES-256-GCM open, 32 B, graviola: 68 ns, 1.39× the fastest 68 ns -AES-256-GCM open, 32 B, libcrux: 442 ns, 8.43× the fastest -442 ns -AES-256-GCM open, 32 B, OpenSSL: 121 ns, 2.30× the fastest -121 ns +AES-256-GCM open, 32 B, libcrux: 441 ns, 9.10× the fastest +441 ns +AES-256-GCM open, 32 B, OpenSSL: 122 ns, 2.52× the fastest +122 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 194 ns, 1.00× the fastest -194 ns -AES-256-GCM open, 1350 B, aws-lc-rs: 320 ns, 1.65× the fastest -320 ns -AES-256-GCM open, 1350 B, ring: 205 ns, 1.06× the fastest -205 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 507 ns, 2.61× the fastest -507 ns -AES-256-GCM open, 1350 B, graviola: 342 ns, 1.76× the fastest -342 ns -AES-256-GCM open, 1350 B, libcrux: 6.39 µs, 32.91× the fastest -6.39 µs -AES-256-GCM open, 1350 B, OpenSSL: 358 ns, 1.84× the fastest -358 ns +AES-256-GCM open, 1350 B, rind: 192 ns, 1.00× the fastest +192 ns +AES-256-GCM open, 1350 B, aws-lc-rs: 322 ns, 1.68× the fastest +322 ns +AES-256-GCM open, 1350 B, ring: 204 ns, 1.06× the fastest +204 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 508 ns, 2.65× the fastest +508 ns +AES-256-GCM open, 1350 B, graviola: 341 ns, 1.78× the fastest +341 ns +AES-256-GCM open, 1350 B, libcrux: 6.79 µs, 35.42× the fastest +6.79 µs +AES-256-GCM open, 1350 B, OpenSSL: 354 ns, 1.85× the fastest +354 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 1.62 µs, 1.00× the fastest -1.62 µs -AES-256-GCM open, 16 KB, aws-lc-rs: 2.89 µs, 1.79× the fastest -2.89 µs -AES-256-GCM open, 16 KB, ring: 1.65 µs, 1.02× the fastest -1.65 µs -AES-256-GCM open, 16 KB, RustCrypto + dalek: 4.92 µs, 3.04× the fastest -4.92 µs -AES-256-GCM open, 16 KB, graviola: 3.05 µs, 1.89× the fastest -3.05 µs -AES-256-GCM open, 16 KB, libcrux: 74.38 µs, 46.05× the fastest -74.38 µs -AES-256-GCM open, 16 KB, OpenSSL: 2.96 µs, 1.83× the fastest -2.96 µs +AES-256-GCM open, 16 KB, rind: 1.60 µs, 1.00× the fastest +1.60 µs +AES-256-GCM open, 16 KB, aws-lc-rs: 2.92 µs, 1.82× the fastest +2.92 µs +AES-256-GCM open, 16 KB, ring: 1.62 µs, 1.01× the fastest +1.62 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 4.93 µs, 3.08× the fastest +4.93 µs +AES-256-GCM open, 16 KB, graviola: 3.04 µs, 1.90× the fastest +3.04 µs +AES-256-GCM open, 16 KB, libcrux: 79.19 µs, 49.38× the fastest +79.19 µs +AES-256-GCM open, 16 KB, OpenSSL: 2.98 µs, 1.86× the fastest +2.98 µs ChaCha20-Poly1305 seal, 32 B ChaCha20-Poly1305 seal, 32 B, rind: 114 ns, 1.01× the fastest 114 ns @@ -313,507 +313,507 @@ 119 ns ChaCha20-Poly1305 seal, 32 B, ring: 113 ns, 1.00× the fastest 113 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.18 µs, 10.45× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.18 µs, 10.48× the fastest 1.18 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 216 ns, 1.91× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola: 216 ns, 1.92× the fastest 216 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 218 ns, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -218 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 255 ns, 2.26× the fastest -255 ns +ChaCha20-Poly1305 seal, 32 B, libcrux: 220 ns, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +220 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 257 ns, 2.29× the fastest +257 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 530 ns, 1.00× the fastest -530 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 535 ns, 1.01× the fastest -535 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 531 ns, 1.00× the fastest -531 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.92 µs, 3.63× the fastest -1.92 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 1.08 µs, 2.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind: 533 ns, 1.01× the fastest +533 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 532 ns, 1.01× the fastest +532 ns +ChaCha20-Poly1305 seal, 1350 B, ring: 527 ns, 1.00× the fastest +527 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 1.93 µs, 3.65× the fastest +1.93 µs +ChaCha20-Poly1305 seal, 1350 B, graviola: 1.08 µs, 2.05× the fastest 1.08 µs -ChaCha20-Poly1305 seal, 1350 B, libcrux: 2.33 µs, 4.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -2.33 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 742 ns, 1.40× the fastest -742 ns +ChaCha20-Poly1305 seal, 1350 B, libcrux: 2.34 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +2.34 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 745 ns, 1.41× the fastest +745 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 4.58 µs, 1.01× the fastest -4.58 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.62 µs, 1.02× the fastest -4.62 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 4.55 µs, 1.00× the fastest -4.55 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 9.81 µs, 2.15× the fastest -9.81 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 9.87 µs, 2.17× the fastest -9.87 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 26.03 µs, 5.72× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -26.03 µs ✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 5.10 µs, 1.12× the fastest -5.10 µs +ChaCha20-Poly1305 seal, 16 KB, rind: 4.68 µs, 1.00× the fastest +4.68 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.78 µs, 1.02× the fastest +4.78 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 4.68 µs, 1.00× the fastest +4.68 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 10.09 µs, 2.16× the fastest +10.09 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 10.15 µs, 2.17× the fastest +10.15 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 26.70 µs, 5.71× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +26.70 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 5.14 µs, 1.10× the fastest +5.14 µs XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind: 242 ns, 1.00× the fastest -242 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 263 ns, 1.09× the fastest -263 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.35 µs, 5.61× the fastest -1.35 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 348 ns, 1.44× the fastest -348 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 336 ns, 1.39× the fastest -336 ns +XChaCha20-Poly1305 seal, 32 B, rind: 243 ns, 1.00× the fastest +243 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 267 ns, 1.10× the fastest +267 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.36 µs, 5.60× the fastest +1.36 µs +XChaCha20-Poly1305 seal, 32 B, graviola: 357 ns, 1.47× the fastest +357 ns +XChaCha20-Poly1305 seal, 32 B, libcrux: 351 ns, 1.45× the fastest +351 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 653 ns, 1.00× the fastest -653 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 673 ns, 1.03× the fastest -673 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.06 µs, 3.16× the fastest -2.06 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 1.20 µs, 1.84× the fastest -1.20 µs -XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.45 µs, 3.75× the fastest -2.45 µs +XChaCha20-Poly1305 seal, 1350 B, rind: 775 ns, 1.07× the fastest +775 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 723 ns, 1.00× the fastest +723 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.18 µs, 3.01× the fastest +2.18 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.31 µs, 1.81× the fastest +1.31 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 2.70 µs, 3.73× the fastest +2.70 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 4.76 µs, 1.00× the fastest -4.76 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 4.74 µs, 1.00× the fastest -4.74 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 9.95 µs, 2.10× the fastest -9.95 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 10.02 µs, 2.11× the fastest -10.02 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 26.08 µs, 5.50× the fastest -26.08 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 5.23 µs, 1.00× the fastest +5.23 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 5.37 µs, 1.03× the fastest +5.37 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 11.38 µs, 2.17× the fastest +11.38 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 10.80 µs, 2.06× the fastest +10.80 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 28.66 µs, 5.48× the fastest +28.66 µs QUIC header protection AES-128 header protection AES-128 header protection, rind: 4 ns, 1.00× the fastest 4 ns -AES-128 header protection, aws-lc-rs: 6 ns, 1.51× the fastest -6 ns -AES-128 header protection, ring: 7 ns, 1.67× the fastest +AES-128 header protection, aws-lc-rs: 6 ns, 1.45× the fastest +6 ns +AES-128 header protection, ring: 7 ns, 1.74× the fastest 7 ns AES-256 header protection AES-256 header protection, rind: 6 ns, 1.00× the fastest 6 ns -AES-256 header protection, aws-lc-rs: 8 ns, 1.40× the fastest +AES-256 header protection, aws-lc-rs: 8 ns, 1.32× the fastest 8 ns -AES-256 header protection, ring: 9 ns, 1.60× the fastest -9 ns +AES-256 header protection, ring: 10 ns, 1.64× the fastest +10 ns ChaCha20 header protection ChaCha20 header protection, rind: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included 61 ns ✓ -ChaCha20 header protection, aws-lc-rs: 81 ns, 1.34× the fastest -81 ns -ChaCha20 header protection, ring: 75 ns, 1.23× the fastest -75 ns +ChaCha20 header protection, aws-lc-rs: 82 ns, 1.34× the fastest +82 ns +ChaCha20 header protection, ring: 74 ns, 1.22× the fastest +74 ns Key agreement X25519 -X25519, rind: 24.80 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -24.80 µs ✓ -X25519, aws-lc-rs: 25.24 µs, 1.02× the fastest -25.24 µs -X25519, ring: 47.40 µs, 1.92× the fastest -47.40 µs -X25519, RustCrypto + dalek: 53.79 µs, 2.18× the fastest -53.79 µs -X25519, graviola: 24.65 µs, 1.00× the fastest -24.65 µs -X25519, libcrux: 64.51 µs, 2.62× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -64.51 µs ✓ -X25519, OpenSSL: 49.46 µs, 2.01× the fastest -49.46 µs +X25519, rind: 23.97 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +23.97 µs ✓ +X25519, aws-lc-rs: 24.61 µs, 1.03× the fastest +24.61 µs +X25519, ring: 46.72 µs, 1.95× the fastest +46.72 µs +X25519, RustCrypto + dalek: 52.09 µs, 2.18× the fastest +52.09 µs +X25519, graviola: 23.94 µs, 1.00× the fastest +23.94 µs +X25519, libcrux: 64.60 µs, 2.70× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +64.60 µs ✓ +X25519, OpenSSL: 49.70 µs, 2.08× the fastest +49.70 µs P-256 ECDH -P-256 ECDH, rind: 39.18 µs, 1.00× the fastest -39.18 µs -P-256 ECDH, aws-lc-rs: 41.12 µs, 1.05× the fastest -41.12 µs -P-256 ECDH, ring: 41.79 µs, 1.07× the fastest -41.79 µs -P-256 ECDH, RustCrypto + dalek: 256.63 µs, 6.55× the fastest -256.63 µs -P-256 ECDH, graviola: 41.91 µs, 1.07× the fastest -41.91 µs -P-256 ECDH, libcrux: 246.51 µs, 6.29× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -246.51 µs ✓ -P-256 ECDH, OpenSSL: 68.12 µs, 1.74× the fastest -68.12 µs +P-256 ECDH, rind: 42.82 µs, 1.01× the fastest +42.82 µs +P-256 ECDH, aws-lc-rs: 42.60 µs, 1.00× the fastest +42.60 µs +P-256 ECDH, ring: 46.05 µs, 1.08× the fastest +46.05 µs +P-256 ECDH, RustCrypto + dalek: 268.62 µs, 6.31× the fastest +268.62 µs +P-256 ECDH, graviola: 47.87 µs, 1.12× the fastest +47.87 µs +P-256 ECDH, libcrux: 268.70 µs, 6.31× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +268.70 µs ✓ +P-256 ECDH, OpenSSL: 71.25 µs, 1.67× the fastest +71.25 µs Signatures Ed25519 sign -Ed25519 sign, rind: 5.79 µs, 1.00× the fastest -5.79 µs -Ed25519 sign, aws-lc-rs: 6.10 µs, 1.05× the fastest -6.10 µs -Ed25519 sign, ring: 17.26 µs, 2.98× the fastest -17.26 µs -Ed25519 sign, RustCrypto + dalek: 13.36 µs, 2.31× the fastest -13.36 µs -Ed25519 sign, graviola: 5.79 µs, 1.00× the fastest -5.79 µs -Ed25519 sign, libcrux: 40.33 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -40.33 µs ✓ -Ed25519 sign, OpenSSL: 23.40 µs, 4.04× the fastest -23.40 µs +Ed25519 sign, rind: 5.72 µs, 1.00× the fastest +5.72 µs +Ed25519 sign, aws-lc-rs: 6.13 µs, 1.07× the fastest +6.13 µs +Ed25519 sign, ring: 17.23 µs, 3.01× the fastest +17.23 µs +Ed25519 sign, RustCrypto + dalek: 13.30 µs, 2.33× the fastest +13.30 µs +Ed25519 sign, graviola: 5.83 µs, 1.02× the fastest +5.83 µs +Ed25519 sign, libcrux: 41.37 µs, 7.24× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +41.37 µs ✓ +Ed25519 sign, OpenSSL: 23.38 µs, 4.09× the fastest +23.38 µs Ed25519 verify -Ed25519 verify, rind: 27.18 µs, 1.09× the fastest -27.18 µs -Ed25519 verify, aws-lc-rs: 27.25 µs, 1.09× the fastest -27.25 µs -Ed25519 verify, ring: 34.90 µs, 1.40× the fastest -34.90 µs -Ed25519 verify, RustCrypto + dalek: 24.97 µs, 1.00× the fastest -24.97 µs -Ed25519 verify, graviola: 27.14 µs, 1.09× the fastest -27.14 µs -Ed25519 verify, libcrux: 54.65 µs, 2.19× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -54.65 µs ✓ -Ed25519 verify, OpenSSL: 79.44 µs, 3.18× the fastest -79.44 µs +Ed25519 verify, rind: 27.15 µs, 1.09× the fastest +27.15 µs +Ed25519 verify, aws-lc-rs: 27.03 µs, 1.09× the fastest +27.03 µs +Ed25519 verify, ring: 34.76 µs, 1.40× the fastest +34.76 µs +Ed25519 verify, RustCrypto + dalek: 24.83 µs, 1.00× the fastest +24.83 µs +Ed25519 verify, graviola: 27.08 µs, 1.09× the fastest +27.08 µs +Ed25519 verify, libcrux: 54.52 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +54.52 µs ✓ +Ed25519 verify, OpenSSL: 79.25 µs, 3.19× the fastest +79.25 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 8.98 µs, 1.00× the fastest -8.98 µs -P-256 ECDSA sign, aws-lc-rs: 11.96 µs, 1.33× the fastest -11.96 µs -P-256 ECDSA sign, ring: 12.76 µs, 1.42× the fastest -12.76 µs -P-256 ECDSA sign, RustCrypto + dalek: 64.84 µs, 7.22× the fastest -64.84 µs -P-256 ECDSA sign, graviola: 10.48 µs, 1.17× the fastest -10.48 µs -P-256 ECDSA sign, libcrux: 87.54 µs, 9.75× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -87.54 µs ✓ -P-256 ECDSA sign, OpenSSL: 16.42 µs, 1.83× the fastest -16.42 µs +P-256 ECDSA sign, rind: 9.62 µs, 1.00× the fastest +9.62 µs +P-256 ECDSA sign, aws-lc-rs: 12.66 µs, 1.32× the fastest +12.66 µs +P-256 ECDSA sign, ring: 13.68 µs, 1.42× the fastest +13.68 µs +P-256 ECDSA sign, RustCrypto + dalek: 70.62 µs, 7.34× the fastest +70.62 µs +P-256 ECDSA sign, graviola: 11.49 µs, 1.19× the fastest +11.49 µs +P-256 ECDSA sign, libcrux: 95.47 µs, 9.92× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +95.47 µs ✓ +P-256 ECDSA sign, OpenSSL: 18.04 µs, 1.88× the fastest +18.04 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 38.23 µs, 1.00× the fastest -38.23 µs -P-256 ECDSA verify, aws-lc-rs: 38.71 µs, 1.01× the fastest -38.71 µs -P-256 ECDSA verify, ring: 39.16 µs, 1.02× the fastest -39.16 µs -P-256 ECDSA verify, RustCrypto + dalek: 217.96 µs, 5.70× the fastest -217.96 µs -P-256 ECDSA verify, graviola: 40.39 µs, 1.06× the fastest -40.39 µs -P-256 ECDSA verify, libcrux: 208.08 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -208.08 µs ✓ -P-256 ECDSA verify, OpenSSL: 57.01 µs, 1.49× the fastest -57.01 µs +P-256 ECDSA verify, rind: 39.25 µs, 1.00× the fastest +39.25 µs +P-256 ECDSA verify, aws-lc-rs: 40.24 µs, 1.03× the fastest +40.24 µs +P-256 ECDSA verify, ring: 41.25 µs, 1.05× the fastest +41.25 µs +P-256 ECDSA verify, RustCrypto + dalek: 226.27 µs, 5.77× the fastest +226.27 µs +P-256 ECDSA verify, graviola: 41.92 µs, 1.07× the fastest +41.92 µs +P-256 ECDSA verify, libcrux: 215.83 µs, 5.50× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +215.83 µs ✓ +P-256 ECDSA verify, OpenSSL: 60.27 µs, 1.54× the fastest +60.27 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 80 ns, 1.38× the fastest -80 ns -SHA-256, 64 B, aws-lc-rs: 101 ns, 1.75× the fastest -101 ns -SHA-256, 64 B, ring: 86 ns, 1.48× the fastest -86 ns -SHA-256, 64 B, RustCrypto + dalek: 58 ns, 1.00× the fastest -58 ns -SHA-256, 64 B, graviola: 67 ns, 1.17× the fastest +SHA-256, 64 B, rind: 69 ns, 1.17× the fastest +69 ns +SHA-256, 64 B, aws-lc-rs: 96 ns, 1.63× the fastest +96 ns +SHA-256, 64 B, ring: 78 ns, 1.34× the fastest +78 ns +SHA-256, 64 B, RustCrypto + dalek: 59 ns, 1.00× the fastest +59 ns +SHA-256, 64 B, graviola: 67 ns, 1.15× the fastest 67 ns -SHA-256, 64 B, libcrux: 355 ns, 6.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -355 ns ✓ -SHA-256, 64 B, OpenSSL: 243 ns, 4.20× the fastest -243 ns +SHA-256, 64 B, libcrux: 385 ns, 6.56× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +385 ns ✓ +SHA-256, 64 B, OpenSSL: 244 ns, 4.15× the fastest +244 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 653 ns, 1.03× the fastest -653 ns -SHA-256, 1350 B, aws-lc-rs: 669 ns, 1.06× the fastest -669 ns -SHA-256, 1350 B, ring: 662 ns, 1.05× the fastest -662 ns -SHA-256, 1350 B, RustCrypto + dalek: 631 ns, 1.00× the fastest -631 ns -SHA-256, 1350 B, graviola: 642 ns, 1.02× the fastest -642 ns -SHA-256, 1350 B, libcrux: 3.77 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -3.77 µs ✓ -SHA-256, 1350 B, OpenSSL: 827 ns, 1.31× the fastest -827 ns +SHA-256, 1350 B, rind: 620 ns, 1.00× the fastest +620 ns +SHA-256, 1350 B, aws-lc-rs: 740 ns, 1.20× the fastest +740 ns +SHA-256, 1350 B, ring: 637 ns, 1.03× the fastest +637 ns +SHA-256, 1350 B, RustCrypto + dalek: 618 ns, 1.00× the fastest +618 ns +SHA-256, 1350 B, graviola: 637 ns, 1.03× the fastest +637 ns +SHA-256, 1350 B, libcrux: 3.71 µs, 6.00× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +3.71 µs ✓ +SHA-256, 1350 B, OpenSSL: 815 ns, 1.32× the fastest +815 ns SHA-256, 16 KB -SHA-256, 16 KB, rind: 7.24 µs, 1.00× the fastest -7.24 µs -SHA-256, 16 KB, aws-lc-rs: 7.38 µs, 1.02× the fastest -7.38 µs -SHA-256, 16 KB, ring: 7.40 µs, 1.02× the fastest -7.40 µs -SHA-256, 16 KB, RustCrypto + dalek: 7.32 µs, 1.01× the fastest -7.32 µs -SHA-256, 16 KB, graviola: 7.31 µs, 1.01× the fastest -7.31 µs -SHA-256, 16 KB, libcrux: 45.19 µs, 6.24× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -45.19 µs ✓ -SHA-256, 16 KB, OpenSSL: 7.52 µs, 1.04× the fastest -7.52 µs +SHA-256, 16 KB, rind: 6.86 µs, 1.00× the fastest +6.86 µs +SHA-256, 16 KB, aws-lc-rs: 6.88 µs, 1.00× the fastest +6.88 µs +SHA-256, 16 KB, ring: 6.97 µs, 1.01× the fastest +6.97 µs +SHA-256, 16 KB, RustCrypto + dalek: 7.22 µs, 1.05× the fastest +7.22 µs +SHA-256, 16 KB, graviola: 7.08 µs, 1.03× the fastest +7.08 µs +SHA-256, 16 KB, libcrux: 43.12 µs, 6.28× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +43.12 µs ✓ +SHA-256, 16 KB, OpenSSL: 7.37 µs, 1.07× the fastest +7.37 µs SHA-512, 64 B -SHA-512, 64 B, rind: 195 ns, 1.05× the fastest -195 ns -SHA-512, 64 B, aws-lc-rs: 233 ns, 1.26× the fastest -233 ns -SHA-512, 64 B, ring: 202 ns, 1.09× the fastest -202 ns -SHA-512, 64 B, RustCrypto + dalek: 203 ns, 1.10× the fastest -203 ns -SHA-512, 64 B, graviola: 185 ns, 1.00× the fastest -185 ns -SHA-512, 64 B, libcrux: 268 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -268 ns ✓ -SHA-512, 64 B, OpenSSL: 390 ns, 2.11× the fastest -390 ns +SHA-512, 64 B, rind: 138 ns, 1.00× the fastest +138 ns +SHA-512, 64 B, aws-lc-rs: 224 ns, 1.62× the fastest +224 ns +SHA-512, 64 B, ring: 198 ns, 1.43× the fastest +198 ns +SHA-512, 64 B, RustCrypto + dalek: 192 ns, 1.39× the fastest +192 ns +SHA-512, 64 B, graviola: 206 ns, 1.49× the fastest +206 ns +SHA-512, 64 B, libcrux: 246 ns, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +246 ns ✓ +SHA-512, 64 B, OpenSSL: 355 ns, 2.57× the fastest +355 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 2.75 µs, 1.83× the fastest -2.75 µs -SHA-512, 1350 B, aws-lc-rs: 2.31 µs, 1.54× the fastest -2.31 µs -SHA-512, 1350 B, ring: 1.97 µs, 1.31× the fastest -1.97 µs -SHA-512, 1350 B, RustCrypto + dalek: 2.66 µs, 1.77× the fastest -2.66 µs -SHA-512, 1350 B, graviola: 1.96 µs, 1.30× the fastest -1.96 µs -SHA-512, 1350 B, libcrux: 2.80 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -2.80 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.50 µs, 1.00× the fastest -1.50 µs +SHA-512, 1350 B, rind: 1.77 µs, 1.01× the fastest +1.77 µs +SHA-512, 1350 B, aws-lc-rs: 1.90 µs, 1.08× the fastest +1.90 µs +SHA-512, 1350 B, ring: 1.87 µs, 1.06× the fastest +1.87 µs +SHA-512, 1350 B, RustCrypto + dalek: 1.92 µs, 1.09× the fastest +1.92 µs +SHA-512, 1350 B, graviola: 1.98 µs, 1.13× the fastest +1.98 µs +SHA-512, 1350 B, libcrux: 2.94 µs, 1.67× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +2.94 µs ✓ +SHA-512, 1350 B, OpenSSL: 1.76 µs, 1.00× the fastest +1.76 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 20.37 µs, 1.37× the fastest -20.37 µs -SHA-512, 16 KB, aws-lc-rs: 20.45 µs, 1.38× the fastest -20.45 µs -SHA-512, 16 KB, ring: 20.63 µs, 1.39× the fastest -20.63 µs -SHA-512, 16 KB, RustCrypto + dalek: 20.78 µs, 1.40× the fastest -20.78 µs -SHA-512, 16 KB, graviola: 21.56 µs, 1.45× the fastest -21.56 µs -SHA-512, 16 KB, libcrux: 29.02 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -29.02 µs ✓ -SHA-512, 16 KB, OpenSSL: 14.83 µs, 1.00× the fastest -14.83 µs +SHA-512, 16 KB, rind: 16.28 µs, 1.07× the fastest +16.28 µs +SHA-512, 16 KB, aws-lc-rs: 25.17 µs, 1.66× the fastest +25.17 µs +SHA-512, 16 KB, ring: 25.38 µs, 1.68× the fastest +25.38 µs +SHA-512, 16 KB, RustCrypto + dalek: 24.12 µs, 1.59× the fastest +24.12 µs +SHA-512, 16 KB, graviola: 21.04 µs, 1.39× the fastest +21.04 µs +SHA-512, 16 KB, libcrux: 29.75 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +29.75 µs ✓ +SHA-512, 16 KB, OpenSSL: 15.14 µs, 1.00× the fastest +15.14 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 153 ns, 1.00× the fastest -153 ns -HMAC-SHA256, 64 B, aws-lc-rs: 263 ns, 1.72× the fastest -263 ns -HMAC-SHA256, 64 B, ring: 214 ns, 1.39× the fastest +HMAC-SHA256, 64 B, rind: 147 ns, 1.00× the fastest +147 ns +HMAC-SHA256, 64 B, aws-lc-rs: 264 ns, 1.80× the fastest +264 ns +HMAC-SHA256, 64 B, ring: 214 ns, 1.45× the fastest 214 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 155 ns, 1.01× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek: 155 ns, 1.06× the fastest 155 ns -HMAC-SHA256, 64 B, graviola: 170 ns, 1.11× the fastest -170 ns -HMAC-SHA256, 64 B, libcrux: 823 ns, 5.37× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -823 ns ✓ -HMAC-SHA256, 64 B, OpenSSL: 2.49 µs, 16.24× the fastest -2.49 µs +HMAC-SHA256, 64 B, graviola: 172 ns, 1.17× the fastest +172 ns +HMAC-SHA256, 64 B, libcrux: 851 ns, 5.79× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +851 ns ✓ +HMAC-SHA256, 64 B, OpenSSL: 2.57 µs, 17.50× the fastest +2.57 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 678 ns, 1.00× the fastest -678 ns -HMAC-SHA256, 1350 B, aws-lc-rs: 794 ns, 1.17× the fastest -794 ns -HMAC-SHA256, 1350 B, ring: 749 ns, 1.11× the fastest -749 ns -HMAC-SHA256, 1350 B, RustCrypto + dalek: 681 ns, 1.00× the fastest -681 ns -HMAC-SHA256, 1350 B, graviola: 696 ns, 1.03× the fastest -696 ns -HMAC-SHA256, 1350 B, libcrux: 4.05 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -4.05 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 3.03 µs, 4.46× the fastest -3.03 µs +HMAC-SHA256, 1350 B, rind: 692 ns, 1.00× the fastest +692 ns +HMAC-SHA256, 1350 B, aws-lc-rs: 853 ns, 1.23× the fastest +853 ns +HMAC-SHA256, 1350 B, ring: 791 ns, 1.14× the fastest +791 ns +HMAC-SHA256, 1350 B, RustCrypto + dalek: 728 ns, 1.05× the fastest +728 ns +HMAC-SHA256, 1350 B, graviola: 731 ns, 1.06× the fastest +731 ns +HMAC-SHA256, 1350 B, libcrux: 4.39 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +4.39 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 3.11 µs, 4.50× the fastest +3.11 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 304 ns, 1.00× the fastest -304 ns -HKDF-SHA256 extract and expand, aws-lc-rs: 376 ns, 1.24× the fastest -376 ns -HKDF-SHA256 extract and expand, ring: 398 ns, 1.31× the fastest -398 ns -HKDF-SHA256 extract and expand, RustCrypto + dalek: 310 ns, 1.02× the fastest -310 ns -HKDF-SHA256 extract and expand, libcrux: 1.37 µs, 4.52× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +HKDF-SHA256 extract and expand, rind: 257 ns, 1.00× the fastest +257 ns +HKDF-SHA256 extract and expand, aws-lc-rs: 369 ns, 1.44× the fastest +369 ns +HKDF-SHA256 extract and expand, ring: 399 ns, 1.55× the fastest +399 ns +HKDF-SHA256 extract and expand, RustCrypto + dalek: 309 ns, 1.20× the fastest +309 ns +HKDF-SHA256 extract and expand, libcrux: 1.37 µs, 5.34× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step 1.37 µs ✓ -HKDF-SHA256 extract and expand, OpenSSL: 2.77 µs, 9.12× the fastest -2.77 µs +HKDF-SHA256 extract and expand, OpenSSL: 2.72 µs, 10.57× the fastest +2.72 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 104 ns, 1.01× the fastest -104 ns -HKDF-SHA256 expand, aws-lc-rs: 178 ns, 1.73× the fastest -178 ns -HKDF-SHA256 expand, ring: 142 ns, 1.38× the fastest -142 ns -HKDF-SHA256 expand, RustCrypto + dalek: 103 ns, 1.00× the fastest +HKDF-SHA256 expand, rind: 89 ns, 1.00× the fastest +89 ns +HKDF-SHA256 expand, aws-lc-rs: 179 ns, 2.02× the fastest +179 ns +HKDF-SHA256 expand, ring: 142 ns, 1.60× the fastest +142 ns +HKDF-SHA256 expand, RustCrypto + dalek: 103 ns, 1.16× the fastest 103 ns -HKDF-SHA256 expand, libcrux: 706 ns, 6.88× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -706 ns ✓ -HKDF-SHA256 expand, OpenSSL: 1.96 µs, 19.03× the fastest -1.96 µs +HKDF-SHA256 expand, libcrux: 714 ns, 8.06× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +714 ns ✓ +HKDF-SHA256 expand, OpenSSL: 2.00 µs, 22.59× the fastest +2.00 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 474.44 µs, 1.15× the fastest -474.44 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 435.90 µs, 1.06× the fastest -435.90 µs -RSA-2048 PKCS#1 sign, ring: 423.03 µs, 1.03× the fastest -423.03 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 987.29 µs, 2.40× the fastest -987.29 µs -RSA-2048 PKCS#1 sign, graviola: 411.78 µs, 1.00× the fastest -411.78 µs -RSA-2048 PKCS#1 sign, OpenSSL: 437.30 µs, 1.06× the fastest -437.30 µs +RSA-2048 PKCS#1 sign, rind: 523.17 µs, 1.10× the fastest +523.17 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 532.39 µs, 1.12× the fastest +532.39 µs +RSA-2048 PKCS#1 sign, ring: 523.12 µs, 1.10× the fastest +523.12 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.26 ms, 2.66× the fastest +1.26 ms +RSA-2048 PKCS#1 sign, graviola: 474.44 µs, 1.00× the fastest +474.44 µs +RSA-2048 PKCS#1 sign, OpenSSL: 520.25 µs, 1.10× the fastest +520.25 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 14.79 µs, 1.08× the fastest -14.79 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 13.65 µs, 1.00× the fastest -13.65 µs -RSA-2048 PKCS#1 verify, ring: 15.38 µs, 1.13× the fastest -15.38 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 50.57 µs, 3.71× the fastest -50.57 µs -RSA-2048 PKCS#1 verify, graviola: 24.70 µs, 1.81× the fastest -24.70 µs -RSA-2048 PKCS#1 verify, OpenSSL: 22.22 µs, 1.63× the fastest -22.22 µs +RSA-2048 PKCS#1 verify, rind: 12.28 µs, 1.00× the fastest +12.28 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 14.60 µs, 1.19× the fastest +14.60 µs +RSA-2048 PKCS#1 verify, ring: 16.56 µs, 1.35× the fastest +16.56 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 54.06 µs, 4.40× the fastest +54.06 µs +RSA-2048 PKCS#1 verify, graviola: 19.25 µs, 1.57× the fastest +19.25 µs +RSA-2048 PKCS#1 verify, OpenSSL: 23.59 µs, 1.92× the fastest +23.59 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 475.37 µs, 1.15× the fastest -475.37 µs -RSA-2048 PSS sign, aws-lc-rs: 436.71 µs, 1.06× the fastest -436.71 µs -RSA-2048 PSS sign, ring: 424.64 µs, 1.03× the fastest -424.64 µs -RSA-2048 PSS sign, RustCrypto + dalek: 995.72 µs, 2.41× the fastest -995.72 µs -RSA-2048 PSS sign, graviola: 413.56 µs, 1.00× the fastest -413.56 µs -RSA-2048 PSS sign, libcrux: 4.79 ms, 11.59× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -4.79 ms ✓ -RSA-2048 PSS sign, OpenSSL: 439.05 µs, 1.06× the fastest -439.05 µs +RSA-2048 PSS sign, rind: 424.30 µs, 1.00× the fastest +424.30 µs +RSA-2048 PSS sign, aws-lc-rs: 481.00 µs, 1.13× the fastest +481.00 µs +RSA-2048 PSS sign, ring: 471.53 µs, 1.11× the fastest +471.53 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.06 ms, 2.50× the fastest +1.06 ms +RSA-2048 PSS sign, graviola: 448.54 µs, 1.06× the fastest +448.54 µs +RSA-2048 PSS sign, libcrux: 5.86 ms, 13.81× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +5.86 ms ✓ +RSA-2048 PSS sign, OpenSSL: 474.99 µs, 1.12× the fastest +474.99 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 11.82 µs, 1.00× the fastest -11.82 µs -RSA-2048 PSS verify, aws-lc-rs: 14.33 µs, 1.21× the fastest -14.33 µs -RSA-2048 PSS verify, ring: 16.27 µs, 1.38× the fastest -16.27 µs -RSA-2048 PSS verify, RustCrypto + dalek: 96.98 µs, 8.20× the fastest -96.98 µs -RSA-2048 PSS verify, graviola: 21.66 µs, 1.83× the fastest -21.66 µs -RSA-2048 PSS verify, libcrux: 465.38 µs, 39.36× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -465.38 µs ✓ -RSA-2048 PSS verify, OpenSSL: 23.36 µs, 1.98× the fastest -23.36 µs +RSA-2048 PSS verify, rind: 12.67 µs, 1.00× the fastest +12.67 µs +RSA-2048 PSS verify, aws-lc-rs: 15.94 µs, 1.26× the fastest +15.94 µs +RSA-2048 PSS verify, ring: 18.03 µs, 1.42× the fastest +18.03 µs +RSA-2048 PSS verify, RustCrypto + dalek: 64.70 µs, 5.11× the fastest +64.70 µs +RSA-2048 PSS verify, graviola: 19.63 µs, 1.55× the fastest +19.63 µs +RSA-2048 PSS verify, libcrux: 312.23 µs, 24.64× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +312.23 µs ✓ +RSA-2048 PSS verify, OpenSSL: 23.60 µs, 1.86× the fastest +23.60 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 8.05 µs, 1.00× the fastest -8.05 µs -ML-KEM-768 key generation, aws-lc-rs: 9.20 µs, 1.14× the fastest -9.20 µs -ML-KEM-768 key generation, RustCrypto + dalek: 58.01 µs, 7.20× the fastest -58.01 µs -ML-KEM-768 key generation, graviola: 8.74 µs, 1.09× the fastest -8.74 µs -ML-KEM-768 key generation, libcrux: 17.51 µs, 2.17× the fastest -17.51 µs -ML-KEM-768 key generation, OpenSSL: 26.11 µs, 3.24× the fastest -26.11 µs +ML-KEM-768 key generation, rind: 8.43 µs, 1.00× the fastest +8.43 µs +ML-KEM-768 key generation, aws-lc-rs: 9.41 µs, 1.12× the fastest +9.41 µs +ML-KEM-768 key generation, RustCrypto + dalek: 60.18 µs, 7.14× the fastest +60.18 µs +ML-KEM-768 key generation, graviola: 9.28 µs, 1.10× the fastest +9.28 µs +ML-KEM-768 key generation, libcrux: 18.15 µs, 2.15× the fastest +18.15 µs +ML-KEM-768 key generation, OpenSSL: 26.82 µs, 3.18× the fastest +26.82 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 8.33 µs, 1.00× the fastest -8.33 µs -ML-KEM-768 encapsulate, aws-lc-rs: 9.38 µs, 1.13× the fastest -9.38 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 67.87 µs, 8.15× the fastest -67.87 µs -ML-KEM-768 encapsulate, graviola: 10.25 µs, 1.23× the fastest -10.25 µs -ML-KEM-768 encapsulate, libcrux: 14.93 µs, 1.79× the fastest -14.93 µs -ML-KEM-768 encapsulate, OpenSSL: 27.30 µs, 3.28× the fastest -27.30 µs +ML-KEM-768 encapsulate, rind: 8.53 µs, 1.00× the fastest +8.53 µs +ML-KEM-768 encapsulate, aws-lc-rs: 10.41 µs, 1.22× the fastest +10.41 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 72.03 µs, 8.44× the fastest +72.03 µs +ML-KEM-768 encapsulate, graviola: 10.95 µs, 1.28× the fastest +10.95 µs +ML-KEM-768 encapsulate, libcrux: 16.03 µs, 1.88× the fastest +16.03 µs +ML-KEM-768 encapsulate, OpenSSL: 30.02 µs, 3.52× the fastest +30.02 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 5.93 µs, 1.00× the fastest -5.93 µs -ML-KEM-768 decapsulate, aws-lc-rs: 11.29 µs, 1.90× the fastest -11.29 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 87.75 µs, 14.80× the fastest -87.75 µs -ML-KEM-768 decapsulate, graviola: 7.10 µs, 1.20× the fastest -7.10 µs -ML-KEM-768 decapsulate, libcrux: 15.64 µs, 2.64× the fastest -15.64 µs -ML-KEM-768 decapsulate, OpenSSL: 22.36 µs, 3.77× the fastest -22.36 µs +ML-KEM-768 decapsulate, rind: 6.07 µs, 1.00× the fastest +6.07 µs +ML-KEM-768 decapsulate, aws-lc-rs: 11.96 µs, 1.97× the fastest +11.96 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 95.17 µs, 15.68× the fastest +95.17 µs +ML-KEM-768 decapsulate, graviola: 7.72 µs, 1.27× the fastest +7.72 µs +ML-KEM-768 decapsulate, libcrux: 16.22 µs, 2.67× the fastest +16.22 µs +ML-KEM-768 decapsulate, OpenSSL: 24.64 µs, 4.06× the fastest +24.64 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 129.00 µs, 1.00× the fastest -129.00 µs -P-384 ECDH, aws-lc-rs: 145.14 µs, 1.13× the fastest -145.14 µs -P-384 ECDH, ring: 580.80 µs, 4.50× the fastest -580.80 µs -P-384 ECDH, RustCrypto + dalek: 782.25 µs, 6.06× the fastest -782.25 µs -P-384 ECDH, graviola: 206.07 µs, 1.60× the fastest -206.07 µs -P-384 ECDH, OpenSSL: 451.93 µs, 3.50× the fastest -451.93 µs +P-384 ECDH, rind: 179.71 µs, 1.00× the fastest +179.71 µs +P-384 ECDH, aws-lc-rs: 180.49 µs, 1.00× the fastest +180.49 µs +P-384 ECDH, ring: 601.49 µs, 3.35× the fastest +601.49 µs +P-384 ECDH, RustCrypto + dalek: 1.04 ms, 5.80× the fastest +1.04 ms +P-384 ECDH, graviola: 302.57 µs, 1.68× the fastest +302.57 µs +P-384 ECDH, OpenSSL: 656.67 µs, 3.65× the fastest +656.67 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 33.91 µs, 1.00× the fastest -33.91 µs -P-384 ECDSA sign, aws-lc-rs: 64.48 µs, 1.90× the fastest -64.48 µs -P-384 ECDSA sign, ring: 313.48 µs, 9.25× the fastest -313.48 µs -P-384 ECDSA sign, RustCrypto + dalek: 183.17 µs, 5.40× the fastest -183.17 µs -P-384 ECDSA sign, graviola: 110.14 µs, 3.25× the fastest -110.14 µs -P-384 ECDSA sign, OpenSSL: 151.27 µs, 4.46× the fastest -151.27 µs +P-384 ECDSA sign, rind: 53.07 µs, 1.00× the fastest +53.07 µs +P-384 ECDSA sign, aws-lc-rs: 97.47 µs, 1.84× the fastest +97.47 µs +P-384 ECDSA sign, ring: 474.64 µs, 8.94× the fastest +474.64 µs +P-384 ECDSA sign, RustCrypto + dalek: 238.31 µs, 4.49× the fastest +238.31 µs +P-384 ECDSA sign, graviola: 185.15 µs, 3.49× the fastest +185.15 µs +P-384 ECDSA sign, OpenSSL: 235.52 µs, 4.44× the fastest +235.52 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 121.08 µs, 1.00× the fastest -121.08 µs -P-384 ECDSA verify, aws-lc-rs: 151.44 µs, 1.25× the fastest -151.44 µs -P-384 ECDSA verify, ring: 560.90 µs, 4.63× the fastest -560.90 µs -P-384 ECDSA verify, RustCrypto + dalek: 670.20 µs, 5.54× the fastest -670.20 µs -P-384 ECDSA verify, graviola: 204.92 µs, 1.69× the fastest -204.92 µs -P-384 ECDSA verify, OpenSSL: 371.49 µs, 3.07× the fastest -371.49 µs +P-384 ECDSA verify, rind: 157.33 µs, 1.00× the fastest +157.33 µs +P-384 ECDSA verify, aws-lc-rs: 199.21 µs, 1.27× the fastest +199.21 µs +P-384 ECDSA verify, ring: 727.10 µs, 4.62× the fastest +727.10 µs +P-384 ECDSA verify, RustCrypto + dalek: 872.06 µs, 5.54× the fastest +872.06 µs +P-384 ECDSA verify, graviola: 315.99 µs, 2.01× the fastest +315.99 µs +P-384 ECDSA verify, OpenSSL: 551.89 µs, 3.51× the fastest +551.89 µs P-521 ECDH -P-521 ECDH, rind: 221.05 µs, 1.00× the fastest -221.05 µs -P-521 ECDH, aws-lc-rs: 235.94 µs, 1.07× the fastest -235.94 µs -P-521 ECDH, RustCrypto + dalek: 604.98 µs, 2.74× the fastest -604.98 µs -P-521 ECDH, OpenSSL: 390.71 µs, 1.77× the fastest -390.71 µs +P-521 ECDH, rind: 283.91 µs, 1.00× the fastest +283.91 µs +P-521 ECDH, aws-lc-rs: 288.17 µs, 1.01× the fastest +288.17 µs +P-521 ECDH, RustCrypto + dalek: 868.41 µs, 3.06× the fastest +868.41 µs +P-521 ECDH, OpenSSL: 505.62 µs, 1.78× the fastest +505.62 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 56.66 µs, 1.00× the fastest -56.66 µs -P-521 ECDSA sign, aws-lc-rs: 125.99 µs, 2.22× the fastest -125.99 µs -P-521 ECDSA sign, RustCrypto + dalek: 144.49 µs, 2.55× the fastest -144.49 µs -P-521 ECDSA sign, OpenSSL: 186.41 µs, 3.29× the fastest -186.41 µs +P-521 ECDSA sign, rind: 58.32 µs, 1.00× the fastest +58.32 µs +P-521 ECDSA sign, aws-lc-rs: 152.35 µs, 2.61× the fastest +152.35 µs +P-521 ECDSA sign, RustCrypto + dalek: 177.47 µs, 3.04× the fastest +177.47 µs +P-521 ECDSA sign, OpenSSL: 219.60 µs, 3.77× the fastest +219.60 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 191.80 µs, 1.00× the fastest -191.80 µs -P-521 ECDSA verify, aws-lc-rs: 257.70 µs, 1.34× the fastest -257.70 µs -P-521 ECDSA verify, RustCrypto + dalek: 481.75 µs, 2.51× the fastest -481.75 µs -P-521 ECDSA verify, OpenSSL: 379.62 µs, 1.98× the fastest -379.62 µs +P-521 ECDSA verify, rind: 222.28 µs, 1.00× the fastest +222.28 µs +P-521 ECDSA verify, aws-lc-rs: 327.35 µs, 1.47× the fastest +327.35 µs +P-521 ECDSA verify, RustCrypto + dalek: 610.17 µs, 2.75× the fastest +610.17 µs +P-521 ECDSA verify, OpenSSL: 473.66 µs, 2.13× the fastest +473.66 µs diff --git a/benchmarks/nixos2-dark.svg b/benchmarks/nixos2-dark.svg index 9eae68b05..1ebfe61b5 100644 --- a/benchmarks/nixos2-dark.svg +++ b/benchmarks/nixos2-dark.svg @@ -28,774 +28,792 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 311.29 µs, 1.00× the fastest -311.29 µs -full handshake, X25519MLKEM768, aws-lc-rs: 452.02 µs, 1.45× the fastest -452.02 µs -full handshake, X25519MLKEM768, graviola: 375.56 µs, 1.21× the fastest -375.56 µs -full handshake, X25519MLKEM768, OpenSSL: 837.01 µs, 2.69× the fastest -837.01 µs +full handshake, X25519MLKEM768, rind: 302.43 µs, 1.00× the fastest +302.43 µs +full handshake, X25519MLKEM768, aws-lc-rs: 458.06 µs, 1.51× the fastest +458.06 µs +full handshake, X25519MLKEM768, graviola: 375.57 µs, 1.24× the fastest +375.57 µs +full handshake, X25519MLKEM768, OpenSSL: 830.76 µs, 2.75× the fastest +830.76 µs full handshake, X25519 -full handshake, X25519, rind: 267.07 µs, 1.00× the fastest -267.07 µs -full handshake, X25519, aws-lc-rs: 379.99 µs, 1.42× the fastest -379.99 µs -full handshake, X25519, ring: 339.51 µs, 1.27× the fastest -339.51 µs -full handshake, X25519, graviola: 316.39 µs, 1.18× the fastest -316.39 µs -full handshake, X25519, OpenSSL: 688.73 µs, 2.58× the fastest -688.73 µs +full handshake, X25519, rind: 260.02 µs, 1.00× the fastest +260.02 µs +full handshake, X25519, aws-lc-rs: 369.74 µs, 1.42× the fastest +369.74 µs +full handshake, X25519, ring: 337.91 µs, 1.30× the fastest +337.91 µs +full handshake, X25519, graviola: 315.73 µs, 1.21× the fastest +315.73 µs +full handshake, X25519, OpenSSL: 686.50 µs, 2.64× the fastest +686.50 µs full handshake, P-256 -full handshake, P-256, rind: 302.72 µs, 1.00× the fastest -302.72 µs -full handshake, P-256, aws-lc-rs: 414.57 µs, 1.37× the fastest -414.57 µs -full handshake, P-256, ring: 327.28 µs, 1.08× the fastest -327.28 µs -full handshake, P-256, graviola: 371.36 µs, 1.23× the fastest -371.36 µs -full handshake, P-256, OpenSSL: 750.80 µs, 2.48× the fastest -750.80 µs +full handshake, P-256, rind: 295.92 µs, 1.00× the fastest +295.92 µs +full handshake, P-256, aws-lc-rs: 417.28 µs, 1.41× the fastest +417.28 µs +full handshake, P-256, ring: 327.88 µs, 1.11× the fastest +327.88 µs +full handshake, P-256, graviola: 368.79 µs, 1.25× the fastest +368.79 µs +full handshake, P-256, OpenSSL: 760.04 µs, 2.57× the fastest +760.04 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 216.15 µs, 1.00× the fastest -216.15 µs -full handshake, Ed25519 certificate, aws-lc-rs: 307.77 µs, 1.42× the fastest -307.77 µs -full handshake, Ed25519 certificate, ring: 326.17 µs, 1.51× the fastest -326.17 µs -full handshake, Ed25519 certificate, graviola: 251.07 µs, 1.16× the fastest -251.07 µs -full handshake, Ed25519 certificate, OpenSSL: 757.62 µs, 3.51× the fastest -757.62 µs +full handshake, Ed25519 certificate, rind: 213.12 µs, 1.00× the fastest +213.12 µs +full handshake, Ed25519 certificate, aws-lc-rs: 306.11 µs, 1.44× the fastest +306.11 µs +full handshake, Ed25519 certificate, ring: 325.29 µs, 1.53× the fastest +325.29 µs +full handshake, Ed25519 certificate, graviola: 250.28 µs, 1.17× the fastest +250.28 µs +full handshake, Ed25519 certificate, OpenSSL: 747.09 µs, 3.51× the fastest +747.09 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 809.87 µs, 1.19× the fastest -809.87 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 774.41 µs, 1.14× the fastest -774.41 µs -full handshake, RSA-2048 certificate, ring: 677.82 µs, 1.00× the fastest -677.82 µs -full handshake, RSA-2048 certificate, graviola: 713.80 µs, 1.05× the fastest -713.80 µs -full handshake, RSA-2048 certificate, OpenSSL: 1.02 ms, 1.50× the fastest -1.02 ms +full handshake, RSA-2048 certificate, rind: 613.80 µs, 1.00× the fastest +613.80 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 758.17 µs, 1.24× the fastest +758.17 µs +full handshake, RSA-2048 certificate, ring: 678.16 µs, 1.10× the fastest +678.16 µs +full handshake, RSA-2048 certificate, graviola: 687.17 µs, 1.12× the fastest +687.17 µs +full handshake, RSA-2048 certificate, OpenSSL: 1.01 ms, 1.65× the fastest +1.01 ms resumed handshake, X25519 -resumed handshake, X25519, rind: 121.78 µs, 1.00× the fastest -121.78 µs -resumed handshake, X25519, aws-lc-rs: 229.16 µs, 1.88× the fastest -229.16 µs -resumed handshake, X25519, ring: 195.23 µs, 1.60× the fastest -195.23 µs -resumed handshake, X25519, graviola: 160.19 µs, 1.32× the fastest -160.19 µs -resumed handshake, X25519, OpenSSL: 504.16 µs, 4.14× the fastest -504.16 µs +resumed handshake, X25519, rind: 120.95 µs, 1.00× the fastest +120.95 µs +resumed handshake, X25519, aws-lc-rs: 229.39 µs, 1.90× the fastest +229.39 µs +resumed handshake, X25519, ring: 199.88 µs, 1.65× the fastest +199.88 µs +resumed handshake, X25519, graviola: 159.71 µs, 1.32× the fastest +159.71 µs +resumed handshake, X25519, OpenSSL: 496.91 µs, 4.11× the fastest +496.91 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 433.16 µs, 1.00× the fastest -433.16 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 453.78 µs, 1.05× the fastest -453.78 µs -1 MB transfer, AES-128-GCM, ring: 469.65 µs, 1.08× the fastest -469.65 µs -1 MB transfer, AES-128-GCM, graviola: 578.33 µs, 1.34× the fastest -578.33 µs -1 MB transfer, AES-128-GCM, OpenSSL: 496.82 µs, 1.15× the fastest -496.82 µs +1 MB transfer, AES-128-GCM, rind: 440.92 µs, 1.00× the fastest +440.92 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 442.54 µs, 1.00× the fastest +442.54 µs +1 MB transfer, AES-128-GCM, ring: 448.76 µs, 1.02× the fastest +448.76 µs +1 MB transfer, AES-128-GCM, graviola: 579.09 µs, 1.31× the fastest +579.09 µs +1 MB transfer, AES-128-GCM, OpenSSL: 491.38 µs, 1.11× the fastest +491.38 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 544.93 µs, 1.00× the fastest -544.93 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 553.29 µs, 1.02× the fastest -553.29 µs -1 MB transfer, AES-256-GCM, ring: 544.73 µs, 1.00× the fastest -544.73 µs -1 MB transfer, AES-256-GCM, graviola: 697.29 µs, 1.28× the fastest -697.29 µs -1 MB transfer, AES-256-GCM, OpenSSL: 609.96 µs, 1.12× the fastest -609.96 µs +1 MB transfer, AES-256-GCM, rind: 544.88 µs, 1.00× the fastest +544.88 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 557.86 µs, 1.02× the fastest +557.86 µs +1 MB transfer, AES-256-GCM, ring: 567.27 µs, 1.04× the fastest +567.27 µs +1 MB transfer, AES-256-GCM, graviola: 691.18 µs, 1.27× the fastest +691.18 µs +1 MB transfer, AES-256-GCM, OpenSSL: 596.82 µs, 1.10× the fastest +596.82 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 924.76 µs, 1.00× the fastest -924.76 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 932.29 µs, 1.01× the fastest -932.29 µs -1 MB transfer, ChaCha20-Poly1305, ring: 928.70 µs, 1.00× the fastest -928.70 µs +1 MB transfer, ChaCha20-Poly1305, rind: 923.82 µs, 1.00× the fastest +923.82 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 928.09 µs, 1.00× the fastest +928.09 µs +1 MB transfer, ChaCha20-Poly1305, ring: 925.14 µs, 1.00× the fastest +925.14 µs 1 MB transfer, ChaCha20-Poly1305, graviola: 1.64 ms, 1.78× the fastest 1.64 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.00 ms, 1.08× the fastest -1.00 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 983.97 µs, 1.07× the fastest +983.97 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 42 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -42 ns ✓ -AES-128-GCM seal, 32 B, aws-lc-rs: 89 ns, 2.12× the fastest +AES-128-GCM seal, 32 B, rind: 43 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +43 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 89 ns, 2.06× the fastest 89 ns -AES-128-GCM seal, 32 B, ring: 72 ns, 1.71× the fastest -72 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.42× the fastest -101 ns -AES-128-GCM seal, 32 B, graviola: 72 ns, 1.71× the fastest -72 ns -AES-128-GCM seal, 32 B, libcrux: 290 ns, 6.94× the fastest -290 ns -AES-128-GCM seal, 32 B, OpenSSL: 161 ns, 3.84× the fastest -161 ns +AES-128-GCM seal, 32 B, ring: 71 ns, 1.64× the fastest +71 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 100 ns, 2.33× the fastest +100 ns +AES-128-GCM seal, 32 B, graviola: 71 ns, 1.65× the fastest +71 ns +AES-128-GCM seal, 32 B, libcrux: 282 ns, 6.52× the fastest +282 ns +AES-128-GCM seal, 32 B, OpenSSL: 156 ns, 3.62× the fastest +156 ns AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind: 264 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -264 ns ✓ -AES-128-GCM seal, 1350 B, aws-lc-rs: 287 ns, 1.09× the fastest -287 ns -AES-128-GCM seal, 1350 B, ring: 280 ns, 1.06× the fastest -280 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 556 ns, 2.11× the fastest -556 ns -AES-128-GCM seal, 1350 B, graviola: 403 ns, 1.53× the fastest -403 ns -AES-128-GCM seal, 1350 B, libcrux: 3.41 µs, 12.95× the fastest -3.41 µs -AES-128-GCM seal, 1350 B, OpenSSL: 362 ns, 1.37× the fastest -362 ns +AES-128-GCM seal, 1350 B, rind: 246 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +246 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 285 ns, 1.16× the fastest +285 ns +AES-128-GCM seal, 1350 B, ring: 277 ns, 1.13× the fastest +277 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 547 ns, 2.22× the fastest +547 ns +AES-128-GCM seal, 1350 B, graviola: 400 ns, 1.63× the fastest +400 ns +AES-128-GCM seal, 1350 B, libcrux: 3.49 µs, 14.19× the fastest +3.49 µs +AES-128-GCM seal, 1350 B, OpenSSL: 352 ns, 1.43× the fastest +352 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 2.38 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -2.38 µs ✓ -AES-128-GCM seal, 16 KB, aws-lc-rs: 2.46 µs, 1.04× the fastest -2.46 µs -AES-128-GCM seal, 16 KB, ring: 2.38 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind: 2.33 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +2.33 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 2.42 µs, 1.04× the fastest +2.42 µs +AES-128-GCM seal, 16 KB, ring: 2.38 µs, 1.02× the fastest 2.38 µs -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 5.63 µs, 2.37× the fastest -5.63 µs -AES-128-GCM seal, 16 KB, graviola: 3.84 µs, 1.62× the fastest -3.84 µs -AES-128-GCM seal, 16 KB, libcrux: 38.50 µs, 16.20× the fastest -38.50 µs -AES-128-GCM seal, 16 KB, OpenSSL: 2.53 µs, 1.06× the fastest -2.53 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 5.62 µs, 2.41× the fastest +5.62 µs +AES-128-GCM seal, 16 KB, graviola: 3.75 µs, 1.61× the fastest +3.75 µs +AES-128-GCM seal, 16 KB, libcrux: 39.94 µs, 17.11× the fastest +39.94 µs +AES-128-GCM seal, 16 KB, OpenSSL: 2.45 µs, 1.05× the fastest +2.45 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 50 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -50 ns ✓ -AES-128-GCM open, 32 B, aws-lc-rs: 95 ns, 1.89× the fastest -95 ns -AES-128-GCM open, 32 B, ring: 79 ns, 1.58× the fastest -79 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 106 ns, 2.11× the fastest -106 ns -AES-128-GCM open, 32 B, graviola: 68 ns, 1.37× the fastest -68 ns -AES-128-GCM open, 32 B, libcrux: 305 ns, 6.10× the fastest -305 ns -AES-128-GCM open, 32 B, OpenSSL: 156 ns, 3.13× the fastest -156 ns +AES-128-GCM open, 32 B, rind: 38 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +38 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 90 ns, 2.41× the fastest +90 ns +AES-128-GCM open, 32 B, ring: 98 ns, 2.60× the fastest +98 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 104 ns, 2.78× the fastest +104 ns +AES-128-GCM open, 32 B, graviola: 69 ns, 1.83× the fastest +69 ns +AES-128-GCM open, 32 B, libcrux: 303 ns, 8.06× the fastest +303 ns +AES-128-GCM open, 32 B, OpenSSL: 159 ns, 4.24× the fastest +159 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 261 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -261 ns ✓ -AES-128-GCM open, 1350 B, aws-lc-rs: 297 ns, 1.14× the fastest -297 ns -AES-128-GCM open, 1350 B, ring: 278 ns, 1.07× the fastest -278 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 569 ns, 2.18× the fastest -569 ns -AES-128-GCM open, 1350 B, graviola: 362 ns, 1.39× the fastest -362 ns -AES-128-GCM open, 1350 B, libcrux: 3.63 µs, 13.91× the fastest -3.63 µs -AES-128-GCM open, 1350 B, OpenSSL: 360 ns, 1.38× the fastest -360 ns +AES-128-GCM open, 1350 B, rind: 236 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +236 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 285 ns, 1.21× the fastest +285 ns +AES-128-GCM open, 1350 B, ring: 296 ns, 1.25× the fastest +296 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 564 ns, 2.39× the fastest +564 ns +AES-128-GCM open, 1350 B, graviola: 358 ns, 1.51× the fastest +358 ns +AES-128-GCM open, 1350 B, libcrux: 3.48 µs, 14.75× the fastest +3.48 µs +AES-128-GCM open, 1350 B, OpenSSL: 355 ns, 1.50× the fastest +355 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 2.58 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -2.58 µs ✓ -AES-128-GCM open, 16 KB, aws-lc-rs: 2.63 µs, 1.02× the fastest -2.63 µs -AES-128-GCM open, 16 KB, ring: 2.59 µs, 1.00× the fastest -2.59 µs -AES-128-GCM open, 16 KB, RustCrypto + dalek: 5.81 µs, 2.25× the fastest -5.81 µs -AES-128-GCM open, 16 KB, graviola: 3.41 µs, 1.32× the fastest -3.41 µs -AES-128-GCM open, 16 KB, libcrux: 39.83 µs, 15.43× the fastest -39.83 µs -AES-128-GCM open, 16 KB, OpenSSL: 2.70 µs, 1.05× the fastest -2.70 µs +AES-128-GCM open, 16 KB, rind: 2.52 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +2.52 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 2.60 µs, 1.03× the fastest +2.60 µs +AES-128-GCM open, 16 KB, ring: 2.62 µs, 1.04× the fastest +2.62 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 5.75 µs, 2.28× the fastest +5.75 µs +AES-128-GCM open, 16 KB, graviola: 3.39 µs, 1.34× the fastest +3.39 µs +AES-128-GCM open, 16 KB, libcrux: 41.66 µs, 16.52× the fastest +41.66 µs +AES-128-GCM open, 16 KB, OpenSSL: 2.85 µs, 1.13× the fastest +2.85 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 46 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -46 ns ✓ -AES-256-GCM seal, 32 B, aws-lc-rs: 96 ns, 2.06× the fastest -96 ns -AES-256-GCM seal, 32 B, ring: 76 ns, 1.64× the fastest -76 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 109 ns, 2.35× the fastest -109 ns -AES-256-GCM seal, 32 B, graviola: 80 ns, 1.72× the fastest -80 ns -AES-256-GCM seal, 32 B, libcrux: 343 ns, 7.41× the fastest -343 ns -AES-256-GCM seal, 32 B, OpenSSL: 167 ns, 3.60× the fastest -167 ns +AES-256-GCM seal, 32 B, rind: 49 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +49 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 95 ns, 1.96× the fastest +95 ns +AES-256-GCM seal, 32 B, ring: 75 ns, 1.54× the fastest +75 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 107 ns, 2.21× the fastest +107 ns +AES-256-GCM seal, 32 B, graviola: 78 ns, 1.60× the fastest +78 ns +AES-256-GCM seal, 32 B, libcrux: 344 ns, 7.07× the fastest +344 ns +AES-256-GCM seal, 32 B, OpenSSL: 161 ns, 3.32× the fastest +161 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 343 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -343 ns ✓ -AES-256-GCM seal, 1350 B, aws-lc-rs: 364 ns, 1.06× the fastest -364 ns -AES-256-GCM seal, 1350 B, ring: 356 ns, 1.04× the fastest -356 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 648 ns, 1.89× the fastest -648 ns -AES-256-GCM seal, 1350 B, graviola: 485 ns, 1.41× the fastest -485 ns -AES-256-GCM seal, 1350 B, libcrux: 4.49 µs, 13.06× the fastest -4.49 µs -AES-256-GCM seal, 1350 B, OpenSSL: 438 ns, 1.28× the fastest -438 ns +AES-256-GCM seal, 1350 B, rind: 325 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +325 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 363 ns, 1.12× the fastest +363 ns +AES-256-GCM seal, 1350 B, ring: 353 ns, 1.09× the fastest +353 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 623 ns, 1.92× the fastest +623 ns +AES-256-GCM seal, 1350 B, graviola: 476 ns, 1.46× the fastest +476 ns +AES-256-GCM seal, 1350 B, libcrux: 4.50 µs, 13.86× the fastest +4.50 µs +AES-256-GCM seal, 1350 B, OpenSSL: 437 ns, 1.34× the fastest +437 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 3.24 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -3.24 µs ✓ -AES-256-GCM seal, 16 KB, aws-lc-rs: 3.32 µs, 1.02× the fastest -3.32 µs -AES-256-GCM seal, 16 KB, ring: 3.25 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind: 3.22 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.22 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 3.30 µs, 1.03× the fastest +3.30 µs +AES-256-GCM seal, 16 KB, ring: 3.25 µs, 1.01× the fastest 3.25 µs -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 6.54 µs, 2.02× the fastest -6.54 µs -AES-256-GCM seal, 16 KB, graviola: 4.72 µs, 1.45× the fastest -4.72 µs -AES-256-GCM seal, 16 KB, libcrux: 50.79 µs, 15.66× the fastest -50.79 µs -AES-256-GCM seal, 16 KB, OpenSSL: 3.35 µs, 1.03× the fastest -3.35 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 6.45 µs, 2.00× the fastest +6.45 µs +AES-256-GCM seal, 16 KB, graviola: 4.71 µs, 1.46× the fastest +4.71 µs +AES-256-GCM seal, 16 KB, libcrux: 50.92 µs, 15.81× the fastest +50.92 µs +AES-256-GCM seal, 16 KB, OpenSSL: 3.34 µs, 1.04× the fastest +3.34 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 57 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -57 ns ✓ -AES-256-GCM open, 32 B, aws-lc-rs: 104 ns, 1.83× the fastest -104 ns -AES-256-GCM open, 32 B, ring: 83 ns, 1.45× the fastest -83 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 118 ns, 2.08× the fastest +AES-256-GCM open, 32 B, rind: 45 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +45 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 101 ns, 2.26× the fastest +101 ns +AES-256-GCM open, 32 B, ring: 107 ns, 2.39× the fastest +107 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 118 ns, 2.65× the fastest 118 ns -AES-256-GCM open, 32 B, graviola: 79 ns, 1.39× the fastest -79 ns -AES-256-GCM open, 32 B, libcrux: 385 ns, 6.76× the fastest -385 ns -AES-256-GCM open, 32 B, OpenSSL: 173 ns, 3.05× the fastest -173 ns +AES-256-GCM open, 32 B, graviola: 73 ns, 1.64× the fastest +73 ns +AES-256-GCM open, 32 B, libcrux: 363 ns, 8.12× the fastest +363 ns +AES-256-GCM open, 32 B, OpenSSL: 172 ns, 3.84× the fastest +172 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 351 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -351 ns ✓ -AES-256-GCM open, 1350 B, aws-lc-rs: 391 ns, 1.11× the fastest -391 ns -AES-256-GCM open, 1350 B, ring: 371 ns, 1.06× the fastest -371 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 672 ns, 1.91× the fastest -672 ns -AES-256-GCM open, 1350 B, graviola: 456 ns, 1.30× the fastest -456 ns -AES-256-GCM open, 1350 B, libcrux: 4.55 µs, 12.94× the fastest -4.55 µs -AES-256-GCM open, 1350 B, OpenSSL: 436 ns, 1.24× the fastest -436 ns +AES-256-GCM open, 1350 B, rind: 328 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +328 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 422 ns, 1.29× the fastest +422 ns +AES-256-GCM open, 1350 B, ring: 388 ns, 1.18× the fastest +388 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 677 ns, 2.06× the fastest +677 ns +AES-256-GCM open, 1350 B, graviola: 510 ns, 1.56× the fastest +510 ns +AES-256-GCM open, 1350 B, libcrux: 4.74 µs, 14.46× the fastest +4.74 µs +AES-256-GCM open, 1350 B, OpenSSL: 643 ns, 1.96× the fastest +643 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 3.58 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -3.58 µs ✓ -AES-256-GCM open, 16 KB, aws-lc-rs: 3.56 µs, 1.00× the fastest -3.56 µs -AES-256-GCM open, 16 KB, ring: 3.59 µs, 1.01× the fastest -3.59 µs -AES-256-GCM open, 16 KB, RustCrypto + dalek: 6.77 µs, 1.90× the fastest -6.77 µs -AES-256-GCM open, 16 KB, graviola: 4.38 µs, 1.23× the fastest -4.38 µs -AES-256-GCM open, 16 KB, libcrux: 50.89 µs, 14.30× the fastest -50.89 µs -AES-256-GCM open, 16 KB, OpenSSL: 3.64 µs, 1.02× the fastest -3.64 µs +AES-256-GCM open, 16 KB, rind: 3.62 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.62 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 3.69 µs, 1.02× the fastest +3.69 µs +AES-256-GCM open, 16 KB, ring: 3.70 µs, 1.02× the fastest +3.70 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 7.23 µs, 2.00× the fastest +7.23 µs +AES-256-GCM open, 16 KB, graviola: 4.54 µs, 1.25× the fastest +4.54 µs +AES-256-GCM open, 16 KB, libcrux: 53.96 µs, 14.91× the fastest +53.96 µs +AES-256-GCM open, 16 KB, OpenSSL: 3.87 µs, 1.07× the fastest +3.87 µs ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind: 124 ns, 1.00× the fastest -124 ns -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 141 ns, 1.13× the fastest -141 ns -ChaCha20-Poly1305 seal, 32 B, ring: 130 ns, 1.05× the fastest +ChaCha20-Poly1305 seal, 32 B, rind: 129 ns, 1.00× the fastest +129 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 149 ns, 1.15× the fastest +149 ns +ChaCha20-Poly1305 seal, 32 B, ring: 130 ns, 1.01× the fastest 130 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.16 µs, 9.36× the fastest -1.16 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 222 ns, 1.79× the fastest -222 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 274 ns, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -274 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 325 ns, 2.62× the fastest -325 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.21 µs, 9.37× the fastest +1.21 µs +ChaCha20-Poly1305 seal, 32 B, graviola: 232 ns, 1.80× the fastest +232 ns +ChaCha20-Poly1305 seal, 32 B, libcrux: 301 ns, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +301 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 337 ns, 2.61× the fastest +337 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 691 ns, 1.01× the fastest -691 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 700 ns, 1.02× the fastest -700 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 686 ns, 1.00× the fastest -686 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.08 µs, 3.04× the fastest -2.08 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 1.24 µs, 1.81× the fastest -1.24 µs -ChaCha20-Poly1305 seal, 1350 B, libcrux: 3.08 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -3.08 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 933 ns, 1.36× the fastest -933 ns +ChaCha20-Poly1305 seal, 1350 B, rind: 718 ns, 1.00× the fastest +718 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 755 ns, 1.06× the fastest +755 ns +ChaCha20-Poly1305 seal, 1350 B, ring: 714 ns, 1.00× the fastest +714 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.18 µs, 3.05× the fastest +2.18 µs +ChaCha20-Poly1305 seal, 1350 B, graviola: 1.29 µs, 1.81× the fastest +1.29 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 3.16 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +3.16 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 971 ns, 1.36× the fastest +971 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 6.35 µs, 1.00× the fastest -6.35 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.43 µs, 1.01× the fastest -6.43 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 6.39 µs, 1.01× the fastest -6.39 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.38 µs, 1.95× the fastest -12.38 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 11.98 µs, 1.89× the fastest -11.98 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 34.70 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -34.70 µs ✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 6.41 µs, 1.01× the fastest -6.41 µs +ChaCha20-Poly1305 seal, 16 KB, rind: 6.81 µs, 1.03× the fastest +6.81 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.63 µs, 1.00× the fastest +6.63 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 6.60 µs, 1.00× the fastest +6.60 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.61 µs, 1.91× the fastest +12.61 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 12.52 µs, 1.90× the fastest +12.52 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 35.52 µs, 5.38× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +35.52 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 6.64 µs, 1.01× the fastest +6.64 µs XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind: 270 ns, 1.00× the fastest -270 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 282 ns, 1.04× the fastest -282 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.28 µs, 4.72× the fastest -1.28 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 335 ns, 1.24× the fastest +XChaCha20-Poly1305 seal, 32 B, rind: 256 ns, 1.00× the fastest +256 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 278 ns, 1.09× the fastest +278 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.27 µs, 4.95× the fastest +1.27 µs +XChaCha20-Poly1305 seal, 32 B, graviola: 335 ns, 1.31× the fastest 335 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 400 ns, 1.48× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux: 400 ns, 1.56× the fastest 400 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 814 ns, 1.00× the fastest -814 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 839 ns, 1.03× the fastest -839 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.20 µs, 2.71× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind: 804 ns, 1.00× the fastest +804 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 831 ns, 1.03× the fastest +831 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.20 µs, 2.74× the fastest 2.20 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 1.37 µs, 1.68× the fastest -1.37 µs -XChaCha20-Poly1305 seal, 1350 B, libcrux: 3.12 µs, 3.84× the fastest -3.12 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.32 µs, 1.64× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 3.16 µs, 3.92× the fastest +3.16 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 6.51 µs, 1.00× the fastest -6.51 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.55 µs, 1.01× the fastest -6.55 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.11 µs, 1.86× the fastest -12.11 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 11.96 µs, 1.84× the fastest -11.96 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 34.02 µs, 5.22× the fastest -34.02 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 6.38 µs, 1.00× the fastest +6.38 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.44 µs, 1.01× the fastest +6.44 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.04 µs, 1.89× the fastest +12.04 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 11.86 µs, 1.86× the fastest +11.86 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 33.42 µs, 5.23× the fastest +33.42 µs QUIC header protection AES-128 header protection +AES-128 header protection, rind: 5 ns, 1.00× the fastest +5 ns +AES-128 header protection, aws-lc-rs: 9 ns, 1.95× the fastest +9 ns +AES-128 header protection, ring: 8 ns, 1.73× the fastest +8 ns AES-256 header protection +AES-256 header protection, rind: 8 ns, 1.00× the fastest +8 ns +AES-256 header protection, aws-lc-rs: 10 ns, 1.25× the fastest +10 ns +AES-256 header protection, ring: 10 ns, 1.24× the fastest +10 ns ChaCha20 header protection +ChaCha20 header protection, rind: 84 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +84 ns ✓ +ChaCha20 header protection, aws-lc-rs: 104 ns, 1.24× the fastest +104 ns +ChaCha20 header protection, ring: 98 ns, 1.17× the fastest +98 ns Key agreement X25519 -X25519, rind: 26.86 µs, 1.07× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -26.86 µs ✓ -X25519, aws-lc-rs: 33.12 µs, 1.32× the fastest -33.12 µs -X25519, ring: 55.23 µs, 2.19× the fastest -55.23 µs -X25519, RustCrypto + dalek: 60.51 µs, 2.40× the fastest -60.51 µs -X25519, graviola: 25.17 µs, 1.00× the fastest -25.17 µs -X25519, libcrux: 73.49 µs, 2.92× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -73.49 µs ✓ -X25519, OpenSSL: 55.22 µs, 2.19× the fastest -55.22 µs +X25519, rind: 25.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +25.00 µs ✓ +X25519, aws-lc-rs: 30.89 µs, 1.24× the fastest +30.89 µs +X25519, ring: 53.60 µs, 2.15× the fastest +53.60 µs +X25519, RustCrypto + dalek: 56.59 µs, 2.27× the fastest +56.59 µs +X25519, graviola: 24.95 µs, 1.00× the fastest +24.95 µs +X25519, libcrux: 72.34 µs, 2.90× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +72.34 µs ✓ +X25519, OpenSSL: 55.20 µs, 2.21× the fastest +55.20 µs P-256 ECDH -P-256 ECDH, rind: 46.60 µs, 1.00× the fastest -46.60 µs -P-256 ECDH, aws-lc-rs: 56.11 µs, 1.20× the fastest -56.11 µs -P-256 ECDH, ring: 51.77 µs, 1.11× the fastest -51.77 µs -P-256 ECDH, RustCrypto + dalek: 252.15 µs, 5.41× the fastest -252.15 µs -P-256 ECDH, graviola: 50.53 µs, 1.08× the fastest -50.53 µs -P-256 ECDH, libcrux: 304.85 µs, 6.54× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -304.85 µs ✓ -P-256 ECDH, OpenSSL: 87.27 µs, 1.87× the fastest -87.27 µs +P-256 ECDH, rind: 42.80 µs, 1.00× the fastest +42.80 µs +P-256 ECDH, aws-lc-rs: 51.71 µs, 1.21× the fastest +51.71 µs +P-256 ECDH, ring: 47.10 µs, 1.10× the fastest +47.10 µs +P-256 ECDH, RustCrypto + dalek: 233.70 µs, 5.46× the fastest +233.70 µs +P-256 ECDH, graviola: 46.44 µs, 1.08× the fastest +46.44 µs +P-256 ECDH, libcrux: 280.52 µs, 6.55× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +280.52 µs ✓ +P-256 ECDH, OpenSSL: 81.68 µs, 1.91× the fastest +81.68 µs Signatures Ed25519 sign -Ed25519 sign, rind: 7.09 µs, 1.00× the fastest -7.09 µs -Ed25519 sign, aws-lc-rs: 7.54 µs, 1.06× the fastest -7.54 µs -Ed25519 sign, ring: 22.05 µs, 3.11× the fastest -22.05 µs -Ed25519 sign, RustCrypto + dalek: 16.08 µs, 2.27× the fastest -16.08 µs -Ed25519 sign, graviola: 7.27 µs, 1.03× the fastest -7.27 µs -Ed25519 sign, libcrux: 49.67 µs, 7.01× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -49.67 µs ✓ -Ed25519 sign, OpenSSL: 28.46 µs, 4.02× the fastest -28.46 µs +Ed25519 sign, rind: 7.13 µs, 1.00× the fastest +7.13 µs +Ed25519 sign, aws-lc-rs: 7.81 µs, 1.10× the fastest +7.81 µs +Ed25519 sign, ring: 22.26 µs, 3.12× the fastest +22.26 µs +Ed25519 sign, RustCrypto + dalek: 17.40 µs, 2.44× the fastest +17.40 µs +Ed25519 sign, graviola: 7.22 µs, 1.01× the fastest +7.22 µs +Ed25519 sign, libcrux: 53.66 µs, 7.52× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +53.66 µs ✓ +Ed25519 sign, OpenSSL: 31.01 µs, 4.35× the fastest +31.01 µs Ed25519 verify -Ed25519 verify, rind: 31.59 µs, 1.13× the fastest -31.59 µs -Ed25519 verify, aws-lc-rs: 31.57 µs, 1.13× the fastest -31.57 µs -Ed25519 verify, ring: 41.59 µs, 1.49× the fastest -41.59 µs -Ed25519 verify, RustCrypto + dalek: 27.88 µs, 1.00× the fastest -27.88 µs -Ed25519 verify, graviola: 31.39 µs, 1.13× the fastest -31.39 µs -Ed25519 verify, libcrux: 64.33 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -64.33 µs ✓ -Ed25519 verify, OpenSSL: 93.95 µs, 3.37× the fastest -93.95 µs +Ed25519 verify, rind: 31.81 µs, 1.06× the fastest +31.81 µs +Ed25519 verify, aws-lc-rs: 31.62 µs, 1.06× the fastest +31.62 µs +Ed25519 verify, ring: 42.48 µs, 1.42× the fastest +42.48 µs +Ed25519 verify, RustCrypto + dalek: 29.88 µs, 1.00× the fastest +29.88 µs +Ed25519 verify, graviola: 32.22 µs, 1.08× the fastest +32.22 µs +Ed25519 verify, libcrux: 69.12 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +69.12 µs ✓ +Ed25519 verify, OpenSSL: 93.09 µs, 3.12× the fastest +93.09 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 15.72 µs, 1.00× the fastest -15.72 µs -P-256 ECDSA sign, aws-lc-rs: 22.35 µs, 1.42× the fastest -22.35 µs -P-256 ECDSA sign, ring: 16.56 µs, 1.05× the fastest -16.56 µs -P-256 ECDSA sign, RustCrypto + dalek: 78.32 µs, 4.98× the fastest -78.32 µs -P-256 ECDSA sign, graviola: 23.27 µs, 1.48× the fastest -23.27 µs -P-256 ECDSA sign, libcrux: 115.07 µs, 7.32× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -115.07 µs ✓ -P-256 ECDSA sign, OpenSSL: 28.83 µs, 1.83× the fastest -28.83 µs +P-256 ECDSA sign, rind: 13.11 µs, 1.00× the fastest +13.11 µs +P-256 ECDSA sign, aws-lc-rs: 19.80 µs, 1.51× the fastest +19.80 µs +P-256 ECDSA sign, ring: 14.86 µs, 1.13× the fastest +14.86 µs +P-256 ECDSA sign, RustCrypto + dalek: 69.11 µs, 5.27× the fastest +69.11 µs +P-256 ECDSA sign, graviola: 19.89 µs, 1.52× the fastest +19.89 µs +P-256 ECDSA sign, libcrux: 102.03 µs, 7.78× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +102.03 µs ✓ +P-256 ECDSA sign, OpenSSL: 20.35 µs, 1.55× the fastest +20.35 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 47.33 µs, 1.00× the fastest -47.33 µs -P-256 ECDSA verify, aws-lc-rs: 47.11 µs, 1.00× the fastest -47.11 µs -P-256 ECDSA verify, ring: 47.60 µs, 1.01× the fastest -47.60 µs -P-256 ECDSA verify, RustCrypto + dalek: 211.46 µs, 4.49× the fastest -211.46 µs -P-256 ECDSA verify, graviola: 48.45 µs, 1.03× the fastest -48.45 µs -P-256 ECDSA verify, libcrux: 262.54 µs, 5.57× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -262.54 µs ✓ -P-256 ECDSA verify, OpenSSL: 74.70 µs, 1.59× the fastest -74.70 µs +P-256 ECDSA verify, rind: 41.56 µs, 1.00× the fastest +41.56 µs +P-256 ECDSA verify, aws-lc-rs: 43.27 µs, 1.04× the fastest +43.27 µs +P-256 ECDSA verify, ring: 43.93 µs, 1.06× the fastest +43.93 µs +P-256 ECDSA verify, RustCrypto + dalek: 197.15 µs, 4.74× the fastest +197.15 µs +P-256 ECDSA verify, graviola: 44.30 µs, 1.07× the fastest +44.30 µs +P-256 ECDSA verify, libcrux: 236.87 µs, 5.70× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +236.87 µs ✓ +P-256 ECDSA verify, OpenSSL: 68.34 µs, 1.64× the fastest +68.34 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 276 ns, 1.00× the fastest -276 ns -SHA-256, 64 B, aws-lc-rs: 313 ns, 1.13× the fastest -313 ns -SHA-256, 64 B, ring: 289 ns, 1.05× the fastest -289 ns -SHA-256, 64 B, RustCrypto + dalek: 483 ns, 1.75× the fastest -483 ns -SHA-256, 64 B, graviola: 579 ns, 2.10× the fastest -579 ns -SHA-256, 64 B, libcrux: 487 ns, 1.76× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -487 ns ✓ -SHA-256, 64 B, OpenSSL: 514 ns, 1.86× the fastest -514 ns +SHA-256, 64 B, rind: 244 ns, 1.00× the fastest +244 ns +SHA-256, 64 B, aws-lc-rs: 307 ns, 1.26× the fastest +307 ns +SHA-256, 64 B, ring: 277 ns, 1.13× the fastest +277 ns +SHA-256, 64 B, RustCrypto + dalek: 473 ns, 1.94× the fastest +473 ns +SHA-256, 64 B, graviola: 576 ns, 2.37× the fastest +576 ns +SHA-256, 64 B, libcrux: 485 ns, 1.99× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +485 ns ✓ +SHA-256, 64 B, OpenSSL: 505 ns, 2.07× the fastest +505 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 2.88 µs, 1.07× the fastest -2.88 µs -SHA-256, 1350 B, aws-lc-rs: 2.98 µs, 1.11× the fastest -2.98 µs -SHA-256, 1350 B, ring: 2.83 µs, 1.05× the fastest -2.83 µs -SHA-256, 1350 B, RustCrypto + dalek: 5.33 µs, 1.98× the fastest -5.33 µs -SHA-256, 1350 B, graviola: 6.11 µs, 2.27× the fastest -6.11 µs -SHA-256, 1350 B, libcrux: 5.27 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -5.27 µs ✓ -SHA-256, 1350 B, OpenSSL: 2.69 µs, 1.00× the fastest -2.69 µs +SHA-256, 1350 B, rind: 2.46 µs, 1.00× the fastest +2.46 µs +SHA-256, 1350 B, aws-lc-rs: 2.79 µs, 1.14× the fastest +2.79 µs +SHA-256, 1350 B, ring: 2.82 µs, 1.15× the fastest +2.82 µs +SHA-256, 1350 B, RustCrypto + dalek: 5.11 µs, 2.08× the fastest +5.11 µs +SHA-256, 1350 B, graviola: 6.07 µs, 2.47× the fastest +6.07 µs +SHA-256, 1350 B, libcrux: 5.23 µs, 2.13× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +5.23 µs ✓ +SHA-256, 1350 B, OpenSSL: 2.68 µs, 1.09× the fastest +2.68 µs SHA-256, 16 KB -SHA-256, 16 KB, rind: 31.57 µs, 1.11× the fastest -31.57 µs -SHA-256, 16 KB, aws-lc-rs: 31.63 µs, 1.12× the fastest -31.63 µs -SHA-256, 16 KB, ring: 31.56 µs, 1.11× the fastest -31.56 µs -SHA-256, 16 KB, RustCrypto + dalek: 58.88 µs, 2.08× the fastest -58.88 µs -SHA-256, 16 KB, graviola: 69.99 µs, 2.47× the fastest -69.99 µs -SHA-256, 16 KB, libcrux: 61.29 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -61.29 µs ✓ -SHA-256, 16 KB, OpenSSL: 28.35 µs, 1.00× the fastest -28.35 µs +SHA-256, 16 KB, rind: 28.06 µs, 1.00× the fastest +28.06 µs +SHA-256, 16 KB, aws-lc-rs: 31.46 µs, 1.12× the fastest +31.46 µs +SHA-256, 16 KB, ring: 32.37 µs, 1.15× the fastest +32.37 µs +SHA-256, 16 KB, RustCrypto + dalek: 58.17 µs, 2.07× the fastest +58.17 µs +SHA-256, 16 KB, graviola: 69.84 µs, 2.49× the fastest +69.84 µs +SHA-256, 16 KB, libcrux: 61.68 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +61.68 µs ✓ +SHA-256, 16 KB, OpenSSL: 28.83 µs, 1.03× the fastest +28.83 µs SHA-512, 64 B -SHA-512, 64 B, rind: 200 ns, 1.00× the fastest -200 ns -SHA-512, 64 B, aws-lc-rs: 233 ns, 1.17× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -233 ns ✓ -SHA-512, 64 B, ring: 204 ns, 1.02× the fastest -204 ns -SHA-512, 64 B, RustCrypto + dalek: 272 ns, 1.36× the fastest -272 ns -SHA-512, 64 B, graviola: 237 ns, 1.18× the fastest -237 ns -SHA-512, 64 B, libcrux: 290 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -290 ns ✓ -SHA-512, 64 B, OpenSSL: 436 ns, 2.18× the fastest -436 ns +SHA-512, 64 B, rind: 198 ns, 1.00× the fastest +198 ns +SHA-512, 64 B, aws-lc-rs: 228 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +228 ns ✓ +SHA-512, 64 B, ring: 203 ns, 1.02× the fastest +203 ns +SHA-512, 64 B, RustCrypto + dalek: 270 ns, 1.36× the fastest +270 ns +SHA-512, 64 B, graviola: 236 ns, 1.19× the fastest +236 ns +SHA-512, 64 B, libcrux: 289 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +289 ns ✓ +SHA-512, 64 B, OpenSSL: 430 ns, 2.17× the fastest +430 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 1.95 µs, 1.01× the fastest -1.95 µs -SHA-512, 1350 B, aws-lc-rs: 1.98 µs, 1.03× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -1.98 µs ✓ -SHA-512, 1350 B, ring: 1.95 µs, 1.01× the fastest -1.95 µs -SHA-512, 1350 B, RustCrypto + dalek: 2.68 µs, 1.40× the fastest -2.68 µs -SHA-512, 1350 B, graviola: 2.35 µs, 1.22× the fastest +SHA-512, 1350 B, rind: 1.65 µs, 1.00× the fastest +1.65 µs +SHA-512, 1350 B, aws-lc-rs: 1.97 µs, 1.19× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +1.97 µs ✓ +SHA-512, 1350 B, ring: 1.93 µs, 1.17× the fastest +1.93 µs +SHA-512, 1350 B, RustCrypto + dalek: 2.67 µs, 1.61× the fastest +2.67 µs +SHA-512, 1350 B, graviola: 2.35 µs, 1.42× the fastest 2.35 µs -SHA-512, 1350 B, libcrux: 3.08 µs, 1.60× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +SHA-512, 1350 B, libcrux: 3.08 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step 3.08 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.92 µs, 1.00× the fastest -1.92 µs +SHA-512, 1350 B, OpenSSL: 1.90 µs, 1.15× the fastest +1.90 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 21.82 µs, 1.15× the fastest -21.82 µs -SHA-512, 16 KB, aws-lc-rs: 21.95 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -21.95 µs ✓ -SHA-512, 16 KB, ring: 22.31 µs, 1.17× the fastest -22.31 µs -SHA-512, 16 KB, RustCrypto + dalek: 31.08 µs, 1.63× the fastest -31.08 µs -SHA-512, 16 KB, graviola: 27.35 µs, 1.44× the fastest -27.35 µs -SHA-512, 16 KB, libcrux: 35.63 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -35.63 µs ✓ -SHA-512, 16 KB, OpenSSL: 19.04 µs, 1.00× the fastest -19.04 µs +SHA-512, 16 KB, rind: 18.53 µs, 1.00× the fastest +18.53 µs +SHA-512, 16 KB, aws-lc-rs: 21.92 µs, 1.18× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +21.92 µs ✓ +SHA-512, 16 KB, ring: 21.75 µs, 1.17× the fastest +21.75 µs +SHA-512, 16 KB, RustCrypto + dalek: 30.73 µs, 1.66× the fastest +30.73 µs +SHA-512, 16 KB, graviola: 27.16 µs, 1.47× the fastest +27.16 µs +SHA-512, 16 KB, libcrux: 35.45 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +35.45 µs ✓ +SHA-512, 16 KB, OpenSSL: 18.99 µs, 1.02× the fastest +18.99 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 690 ns, 1.00× the fastest -690 ns -HMAC-SHA256, 64 B, aws-lc-rs: 840 ns, 1.22× the fastest -840 ns -HMAC-SHA256, 64 B, ring: 746 ns, 1.08× the fastest -746 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 1.25 µs, 1.81× the fastest -1.25 µs -HMAC-SHA256, 64 B, graviola: 1.47 µs, 2.12× the fastest -1.47 µs -HMAC-SHA256, 64 B, libcrux: 1.22 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -1.22 µs ✓ -HMAC-SHA256, 64 B, OpenSSL: 3.90 µs, 5.65× the fastest -3.90 µs +HMAC-SHA256, 64 B, rind: 628 ns, 1.00× the fastest +628 ns +HMAC-SHA256, 64 B, aws-lc-rs: 811 ns, 1.29× the fastest +811 ns +HMAC-SHA256, 64 B, ring: 707 ns, 1.13× the fastest +707 ns +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.19 µs, 1.89× the fastest +1.19 µs +HMAC-SHA256, 64 B, graviola: 1.44 µs, 2.30× the fastest +1.44 µs +HMAC-SHA256, 64 B, libcrux: 1.20 µs, 1.92× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.20 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 3.69 µs, 5.88× the fastest +3.69 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 3.29 µs, 1.00× the fastest -3.29 µs -HMAC-SHA256, 1350 B, aws-lc-rs: 3.49 µs, 1.06× the fastest -3.49 µs -HMAC-SHA256, 1350 B, ring: 3.39 µs, 1.03× the fastest -3.39 µs -HMAC-SHA256, 1350 B, RustCrypto + dalek: 6.54 µs, 1.99× the fastest -6.54 µs -HMAC-SHA256, 1350 B, graviola: 7.49 µs, 2.28× the fastest -7.49 µs -HMAC-SHA256, 1350 B, libcrux: 7.14 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -7.14 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 6.24 µs, 1.89× the fastest -6.24 µs +HMAC-SHA256, 1350 B, rind: 2.79 µs, 1.00× the fastest +2.79 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 3.30 µs, 1.18× the fastest +3.30 µs +HMAC-SHA256, 1350 B, ring: 3.19 µs, 1.14× the fastest +3.19 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 5.80 µs, 2.08× the fastest +5.80 µs +HMAC-SHA256, 1350 B, graviola: 7.05 µs, 2.53× the fastest +7.05 µs +HMAC-SHA256, 1350 B, libcrux: 6.02 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +6.02 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 5.94 µs, 2.13× the fastest +5.94 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 1.18 µs, 1.00× the fastest -1.18 µs -HKDF-SHA256 extract and expand, aws-lc-rs: 1.35 µs, 1.14× the fastest -1.35 µs -HKDF-SHA256 extract and expand, ring: 1.26 µs, 1.07× the fastest -1.26 µs -HKDF-SHA256 extract and expand, RustCrypto + dalek: 2.11 µs, 1.79× the fastest -2.11 µs -HKDF-SHA256 extract and expand, libcrux: 2.17 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -2.17 µs ✓ -HKDF-SHA256 extract and expand, OpenSSL: 4.68 µs, 3.97× the fastest -4.68 µs +HKDF-SHA256 extract and expand, rind: 1.15 µs, 1.00× the fastest +1.15 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 1.44 µs, 1.25× the fastest +1.44 µs +HKDF-SHA256 extract and expand, ring: 1.31 µs, 1.14× the fastest +1.31 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 1.98 µs, 1.72× the fastest +1.98 µs +HKDF-SHA256 extract and expand, libcrux: 2.04 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +2.04 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 4.33 µs, 3.76× the fastest +4.33 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 330 ns, 1.00× the fastest -330 ns -HKDF-SHA256 expand, aws-lc-rs: 673 ns, 2.04× the fastest -673 ns -HKDF-SHA256 expand, ring: 344 ns, 1.04× the fastest -344 ns -HKDF-SHA256 expand, RustCrypto + dalek: 527 ns, 1.60× the fastest -527 ns -HKDF-SHA256 expand, libcrux: 1.07 µs, 3.23× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -1.07 µs ✓ -HKDF-SHA256 expand, OpenSSL: 3.12 µs, 9.45× the fastest -3.12 µs +HKDF-SHA256 expand, rind: 300 ns, 1.00× the fastest +300 ns +HKDF-SHA256 expand, aws-lc-rs: 636 ns, 2.12× the fastest +636 ns +HKDF-SHA256 expand, ring: 337 ns, 1.12× the fastest +337 ns +HKDF-SHA256 expand, RustCrypto + dalek: 512 ns, 1.71× the fastest +512 ns +HKDF-SHA256 expand, libcrux: 1.01 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.01 µs ✓ +HKDF-SHA256 expand, OpenSSL: 2.87 µs, 9.58× the fastest +2.87 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 567.70 µs, 1.28× the fastest -567.70 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 454.36 µs, 1.03× the fastest -454.36 µs -RSA-2048 PKCS#1 sign, ring: 442.48 µs, 1.00× the fastest -442.48 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.16 ms, 2.62× the fastest -1.16 ms -RSA-2048 PKCS#1 sign, graviola: 458.57 µs, 1.04× the fastest -458.57 µs -RSA-2048 PKCS#1 sign, OpenSSL: 471.98 µs, 1.07× the fastest -471.98 µs +RSA-2048 PKCS#1 sign, rind: 447.43 µs, 1.03× the fastest +447.43 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 448.68 µs, 1.03× the fastest +448.68 µs +RSA-2048 PKCS#1 sign, ring: 434.47 µs, 1.00× the fastest +434.47 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.14 ms, 2.63× the fastest +1.14 ms +RSA-2048 PKCS#1 sign, graviola: 445.92 µs, 1.03× the fastest +445.92 µs +RSA-2048 PKCS#1 sign, OpenSSL: 453.81 µs, 1.04× the fastest +453.81 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 12.97 µs, 1.00× the fastest -12.97 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 15.81 µs, 1.22× the fastest -15.81 µs -RSA-2048 PKCS#1 verify, ring: 16.73 µs, 1.29× the fastest -16.73 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 58.28 µs, 4.49× the fastest -58.28 µs -RSA-2048 PKCS#1 verify, graviola: 19.61 µs, 1.51× the fastest -19.61 µs -RSA-2048 PKCS#1 verify, OpenSSL: 28.37 µs, 2.19× the fastest -28.37 µs +RSA-2048 PKCS#1 verify, rind: 12.88 µs, 1.00× the fastest +12.88 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 15.88 µs, 1.23× the fastest +15.88 µs +RSA-2048 PKCS#1 verify, ring: 16.51 µs, 1.28× the fastest +16.51 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 57.81 µs, 4.49× the fastest +57.81 µs +RSA-2048 PKCS#1 verify, graviola: 19.05 µs, 1.48× the fastest +19.05 µs +RSA-2048 PKCS#1 verify, OpenSSL: 24.54 µs, 1.91× the fastest +24.54 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 576.25 µs, 1.31× the fastest -576.25 µs -RSA-2048 PSS sign, aws-lc-rs: 459.05 µs, 1.04× the fastest -459.05 µs -RSA-2048 PSS sign, ring: 440.44 µs, 1.00× the fastest -440.44 µs -RSA-2048 PSS sign, RustCrypto + dalek: 1.17 ms, 2.65× the fastest -1.17 ms -RSA-2048 PSS sign, graviola: 453.66 µs, 1.03× the fastest -453.66 µs -RSA-2048 PSS sign, libcrux: 7.10 ms, 16.12× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -7.10 ms ✓ -RSA-2048 PSS sign, OpenSSL: 481.14 µs, 1.09× the fastest -481.14 µs +RSA-2048 PSS sign, rind: 445.92 µs, 1.02× the fastest +445.92 µs +RSA-2048 PSS sign, aws-lc-rs: 461.87 µs, 1.06× the fastest +461.87 µs +RSA-2048 PSS sign, ring: 437.28 µs, 1.00× the fastest +437.28 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.15 ms, 2.63× the fastest +1.15 ms +RSA-2048 PSS sign, graviola: 450.24 µs, 1.03× the fastest +450.24 µs +RSA-2048 PSS sign, libcrux: 7.22 ms, 16.51× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +7.22 ms ✓ +RSA-2048 PSS sign, OpenSSL: 456.55 µs, 1.04× the fastest +456.55 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 15.24 µs, 1.00× the fastest -15.24 µs -RSA-2048 PSS verify, aws-lc-rs: 18.00 µs, 1.18× the fastest -18.00 µs -RSA-2048 PSS verify, ring: 19.36 µs, 1.27× the fastest -19.36 µs -RSA-2048 PSS verify, RustCrypto + dalek: 71.12 µs, 4.67× the fastest -71.12 µs -RSA-2048 PSS verify, graviola: 22.16 µs, 1.45× the fastest -22.16 µs -RSA-2048 PSS verify, libcrux: 379.99 µs, 24.94× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -379.99 µs ✓ -RSA-2048 PSS verify, OpenSSL: 27.30 µs, 1.79× the fastest -27.30 µs +RSA-2048 PSS verify, rind: 14.36 µs, 1.00× the fastest +14.36 µs +RSA-2048 PSS verify, aws-lc-rs: 17.01 µs, 1.18× the fastest +17.01 µs +RSA-2048 PSS verify, ring: 18.22 µs, 1.27× the fastest +18.22 µs +RSA-2048 PSS verify, RustCrypto + dalek: 70.02 µs, 4.88× the fastest +70.02 µs +RSA-2048 PSS verify, graviola: 21.85 µs, 1.52× the fastest +21.85 µs +RSA-2048 PSS verify, libcrux: 377.87 µs, 26.32× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +377.87 µs ✓ +RSA-2048 PSS verify, OpenSSL: 27.16 µs, 1.89× the fastest +27.16 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 12.10 µs, 1.10× the fastest -12.10 µs -ML-KEM-768 key generation, aws-lc-rs: 23.32 µs, 2.11× the fastest -23.32 µs -ML-KEM-768 key generation, RustCrypto + dalek: 71.58 µs, 6.48× the fastest -71.58 µs -ML-KEM-768 key generation, graviola: 11.04 µs, 1.00× the fastest -11.04 µs -ML-KEM-768 key generation, libcrux: 30.74 µs, 2.78× the fastest -30.74 µs -ML-KEM-768 key generation, OpenSSL: 42.66 µs, 3.86× the fastest -42.66 µs +ML-KEM-768 key generation, rind: 10.24 µs, 1.00× the fastest +10.24 µs +ML-KEM-768 key generation, aws-lc-rs: 18.44 µs, 1.80× the fastest +18.44 µs +ML-KEM-768 key generation, RustCrypto + dalek: 59.97 µs, 5.86× the fastest +59.97 µs +ML-KEM-768 key generation, graviola: 10.41 µs, 1.02× the fastest +10.41 µs +ML-KEM-768 key generation, libcrux: 20.05 µs, 1.96× the fastest +20.05 µs +ML-KEM-768 key generation, OpenSSL: 40.63 µs, 3.97× the fastest +40.63 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 15.73 µs, 1.23× the fastest -15.73 µs -ML-KEM-768 encapsulate, aws-lc-rs: 20.31 µs, 1.58× the fastest -20.31 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 75.08 µs, 5.85× the fastest -75.08 µs -ML-KEM-768 encapsulate, graviola: 12.83 µs, 1.00× the fastest -12.83 µs -ML-KEM-768 encapsulate, libcrux: 21.01 µs, 1.64× the fastest -21.01 µs -ML-KEM-768 encapsulate, OpenSSL: 44.49 µs, 3.47× the fastest -44.49 µs +ML-KEM-768 encapsulate, rind: 10.61 µs, 1.00× the fastest +10.61 µs +ML-KEM-768 encapsulate, aws-lc-rs: 18.73 µs, 1.76× the fastest +18.73 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 67.03 µs, 6.31× the fastest +67.03 µs +ML-KEM-768 encapsulate, graviola: 11.12 µs, 1.05× the fastest +11.12 µs +ML-KEM-768 encapsulate, libcrux: 18.13 µs, 1.71× the fastest +18.13 µs +ML-KEM-768 encapsulate, OpenSSL: 41.18 µs, 3.88× the fastest +41.18 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 8.28 µs, 1.00× the fastest -8.28 µs -ML-KEM-768 decapsulate, aws-lc-rs: 16.61 µs, 2.01× the fastest -16.61 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 89.79 µs, 10.85× the fastest -89.79 µs -ML-KEM-768 decapsulate, graviola: 8.30 µs, 1.00× the fastest -8.30 µs -ML-KEM-768 decapsulate, libcrux: 19.93 µs, 2.41× the fastest -19.93 µs -ML-KEM-768 decapsulate, OpenSSL: 33.05 µs, 3.99× the fastest -33.05 µs +ML-KEM-768 decapsulate, rind: 7.07 µs, 1.00× the fastest +7.07 µs +ML-KEM-768 decapsulate, aws-lc-rs: 16.01 µs, 2.26× the fastest +16.01 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 84.37 µs, 11.93× the fastest +84.37 µs +ML-KEM-768 decapsulate, graviola: 7.42 µs, 1.05× the fastest +7.42 µs +ML-KEM-768 decapsulate, libcrux: 19.04 µs, 2.69× the fastest +19.04 µs +ML-KEM-768 decapsulate, OpenSSL: 31.67 µs, 4.48× the fastest +31.67 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 159.92 µs, 1.00× the fastest -159.92 µs -P-384 ECDH, aws-lc-rs: 191.62 µs, 1.20× the fastest -191.62 µs -P-384 ECDH, ring: 688.80 µs, 4.31× the fastest -688.80 µs -P-384 ECDH, RustCrypto + dalek: 871.98 µs, 5.45× the fastest -871.98 µs -P-384 ECDH, graviola: 254.75 µs, 1.59× the fastest -254.75 µs -P-384 ECDH, OpenSSL: 510.33 µs, 3.19× the fastest -510.33 µs +P-384 ECDH, rind: 150.97 µs, 1.00× the fastest +150.97 µs +P-384 ECDH, aws-lc-rs: 174.62 µs, 1.16× the fastest +174.62 µs +P-384 ECDH, ring: 645.54 µs, 4.28× the fastest +645.54 µs +P-384 ECDH, RustCrypto + dalek: 769.61 µs, 5.10× the fastest +769.61 µs +P-384 ECDH, graviola: 245.24 µs, 1.62× the fastest +245.24 µs +P-384 ECDH, OpenSSL: 483.50 µs, 3.20× the fastest +483.50 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 40.21 µs, 1.00× the fastest -40.21 µs -P-384 ECDSA sign, aws-lc-rs: 85.87 µs, 2.14× the fastest -85.87 µs -P-384 ECDSA sign, ring: 349.63 µs, 8.69× the fastest -349.63 µs -P-384 ECDSA sign, RustCrypto + dalek: 194.33 µs, 4.83× the fastest -194.33 µs -P-384 ECDSA sign, graviola: 133.02 µs, 3.31× the fastest -133.02 µs -P-384 ECDSA sign, OpenSSL: 170.79 µs, 4.25× the fastest -170.79 µs +P-384 ECDSA sign, rind: 39.62 µs, 1.00× the fastest +39.62 µs +P-384 ECDSA sign, aws-lc-rs: 82.65 µs, 2.09× the fastest +82.65 µs +P-384 ECDSA sign, ring: 343.16 µs, 8.66× the fastest +343.16 µs +P-384 ECDSA sign, RustCrypto + dalek: 170.64 µs, 4.31× the fastest +170.64 µs +P-384 ECDSA sign, graviola: 128.64 µs, 3.25× the fastest +128.64 µs +P-384 ECDSA sign, OpenSSL: 164.53 µs, 4.15× the fastest +164.53 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 154.44 µs, 1.00× the fastest -154.44 µs -P-384 ECDSA verify, aws-lc-rs: 186.63 µs, 1.21× the fastest -186.63 µs -P-384 ECDSA verify, ring: 628.36 µs, 4.07× the fastest -628.36 µs -P-384 ECDSA verify, RustCrypto + dalek: 712.25 µs, 4.61× the fastest -712.25 µs -P-384 ECDSA verify, graviola: 244.84 µs, 1.59× the fastest -244.84 µs -P-384 ECDSA verify, OpenSSL: 409.95 µs, 2.65× the fastest -409.95 µs +P-384 ECDSA verify, rind: 141.44 µs, 1.00× the fastest +141.44 µs +P-384 ECDSA verify, aws-lc-rs: 175.92 µs, 1.24× the fastest +175.92 µs +P-384 ECDSA verify, ring: 622.90 µs, 4.40× the fastest +622.90 µs +P-384 ECDSA verify, RustCrypto + dalek: 695.04 µs, 4.91× the fastest +695.04 µs +P-384 ECDSA verify, graviola: 239.41 µs, 1.69× the fastest +239.41 µs +P-384 ECDSA verify, OpenSSL: 399.63 µs, 2.83× the fastest +399.63 µs P-521 ECDH -P-521 ECDH, rind: 225.21 µs, 1.00× the fastest -225.21 µs -P-521 ECDH, aws-lc-rs: 255.05 µs, 1.13× the fastest -255.05 µs -P-521 ECDH, RustCrypto + dalek: 822.79 µs, 3.65× the fastest -822.79 µs -P-521 ECDH, OpenSSL: 498.14 µs, 2.21× the fastest -498.14 µs +P-521 ECDH, rind: 233.76 µs, 1.00× the fastest +233.76 µs +P-521 ECDH, aws-lc-rs: 262.34 µs, 1.12× the fastest +262.34 µs +P-521 ECDH, RustCrypto + dalek: 841.50 µs, 3.60× the fastest +841.50 µs +P-521 ECDH, OpenSSL: 497.39 µs, 2.13× the fastest +497.39 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 65.70 µs, 1.00× the fastest -65.70 µs -P-521 ECDSA sign, aws-lc-rs: 160.14 µs, 2.44× the fastest -160.14 µs -P-521 ECDSA sign, RustCrypto + dalek: 192.13 µs, 2.92× the fastest -192.13 µs -P-521 ECDSA sign, OpenSSL: 224.59 µs, 3.42× the fastest -224.59 µs +P-521 ECDSA sign, rind: 64.26 µs, 1.00× the fastest +64.26 µs +P-521 ECDSA sign, aws-lc-rs: 158.67 µs, 2.47× the fastest +158.67 µs +P-521 ECDSA sign, RustCrypto + dalek: 185.93 µs, 2.89× the fastest +185.93 µs +P-521 ECDSA sign, OpenSSL: 221.00 µs, 3.44× the fastest +221.00 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 236.22 µs, 1.00× the fastest -236.22 µs -P-521 ECDSA verify, aws-lc-rs: 307.98 µs, 1.30× the fastest -307.98 µs -P-521 ECDSA verify, RustCrypto + dalek: 666.03 µs, 2.82× the fastest -666.03 µs -P-521 ECDSA verify, OpenSSL: 465.58 µs, 1.97× the fastest -465.58 µs +P-521 ECDSA verify, rind: 214.43 µs, 1.00× the fastest +214.43 µs +P-521 ECDSA verify, aws-lc-rs: 303.23 µs, 1.41× the fastest +303.23 µs +P-521 ECDSA verify, RustCrypto + dalek: 636.37 µs, 2.97× the fastest +636.37 µs +P-521 ECDSA verify, OpenSSL: 460.02 µs, 2.15× the fastest +460.02 µs diff --git a/benchmarks/nixos2.svg b/benchmarks/nixos2.svg index 72f978061..6210b414a 100644 --- a/benchmarks/nixos2.svg +++ b/benchmarks/nixos2.svg @@ -28,774 +28,792 @@ TLS 1.3 with rustls full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind: 311.29 µs, 1.00× the fastest -311.29 µs -full handshake, X25519MLKEM768, aws-lc-rs: 452.02 µs, 1.45× the fastest -452.02 µs -full handshake, X25519MLKEM768, graviola: 375.56 µs, 1.21× the fastest -375.56 µs -full handshake, X25519MLKEM768, OpenSSL: 837.01 µs, 2.69× the fastest -837.01 µs +full handshake, X25519MLKEM768, rind: 302.43 µs, 1.00× the fastest +302.43 µs +full handshake, X25519MLKEM768, aws-lc-rs: 458.06 µs, 1.51× the fastest +458.06 µs +full handshake, X25519MLKEM768, graviola: 375.57 µs, 1.24× the fastest +375.57 µs +full handshake, X25519MLKEM768, OpenSSL: 830.76 µs, 2.75× the fastest +830.76 µs full handshake, X25519 -full handshake, X25519, rind: 267.07 µs, 1.00× the fastest -267.07 µs -full handshake, X25519, aws-lc-rs: 379.99 µs, 1.42× the fastest -379.99 µs -full handshake, X25519, ring: 339.51 µs, 1.27× the fastest -339.51 µs -full handshake, X25519, graviola: 316.39 µs, 1.18× the fastest -316.39 µs -full handshake, X25519, OpenSSL: 688.73 µs, 2.58× the fastest -688.73 µs +full handshake, X25519, rind: 260.02 µs, 1.00× the fastest +260.02 µs +full handshake, X25519, aws-lc-rs: 369.74 µs, 1.42× the fastest +369.74 µs +full handshake, X25519, ring: 337.91 µs, 1.30× the fastest +337.91 µs +full handshake, X25519, graviola: 315.73 µs, 1.21× the fastest +315.73 µs +full handshake, X25519, OpenSSL: 686.50 µs, 2.64× the fastest +686.50 µs full handshake, P-256 -full handshake, P-256, rind: 302.72 µs, 1.00× the fastest -302.72 µs -full handshake, P-256, aws-lc-rs: 414.57 µs, 1.37× the fastest -414.57 µs -full handshake, P-256, ring: 327.28 µs, 1.08× the fastest -327.28 µs -full handshake, P-256, graviola: 371.36 µs, 1.23× the fastest -371.36 µs -full handshake, P-256, OpenSSL: 750.80 µs, 2.48× the fastest -750.80 µs +full handshake, P-256, rind: 295.92 µs, 1.00× the fastest +295.92 µs +full handshake, P-256, aws-lc-rs: 417.28 µs, 1.41× the fastest +417.28 µs +full handshake, P-256, ring: 327.88 µs, 1.11× the fastest +327.88 µs +full handshake, P-256, graviola: 368.79 µs, 1.25× the fastest +368.79 µs +full handshake, P-256, OpenSSL: 760.04 µs, 2.57× the fastest +760.04 µs full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind: 216.15 µs, 1.00× the fastest -216.15 µs -full handshake, Ed25519 certificate, aws-lc-rs: 307.77 µs, 1.42× the fastest -307.77 µs -full handshake, Ed25519 certificate, ring: 326.17 µs, 1.51× the fastest -326.17 µs -full handshake, Ed25519 certificate, graviola: 251.07 µs, 1.16× the fastest -251.07 µs -full handshake, Ed25519 certificate, OpenSSL: 757.62 µs, 3.51× the fastest -757.62 µs +full handshake, Ed25519 certificate, rind: 213.12 µs, 1.00× the fastest +213.12 µs +full handshake, Ed25519 certificate, aws-lc-rs: 306.11 µs, 1.44× the fastest +306.11 µs +full handshake, Ed25519 certificate, ring: 325.29 µs, 1.53× the fastest +325.29 µs +full handshake, Ed25519 certificate, graviola: 250.28 µs, 1.17× the fastest +250.28 µs +full handshake, Ed25519 certificate, OpenSSL: 747.09 µs, 3.51× the fastest +747.09 µs full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind: 809.87 µs, 1.19× the fastest -809.87 µs -full handshake, RSA-2048 certificate, aws-lc-rs: 774.41 µs, 1.14× the fastest -774.41 µs -full handshake, RSA-2048 certificate, ring: 677.82 µs, 1.00× the fastest -677.82 µs -full handshake, RSA-2048 certificate, graviola: 713.80 µs, 1.05× the fastest -713.80 µs -full handshake, RSA-2048 certificate, OpenSSL: 1.02 ms, 1.50× the fastest -1.02 ms +full handshake, RSA-2048 certificate, rind: 613.80 µs, 1.00× the fastest +613.80 µs +full handshake, RSA-2048 certificate, aws-lc-rs: 758.17 µs, 1.24× the fastest +758.17 µs +full handshake, RSA-2048 certificate, ring: 678.16 µs, 1.10× the fastest +678.16 µs +full handshake, RSA-2048 certificate, graviola: 687.17 µs, 1.12× the fastest +687.17 µs +full handshake, RSA-2048 certificate, OpenSSL: 1.01 ms, 1.65× the fastest +1.01 ms resumed handshake, X25519 -resumed handshake, X25519, rind: 121.78 µs, 1.00× the fastest -121.78 µs -resumed handshake, X25519, aws-lc-rs: 229.16 µs, 1.88× the fastest -229.16 µs -resumed handshake, X25519, ring: 195.23 µs, 1.60× the fastest -195.23 µs -resumed handshake, X25519, graviola: 160.19 µs, 1.32× the fastest -160.19 µs -resumed handshake, X25519, OpenSSL: 504.16 µs, 4.14× the fastest -504.16 µs +resumed handshake, X25519, rind: 120.95 µs, 1.00× the fastest +120.95 µs +resumed handshake, X25519, aws-lc-rs: 229.39 µs, 1.90× the fastest +229.39 µs +resumed handshake, X25519, ring: 199.88 µs, 1.65× the fastest +199.88 µs +resumed handshake, X25519, graviola: 159.71 µs, 1.32× the fastest +159.71 µs +resumed handshake, X25519, OpenSSL: 496.91 µs, 4.11× the fastest +496.91 µs 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind: 433.16 µs, 1.00× the fastest -433.16 µs -1 MB transfer, AES-128-GCM, aws-lc-rs: 453.78 µs, 1.05× the fastest -453.78 µs -1 MB transfer, AES-128-GCM, ring: 469.65 µs, 1.08× the fastest -469.65 µs -1 MB transfer, AES-128-GCM, graviola: 578.33 µs, 1.34× the fastest -578.33 µs -1 MB transfer, AES-128-GCM, OpenSSL: 496.82 µs, 1.15× the fastest -496.82 µs +1 MB transfer, AES-128-GCM, rind: 440.92 µs, 1.00× the fastest +440.92 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 442.54 µs, 1.00× the fastest +442.54 µs +1 MB transfer, AES-128-GCM, ring: 448.76 µs, 1.02× the fastest +448.76 µs +1 MB transfer, AES-128-GCM, graviola: 579.09 µs, 1.31× the fastest +579.09 µs +1 MB transfer, AES-128-GCM, OpenSSL: 491.38 µs, 1.11× the fastest +491.38 µs 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind: 544.93 µs, 1.00× the fastest -544.93 µs -1 MB transfer, AES-256-GCM, aws-lc-rs: 553.29 µs, 1.02× the fastest -553.29 µs -1 MB transfer, AES-256-GCM, ring: 544.73 µs, 1.00× the fastest -544.73 µs -1 MB transfer, AES-256-GCM, graviola: 697.29 µs, 1.28× the fastest -697.29 µs -1 MB transfer, AES-256-GCM, OpenSSL: 609.96 µs, 1.12× the fastest -609.96 µs +1 MB transfer, AES-256-GCM, rind: 544.88 µs, 1.00× the fastest +544.88 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 557.86 µs, 1.02× the fastest +557.86 µs +1 MB transfer, AES-256-GCM, ring: 567.27 µs, 1.04× the fastest +567.27 µs +1 MB transfer, AES-256-GCM, graviola: 691.18 µs, 1.27× the fastest +691.18 µs +1 MB transfer, AES-256-GCM, OpenSSL: 596.82 µs, 1.10× the fastest +596.82 µs 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind: 924.76 µs, 1.00× the fastest -924.76 µs -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 932.29 µs, 1.01× the fastest -932.29 µs -1 MB transfer, ChaCha20-Poly1305, ring: 928.70 µs, 1.00× the fastest -928.70 µs +1 MB transfer, ChaCha20-Poly1305, rind: 923.82 µs, 1.00× the fastest +923.82 µs +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 928.09 µs, 1.00× the fastest +928.09 µs +1 MB transfer, ChaCha20-Poly1305, ring: 925.14 µs, 1.00× the fastest +925.14 µs 1 MB transfer, ChaCha20-Poly1305, graviola: 1.64 ms, 1.78× the fastest 1.64 ms -1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.00 ms, 1.08× the fastest -1.00 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 983.97 µs, 1.07× the fastest +983.97 µs AEADs AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind: 42 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -42 ns ✓ -AES-128-GCM seal, 32 B, aws-lc-rs: 89 ns, 2.12× the fastest +AES-128-GCM seal, 32 B, rind: 43 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +43 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 89 ns, 2.06× the fastest 89 ns -AES-128-GCM seal, 32 B, ring: 72 ns, 1.71× the fastest -72 ns -AES-128-GCM seal, 32 B, RustCrypto + dalek: 101 ns, 2.42× the fastest -101 ns -AES-128-GCM seal, 32 B, graviola: 72 ns, 1.71× the fastest -72 ns -AES-128-GCM seal, 32 B, libcrux: 290 ns, 6.94× the fastest -290 ns -AES-128-GCM seal, 32 B, OpenSSL: 161 ns, 3.84× the fastest -161 ns +AES-128-GCM seal, 32 B, ring: 71 ns, 1.64× the fastest +71 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 100 ns, 2.33× the fastest +100 ns +AES-128-GCM seal, 32 B, graviola: 71 ns, 1.65× the fastest +71 ns +AES-128-GCM seal, 32 B, libcrux: 282 ns, 6.52× the fastest +282 ns +AES-128-GCM seal, 32 B, OpenSSL: 156 ns, 3.62× the fastest +156 ns AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind: 264 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -264 ns ✓ -AES-128-GCM seal, 1350 B, aws-lc-rs: 287 ns, 1.09× the fastest -287 ns -AES-128-GCM seal, 1350 B, ring: 280 ns, 1.06× the fastest -280 ns -AES-128-GCM seal, 1350 B, RustCrypto + dalek: 556 ns, 2.11× the fastest -556 ns -AES-128-GCM seal, 1350 B, graviola: 403 ns, 1.53× the fastest -403 ns -AES-128-GCM seal, 1350 B, libcrux: 3.41 µs, 12.95× the fastest -3.41 µs -AES-128-GCM seal, 1350 B, OpenSSL: 362 ns, 1.37× the fastest -362 ns +AES-128-GCM seal, 1350 B, rind: 246 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +246 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 285 ns, 1.16× the fastest +285 ns +AES-128-GCM seal, 1350 B, ring: 277 ns, 1.13× the fastest +277 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 547 ns, 2.22× the fastest +547 ns +AES-128-GCM seal, 1350 B, graviola: 400 ns, 1.63× the fastest +400 ns +AES-128-GCM seal, 1350 B, libcrux: 3.49 µs, 14.19× the fastest +3.49 µs +AES-128-GCM seal, 1350 B, OpenSSL: 352 ns, 1.43× the fastest +352 ns AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind: 2.38 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -2.38 µs ✓ -AES-128-GCM seal, 16 KB, aws-lc-rs: 2.46 µs, 1.04× the fastest -2.46 µs -AES-128-GCM seal, 16 KB, ring: 2.38 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind: 2.33 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +2.33 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 2.42 µs, 1.04× the fastest +2.42 µs +AES-128-GCM seal, 16 KB, ring: 2.38 µs, 1.02× the fastest 2.38 µs -AES-128-GCM seal, 16 KB, RustCrypto + dalek: 5.63 µs, 2.37× the fastest -5.63 µs -AES-128-GCM seal, 16 KB, graviola: 3.84 µs, 1.62× the fastest -3.84 µs -AES-128-GCM seal, 16 KB, libcrux: 38.50 µs, 16.20× the fastest -38.50 µs -AES-128-GCM seal, 16 KB, OpenSSL: 2.53 µs, 1.06× the fastest -2.53 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 5.62 µs, 2.41× the fastest +5.62 µs +AES-128-GCM seal, 16 KB, graviola: 3.75 µs, 1.61× the fastest +3.75 µs +AES-128-GCM seal, 16 KB, libcrux: 39.94 µs, 17.11× the fastest +39.94 µs +AES-128-GCM seal, 16 KB, OpenSSL: 2.45 µs, 1.05× the fastest +2.45 µs AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind: 50 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -50 ns ✓ -AES-128-GCM open, 32 B, aws-lc-rs: 95 ns, 1.89× the fastest -95 ns -AES-128-GCM open, 32 B, ring: 79 ns, 1.58× the fastest -79 ns -AES-128-GCM open, 32 B, RustCrypto + dalek: 106 ns, 2.11× the fastest -106 ns -AES-128-GCM open, 32 B, graviola: 68 ns, 1.37× the fastest -68 ns -AES-128-GCM open, 32 B, libcrux: 305 ns, 6.10× the fastest -305 ns -AES-128-GCM open, 32 B, OpenSSL: 156 ns, 3.13× the fastest -156 ns +AES-128-GCM open, 32 B, rind: 38 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +38 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 90 ns, 2.41× the fastest +90 ns +AES-128-GCM open, 32 B, ring: 98 ns, 2.60× the fastest +98 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 104 ns, 2.78× the fastest +104 ns +AES-128-GCM open, 32 B, graviola: 69 ns, 1.83× the fastest +69 ns +AES-128-GCM open, 32 B, libcrux: 303 ns, 8.06× the fastest +303 ns +AES-128-GCM open, 32 B, OpenSSL: 159 ns, 4.24× the fastest +159 ns AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind: 261 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -261 ns ✓ -AES-128-GCM open, 1350 B, aws-lc-rs: 297 ns, 1.14× the fastest -297 ns -AES-128-GCM open, 1350 B, ring: 278 ns, 1.07× the fastest -278 ns -AES-128-GCM open, 1350 B, RustCrypto + dalek: 569 ns, 2.18× the fastest -569 ns -AES-128-GCM open, 1350 B, graviola: 362 ns, 1.39× the fastest -362 ns -AES-128-GCM open, 1350 B, libcrux: 3.63 µs, 13.91× the fastest -3.63 µs -AES-128-GCM open, 1350 B, OpenSSL: 360 ns, 1.38× the fastest -360 ns +AES-128-GCM open, 1350 B, rind: 236 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +236 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 285 ns, 1.21× the fastest +285 ns +AES-128-GCM open, 1350 B, ring: 296 ns, 1.25× the fastest +296 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 564 ns, 2.39× the fastest +564 ns +AES-128-GCM open, 1350 B, graviola: 358 ns, 1.51× the fastest +358 ns +AES-128-GCM open, 1350 B, libcrux: 3.48 µs, 14.75× the fastest +3.48 µs +AES-128-GCM open, 1350 B, OpenSSL: 355 ns, 1.50× the fastest +355 ns AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind: 2.58 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -2.58 µs ✓ -AES-128-GCM open, 16 KB, aws-lc-rs: 2.63 µs, 1.02× the fastest -2.63 µs -AES-128-GCM open, 16 KB, ring: 2.59 µs, 1.00× the fastest -2.59 µs -AES-128-GCM open, 16 KB, RustCrypto + dalek: 5.81 µs, 2.25× the fastest -5.81 µs -AES-128-GCM open, 16 KB, graviola: 3.41 µs, 1.32× the fastest -3.41 µs -AES-128-GCM open, 16 KB, libcrux: 39.83 µs, 15.43× the fastest -39.83 µs -AES-128-GCM open, 16 KB, OpenSSL: 2.70 µs, 1.05× the fastest -2.70 µs +AES-128-GCM open, 16 KB, rind: 2.52 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +2.52 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 2.60 µs, 1.03× the fastest +2.60 µs +AES-128-GCM open, 16 KB, ring: 2.62 µs, 1.04× the fastest +2.62 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 5.75 µs, 2.28× the fastest +5.75 µs +AES-128-GCM open, 16 KB, graviola: 3.39 µs, 1.34× the fastest +3.39 µs +AES-128-GCM open, 16 KB, libcrux: 41.66 µs, 16.52× the fastest +41.66 µs +AES-128-GCM open, 16 KB, OpenSSL: 2.85 µs, 1.13× the fastest +2.85 µs AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind: 46 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -46 ns ✓ -AES-256-GCM seal, 32 B, aws-lc-rs: 96 ns, 2.06× the fastest -96 ns -AES-256-GCM seal, 32 B, ring: 76 ns, 1.64× the fastest -76 ns -AES-256-GCM seal, 32 B, RustCrypto + dalek: 109 ns, 2.35× the fastest -109 ns -AES-256-GCM seal, 32 B, graviola: 80 ns, 1.72× the fastest -80 ns -AES-256-GCM seal, 32 B, libcrux: 343 ns, 7.41× the fastest -343 ns -AES-256-GCM seal, 32 B, OpenSSL: 167 ns, 3.60× the fastest -167 ns +AES-256-GCM seal, 32 B, rind: 49 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +49 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 95 ns, 1.96× the fastest +95 ns +AES-256-GCM seal, 32 B, ring: 75 ns, 1.54× the fastest +75 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 107 ns, 2.21× the fastest +107 ns +AES-256-GCM seal, 32 B, graviola: 78 ns, 1.60× the fastest +78 ns +AES-256-GCM seal, 32 B, libcrux: 344 ns, 7.07× the fastest +344 ns +AES-256-GCM seal, 32 B, OpenSSL: 161 ns, 3.32× the fastest +161 ns AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind: 343 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -343 ns ✓ -AES-256-GCM seal, 1350 B, aws-lc-rs: 364 ns, 1.06× the fastest -364 ns -AES-256-GCM seal, 1350 B, ring: 356 ns, 1.04× the fastest -356 ns -AES-256-GCM seal, 1350 B, RustCrypto + dalek: 648 ns, 1.89× the fastest -648 ns -AES-256-GCM seal, 1350 B, graviola: 485 ns, 1.41× the fastest -485 ns -AES-256-GCM seal, 1350 B, libcrux: 4.49 µs, 13.06× the fastest -4.49 µs -AES-256-GCM seal, 1350 B, OpenSSL: 438 ns, 1.28× the fastest -438 ns +AES-256-GCM seal, 1350 B, rind: 325 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +325 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 363 ns, 1.12× the fastest +363 ns +AES-256-GCM seal, 1350 B, ring: 353 ns, 1.09× the fastest +353 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 623 ns, 1.92× the fastest +623 ns +AES-256-GCM seal, 1350 B, graviola: 476 ns, 1.46× the fastest +476 ns +AES-256-GCM seal, 1350 B, libcrux: 4.50 µs, 13.86× the fastest +4.50 µs +AES-256-GCM seal, 1350 B, OpenSSL: 437 ns, 1.34× the fastest +437 ns AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind: 3.24 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -3.24 µs ✓ -AES-256-GCM seal, 16 KB, aws-lc-rs: 3.32 µs, 1.02× the fastest -3.32 µs -AES-256-GCM seal, 16 KB, ring: 3.25 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind: 3.22 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.22 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 3.30 µs, 1.03× the fastest +3.30 µs +AES-256-GCM seal, 16 KB, ring: 3.25 µs, 1.01× the fastest 3.25 µs -AES-256-GCM seal, 16 KB, RustCrypto + dalek: 6.54 µs, 2.02× the fastest -6.54 µs -AES-256-GCM seal, 16 KB, graviola: 4.72 µs, 1.45× the fastest -4.72 µs -AES-256-GCM seal, 16 KB, libcrux: 50.79 µs, 15.66× the fastest -50.79 µs -AES-256-GCM seal, 16 KB, OpenSSL: 3.35 µs, 1.03× the fastest -3.35 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 6.45 µs, 2.00× the fastest +6.45 µs +AES-256-GCM seal, 16 KB, graviola: 4.71 µs, 1.46× the fastest +4.71 µs +AES-256-GCM seal, 16 KB, libcrux: 50.92 µs, 15.81× the fastest +50.92 µs +AES-256-GCM seal, 16 KB, OpenSSL: 3.34 µs, 1.04× the fastest +3.34 µs AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind: 57 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -57 ns ✓ -AES-256-GCM open, 32 B, aws-lc-rs: 104 ns, 1.83× the fastest -104 ns -AES-256-GCM open, 32 B, ring: 83 ns, 1.45× the fastest -83 ns -AES-256-GCM open, 32 B, RustCrypto + dalek: 118 ns, 2.08× the fastest +AES-256-GCM open, 32 B, rind: 45 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +45 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 101 ns, 2.26× the fastest +101 ns +AES-256-GCM open, 32 B, ring: 107 ns, 2.39× the fastest +107 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 118 ns, 2.65× the fastest 118 ns -AES-256-GCM open, 32 B, graviola: 79 ns, 1.39× the fastest -79 ns -AES-256-GCM open, 32 B, libcrux: 385 ns, 6.76× the fastest -385 ns -AES-256-GCM open, 32 B, OpenSSL: 173 ns, 3.05× the fastest -173 ns +AES-256-GCM open, 32 B, graviola: 73 ns, 1.64× the fastest +73 ns +AES-256-GCM open, 32 B, libcrux: 363 ns, 8.12× the fastest +363 ns +AES-256-GCM open, 32 B, OpenSSL: 172 ns, 3.84× the fastest +172 ns AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind: 351 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -351 ns ✓ -AES-256-GCM open, 1350 B, aws-lc-rs: 391 ns, 1.11× the fastest -391 ns -AES-256-GCM open, 1350 B, ring: 371 ns, 1.06× the fastest -371 ns -AES-256-GCM open, 1350 B, RustCrypto + dalek: 672 ns, 1.91× the fastest -672 ns -AES-256-GCM open, 1350 B, graviola: 456 ns, 1.30× the fastest -456 ns -AES-256-GCM open, 1350 B, libcrux: 4.55 µs, 12.94× the fastest -4.55 µs -AES-256-GCM open, 1350 B, OpenSSL: 436 ns, 1.24× the fastest -436 ns +AES-256-GCM open, 1350 B, rind: 328 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +328 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 422 ns, 1.29× the fastest +422 ns +AES-256-GCM open, 1350 B, ring: 388 ns, 1.18× the fastest +388 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 677 ns, 2.06× the fastest +677 ns +AES-256-GCM open, 1350 B, graviola: 510 ns, 1.56× the fastest +510 ns +AES-256-GCM open, 1350 B, libcrux: 4.74 µs, 14.46× the fastest +4.74 µs +AES-256-GCM open, 1350 B, OpenSSL: 643 ns, 1.96× the fastest +643 ns AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind: 3.58 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -3.58 µs ✓ -AES-256-GCM open, 16 KB, aws-lc-rs: 3.56 µs, 1.00× the fastest -3.56 µs -AES-256-GCM open, 16 KB, ring: 3.59 µs, 1.01× the fastest -3.59 µs -AES-256-GCM open, 16 KB, RustCrypto + dalek: 6.77 µs, 1.90× the fastest -6.77 µs -AES-256-GCM open, 16 KB, graviola: 4.38 µs, 1.23× the fastest -4.38 µs -AES-256-GCM open, 16 KB, libcrux: 50.89 µs, 14.30× the fastest -50.89 µs -AES-256-GCM open, 16 KB, OpenSSL: 3.64 µs, 1.02× the fastest -3.64 µs +AES-256-GCM open, 16 KB, rind: 3.62 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.62 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 3.69 µs, 1.02× the fastest +3.69 µs +AES-256-GCM open, 16 KB, ring: 3.70 µs, 1.02× the fastest +3.70 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 7.23 µs, 2.00× the fastest +7.23 µs +AES-256-GCM open, 16 KB, graviola: 4.54 µs, 1.25× the fastest +4.54 µs +AES-256-GCM open, 16 KB, libcrux: 53.96 µs, 14.91× the fastest +53.96 µs +AES-256-GCM open, 16 KB, OpenSSL: 3.87 µs, 1.07× the fastest +3.87 µs ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind: 124 ns, 1.00× the fastest -124 ns -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 141 ns, 1.13× the fastest -141 ns -ChaCha20-Poly1305 seal, 32 B, ring: 130 ns, 1.05× the fastest +ChaCha20-Poly1305 seal, 32 B, rind: 129 ns, 1.00× the fastest +129 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 149 ns, 1.15× the fastest +149 ns +ChaCha20-Poly1305 seal, 32 B, ring: 130 ns, 1.01× the fastest 130 ns -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.16 µs, 9.36× the fastest -1.16 µs -ChaCha20-Poly1305 seal, 32 B, graviola: 222 ns, 1.79× the fastest -222 ns -ChaCha20-Poly1305 seal, 32 B, libcrux: 274 ns, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -274 ns ✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL: 325 ns, 2.62× the fastest -325 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.21 µs, 9.37× the fastest +1.21 µs +ChaCha20-Poly1305 seal, 32 B, graviola: 232 ns, 1.80× the fastest +232 ns +ChaCha20-Poly1305 seal, 32 B, libcrux: 301 ns, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +301 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 337 ns, 2.61× the fastest +337 ns ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind: 691 ns, 1.01× the fastest -691 ns -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 700 ns, 1.02× the fastest -700 ns -ChaCha20-Poly1305 seal, 1350 B, ring: 686 ns, 1.00× the fastest -686 ns -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.08 µs, 3.04× the fastest -2.08 µs -ChaCha20-Poly1305 seal, 1350 B, graviola: 1.24 µs, 1.81× the fastest -1.24 µs -ChaCha20-Poly1305 seal, 1350 B, libcrux: 3.08 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -3.08 µs ✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 933 ns, 1.36× the fastest -933 ns +ChaCha20-Poly1305 seal, 1350 B, rind: 718 ns, 1.00× the fastest +718 ns +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 755 ns, 1.06× the fastest +755 ns +ChaCha20-Poly1305 seal, 1350 B, ring: 714 ns, 1.00× the fastest +714 ns +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.18 µs, 3.05× the fastest +2.18 µs +ChaCha20-Poly1305 seal, 1350 B, graviola: 1.29 µs, 1.81× the fastest +1.29 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 3.16 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +3.16 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 971 ns, 1.36× the fastest +971 ns ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind: 6.35 µs, 1.00× the fastest -6.35 µs -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.43 µs, 1.01× the fastest -6.43 µs -ChaCha20-Poly1305 seal, 16 KB, ring: 6.39 µs, 1.01× the fastest -6.39 µs -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.38 µs, 1.95× the fastest -12.38 µs -ChaCha20-Poly1305 seal, 16 KB, graviola: 11.98 µs, 1.89× the fastest -11.98 µs -ChaCha20-Poly1305 seal, 16 KB, libcrux: 34.70 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -34.70 µs ✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 6.41 µs, 1.01× the fastest -6.41 µs +ChaCha20-Poly1305 seal, 16 KB, rind: 6.81 µs, 1.03× the fastest +6.81 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.63 µs, 1.00× the fastest +6.63 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 6.60 µs, 1.00× the fastest +6.60 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.61 µs, 1.91× the fastest +12.61 µs +ChaCha20-Poly1305 seal, 16 KB, graviola: 12.52 µs, 1.90× the fastest +12.52 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 35.52 µs, 5.38× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +35.52 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 6.64 µs, 1.01× the fastest +6.64 µs XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind: 270 ns, 1.00× the fastest -270 ns -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 282 ns, 1.04× the fastest -282 ns -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.28 µs, 4.72× the fastest -1.28 µs -XChaCha20-Poly1305 seal, 32 B, graviola: 335 ns, 1.24× the fastest +XChaCha20-Poly1305 seal, 32 B, rind: 256 ns, 1.00× the fastest +256 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 278 ns, 1.09× the fastest +278 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.27 µs, 4.95× the fastest +1.27 µs +XChaCha20-Poly1305 seal, 32 B, graviola: 335 ns, 1.31× the fastest 335 ns -XChaCha20-Poly1305 seal, 32 B, libcrux: 400 ns, 1.48× the fastest -400 ns +XChaCha20-Poly1305 seal, 32 B, libcrux: 400 ns, 1.56× the fastest +400 ns XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind: 814 ns, 1.00× the fastest -814 ns -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 839 ns, 1.03× the fastest -839 ns -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.20 µs, 2.71× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind: 804 ns, 1.00× the fastest +804 ns +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 831 ns, 1.03× the fastest +831 ns +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 2.20 µs, 2.74× the fastest 2.20 µs -XChaCha20-Poly1305 seal, 1350 B, graviola: 1.37 µs, 1.68× the fastest -1.37 µs -XChaCha20-Poly1305 seal, 1350 B, libcrux: 3.12 µs, 3.84× the fastest -3.12 µs +XChaCha20-Poly1305 seal, 1350 B, graviola: 1.32 µs, 1.64× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 3.16 µs, 3.92× the fastest +3.16 µs XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind: 6.51 µs, 1.00× the fastest -6.51 µs -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.55 µs, 1.01× the fastest -6.55 µs -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.11 µs, 1.86× the fastest -12.11 µs -XChaCha20-Poly1305 seal, 16 KB, graviola: 11.96 µs, 1.84× the fastest -11.96 µs -XChaCha20-Poly1305 seal, 16 KB, libcrux: 34.02 µs, 5.22× the fastest -34.02 µs +XChaCha20-Poly1305 seal, 16 KB, rind: 6.38 µs, 1.00× the fastest +6.38 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 6.44 µs, 1.01× the fastest +6.44 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 12.04 µs, 1.89× the fastest +12.04 µs +XChaCha20-Poly1305 seal, 16 KB, graviola: 11.86 µs, 1.86× the fastest +11.86 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 33.42 µs, 5.23× the fastest +33.42 µs QUIC header protection AES-128 header protection +AES-128 header protection, rind: 5 ns, 1.00× the fastest +5 ns +AES-128 header protection, aws-lc-rs: 9 ns, 1.95× the fastest +9 ns +AES-128 header protection, ring: 8 ns, 1.73× the fastest +8 ns AES-256 header protection +AES-256 header protection, rind: 8 ns, 1.00× the fastest +8 ns +AES-256 header protection, aws-lc-rs: 10 ns, 1.25× the fastest +10 ns +AES-256 header protection, ring: 10 ns, 1.24× the fastest +10 ns ChaCha20 header protection +ChaCha20 header protection, rind: 84 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +84 ns ✓ +ChaCha20 header protection, aws-lc-rs: 104 ns, 1.24× the fastest +104 ns +ChaCha20 header protection, ring: 98 ns, 1.17× the fastest +98 ns Key agreement X25519 -X25519, rind: 26.86 µs, 1.07× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -26.86 µs ✓ -X25519, aws-lc-rs: 33.12 µs, 1.32× the fastest -33.12 µs -X25519, ring: 55.23 µs, 2.19× the fastest -55.23 µs -X25519, RustCrypto + dalek: 60.51 µs, 2.40× the fastest -60.51 µs -X25519, graviola: 25.17 µs, 1.00× the fastest -25.17 µs -X25519, libcrux: 73.49 µs, 2.92× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -73.49 µs ✓ -X25519, OpenSSL: 55.22 µs, 2.19× the fastest -55.22 µs +X25519, rind: 25.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +25.00 µs ✓ +X25519, aws-lc-rs: 30.89 µs, 1.24× the fastest +30.89 µs +X25519, ring: 53.60 µs, 2.15× the fastest +53.60 µs +X25519, RustCrypto + dalek: 56.59 µs, 2.27× the fastest +56.59 µs +X25519, graviola: 24.95 µs, 1.00× the fastest +24.95 µs +X25519, libcrux: 72.34 µs, 2.90× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +72.34 µs ✓ +X25519, OpenSSL: 55.20 µs, 2.21× the fastest +55.20 µs P-256 ECDH -P-256 ECDH, rind: 46.60 µs, 1.00× the fastest -46.60 µs -P-256 ECDH, aws-lc-rs: 56.11 µs, 1.20× the fastest -56.11 µs -P-256 ECDH, ring: 51.77 µs, 1.11× the fastest -51.77 µs -P-256 ECDH, RustCrypto + dalek: 252.15 µs, 5.41× the fastest -252.15 µs -P-256 ECDH, graviola: 50.53 µs, 1.08× the fastest -50.53 µs -P-256 ECDH, libcrux: 304.85 µs, 6.54× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -304.85 µs ✓ -P-256 ECDH, OpenSSL: 87.27 µs, 1.87× the fastest -87.27 µs +P-256 ECDH, rind: 42.80 µs, 1.00× the fastest +42.80 µs +P-256 ECDH, aws-lc-rs: 51.71 µs, 1.21× the fastest +51.71 µs +P-256 ECDH, ring: 47.10 µs, 1.10× the fastest +47.10 µs +P-256 ECDH, RustCrypto + dalek: 233.70 µs, 5.46× the fastest +233.70 µs +P-256 ECDH, graviola: 46.44 µs, 1.08× the fastest +46.44 µs +P-256 ECDH, libcrux: 280.52 µs, 6.55× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +280.52 µs ✓ +P-256 ECDH, OpenSSL: 81.68 µs, 1.91× the fastest +81.68 µs Signatures Ed25519 sign -Ed25519 sign, rind: 7.09 µs, 1.00× the fastest -7.09 µs -Ed25519 sign, aws-lc-rs: 7.54 µs, 1.06× the fastest -7.54 µs -Ed25519 sign, ring: 22.05 µs, 3.11× the fastest -22.05 µs -Ed25519 sign, RustCrypto + dalek: 16.08 µs, 2.27× the fastest -16.08 µs -Ed25519 sign, graviola: 7.27 µs, 1.03× the fastest -7.27 µs -Ed25519 sign, libcrux: 49.67 µs, 7.01× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -49.67 µs ✓ -Ed25519 sign, OpenSSL: 28.46 µs, 4.02× the fastest -28.46 µs +Ed25519 sign, rind: 7.13 µs, 1.00× the fastest +7.13 µs +Ed25519 sign, aws-lc-rs: 7.81 µs, 1.10× the fastest +7.81 µs +Ed25519 sign, ring: 22.26 µs, 3.12× the fastest +22.26 µs +Ed25519 sign, RustCrypto + dalek: 17.40 µs, 2.44× the fastest +17.40 µs +Ed25519 sign, graviola: 7.22 µs, 1.01× the fastest +7.22 µs +Ed25519 sign, libcrux: 53.66 µs, 7.52× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +53.66 µs ✓ +Ed25519 sign, OpenSSL: 31.01 µs, 4.35× the fastest +31.01 µs Ed25519 verify -Ed25519 verify, rind: 31.59 µs, 1.13× the fastest -31.59 µs -Ed25519 verify, aws-lc-rs: 31.57 µs, 1.13× the fastest -31.57 µs -Ed25519 verify, ring: 41.59 µs, 1.49× the fastest -41.59 µs -Ed25519 verify, RustCrypto + dalek: 27.88 µs, 1.00× the fastest -27.88 µs -Ed25519 verify, graviola: 31.39 µs, 1.13× the fastest -31.39 µs -Ed25519 verify, libcrux: 64.33 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -64.33 µs ✓ -Ed25519 verify, OpenSSL: 93.95 µs, 3.37× the fastest -93.95 µs +Ed25519 verify, rind: 31.81 µs, 1.06× the fastest +31.81 µs +Ed25519 verify, aws-lc-rs: 31.62 µs, 1.06× the fastest +31.62 µs +Ed25519 verify, ring: 42.48 µs, 1.42× the fastest +42.48 µs +Ed25519 verify, RustCrypto + dalek: 29.88 µs, 1.00× the fastest +29.88 µs +Ed25519 verify, graviola: 32.22 µs, 1.08× the fastest +32.22 µs +Ed25519 verify, libcrux: 69.12 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +69.12 µs ✓ +Ed25519 verify, OpenSSL: 93.09 µs, 3.12× the fastest +93.09 µs P-256 ECDSA sign -P-256 ECDSA sign, rind: 15.72 µs, 1.00× the fastest -15.72 µs -P-256 ECDSA sign, aws-lc-rs: 22.35 µs, 1.42× the fastest -22.35 µs -P-256 ECDSA sign, ring: 16.56 µs, 1.05× the fastest -16.56 µs -P-256 ECDSA sign, RustCrypto + dalek: 78.32 µs, 4.98× the fastest -78.32 µs -P-256 ECDSA sign, graviola: 23.27 µs, 1.48× the fastest -23.27 µs -P-256 ECDSA sign, libcrux: 115.07 µs, 7.32× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -115.07 µs ✓ -P-256 ECDSA sign, OpenSSL: 28.83 µs, 1.83× the fastest -28.83 µs +P-256 ECDSA sign, rind: 13.11 µs, 1.00× the fastest +13.11 µs +P-256 ECDSA sign, aws-lc-rs: 19.80 µs, 1.51× the fastest +19.80 µs +P-256 ECDSA sign, ring: 14.86 µs, 1.13× the fastest +14.86 µs +P-256 ECDSA sign, RustCrypto + dalek: 69.11 µs, 5.27× the fastest +69.11 µs +P-256 ECDSA sign, graviola: 19.89 µs, 1.52× the fastest +19.89 µs +P-256 ECDSA sign, libcrux: 102.03 µs, 7.78× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +102.03 µs ✓ +P-256 ECDSA sign, OpenSSL: 20.35 µs, 1.55× the fastest +20.35 µs P-256 ECDSA verify -P-256 ECDSA verify, rind: 47.33 µs, 1.00× the fastest -47.33 µs -P-256 ECDSA verify, aws-lc-rs: 47.11 µs, 1.00× the fastest -47.11 µs -P-256 ECDSA verify, ring: 47.60 µs, 1.01× the fastest -47.60 µs -P-256 ECDSA verify, RustCrypto + dalek: 211.46 µs, 4.49× the fastest -211.46 µs -P-256 ECDSA verify, graviola: 48.45 µs, 1.03× the fastest -48.45 µs -P-256 ECDSA verify, libcrux: 262.54 µs, 5.57× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -262.54 µs ✓ -P-256 ECDSA verify, OpenSSL: 74.70 µs, 1.59× the fastest -74.70 µs +P-256 ECDSA verify, rind: 41.56 µs, 1.00× the fastest +41.56 µs +P-256 ECDSA verify, aws-lc-rs: 43.27 µs, 1.04× the fastest +43.27 µs +P-256 ECDSA verify, ring: 43.93 µs, 1.06× the fastest +43.93 µs +P-256 ECDSA verify, RustCrypto + dalek: 197.15 µs, 4.74× the fastest +197.15 µs +P-256 ECDSA verify, graviola: 44.30 µs, 1.07× the fastest +44.30 µs +P-256 ECDSA verify, libcrux: 236.87 µs, 5.70× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +236.87 µs ✓ +P-256 ECDSA verify, OpenSSL: 68.34 µs, 1.64× the fastest +68.34 µs Hashes and KDFs SHA-256, 64 B -SHA-256, 64 B, rind: 276 ns, 1.00× the fastest -276 ns -SHA-256, 64 B, aws-lc-rs: 313 ns, 1.13× the fastest -313 ns -SHA-256, 64 B, ring: 289 ns, 1.05× the fastest -289 ns -SHA-256, 64 B, RustCrypto + dalek: 483 ns, 1.75× the fastest -483 ns -SHA-256, 64 B, graviola: 579 ns, 2.10× the fastest -579 ns -SHA-256, 64 B, libcrux: 487 ns, 1.76× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -487 ns ✓ -SHA-256, 64 B, OpenSSL: 514 ns, 1.86× the fastest -514 ns +SHA-256, 64 B, rind: 244 ns, 1.00× the fastest +244 ns +SHA-256, 64 B, aws-lc-rs: 307 ns, 1.26× the fastest +307 ns +SHA-256, 64 B, ring: 277 ns, 1.13× the fastest +277 ns +SHA-256, 64 B, RustCrypto + dalek: 473 ns, 1.94× the fastest +473 ns +SHA-256, 64 B, graviola: 576 ns, 2.37× the fastest +576 ns +SHA-256, 64 B, libcrux: 485 ns, 1.99× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +485 ns ✓ +SHA-256, 64 B, OpenSSL: 505 ns, 2.07× the fastest +505 ns SHA-256, 1350 B -SHA-256, 1350 B, rind: 2.88 µs, 1.07× the fastest -2.88 µs -SHA-256, 1350 B, aws-lc-rs: 2.98 µs, 1.11× the fastest -2.98 µs -SHA-256, 1350 B, ring: 2.83 µs, 1.05× the fastest -2.83 µs -SHA-256, 1350 B, RustCrypto + dalek: 5.33 µs, 1.98× the fastest -5.33 µs -SHA-256, 1350 B, graviola: 6.11 µs, 2.27× the fastest -6.11 µs -SHA-256, 1350 B, libcrux: 5.27 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -5.27 µs ✓ -SHA-256, 1350 B, OpenSSL: 2.69 µs, 1.00× the fastest -2.69 µs +SHA-256, 1350 B, rind: 2.46 µs, 1.00× the fastest +2.46 µs +SHA-256, 1350 B, aws-lc-rs: 2.79 µs, 1.14× the fastest +2.79 µs +SHA-256, 1350 B, ring: 2.82 µs, 1.15× the fastest +2.82 µs +SHA-256, 1350 B, RustCrypto + dalek: 5.11 µs, 2.08× the fastest +5.11 µs +SHA-256, 1350 B, graviola: 6.07 µs, 2.47× the fastest +6.07 µs +SHA-256, 1350 B, libcrux: 5.23 µs, 2.13× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +5.23 µs ✓ +SHA-256, 1350 B, OpenSSL: 2.68 µs, 1.09× the fastest +2.68 µs SHA-256, 16 KB -SHA-256, 16 KB, rind: 31.57 µs, 1.11× the fastest -31.57 µs -SHA-256, 16 KB, aws-lc-rs: 31.63 µs, 1.12× the fastest -31.63 µs -SHA-256, 16 KB, ring: 31.56 µs, 1.11× the fastest -31.56 µs -SHA-256, 16 KB, RustCrypto + dalek: 58.88 µs, 2.08× the fastest -58.88 µs -SHA-256, 16 KB, graviola: 69.99 µs, 2.47× the fastest -69.99 µs -SHA-256, 16 KB, libcrux: 61.29 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -61.29 µs ✓ -SHA-256, 16 KB, OpenSSL: 28.35 µs, 1.00× the fastest -28.35 µs +SHA-256, 16 KB, rind: 28.06 µs, 1.00× the fastest +28.06 µs +SHA-256, 16 KB, aws-lc-rs: 31.46 µs, 1.12× the fastest +31.46 µs +SHA-256, 16 KB, ring: 32.37 µs, 1.15× the fastest +32.37 µs +SHA-256, 16 KB, RustCrypto + dalek: 58.17 µs, 2.07× the fastest +58.17 µs +SHA-256, 16 KB, graviola: 69.84 µs, 2.49× the fastest +69.84 µs +SHA-256, 16 KB, libcrux: 61.68 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +61.68 µs ✓ +SHA-256, 16 KB, OpenSSL: 28.83 µs, 1.03× the fastest +28.83 µs SHA-512, 64 B -SHA-512, 64 B, rind: 200 ns, 1.00× the fastest -200 ns -SHA-512, 64 B, aws-lc-rs: 233 ns, 1.17× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -233 ns ✓ -SHA-512, 64 B, ring: 204 ns, 1.02× the fastest -204 ns -SHA-512, 64 B, RustCrypto + dalek: 272 ns, 1.36× the fastest -272 ns -SHA-512, 64 B, graviola: 237 ns, 1.18× the fastest -237 ns -SHA-512, 64 B, libcrux: 290 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -290 ns ✓ -SHA-512, 64 B, OpenSSL: 436 ns, 2.18× the fastest -436 ns +SHA-512, 64 B, rind: 198 ns, 1.00× the fastest +198 ns +SHA-512, 64 B, aws-lc-rs: 228 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +228 ns ✓ +SHA-512, 64 B, ring: 203 ns, 1.02× the fastest +203 ns +SHA-512, 64 B, RustCrypto + dalek: 270 ns, 1.36× the fastest +270 ns +SHA-512, 64 B, graviola: 236 ns, 1.19× the fastest +236 ns +SHA-512, 64 B, libcrux: 289 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +289 ns ✓ +SHA-512, 64 B, OpenSSL: 430 ns, 2.17× the fastest +430 ns SHA-512, 1350 B -SHA-512, 1350 B, rind: 1.95 µs, 1.01× the fastest -1.95 µs -SHA-512, 1350 B, aws-lc-rs: 1.98 µs, 1.03× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -1.98 µs ✓ -SHA-512, 1350 B, ring: 1.95 µs, 1.01× the fastest -1.95 µs -SHA-512, 1350 B, RustCrypto + dalek: 2.68 µs, 1.40× the fastest -2.68 µs -SHA-512, 1350 B, graviola: 2.35 µs, 1.22× the fastest +SHA-512, 1350 B, rind: 1.65 µs, 1.00× the fastest +1.65 µs +SHA-512, 1350 B, aws-lc-rs: 1.97 µs, 1.19× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +1.97 µs ✓ +SHA-512, 1350 B, ring: 1.93 µs, 1.17× the fastest +1.93 µs +SHA-512, 1350 B, RustCrypto + dalek: 2.67 µs, 1.61× the fastest +2.67 µs +SHA-512, 1350 B, graviola: 2.35 µs, 1.42× the fastest 2.35 µs -SHA-512, 1350 B, libcrux: 3.08 µs, 1.60× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +SHA-512, 1350 B, libcrux: 3.08 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step 3.08 µs ✓ -SHA-512, 1350 B, OpenSSL: 1.92 µs, 1.00× the fastest -1.92 µs +SHA-512, 1350 B, OpenSSL: 1.90 µs, 1.15× the fastest +1.90 µs SHA-512, 16 KB -SHA-512, 16 KB, rind: 21.82 µs, 1.15× the fastest -21.82 µs -SHA-512, 16 KB, aws-lc-rs: 21.95 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -21.95 µs ✓ -SHA-512, 16 KB, ring: 22.31 µs, 1.17× the fastest -22.31 µs -SHA-512, 16 KB, RustCrypto + dalek: 31.08 µs, 1.63× the fastest -31.08 µs -SHA-512, 16 KB, graviola: 27.35 µs, 1.44× the fastest -27.35 µs -SHA-512, 16 KB, libcrux: 35.63 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -35.63 µs ✓ -SHA-512, 16 KB, OpenSSL: 19.04 µs, 1.00× the fastest -19.04 µs +SHA-512, 16 KB, rind: 18.53 µs, 1.00× the fastest +18.53 µs +SHA-512, 16 KB, aws-lc-rs: 21.92 µs, 1.18× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +21.92 µs ✓ +SHA-512, 16 KB, ring: 21.75 µs, 1.17× the fastest +21.75 µs +SHA-512, 16 KB, RustCrypto + dalek: 30.73 µs, 1.66× the fastest +30.73 µs +SHA-512, 16 KB, graviola: 27.16 µs, 1.47× the fastest +27.16 µs +SHA-512, 16 KB, libcrux: 35.45 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +35.45 µs ✓ +SHA-512, 16 KB, OpenSSL: 18.99 µs, 1.02× the fastest +18.99 µs HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind: 690 ns, 1.00× the fastest -690 ns -HMAC-SHA256, 64 B, aws-lc-rs: 840 ns, 1.22× the fastest -840 ns -HMAC-SHA256, 64 B, ring: 746 ns, 1.08× the fastest -746 ns -HMAC-SHA256, 64 B, RustCrypto + dalek: 1.25 µs, 1.81× the fastest -1.25 µs -HMAC-SHA256, 64 B, graviola: 1.47 µs, 2.12× the fastest -1.47 µs -HMAC-SHA256, 64 B, libcrux: 1.22 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -1.22 µs ✓ -HMAC-SHA256, 64 B, OpenSSL: 3.90 µs, 5.65× the fastest -3.90 µs +HMAC-SHA256, 64 B, rind: 628 ns, 1.00× the fastest +628 ns +HMAC-SHA256, 64 B, aws-lc-rs: 811 ns, 1.29× the fastest +811 ns +HMAC-SHA256, 64 B, ring: 707 ns, 1.13× the fastest +707 ns +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.19 µs, 1.89× the fastest +1.19 µs +HMAC-SHA256, 64 B, graviola: 1.44 µs, 2.30× the fastest +1.44 µs +HMAC-SHA256, 64 B, libcrux: 1.20 µs, 1.92× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.20 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 3.69 µs, 5.88× the fastest +3.69 µs HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind: 3.29 µs, 1.00× the fastest -3.29 µs -HMAC-SHA256, 1350 B, aws-lc-rs: 3.49 µs, 1.06× the fastest -3.49 µs -HMAC-SHA256, 1350 B, ring: 3.39 µs, 1.03× the fastest -3.39 µs -HMAC-SHA256, 1350 B, RustCrypto + dalek: 6.54 µs, 1.99× the fastest -6.54 µs -HMAC-SHA256, 1350 B, graviola: 7.49 µs, 2.28× the fastest -7.49 µs -HMAC-SHA256, 1350 B, libcrux: 7.14 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -7.14 µs ✓ -HMAC-SHA256, 1350 B, OpenSSL: 6.24 µs, 1.89× the fastest -6.24 µs +HMAC-SHA256, 1350 B, rind: 2.79 µs, 1.00× the fastest +2.79 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 3.30 µs, 1.18× the fastest +3.30 µs +HMAC-SHA256, 1350 B, ring: 3.19 µs, 1.14× the fastest +3.19 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 5.80 µs, 2.08× the fastest +5.80 µs +HMAC-SHA256, 1350 B, graviola: 7.05 µs, 2.53× the fastest +7.05 µs +HMAC-SHA256, 1350 B, libcrux: 6.02 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +6.02 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 5.94 µs, 2.13× the fastest +5.94 µs HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind: 1.18 µs, 1.00× the fastest -1.18 µs -HKDF-SHA256 extract and expand, aws-lc-rs: 1.35 µs, 1.14× the fastest -1.35 µs -HKDF-SHA256 extract and expand, ring: 1.26 µs, 1.07× the fastest -1.26 µs -HKDF-SHA256 extract and expand, RustCrypto + dalek: 2.11 µs, 1.79× the fastest -2.11 µs -HKDF-SHA256 extract and expand, libcrux: 2.17 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -2.17 µs ✓ -HKDF-SHA256 extract and expand, OpenSSL: 4.68 µs, 3.97× the fastest -4.68 µs +HKDF-SHA256 extract and expand, rind: 1.15 µs, 1.00× the fastest +1.15 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 1.44 µs, 1.25× the fastest +1.44 µs +HKDF-SHA256 extract and expand, ring: 1.31 µs, 1.14× the fastest +1.31 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 1.98 µs, 1.72× the fastest +1.98 µs +HKDF-SHA256 extract and expand, libcrux: 2.04 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +2.04 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 4.33 µs, 3.76× the fastest +4.33 µs HKDF-SHA256 expand -HKDF-SHA256 expand, rind: 330 ns, 1.00× the fastest -330 ns -HKDF-SHA256 expand, aws-lc-rs: 673 ns, 2.04× the fastest -673 ns -HKDF-SHA256 expand, ring: 344 ns, 1.04× the fastest -344 ns -HKDF-SHA256 expand, RustCrypto + dalek: 527 ns, 1.60× the fastest -527 ns -HKDF-SHA256 expand, libcrux: 1.07 µs, 3.23× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -1.07 µs ✓ -HKDF-SHA256 expand, OpenSSL: 3.12 µs, 9.45× the fastest -3.12 µs +HKDF-SHA256 expand, rind: 300 ns, 1.00× the fastest +300 ns +HKDF-SHA256 expand, aws-lc-rs: 636 ns, 2.12× the fastest +636 ns +HKDF-SHA256 expand, ring: 337 ns, 1.12× the fastest +337 ns +HKDF-SHA256 expand, RustCrypto + dalek: 512 ns, 1.71× the fastest +512 ns +HKDF-SHA256 expand, libcrux: 1.01 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.01 µs ✓ +HKDF-SHA256 expand, OpenSSL: 2.87 µs, 9.58× the fastest +2.87 µs RSA RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind: 567.70 µs, 1.28× the fastest -567.70 µs -RSA-2048 PKCS#1 sign, aws-lc-rs: 454.36 µs, 1.03× the fastest -454.36 µs -RSA-2048 PKCS#1 sign, ring: 442.48 µs, 1.00× the fastest -442.48 µs -RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.16 ms, 2.62× the fastest -1.16 ms -RSA-2048 PKCS#1 sign, graviola: 458.57 µs, 1.04× the fastest -458.57 µs -RSA-2048 PKCS#1 sign, OpenSSL: 471.98 µs, 1.07× the fastest -471.98 µs +RSA-2048 PKCS#1 sign, rind: 447.43 µs, 1.03× the fastest +447.43 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 448.68 µs, 1.03× the fastest +448.68 µs +RSA-2048 PKCS#1 sign, ring: 434.47 µs, 1.00× the fastest +434.47 µs +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.14 ms, 2.63× the fastest +1.14 ms +RSA-2048 PKCS#1 sign, graviola: 445.92 µs, 1.03× the fastest +445.92 µs +RSA-2048 PKCS#1 sign, OpenSSL: 453.81 µs, 1.04× the fastest +453.81 µs RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind: 12.97 µs, 1.00× the fastest -12.97 µs -RSA-2048 PKCS#1 verify, aws-lc-rs: 15.81 µs, 1.22× the fastest -15.81 µs -RSA-2048 PKCS#1 verify, ring: 16.73 µs, 1.29× the fastest -16.73 µs -RSA-2048 PKCS#1 verify, RustCrypto + dalek: 58.28 µs, 4.49× the fastest -58.28 µs -RSA-2048 PKCS#1 verify, graviola: 19.61 µs, 1.51× the fastest -19.61 µs -RSA-2048 PKCS#1 verify, OpenSSL: 28.37 µs, 2.19× the fastest -28.37 µs +RSA-2048 PKCS#1 verify, rind: 12.88 µs, 1.00× the fastest +12.88 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 15.88 µs, 1.23× the fastest +15.88 µs +RSA-2048 PKCS#1 verify, ring: 16.51 µs, 1.28× the fastest +16.51 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 57.81 µs, 4.49× the fastest +57.81 µs +RSA-2048 PKCS#1 verify, graviola: 19.05 µs, 1.48× the fastest +19.05 µs +RSA-2048 PKCS#1 verify, OpenSSL: 24.54 µs, 1.91× the fastest +24.54 µs RSA-2048 PSS sign -RSA-2048 PSS sign, rind: 576.25 µs, 1.31× the fastest -576.25 µs -RSA-2048 PSS sign, aws-lc-rs: 459.05 µs, 1.04× the fastest -459.05 µs -RSA-2048 PSS sign, ring: 440.44 µs, 1.00× the fastest -440.44 µs -RSA-2048 PSS sign, RustCrypto + dalek: 1.17 ms, 2.65× the fastest -1.17 ms -RSA-2048 PSS sign, graviola: 453.66 µs, 1.03× the fastest -453.66 µs -RSA-2048 PSS sign, libcrux: 7.10 ms, 16.12× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -7.10 ms ✓ -RSA-2048 PSS sign, OpenSSL: 481.14 µs, 1.09× the fastest -481.14 µs +RSA-2048 PSS sign, rind: 445.92 µs, 1.02× the fastest +445.92 µs +RSA-2048 PSS sign, aws-lc-rs: 461.87 µs, 1.06× the fastest +461.87 µs +RSA-2048 PSS sign, ring: 437.28 µs, 1.00× the fastest +437.28 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.15 ms, 2.63× the fastest +1.15 ms +RSA-2048 PSS sign, graviola: 450.24 µs, 1.03× the fastest +450.24 µs +RSA-2048 PSS sign, libcrux: 7.22 ms, 16.51× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +7.22 ms ✓ +RSA-2048 PSS sign, OpenSSL: 456.55 µs, 1.04× the fastest +456.55 µs RSA-2048 PSS verify -RSA-2048 PSS verify, rind: 15.24 µs, 1.00× the fastest -15.24 µs -RSA-2048 PSS verify, aws-lc-rs: 18.00 µs, 1.18× the fastest -18.00 µs -RSA-2048 PSS verify, ring: 19.36 µs, 1.27× the fastest -19.36 µs -RSA-2048 PSS verify, RustCrypto + dalek: 71.12 µs, 4.67× the fastest -71.12 µs -RSA-2048 PSS verify, graviola: 22.16 µs, 1.45× the fastest -22.16 µs -RSA-2048 PSS verify, libcrux: 379.99 µs, 24.94× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -379.99 µs ✓ -RSA-2048 PSS verify, OpenSSL: 27.30 µs, 1.79× the fastest -27.30 µs +RSA-2048 PSS verify, rind: 14.36 µs, 1.00× the fastest +14.36 µs +RSA-2048 PSS verify, aws-lc-rs: 17.01 µs, 1.18× the fastest +17.01 µs +RSA-2048 PSS verify, ring: 18.22 µs, 1.27× the fastest +18.22 µs +RSA-2048 PSS verify, RustCrypto + dalek: 70.02 µs, 4.88× the fastest +70.02 µs +RSA-2048 PSS verify, graviola: 21.85 µs, 1.52× the fastest +21.85 µs +RSA-2048 PSS verify, libcrux: 377.87 µs, 26.32× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +377.87 µs ✓ +RSA-2048 PSS verify, OpenSSL: 27.16 µs, 1.89× the fastest +27.16 µs ML-KEM ML-KEM-768 key generation -ML-KEM-768 key generation, rind: 12.10 µs, 1.10× the fastest -12.10 µs -ML-KEM-768 key generation, aws-lc-rs: 23.32 µs, 2.11× the fastest -23.32 µs -ML-KEM-768 key generation, RustCrypto + dalek: 71.58 µs, 6.48× the fastest -71.58 µs -ML-KEM-768 key generation, graviola: 11.04 µs, 1.00× the fastest -11.04 µs -ML-KEM-768 key generation, libcrux: 30.74 µs, 2.78× the fastest -30.74 µs -ML-KEM-768 key generation, OpenSSL: 42.66 µs, 3.86× the fastest -42.66 µs +ML-KEM-768 key generation, rind: 10.24 µs, 1.00× the fastest +10.24 µs +ML-KEM-768 key generation, aws-lc-rs: 18.44 µs, 1.80× the fastest +18.44 µs +ML-KEM-768 key generation, RustCrypto + dalek: 59.97 µs, 5.86× the fastest +59.97 µs +ML-KEM-768 key generation, graviola: 10.41 µs, 1.02× the fastest +10.41 µs +ML-KEM-768 key generation, libcrux: 20.05 µs, 1.96× the fastest +20.05 µs +ML-KEM-768 key generation, OpenSSL: 40.63 µs, 3.97× the fastest +40.63 µs ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind: 15.73 µs, 1.23× the fastest -15.73 µs -ML-KEM-768 encapsulate, aws-lc-rs: 20.31 µs, 1.58× the fastest -20.31 µs -ML-KEM-768 encapsulate, RustCrypto + dalek: 75.08 µs, 5.85× the fastest -75.08 µs -ML-KEM-768 encapsulate, graviola: 12.83 µs, 1.00× the fastest -12.83 µs -ML-KEM-768 encapsulate, libcrux: 21.01 µs, 1.64× the fastest -21.01 µs -ML-KEM-768 encapsulate, OpenSSL: 44.49 µs, 3.47× the fastest -44.49 µs +ML-KEM-768 encapsulate, rind: 10.61 µs, 1.00× the fastest +10.61 µs +ML-KEM-768 encapsulate, aws-lc-rs: 18.73 µs, 1.76× the fastest +18.73 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 67.03 µs, 6.31× the fastest +67.03 µs +ML-KEM-768 encapsulate, graviola: 11.12 µs, 1.05× the fastest +11.12 µs +ML-KEM-768 encapsulate, libcrux: 18.13 µs, 1.71× the fastest +18.13 µs +ML-KEM-768 encapsulate, OpenSSL: 41.18 µs, 3.88× the fastest +41.18 µs ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind: 8.28 µs, 1.00× the fastest -8.28 µs -ML-KEM-768 decapsulate, aws-lc-rs: 16.61 µs, 2.01× the fastest -16.61 µs -ML-KEM-768 decapsulate, RustCrypto + dalek: 89.79 µs, 10.85× the fastest -89.79 µs -ML-KEM-768 decapsulate, graviola: 8.30 µs, 1.00× the fastest -8.30 µs -ML-KEM-768 decapsulate, libcrux: 19.93 µs, 2.41× the fastest -19.93 µs -ML-KEM-768 decapsulate, OpenSSL: 33.05 µs, 3.99× the fastest -33.05 µs +ML-KEM-768 decapsulate, rind: 7.07 µs, 1.00× the fastest +7.07 µs +ML-KEM-768 decapsulate, aws-lc-rs: 16.01 µs, 2.26× the fastest +16.01 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 84.37 µs, 11.93× the fastest +84.37 µs +ML-KEM-768 decapsulate, graviola: 7.42 µs, 1.05× the fastest +7.42 µs +ML-KEM-768 decapsulate, libcrux: 19.04 µs, 2.69× the fastest +19.04 µs +ML-KEM-768 decapsulate, OpenSSL: 31.67 µs, 4.48× the fastest +31.67 µs P-384 and P-521 P-384 ECDH -P-384 ECDH, rind: 159.92 µs, 1.00× the fastest -159.92 µs -P-384 ECDH, aws-lc-rs: 191.62 µs, 1.20× the fastest -191.62 µs -P-384 ECDH, ring: 688.80 µs, 4.31× the fastest -688.80 µs -P-384 ECDH, RustCrypto + dalek: 871.98 µs, 5.45× the fastest -871.98 µs -P-384 ECDH, graviola: 254.75 µs, 1.59× the fastest -254.75 µs -P-384 ECDH, OpenSSL: 510.33 µs, 3.19× the fastest -510.33 µs +P-384 ECDH, rind: 150.97 µs, 1.00× the fastest +150.97 µs +P-384 ECDH, aws-lc-rs: 174.62 µs, 1.16× the fastest +174.62 µs +P-384 ECDH, ring: 645.54 µs, 4.28× the fastest +645.54 µs +P-384 ECDH, RustCrypto + dalek: 769.61 µs, 5.10× the fastest +769.61 µs +P-384 ECDH, graviola: 245.24 µs, 1.62× the fastest +245.24 µs +P-384 ECDH, OpenSSL: 483.50 µs, 3.20× the fastest +483.50 µs P-384 ECDSA sign -P-384 ECDSA sign, rind: 40.21 µs, 1.00× the fastest -40.21 µs -P-384 ECDSA sign, aws-lc-rs: 85.87 µs, 2.14× the fastest -85.87 µs -P-384 ECDSA sign, ring: 349.63 µs, 8.69× the fastest -349.63 µs -P-384 ECDSA sign, RustCrypto + dalek: 194.33 µs, 4.83× the fastest -194.33 µs -P-384 ECDSA sign, graviola: 133.02 µs, 3.31× the fastest -133.02 µs -P-384 ECDSA sign, OpenSSL: 170.79 µs, 4.25× the fastest -170.79 µs +P-384 ECDSA sign, rind: 39.62 µs, 1.00× the fastest +39.62 µs +P-384 ECDSA sign, aws-lc-rs: 82.65 µs, 2.09× the fastest +82.65 µs +P-384 ECDSA sign, ring: 343.16 µs, 8.66× the fastest +343.16 µs +P-384 ECDSA sign, RustCrypto + dalek: 170.64 µs, 4.31× the fastest +170.64 µs +P-384 ECDSA sign, graviola: 128.64 µs, 3.25× the fastest +128.64 µs +P-384 ECDSA sign, OpenSSL: 164.53 µs, 4.15× the fastest +164.53 µs P-384 ECDSA verify -P-384 ECDSA verify, rind: 154.44 µs, 1.00× the fastest -154.44 µs -P-384 ECDSA verify, aws-lc-rs: 186.63 µs, 1.21× the fastest -186.63 µs -P-384 ECDSA verify, ring: 628.36 µs, 4.07× the fastest -628.36 µs -P-384 ECDSA verify, RustCrypto + dalek: 712.25 µs, 4.61× the fastest -712.25 µs -P-384 ECDSA verify, graviola: 244.84 µs, 1.59× the fastest -244.84 µs -P-384 ECDSA verify, OpenSSL: 409.95 µs, 2.65× the fastest -409.95 µs +P-384 ECDSA verify, rind: 141.44 µs, 1.00× the fastest +141.44 µs +P-384 ECDSA verify, aws-lc-rs: 175.92 µs, 1.24× the fastest +175.92 µs +P-384 ECDSA verify, ring: 622.90 µs, 4.40× the fastest +622.90 µs +P-384 ECDSA verify, RustCrypto + dalek: 695.04 µs, 4.91× the fastest +695.04 µs +P-384 ECDSA verify, graviola: 239.41 µs, 1.69× the fastest +239.41 µs +P-384 ECDSA verify, OpenSSL: 399.63 µs, 2.83× the fastest +399.63 µs P-521 ECDH -P-521 ECDH, rind: 225.21 µs, 1.00× the fastest -225.21 µs -P-521 ECDH, aws-lc-rs: 255.05 µs, 1.13× the fastest -255.05 µs -P-521 ECDH, RustCrypto + dalek: 822.79 µs, 3.65× the fastest -822.79 µs -P-521 ECDH, OpenSSL: 498.14 µs, 2.21× the fastest -498.14 µs +P-521 ECDH, rind: 233.76 µs, 1.00× the fastest +233.76 µs +P-521 ECDH, aws-lc-rs: 262.34 µs, 1.12× the fastest +262.34 µs +P-521 ECDH, RustCrypto + dalek: 841.50 µs, 3.60× the fastest +841.50 µs +P-521 ECDH, OpenSSL: 497.39 µs, 2.13× the fastest +497.39 µs P-521 ECDSA sign -P-521 ECDSA sign, rind: 65.70 µs, 1.00× the fastest -65.70 µs -P-521 ECDSA sign, aws-lc-rs: 160.14 µs, 2.44× the fastest -160.14 µs -P-521 ECDSA sign, RustCrypto + dalek: 192.13 µs, 2.92× the fastest -192.13 µs -P-521 ECDSA sign, OpenSSL: 224.59 µs, 3.42× the fastest -224.59 µs +P-521 ECDSA sign, rind: 64.26 µs, 1.00× the fastest +64.26 µs +P-521 ECDSA sign, aws-lc-rs: 158.67 µs, 2.47× the fastest +158.67 µs +P-521 ECDSA sign, RustCrypto + dalek: 185.93 µs, 2.89× the fastest +185.93 µs +P-521 ECDSA sign, OpenSSL: 221.00 µs, 3.44× the fastest +221.00 µs P-521 ECDSA verify -P-521 ECDSA verify, rind: 236.22 µs, 1.00× the fastest -236.22 µs -P-521 ECDSA verify, aws-lc-rs: 307.98 µs, 1.30× the fastest -307.98 µs -P-521 ECDSA verify, RustCrypto + dalek: 666.03 µs, 2.82× the fastest -666.03 µs -P-521 ECDSA verify, OpenSSL: 465.58 µs, 1.97× the fastest -465.58 µs +P-521 ECDSA verify, rind: 214.43 µs, 1.00× the fastest +214.43 µs +P-521 ECDSA verify, aws-lc-rs: 303.23 µs, 1.41× the fastest +303.23 µs +P-521 ECDSA verify, RustCrypto + dalek: 636.37 µs, 2.97× the fastest +636.37 µs +P-521 ECDSA verify, OpenSSL: 460.02 µs, 2.15× the fastest +460.02 µs diff --git a/benchmarks/overview-dark.svg b/benchmarks/overview-dark.svg index ddbb69e98..d8f743fb8 100644 --- a/benchmarks/overview-dark.svg +++ b/benchmarks/overview-dark.svg @@ -1,4 +1,4 @@ - + Time over the fastest library's, by operation, library, and host fastest, or within 10% @@ -16,1238 +16,1936 @@ over 8× ✓ verified code -Each cell's squares, left to right: nixos, desktop, nixos2. -rind -aws-lc-rs -ring -RustCrypto -+ dalek -graviola -libcrux -OpenSSL +Each cell's squares, left to right: nixos, desktop, nixos2, ovh-iad, ovh-sea. +rind +aws-lc-rs +ring +RustCrypto ++ dalek +graviola +libcrux +OpenSSL TLS 1.3 with rustls - + full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind on nixos: 239.83 µs, 1.00× the fastest -full handshake, X25519MLKEM768, rind on desktop: 176.38 µs, 1.00× the fastest -full handshake, X25519MLKEM768, rind on nixos2: 311.29 µs, 1.00× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on nixos: 308.49 µs, 1.29× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on desktop: 237.01 µs, 1.34× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on nixos2: 452.02 µs, 1.45× the fastest -full handshake, X25519MLKEM768, graviola on nixos: 258.62 µs, 1.08× the fastest -full handshake, X25519MLKEM768, graviola on desktop: 188.12 µs, 1.07× the fastest -full handshake, X25519MLKEM768, graviola on nixos2: 375.56 µs, 1.21× the fastest -full handshake, X25519MLKEM768, OpenSSL on nixos: 805.54 µs, 3.36× the fastest -full handshake, X25519MLKEM768, OpenSSL on desktop: 435.26 µs, 2.47× the fastest -full handshake, X25519MLKEM768, OpenSSL on nixos2: 837.01 µs, 2.69× the fastest +full handshake, X25519MLKEM768, rind on nixos: 260.78 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on desktop: 174.97 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on nixos2: 302.43 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on ovh-iad: 676.16 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on ovh-sea: 585.86 µs, 1.00× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on nixos: 331.87 µs, 1.27× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on desktop: 235.60 µs, 1.35× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on nixos2: 458.06 µs, 1.51× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on ovh-iad: 776.76 µs, 1.15× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on ovh-sea: 682.34 µs, 1.16× the fastest +full handshake, X25519MLKEM768, graviola on nixos: 342.68 µs, 1.31× the fastest +full handshake, X25519MLKEM768, graviola on desktop: 191.49 µs, 1.09× the fastest +full handshake, X25519MLKEM768, graviola on nixos2: 375.57 µs, 1.24× the fastest +full handshake, X25519MLKEM768, OpenSSL on nixos: 802.57 µs, 3.08× the fastest +full handshake, X25519MLKEM768, OpenSSL on desktop: 437.46 µs, 2.50× the fastest +full handshake, X25519MLKEM768, OpenSSL on nixos2: 830.76 µs, 2.75× the fastest +full handshake, X25519MLKEM768, OpenSSL on ovh-iad: 1.48 ms, 2.18× the fastest +full handshake, X25519MLKEM768, OpenSSL on ovh-sea: 1.32 ms, 2.25× the fastest full handshake, X25519 -full handshake, X25519, rind on nixos: 215.61 µs, 1.00× the fastest -full handshake, X25519, rind on desktop: 152.03 µs, 1.00× the fastest -full handshake, X25519, rind on nixos2: 267.07 µs, 1.00× the fastest -full handshake, X25519, aws-lc-rs on nixos: 277.77 µs, 1.29× the fastest -full handshake, X25519, aws-lc-rs on desktop: 205.12 µs, 1.35× the fastest -full handshake, X25519, aws-lc-rs on nixos2: 379.99 µs, 1.42× the fastest -full handshake, X25519, ring on nixos: 296.66 µs, 1.38× the fastest -full handshake, X25519, ring on desktop: 221.18 µs, 1.45× the fastest -full handshake, X25519, ring on nixos2: 339.51 µs, 1.27× the fastest -full handshake, X25519, graviola on nixos: 225.37 µs, 1.05× the fastest -full handshake, X25519, graviola on desktop: 161.32 µs, 1.06× the fastest -full handshake, X25519, graviola on nixos2: 316.39 µs, 1.18× the fastest -full handshake, X25519, OpenSSL on nixos: 578.47 µs, 2.68× the fastest -full handshake, X25519, OpenSSL on desktop: 365.01 µs, 2.40× the fastest -full handshake, X25519, OpenSSL on nixos2: 688.73 µs, 2.58× the fastest +full handshake, X25519, rind on nixos: 227.82 µs, 1.00× the fastest +full handshake, X25519, rind on desktop: 152.75 µs, 1.00× the fastest +full handshake, X25519, rind on nixos2: 260.02 µs, 1.00× the fastest +full handshake, X25519, rind on ovh-iad: 476.73 µs, 1.00× the fastest +full handshake, X25519, rind on ovh-sea: 454.19 µs, 1.00× the fastest +full handshake, X25519, aws-lc-rs on nixos: 292.13 µs, 1.28× the fastest +full handshake, X25519, aws-lc-rs on desktop: 203.62 µs, 1.33× the fastest +full handshake, X25519, aws-lc-rs on nixos2: 369.74 µs, 1.42× the fastest +full handshake, X25519, aws-lc-rs on ovh-iad: 540.28 µs, 1.13× the fastest +full handshake, X25519, aws-lc-rs on ovh-sea: 510.37 µs, 1.12× the fastest +full handshake, X25519, ring on nixos: 328.46 µs, 1.44× the fastest +full handshake, X25519, ring on desktop: 222.88 µs, 1.46× the fastest +full handshake, X25519, ring on nixos2: 337.91 µs, 1.30× the fastest +full handshake, X25519, ring on ovh-iad: 568.18 µs, 1.19× the fastest +full handshake, X25519, ring on ovh-sea: 526.42 µs, 1.16× the fastest +full handshake, X25519, graviola on nixos: 238.70 µs, 1.05× the fastest +full handshake, X25519, graviola on desktop: 162.55 µs, 1.06× the fastest +full handshake, X25519, graviola on nixos2: 315.73 µs, 1.21× the fastest +full handshake, X25519, OpenSSL on nixos: 574.28 µs, 2.52× the fastest +full handshake, X25519, OpenSSL on desktop: 367.79 µs, 2.41× the fastest +full handshake, X25519, OpenSSL on nixos2: 686.50 µs, 2.64× the fastest +full handshake, X25519, OpenSSL on ovh-iad: 1.14 ms, 2.38× the fastest +full handshake, X25519, OpenSSL on ovh-sea: 1.08 ms, 2.38× the fastest full handshake, P-256 -full handshake, P-256, rind on nixos: 248.67 µs, 1.00× the fastest -full handshake, P-256, rind on desktop: 175.55 µs, 1.00× the fastest -full handshake, P-256, rind on nixos2: 302.72 µs, 1.00× the fastest -full handshake, P-256, aws-lc-rs on nixos: 312.54 µs, 1.26× the fastest -full handshake, P-256, aws-lc-rs on desktop: 227.34 µs, 1.30× the fastest -full handshake, P-256, aws-lc-rs on nixos2: 414.57 µs, 1.37× the fastest -full handshake, P-256, ring on nixos: 296.53 µs, 1.19× the fastest -full handshake, P-256, ring on desktop: 223.24 µs, 1.27× the fastest -full handshake, P-256, ring on nixos2: 327.28 µs, 1.08× the fastest -full handshake, P-256, graviola on nixos: 266.19 µs, 1.07× the fastest -full handshake, P-256, graviola on desktop: 194.81 µs, 1.11× the fastest -full handshake, P-256, graviola on nixos2: 371.36 µs, 1.23× the fastest -full handshake, P-256, OpenSSL on nixos: 639.58 µs, 2.57× the fastest -full handshake, P-256, OpenSSL on desktop: 403.92 µs, 2.30× the fastest -full handshake, P-256, OpenSSL on nixos2: 750.80 µs, 2.48× the fastest +full handshake, P-256, rind on nixos: 242.76 µs, 1.00× the fastest +full handshake, P-256, rind on desktop: 175.68 µs, 1.00× the fastest +full handshake, P-256, rind on nixos2: 295.92 µs, 1.00× the fastest +full handshake, P-256, rind on ovh-iad: 532.32 µs, 1.00× the fastest +full handshake, P-256, rind on ovh-sea: 511.71 µs, 1.00× the fastest +full handshake, P-256, aws-lc-rs on nixos: 304.37 µs, 1.25× the fastest +full handshake, P-256, aws-lc-rs on desktop: 228.85 µs, 1.30× the fastest +full handshake, P-256, aws-lc-rs on nixos2: 417.28 µs, 1.41× the fastest +full handshake, P-256, aws-lc-rs on ovh-iad: 614.10 µs, 1.15× the fastest +full handshake, P-256, aws-lc-rs on ovh-sea: 582.16 µs, 1.14× the fastest +full handshake, P-256, ring on nixos: 281.93 µs, 1.16× the fastest +full handshake, P-256, ring on desktop: 221.72 µs, 1.26× the fastest +full handshake, P-256, ring on nixos2: 327.88 µs, 1.11× the fastest +full handshake, P-256, ring on ovh-iad: 577.09 µs, 1.08× the fastest +full handshake, P-256, ring on ovh-sea: 541.36 µs, 1.06× the fastest +full handshake, P-256, graviola on nixos: 270.05 µs, 1.11× the fastest +full handshake, P-256, graviola on desktop: 193.10 µs, 1.10× the fastest +full handshake, P-256, graviola on nixos2: 368.79 µs, 1.25× the fastest +full handshake, P-256, OpenSSL on nixos: 624.35 µs, 2.57× the fastest +full handshake, P-256, OpenSSL on desktop: 406.49 µs, 2.31× the fastest +full handshake, P-256, OpenSSL on nixos2: 760.04 µs, 2.57× the fastest +full handshake, P-256, OpenSSL on ovh-iad: 1.35 ms, 2.53× the fastest +full handshake, P-256, OpenSSL on ovh-sea: 1.18 ms, 2.30× the fastest full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind on nixos: 176.45 µs, 1.01× the fastest -full handshake, Ed25519 certificate, rind on desktop: 123.00 µs, 1.00× the fastest -full handshake, Ed25519 certificate, rind on nixos2: 216.15 µs, 1.00× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on nixos: 226.97 µs, 1.30× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on desktop: 166.65 µs, 1.35× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on nixos2: 307.77 µs, 1.42× the fastest -full handshake, Ed25519 certificate, ring on nixos: 289.56 µs, 1.65× the fastest -full handshake, Ed25519 certificate, ring on desktop: 202.37 µs, 1.65× the fastest -full handshake, Ed25519 certificate, ring on nixos2: 326.17 µs, 1.51× the fastest -full handshake, Ed25519 certificate, graviola on nixos: 175.24 µs, 1.00× the fastest -full handshake, Ed25519 certificate, graviola on desktop: 125.59 µs, 1.02× the fastest -full handshake, Ed25519 certificate, graviola on nixos2: 251.07 µs, 1.16× the fastest -full handshake, Ed25519 certificate, OpenSSL on nixos: 647.87 µs, 3.70× the fastest -full handshake, Ed25519 certificate, OpenSSL on desktop: 374.89 µs, 3.05× the fastest -full handshake, Ed25519 certificate, OpenSSL on nixos2: 757.62 µs, 3.51× the fastest +full handshake, Ed25519 certificate, rind on nixos: 186.73 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on desktop: 123.11 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on nixos2: 213.12 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on ovh-iad: 395.96 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on ovh-sea: 378.30 µs, 1.00× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on nixos: 233.43 µs, 1.25× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on desktop: 168.12 µs, 1.37× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on nixos2: 306.11 µs, 1.44× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on ovh-iad: 458.32 µs, 1.16× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on ovh-sea: 436.82 µs, 1.15× the fastest +full handshake, Ed25519 certificate, ring on nixos: 292.96 µs, 1.57× the fastest +full handshake, Ed25519 certificate, ring on desktop: 205.53 µs, 1.67× the fastest +full handshake, Ed25519 certificate, ring on nixos2: 325.29 µs, 1.53× the fastest +full handshake, Ed25519 certificate, ring on ovh-iad: 505.59 µs, 1.28× the fastest +full handshake, Ed25519 certificate, ring on ovh-sea: 473.04 µs, 1.25× the fastest +full handshake, Ed25519 certificate, graviola on nixos: 186.05 µs, 1.00× the fastest +full handshake, Ed25519 certificate, graviola on desktop: 125.46 µs, 1.02× the fastest +full handshake, Ed25519 certificate, graviola on nixos2: 250.28 µs, 1.17× the fastest +full handshake, Ed25519 certificate, OpenSSL on nixos: 640.40 µs, 3.44× the fastest +full handshake, Ed25519 certificate, OpenSSL on desktop: 373.29 µs, 3.03× the fastest +full handshake, Ed25519 certificate, OpenSSL on nixos2: 747.09 µs, 3.51× the fastest +full handshake, Ed25519 certificate, OpenSSL on ovh-iad: 1.22 ms, 3.07× the fastest +full handshake, Ed25519 certificate, OpenSSL on ovh-sea: 1.18 ms, 3.13× the fastest full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind on nixos: 644.89 µs, 1.11× the fastest -full handshake, RSA-2048 certificate, rind on desktop: 493.89 µs, 1.13× the fastest -full handshake, RSA-2048 certificate, rind on nixos2: 809.87 µs, 1.19× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on nixos: 650.26 µs, 1.12× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on desktop: 479.50 µs, 1.09× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on nixos2: 774.41 µs, 1.14× the fastest -full handshake, RSA-2048 certificate, ring on nixos: 666.29 µs, 1.14× the fastest -full handshake, RSA-2048 certificate, ring on desktop: 487.61 µs, 1.11× the fastest -full handshake, RSA-2048 certificate, ring on nixos2: 677.82 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on nixos: 582.45 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on desktop: 438.68 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on nixos2: 713.80 µs, 1.05× the fastest -full handshake, RSA-2048 certificate, OpenSSL on nixos: 931.27 µs, 1.60× the fastest -full handshake, RSA-2048 certificate, OpenSSL on desktop: 684.14 µs, 1.56× the fastest -full handshake, RSA-2048 certificate, OpenSSL on nixos2: 1.02 ms, 1.50× the fastest +full handshake, RSA-2048 certificate, rind on nixos: 550.14 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on desktop: 428.67 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on nixos2: 613.80 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on ovh-iad: 1.14 ms, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on ovh-sea: 1.09 ms, 1.00× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on nixos: 646.28 µs, 1.17× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on desktop: 485.87 µs, 1.13× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on nixos2: 758.17 µs, 1.24× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on ovh-iad: 1.27 ms, 1.12× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on ovh-sea: 1.20 ms, 1.10× the fastest +full handshake, RSA-2048 certificate, ring on nixos: 647.36 µs, 1.18× the fastest +full handshake, RSA-2048 certificate, ring on desktop: 493.81 µs, 1.15× the fastest +full handshake, RSA-2048 certificate, ring on nixos2: 678.16 µs, 1.10× the fastest +full handshake, RSA-2048 certificate, ring on ovh-iad: 1.47 ms, 1.28× the fastest +full handshake, RSA-2048 certificate, ring on ovh-sea: 1.40 ms, 1.28× the fastest +full handshake, RSA-2048 certificate, graviola on nixos: 567.91 µs, 1.03× the fastest +full handshake, RSA-2048 certificate, graviola on desktop: 440.23 µs, 1.03× the fastest +full handshake, RSA-2048 certificate, graviola on nixos2: 687.17 µs, 1.12× the fastest +full handshake, RSA-2048 certificate, OpenSSL on nixos: 992.05 µs, 1.80× the fastest +full handshake, RSA-2048 certificate, OpenSSL on desktop: 682.29 µs, 1.59× the fastest +full handshake, RSA-2048 certificate, OpenSSL on nixos2: 1.01 ms, 1.65× the fastest +full handshake, RSA-2048 certificate, OpenSSL on ovh-iad: 1.90 ms, 1.66× the fastest +full handshake, RSA-2048 certificate, OpenSSL on ovh-sea: 1.76 ms, 1.62× the fastest resumed handshake, X25519 -resumed handshake, X25519, rind on nixos: 81.83 µs, 1.00× the fastest -resumed handshake, X25519, rind on desktop: 55.16 µs, 1.00× the fastest -resumed handshake, X25519, rind on nixos2: 121.78 µs, 1.00× the fastest -resumed handshake, X25519, aws-lc-rs on nixos: 137.94 µs, 1.69× the fastest -resumed handshake, X25519, aws-lc-rs on desktop: 101.03 µs, 1.83× the fastest -resumed handshake, X25519, aws-lc-rs on nixos2: 229.16 µs, 1.88× the fastest -resumed handshake, X25519, ring on nixos: 162.09 µs, 1.98× the fastest -resumed handshake, X25519, ring on desktop: 111.69 µs, 2.02× the fastest -resumed handshake, X25519, ring on nixos2: 195.23 µs, 1.60× the fastest -resumed handshake, X25519, graviola on nixos: 87.66 µs, 1.07× the fastest -resumed handshake, X25519, graviola on desktop: 55.45 µs, 1.01× the fastest -resumed handshake, X25519, graviola on nixos2: 160.19 µs, 1.32× the fastest -resumed handshake, X25519, OpenSSL on nixos: 461.94 µs, 5.65× the fastest -resumed handshake, X25519, OpenSSL on desktop: 229.74 µs, 4.16× the fastest -resumed handshake, X25519, OpenSSL on nixos2: 504.16 µs, 4.14× the fastest +resumed handshake, X25519, rind on nixos: 77.19 µs, 1.00× the fastest +resumed handshake, X25519, rind on desktop: 54.19 µs, 1.00× the fastest +resumed handshake, X25519, rind on nixos2: 120.95 µs, 1.00× the fastest +resumed handshake, X25519, rind on ovh-iad: 207.86 µs, 1.00× the fastest +resumed handshake, X25519, rind on ovh-sea: 195.20 µs, 1.00× the fastest +resumed handshake, X25519, aws-lc-rs on nixos: 132.67 µs, 1.72× the fastest +resumed handshake, X25519, aws-lc-rs on desktop: 102.84 µs, 1.90× the fastest +resumed handshake, X25519, aws-lc-rs on nixos2: 229.39 µs, 1.90× the fastest +resumed handshake, X25519, aws-lc-rs on ovh-iad: 263.78 µs, 1.27× the fastest +resumed handshake, X25519, aws-lc-rs on ovh-sea: 258.21 µs, 1.32× the fastest +resumed handshake, X25519, ring on nixos: 158.11 µs, 2.05× the fastest +resumed handshake, X25519, ring on desktop: 113.00 µs, 2.09× the fastest +resumed handshake, X25519, ring on nixos2: 199.88 µs, 1.65× the fastest +resumed handshake, X25519, ring on ovh-iad: 274.24 µs, 1.32× the fastest +resumed handshake, X25519, ring on ovh-sea: 262.51 µs, 1.34× the fastest +resumed handshake, X25519, graviola on nixos: 77.33 µs, 1.00× the fastest +resumed handshake, X25519, graviola on desktop: 55.16 µs, 1.02× the fastest +resumed handshake, X25519, graviola on nixos2: 159.71 µs, 1.32× the fastest +resumed handshake, X25519, OpenSSL on nixos: 370.51 µs, 4.80× the fastest +resumed handshake, X25519, OpenSSL on desktop: 231.44 µs, 4.27× the fastest +resumed handshake, X25519, OpenSSL on nixos2: 496.91 µs, 4.11× the fastest +resumed handshake, X25519, OpenSSL on ovh-iad: 802.84 µs, 3.86× the fastest +resumed handshake, X25519, OpenSSL on ovh-sea: 723.47 µs, 3.71× the fastest 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind on nixos: 290.62 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, rind on desktop: 169.85 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, rind on nixos2: 433.16 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on nixos: 459.42 µs, 1.58× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on desktop: 234.65 µs, 1.38× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on nixos2: 453.78 µs, 1.05× the fastest -1 MB transfer, AES-128-GCM, ring on nixos: 314.22 µs, 1.08× the fastest -1 MB transfer, AES-128-GCM, ring on desktop: 171.60 µs, 1.01× the fastest -1 MB transfer, AES-128-GCM, ring on nixos2: 469.65 µs, 1.08× the fastest -1 MB transfer, AES-128-GCM, graviola on nixos: 453.27 µs, 1.56× the fastest -1 MB transfer, AES-128-GCM, graviola on desktop: 288.23 µs, 1.70× the fastest -1 MB transfer, AES-128-GCM, graviola on nixos2: 578.33 µs, 1.34× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on nixos: 492.29 µs, 1.69× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on desktop: 255.06 µs, 1.50× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on nixos2: 496.82 µs, 1.15× the fastest +1 MB transfer, AES-128-GCM, rind on nixos: 289.43 µs, 1.03× the fastest +1 MB transfer, AES-128-GCM, rind on desktop: 193.36 µs, 1.11× the fastest +1 MB transfer, AES-128-GCM, rind on nixos2: 440.92 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, rind on ovh-iad: 701.22 µs, 1.01× the fastest +1 MB transfer, AES-128-GCM, rind on ovh-sea: 678.24 µs, 1.02× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on nixos: 458.21 µs, 1.62× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on desktop: 241.18 µs, 1.38× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on nixos2: 442.54 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on ovh-iad: 694.46 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on ovh-sea: 689.64 µs, 1.03× the fastest +1 MB transfer, AES-128-GCM, ring on nixos: 282.22 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, ring on desktop: 174.96 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, ring on nixos2: 448.76 µs, 1.02× the fastest +1 MB transfer, AES-128-GCM, ring on ovh-iad: 724.53 µs, 1.04× the fastest +1 MB transfer, AES-128-GCM, ring on ovh-sea: 668.04 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, graviola on nixos: 424.38 µs, 1.50× the fastest +1 MB transfer, AES-128-GCM, graviola on desktop: 294.75 µs, 1.68× the fastest +1 MB transfer, AES-128-GCM, graviola on nixos2: 579.09 µs, 1.31× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on nixos: 469.84 µs, 1.66× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on desktop: 255.72 µs, 1.46× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on nixos2: 491.38 µs, 1.11× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on ovh-iad: 783.32 µs, 1.13× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on ovh-sea: 747.12 µs, 1.12× the fastest 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind on nixos: 310.98 µs, 1.02× the fastest -1 MB transfer, AES-256-GCM, rind on desktop: 186.02 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, rind on nixos2: 544.93 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on nixos: 487.61 µs, 1.60× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on desktop: 270.36 µs, 1.45× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on nixos2: 553.29 µs, 1.02× the fastest -1 MB transfer, AES-256-GCM, ring on nixos: 305.27 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, ring on desktop: 188.28 µs, 1.01× the fastest -1 MB transfer, AES-256-GCM, ring on nixos2: 544.73 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, graviola on nixos: 513.59 µs, 1.68× the fastest -1 MB transfer, AES-256-GCM, graviola on desktop: 332.16 µs, 1.79× the fastest -1 MB transfer, AES-256-GCM, graviola on nixos2: 697.29 µs, 1.28× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on nixos: 607.83 µs, 1.99× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on desktop: 285.87 µs, 1.54× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on nixos2: 609.96 µs, 1.12× the fastest +1 MB transfer, AES-256-GCM, rind on nixos: 292.74 µs, 1.01× the fastest +1 MB transfer, AES-256-GCM, rind on desktop: 189.84 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, rind on nixos2: 544.88 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, rind on ovh-iad: 869.86 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, rind on ovh-sea: 849.60 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on nixos: 461.28 µs, 1.59× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on desktop: 272.23 µs, 1.43× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on nixos2: 557.86 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on ovh-iad: 867.68 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on ovh-sea: 845.52 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on nixos: 289.90 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on desktop: 192.15 µs, 1.01× the fastest +1 MB transfer, AES-256-GCM, ring on nixos2: 567.27 µs, 1.04× the fastest +1 MB transfer, AES-256-GCM, ring on ovh-iad: 854.61 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on ovh-sea: 849.22 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, graviola on nixos: 490.29 µs, 1.69× the fastest +1 MB transfer, AES-256-GCM, graviola on desktop: 338.97 µs, 1.79× the fastest +1 MB transfer, AES-256-GCM, graviola on nixos2: 691.18 µs, 1.27× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on nixos: 533.20 µs, 1.84× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on desktop: 292.12 µs, 1.54× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on nixos2: 596.82 µs, 1.10× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on ovh-iad: 966.07 µs, 1.13× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on ovh-sea: 933.35 µs, 1.10× the fastest 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind on nixos: 739.91 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, rind on desktop: 587.48 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, rind on nixos2: 924.76 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos: 739.12 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on desktop: 586.46 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos2: 932.29 µs, 1.01× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on nixos: 747.52 µs, 1.01× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on desktop: 588.81 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on nixos2: 928.70 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on nixos: 1.49 ms, 2.02× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on desktop: 1.16 ms, 1.97× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on nixos2: 1.64 ms, 1.78× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos: 855.61 µs, 1.16× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on desktop: 658.14 µs, 1.12× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos2: 1.00 ms, 1.08× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on nixos: 688.78 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on desktop: 621.49 µs, 1.04× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on nixos2: 923.82 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on ovh-iad: 1.58 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on ovh-sea: 1.44 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos: 687.53 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on desktop: 609.72 µs, 1.02× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos2: 928.09 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on ovh-iad: 1.56 ms, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on ovh-sea: 1.43 ms, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on nixos: 693.01 µs, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on desktop: 594.88 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on nixos2: 925.14 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on ovh-iad: 1.59 ms, 1.02× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on ovh-sea: 1.44 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on nixos: 1.37 ms, 2.00× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on desktop: 1.17 ms, 1.97× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on nixos2: 1.64 ms, 1.78× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos: 782.98 µs, 1.14× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on desktop: 661.80 µs, 1.11× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos2: 983.97 µs, 1.07× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on ovh-iad: 1.77 ms, 1.13× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on ovh-sea: 1.71 ms, 1.20× the fastest AEADs - + AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind on nixos: 40 ns, 1.00× the fastest -AES-128-GCM seal, 32 B, rind on desktop: 19 ns, 1.00× the fastest -AES-128-GCM seal, 32 B, rind on nixos2: 42 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 32 B, aws-lc-rs on nixos: 81 ns, 2.00× the fastest -AES-128-GCM seal, 32 B, aws-lc-rs on desktop: 37 ns, 1.93× the fastest -AES-128-GCM seal, 32 B, aws-lc-rs on nixos2: 89 ns, 2.12× the fastest -AES-128-GCM seal, 32 B, ring on nixos: 54 ns, 1.34× the fastest -AES-128-GCM seal, 32 B, ring on desktop: 42 ns, 2.17× the fastest -AES-128-GCM seal, 32 B, ring on nixos2: 72 ns, 1.71× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos: 95 ns, 2.35× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on desktop: 73 ns, 3.76× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos2: 101 ns, 2.42× the fastest -AES-128-GCM seal, 32 B, graviola on nixos: 67 ns, 1.67× the fastest -AES-128-GCM seal, 32 B, graviola on desktop: 42 ns, 2.19× the fastest -AES-128-GCM seal, 32 B, graviola on nixos2: 72 ns, 1.71× the fastest -AES-128-GCM seal, 32 B, libcrux on nixos: 308 ns, 7.60× the fastest -AES-128-GCM seal, 32 B, libcrux on desktop: 171 ns, 8.78× the fastest -AES-128-GCM seal, 32 B, libcrux on nixos2: 290 ns, 6.94× the fastest -AES-128-GCM seal, 32 B, OpenSSL on nixos: 114 ns, 2.81× the fastest -AES-128-GCM seal, 32 B, OpenSSL on desktop: 55 ns, 2.85× the fastest -AES-128-GCM seal, 32 B, OpenSSL on nixos2: 161 ns, 3.84× the fastest +AES-128-GCM seal, 32 B, rind on nixos: 39 ns, 1.00× the fastest +AES-128-GCM seal, 32 B, rind on desktop: 18 ns, 1.00× the fastest +AES-128-GCM seal, 32 B, rind on nixos2: 43 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, rind on ovh-iad: 69 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, rind on ovh-sea: 66 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, aws-lc-rs on nixos: 78 ns, 2.02× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on desktop: 37 ns, 2.03× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on nixos2: 89 ns, 2.06× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on ovh-iad: 138 ns, 2.01× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on ovh-sea: 136 ns, 2.05× the fastest +AES-128-GCM seal, 32 B, ring on nixos: 56 ns, 1.45× the fastest +AES-128-GCM seal, 32 B, ring on desktop: 42 ns, 2.30× the fastest +AES-128-GCM seal, 32 B, ring on nixos2: 71 ns, 1.64× the fastest +AES-128-GCM seal, 32 B, ring on ovh-iad: 111 ns, 1.61× the fastest +AES-128-GCM seal, 32 B, ring on ovh-sea: 111 ns, 1.68× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos: 97 ns, 2.50× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on desktop: 73 ns, 3.98× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos2: 100 ns, 2.33× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on ovh-iad: 157 ns, 2.29× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on ovh-sea: 155 ns, 2.35× the fastest +AES-128-GCM seal, 32 B, graviola on nixos: 70 ns, 1.80× the fastest +AES-128-GCM seal, 32 B, graviola on desktop: 42 ns, 2.33× the fastest +AES-128-GCM seal, 32 B, graviola on nixos2: 71 ns, 1.65× the fastest +AES-128-GCM seal, 32 B, libcrux on nixos: 321 ns, 8.29× the fastest +AES-128-GCM seal, 32 B, libcrux on desktop: 168 ns, 9.19× the fastest +AES-128-GCM seal, 32 B, libcrux on nixos2: 282 ns, 6.52× the fastest +AES-128-GCM seal, 32 B, libcrux on ovh-iad: 446 ns, 6.50× the fastest +AES-128-GCM seal, 32 B, libcrux on ovh-sea: 435 ns, 6.59× the fastest +AES-128-GCM seal, 32 B, OpenSSL on nixos: 115 ns, 2.97× the fastest +AES-128-GCM seal, 32 B, OpenSSL on desktop: 55 ns, 3.02× the fastest +AES-128-GCM seal, 32 B, OpenSSL on nixos2: 156 ns, 3.62× the fastest +AES-128-GCM seal, 32 B, OpenSSL on ovh-iad: 242 ns, 3.52× the fastest +AES-128-GCM seal, 32 B, OpenSSL on ovh-sea: 233 ns, 3.53× the fastest AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind on nixos: 170 ns, 1.00× the fastest -AES-128-GCM seal, 1350 B, rind on desktop: 94 ns, 1.00× the fastest -AES-128-GCM seal, 1350 B, rind on nixos2: 264 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 1350 B, aws-lc-rs on nixos: 289 ns, 1.70× the fastest -AES-128-GCM seal, 1350 B, aws-lc-rs on desktop: 152 ns, 1.62× the fastest -AES-128-GCM seal, 1350 B, aws-lc-rs on nixos2: 287 ns, 1.09× the fastest -AES-128-GCM seal, 1350 B, ring on nixos: 184 ns, 1.08× the fastest -AES-128-GCM seal, 1350 B, ring on desktop: 119 ns, 1.27× the fastest -AES-128-GCM seal, 1350 B, ring on nixos2: 280 ns, 1.06× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos: 435 ns, 2.55× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on desktop: 276 ns, 2.95× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 556 ns, 2.11× the fastest -AES-128-GCM seal, 1350 B, graviola on nixos: 296 ns, 1.74× the fastest -AES-128-GCM seal, 1350 B, graviola on desktop: 226 ns, 2.41× the fastest -AES-128-GCM seal, 1350 B, graviola on nixos2: 403 ns, 1.53× the fastest -AES-128-GCM seal, 1350 B, libcrux on nixos: 3.91 µs, 22.95× the fastest -AES-128-GCM seal, 1350 B, libcrux on desktop: 1.98 µs, 21.10× the fastest -AES-128-GCM seal, 1350 B, libcrux on nixos2: 3.41 µs, 12.95× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on nixos: 323 ns, 1.90× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on desktop: 159 ns, 1.70× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on nixos2: 362 ns, 1.37× the fastest +AES-128-GCM seal, 1350 B, rind on nixos: 165 ns, 1.00× the fastest +AES-128-GCM seal, 1350 B, rind on desktop: 94 ns, 1.00× the fastest +AES-128-GCM seal, 1350 B, rind on nixos2: 246 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, rind on ovh-iad: 398 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, rind on ovh-sea: 387 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, aws-lc-rs on nixos: 291 ns, 1.77× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on desktop: 149 ns, 1.59× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on nixos2: 285 ns, 1.16× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on ovh-iad: 500 ns, 1.26× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on ovh-sea: 445 ns, 1.15× the fastest +AES-128-GCM seal, 1350 B, ring on nixos: 191 ns, 1.16× the fastest +AES-128-GCM seal, 1350 B, ring on desktop: 118 ns, 1.26× the fastest +AES-128-GCM seal, 1350 B, ring on nixos2: 277 ns, 1.13× the fastest +AES-128-GCM seal, 1350 B, ring on ovh-iad: 463 ns, 1.17× the fastest +AES-128-GCM seal, 1350 B, ring on ovh-sea: 427 ns, 1.10× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos: 434 ns, 2.63× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on desktop: 272 ns, 2.90× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 547 ns, 2.22× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on ovh-iad: 872 ns, 2.19× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on ovh-sea: 854 ns, 2.21× the fastest +AES-128-GCM seal, 1350 B, graviola on nixos: 295 ns, 1.79× the fastest +AES-128-GCM seal, 1350 B, graviola on desktop: 227 ns, 2.42× the fastest +AES-128-GCM seal, 1350 B, graviola on nixos2: 400 ns, 1.63× the fastest +AES-128-GCM seal, 1350 B, libcrux on nixos: 4.72 µs, 28.63× the fastest +AES-128-GCM seal, 1350 B, libcrux on desktop: 1.94 µs, 20.74× the fastest +AES-128-GCM seal, 1350 B, libcrux on nixos2: 3.49 µs, 14.19× the fastest +AES-128-GCM seal, 1350 B, libcrux on ovh-iad: 5.56 µs, 13.98× the fastest +AES-128-GCM seal, 1350 B, libcrux on ovh-sea: 5.44 µs, 14.06× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on nixos: 326 ns, 1.98× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on desktop: 163 ns, 1.74× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on nixos2: 352 ns, 1.43× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on ovh-iad: 561 ns, 1.41× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on ovh-sea: 550 ns, 1.42× the fastest AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind on nixos: 1.39 µs, 1.00× the fastest -AES-128-GCM seal, 16 KB, rind on desktop: 772 ns, 1.00× the fastest -AES-128-GCM seal, 16 KB, rind on nixos2: 2.38 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 16 KB, aws-lc-rs on nixos: 2.58 µs, 1.85× the fastest -AES-128-GCM seal, 16 KB, aws-lc-rs on desktop: 1.33 µs, 1.72× the fastest -AES-128-GCM seal, 16 KB, aws-lc-rs on nixos2: 2.46 µs, 1.04× the fastest -AES-128-GCM seal, 16 KB, ring on nixos: 1.43 µs, 1.03× the fastest -AES-128-GCM seal, 16 KB, ring on desktop: 795 ns, 1.03× the fastest -AES-128-GCM seal, 16 KB, ring on nixos2: 2.38 µs, 1.00× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.18 µs, 3.00× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.45 µs, 3.18× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 5.63 µs, 2.37× the fastest -AES-128-GCM seal, 16 KB, graviola on nixos: 2.58 µs, 1.85× the fastest -AES-128-GCM seal, 16 KB, graviola on desktop: 2.05 µs, 2.65× the fastest -AES-128-GCM seal, 16 KB, graviola on nixos2: 3.84 µs, 1.62× the fastest -AES-128-GCM seal, 16 KB, libcrux on nixos: 44.41 µs, 31.87× the fastest -AES-128-GCM seal, 16 KB, libcrux on desktop: 22.01 µs, 28.52× the fastest -AES-128-GCM seal, 16 KB, libcrux on nixos2: 38.50 µs, 16.20× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on nixos: 2.62 µs, 1.88× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on desktop: 1.34 µs, 1.74× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on nixos2: 2.53 µs, 1.06× the fastest +AES-128-GCM seal, 16 KB, rind on nixos: 1.38 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind on desktop: 781 ns, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind on nixos2: 2.33 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, rind on ovh-iad: 3.83 µs, 1.03× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, rind on ovh-sea: 3.70 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, aws-lc-rs on nixos: 2.63 µs, 1.91× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on desktop: 1.33 µs, 1.70× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on nixos2: 2.42 µs, 1.04× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on ovh-iad: 4.04 µs, 1.08× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on ovh-sea: 3.70 µs, 1.01× the fastest +AES-128-GCM seal, 16 KB, ring on nixos: 1.39 µs, 1.01× the fastest +AES-128-GCM seal, 16 KB, ring on desktop: 799 ns, 1.02× the fastest +AES-128-GCM seal, 16 KB, ring on nixos2: 2.38 µs, 1.02× the fastest +AES-128-GCM seal, 16 KB, ring on ovh-iad: 3.72 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, ring on ovh-sea: 3.67 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.28 µs, 3.10× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.49 µs, 3.19× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 5.62 µs, 2.41× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on ovh-iad: 8.91 µs, 2.39× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on ovh-sea: 8.67 µs, 2.36× the fastest +AES-128-GCM seal, 16 KB, graviola on nixos: 2.57 µs, 1.86× the fastest +AES-128-GCM seal, 16 KB, graviola on desktop: 2.02 µs, 2.59× the fastest +AES-128-GCM seal, 16 KB, graviola on nixos2: 3.75 µs, 1.61× the fastest +AES-128-GCM seal, 16 KB, libcrux on nixos: 53.90 µs, 39.11× the fastest +AES-128-GCM seal, 16 KB, libcrux on desktop: 22.02 µs, 28.20× the fastest +AES-128-GCM seal, 16 KB, libcrux on nixos2: 39.94 µs, 17.11× the fastest +AES-128-GCM seal, 16 KB, libcrux on ovh-iad: 62.33 µs, 16.74× the fastest +AES-128-GCM seal, 16 KB, libcrux on ovh-sea: 60.39 µs, 16.47× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on nixos: 2.61 µs, 1.89× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on desktop: 1.34 µs, 1.72× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on nixos2: 2.45 µs, 1.05× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on ovh-iad: 4.03 µs, 1.08× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on ovh-sea: 3.81 µs, 1.04× the fastest AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind on nixos: 47 ns, 1.00× the fastest -AES-128-GCM open, 32 B, rind on desktop: 23 ns, 1.00× the fastest -AES-128-GCM open, 32 B, rind on nixos2: 50 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 32 B, aws-lc-rs on nixos: 72 ns, 1.53× the fastest -AES-128-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.57× the fastest -AES-128-GCM open, 32 B, aws-lc-rs on nixos2: 95 ns, 1.89× the fastest -AES-128-GCM open, 32 B, ring on nixos: 58 ns, 1.24× the fastest -AES-128-GCM open, 32 B, ring on desktop: 42 ns, 1.79× the fastest -AES-128-GCM open, 32 B, ring on nixos2: 79 ns, 1.58× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on nixos: 102 ns, 2.16× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on desktop: 78 ns, 3.32× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on nixos2: 106 ns, 2.11× the fastest -AES-128-GCM open, 32 B, graviola on nixos: 65 ns, 1.39× the fastest -AES-128-GCM open, 32 B, graviola on desktop: 35 ns, 1.52× the fastest -AES-128-GCM open, 32 B, graviola on nixos2: 68 ns, 1.37× the fastest -AES-128-GCM open, 32 B, libcrux on nixos: 320 ns, 6.81× the fastest -AES-128-GCM open, 32 B, libcrux on desktop: 161 ns, 6.89× the fastest -AES-128-GCM open, 32 B, libcrux on nixos2: 305 ns, 6.10× the fastest -AES-128-GCM open, 32 B, OpenSSL on nixos: 118 ns, 2.52× the fastest -AES-128-GCM open, 32 B, OpenSSL on desktop: 58 ns, 2.50× the fastest -AES-128-GCM open, 32 B, OpenSSL on nixos2: 156 ns, 3.13× the fastest +AES-128-GCM open, 32 B, rind on nixos: 44 ns, 1.00× the fastest +AES-128-GCM open, 32 B, rind on desktop: 28 ns, 1.00× the fastest +AES-128-GCM open, 32 B, rind on nixos2: 38 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, rind on ovh-iad: 63 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, rind on ovh-sea: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, aws-lc-rs on nixos: 72 ns, 1.63× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.31× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on nixos2: 90 ns, 2.41× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on ovh-iad: 145 ns, 2.29× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on ovh-sea: 138 ns, 2.28× the fastest +AES-128-GCM open, 32 B, ring on nixos: 58 ns, 1.30× the fastest +AES-128-GCM open, 32 B, ring on desktop: 42 ns, 1.49× the fastest +AES-128-GCM open, 32 B, ring on nixos2: 98 ns, 2.60× the fastest +AES-128-GCM open, 32 B, ring on ovh-iad: 131 ns, 2.07× the fastest +AES-128-GCM open, 32 B, ring on ovh-sea: 124 ns, 2.04× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on nixos: 102 ns, 2.29× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on desktop: 78 ns, 2.73× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on nixos2: 104 ns, 2.78× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on ovh-iad: 163 ns, 2.57× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on ovh-sea: 162 ns, 2.66× the fastest +AES-128-GCM open, 32 B, graviola on nixos: 65 ns, 1.46× the fastest +AES-128-GCM open, 32 B, graviola on desktop: 36 ns, 1.26× the fastest +AES-128-GCM open, 32 B, graviola on nixos2: 69 ns, 1.83× the fastest +AES-128-GCM open, 32 B, libcrux on nixos: 317 ns, 7.15× the fastest +AES-128-GCM open, 32 B, libcrux on desktop: 159 ns, 5.59× the fastest +AES-128-GCM open, 32 B, libcrux on nixos2: 303 ns, 8.06× the fastest +AES-128-GCM open, 32 B, libcrux on ovh-iad: 467 ns, 7.39× the fastest +AES-128-GCM open, 32 B, libcrux on ovh-sea: 465 ns, 7.65× the fastest +AES-128-GCM open, 32 B, OpenSSL on nixos: 118 ns, 2.65× the fastest +AES-128-GCM open, 32 B, OpenSSL on desktop: 58 ns, 2.02× the fastest +AES-128-GCM open, 32 B, OpenSSL on nixos2: 159 ns, 4.24× the fastest +AES-128-GCM open, 32 B, OpenSSL on ovh-iad: 245 ns, 3.88× the fastest +AES-128-GCM open, 32 B, OpenSSL on ovh-sea: 242 ns, 3.99× the fastest AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind on nixos: 175 ns, 1.00× the fastest -AES-128-GCM open, 1350 B, rind on desktop: 101 ns, 1.00× the fastest -AES-128-GCM open, 1350 B, rind on nixos2: 261 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 1350 B, aws-lc-rs on nixos: 295 ns, 1.68× the fastest -AES-128-GCM open, 1350 B, aws-lc-rs on desktop: 149 ns, 1.47× the fastest -AES-128-GCM open, 1350 B, aws-lc-rs on nixos2: 297 ns, 1.14× the fastest -AES-128-GCM open, 1350 B, ring on nixos: 185 ns, 1.06× the fastest -AES-128-GCM open, 1350 B, ring on desktop: 113 ns, 1.12× the fastest -AES-128-GCM open, 1350 B, ring on nixos2: 278 ns, 1.07× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos: 448 ns, 2.56× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on desktop: 283 ns, 2.81× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos2: 569 ns, 2.18× the fastest -AES-128-GCM open, 1350 B, graviola on nixos: 307 ns, 1.75× the fastest -AES-128-GCM open, 1350 B, graviola on desktop: 176 ns, 1.75× the fastest -AES-128-GCM open, 1350 B, graviola on nixos2: 362 ns, 1.39× the fastest -AES-128-GCM open, 1350 B, libcrux on nixos: 3.93 µs, 22.44× the fastest -AES-128-GCM open, 1350 B, libcrux on desktop: 1.99 µs, 19.73× the fastest -AES-128-GCM open, 1350 B, libcrux on nixos2: 3.63 µs, 13.91× the fastest -AES-128-GCM open, 1350 B, OpenSSL on nixos: 332 ns, 1.90× the fastest -AES-128-GCM open, 1350 B, OpenSSL on desktop: 157 ns, 1.56× the fastest -AES-128-GCM open, 1350 B, OpenSSL on nixos2: 360 ns, 1.38× the fastest +AES-128-GCM open, 1350 B, rind on nixos: 174 ns, 1.00× the fastest +AES-128-GCM open, 1350 B, rind on desktop: 99 ns, 1.00× the fastest +AES-128-GCM open, 1350 B, rind on nixos2: 236 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, rind on ovh-iad: 388 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, rind on ovh-sea: 373 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, aws-lc-rs on nixos: 298 ns, 1.71× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on desktop: 149 ns, 1.51× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on nixos2: 285 ns, 1.21× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on ovh-iad: 443 ns, 1.14× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on ovh-sea: 444 ns, 1.19× the fastest +AES-128-GCM open, 1350 B, ring on nixos: 185 ns, 1.06× the fastest +AES-128-GCM open, 1350 B, ring on desktop: 114 ns, 1.16× the fastest +AES-128-GCM open, 1350 B, ring on nixos2: 296 ns, 1.25× the fastest +AES-128-GCM open, 1350 B, ring on ovh-iad: 431 ns, 1.11× the fastest +AES-128-GCM open, 1350 B, ring on ovh-sea: 440 ns, 1.18× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos: 451 ns, 2.58× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on desktop: 282 ns, 2.86× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos2: 564 ns, 2.39× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on ovh-iad: 899 ns, 2.32× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on ovh-sea: 881 ns, 2.37× the fastest +AES-128-GCM open, 1350 B, graviola on nixos: 305 ns, 1.75× the fastest +AES-128-GCM open, 1350 B, graviola on desktop: 176 ns, 1.79× the fastest +AES-128-GCM open, 1350 B, graviola on nixos2: 358 ns, 1.51× the fastest +AES-128-GCM open, 1350 B, libcrux on nixos: 3.92 µs, 22.46× the fastest +AES-128-GCM open, 1350 B, libcrux on desktop: 2.00 µs, 20.29× the fastest +AES-128-GCM open, 1350 B, libcrux on nixos2: 3.48 µs, 14.75× the fastest +AES-128-GCM open, 1350 B, libcrux on ovh-iad: 5.59 µs, 14.43× the fastest +AES-128-GCM open, 1350 B, libcrux on ovh-sea: 5.33 µs, 14.31× the fastest +AES-128-GCM open, 1350 B, OpenSSL on nixos: 333 ns, 1.91× the fastest +AES-128-GCM open, 1350 B, OpenSSL on desktop: 159 ns, 1.62× the fastest +AES-128-GCM open, 1350 B, OpenSSL on nixos2: 355 ns, 1.50× the fastest +AES-128-GCM open, 1350 B, OpenSSL on ovh-iad: 590 ns, 1.52× the fastest +AES-128-GCM open, 1350 B, OpenSSL on ovh-sea: 552 ns, 1.48× the fastest AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind on nixos: 1.45 µs, 1.00× the fastest -AES-128-GCM open, 16 KB, rind on desktop: 812 ns, 1.00× the fastest -AES-128-GCM open, 16 KB, rind on nixos2: 2.58 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 16 KB, aws-lc-rs on nixos: 2.71 µs, 1.87× the fastest -AES-128-GCM open, 16 KB, aws-lc-rs on desktop: 1.26 µs, 1.55× the fastest -AES-128-GCM open, 16 KB, aws-lc-rs on nixos2: 2.63 µs, 1.02× the fastest -AES-128-GCM open, 16 KB, ring on nixos: 1.48 µs, 1.02× the fastest -AES-128-GCM open, 16 KB, ring on desktop: 823 ns, 1.01× the fastest -AES-128-GCM open, 16 KB, ring on nixos2: 2.59 µs, 1.00× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.28 µs, 2.95× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.51 µs, 3.09× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos2: 5.81 µs, 2.25× the fastest -AES-128-GCM open, 16 KB, graviola on nixos: 2.66 µs, 1.83× the fastest -AES-128-GCM open, 16 KB, graviola on desktop: 1.40 µs, 1.72× the fastest -AES-128-GCM open, 16 KB, graviola on nixos2: 3.41 µs, 1.32× the fastest -AES-128-GCM open, 16 KB, libcrux on nixos: 44.58 µs, 30.67× the fastest -AES-128-GCM open, 16 KB, libcrux on desktop: 22.00 µs, 27.09× the fastest -AES-128-GCM open, 16 KB, libcrux on nixos2: 39.83 µs, 15.43× the fastest -AES-128-GCM open, 16 KB, OpenSSL on nixos: 2.75 µs, 1.89× the fastest -AES-128-GCM open, 16 KB, OpenSSL on desktop: 1.29 µs, 1.58× the fastest -AES-128-GCM open, 16 KB, OpenSSL on nixos2: 2.70 µs, 1.05× the fastest +AES-128-GCM open, 16 KB, rind on nixos: 1.44 µs, 1.00× the fastest +AES-128-GCM open, 16 KB, rind on desktop: 816 ns, 1.00× the fastest +AES-128-GCM open, 16 KB, rind on nixos2: 2.52 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, rind on ovh-iad: 3.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, rind on ovh-sea: 3.78 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, aws-lc-rs on nixos: 2.72 µs, 1.89× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on desktop: 1.28 µs, 1.56× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on nixos2: 2.60 µs, 1.03× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on ovh-iad: 4.08 µs, 1.04× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on ovh-sea: 3.90 µs, 1.03× the fastest +AES-128-GCM open, 16 KB, ring on nixos: 1.45 µs, 1.01× the fastest +AES-128-GCM open, 16 KB, ring on desktop: 829 ns, 1.02× the fastest +AES-128-GCM open, 16 KB, ring on nixos2: 2.62 µs, 1.04× the fastest +AES-128-GCM open, 16 KB, ring on ovh-iad: 4.03 µs, 1.02× the fastest +AES-128-GCM open, 16 KB, ring on ovh-sea: 3.77 µs, 1.00× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.29 µs, 2.98× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.54 µs, 3.12× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos2: 5.75 µs, 2.28× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on ovh-iad: 8.88 µs, 2.26× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on ovh-sea: 8.84 µs, 2.34× the fastest +AES-128-GCM open, 16 KB, graviola on nixos: 2.65 µs, 1.84× the fastest +AES-128-GCM open, 16 KB, graviola on desktop: 1.42 µs, 1.73× the fastest +AES-128-GCM open, 16 KB, graviola on nixos2: 3.39 µs, 1.34× the fastest +AES-128-GCM open, 16 KB, libcrux on nixos: 44.29 µs, 30.79× the fastest +AES-128-GCM open, 16 KB, libcrux on desktop: 22.31 µs, 27.33× the fastest +AES-128-GCM open, 16 KB, libcrux on nixos2: 41.66 µs, 16.52× the fastest +AES-128-GCM open, 16 KB, libcrux on ovh-iad: 60.53 µs, 15.38× the fastest +AES-128-GCM open, 16 KB, libcrux on ovh-sea: 60.11 µs, 15.93× the fastest +AES-128-GCM open, 16 KB, OpenSSL on nixos: 2.77 µs, 1.93× the fastest +AES-128-GCM open, 16 KB, OpenSSL on desktop: 1.30 µs, 1.59× the fastest +AES-128-GCM open, 16 KB, OpenSSL on nixos2: 2.85 µs, 1.13× the fastest +AES-128-GCM open, 16 KB, OpenSSL on ovh-iad: 3.99 µs, 1.01× the fastest +AES-128-GCM open, 16 KB, OpenSSL on ovh-sea: 4.03 µs, 1.07× the fastest AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind on nixos: 44 ns, 1.00× the fastest -AES-256-GCM seal, 32 B, rind on desktop: 21 ns, 1.00× the fastest -AES-256-GCM seal, 32 B, rind on nixos2: 46 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 32 B, aws-lc-rs on nixos: 81 ns, 1.84× the fastest -AES-256-GCM seal, 32 B, aws-lc-rs on desktop: 39 ns, 1.87× the fastest -AES-256-GCM seal, 32 B, aws-lc-rs on nixos2: 96 ns, 2.06× the fastest -AES-256-GCM seal, 32 B, ring on nixos: 58 ns, 1.31× the fastest -AES-256-GCM seal, 32 B, ring on desktop: 43 ns, 2.07× the fastest -AES-256-GCM seal, 32 B, ring on nixos2: 76 ns, 1.64× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos: 101 ns, 2.29× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on desktop: 78 ns, 3.73× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos2: 109 ns, 2.35× the fastest -AES-256-GCM seal, 32 B, graviola on nixos: 73 ns, 1.67× the fastest -AES-256-GCM seal, 32 B, graviola on desktop: 45 ns, 2.14× the fastest -AES-256-GCM seal, 32 B, graviola on nixos2: 80 ns, 1.72× the fastest -AES-256-GCM seal, 32 B, libcrux on nixos: 426 ns, 9.69× the fastest -AES-256-GCM seal, 32 B, libcrux on desktop: 218 ns, 10.42× the fastest -AES-256-GCM seal, 32 B, libcrux on nixos2: 343 ns, 7.41× the fastest -AES-256-GCM seal, 32 B, OpenSSL on nixos: 119 ns, 2.70× the fastest -AES-256-GCM seal, 32 B, OpenSSL on desktop: 58 ns, 2.78× the fastest -AES-256-GCM seal, 32 B, OpenSSL on nixos2: 167 ns, 3.60× the fastest +AES-256-GCM seal, 32 B, rind on nixos: 41 ns, 1.00× the fastest +AES-256-GCM seal, 32 B, rind on desktop: 20 ns, 1.00× the fastest +AES-256-GCM seal, 32 B, rind on nixos2: 49 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, rind on ovh-iad: 80 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, rind on ovh-sea: 74 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, aws-lc-rs on nixos: 82 ns, 1.99× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on desktop: 40 ns, 1.99× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on nixos2: 95 ns, 1.96× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on ovh-iad: 147 ns, 1.85× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on ovh-sea: 146 ns, 1.96× the fastest +AES-256-GCM seal, 32 B, ring on nixos: 57 ns, 1.38× the fastest +AES-256-GCM seal, 32 B, ring on desktop: 43 ns, 2.16× the fastest +AES-256-GCM seal, 32 B, ring on nixos2: 75 ns, 1.54× the fastest +AES-256-GCM seal, 32 B, ring on ovh-iad: 121 ns, 1.52× the fastest +AES-256-GCM seal, 32 B, ring on ovh-sea: 117 ns, 1.57× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos: 101 ns, 2.45× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on desktop: 77 ns, 3.90× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos2: 107 ns, 2.21× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on ovh-iad: 169 ns, 2.12× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on ovh-sea: 166 ns, 2.23× the fastest +AES-256-GCM seal, 32 B, graviola on nixos: 74 ns, 1.81× the fastest +AES-256-GCM seal, 32 B, graviola on desktop: 44 ns, 2.22× the fastest +AES-256-GCM seal, 32 B, graviola on nixos2: 78 ns, 1.60× the fastest +AES-256-GCM seal, 32 B, libcrux on nixos: 426 ns, 10.35× the fastest +AES-256-GCM seal, 32 B, libcrux on desktop: 216 ns, 10.88× the fastest +AES-256-GCM seal, 32 B, libcrux on nixos2: 344 ns, 7.07× the fastest +AES-256-GCM seal, 32 B, libcrux on ovh-iad: 558 ns, 7.00× the fastest +AES-256-GCM seal, 32 B, libcrux on ovh-sea: 531 ns, 7.14× the fastest +AES-256-GCM seal, 32 B, OpenSSL on nixos: 118 ns, 2.87× the fastest +AES-256-GCM seal, 32 B, OpenSSL on desktop: 58 ns, 2.93× the fastest +AES-256-GCM seal, 32 B, OpenSSL on nixos2: 161 ns, 3.32× the fastest +AES-256-GCM seal, 32 B, OpenSSL on ovh-iad: 288 ns, 3.61× the fastest +AES-256-GCM seal, 32 B, OpenSSL on ovh-sea: 250 ns, 3.36× the fastest AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind on nixos: 188 ns, 1.00× the fastest -AES-256-GCM seal, 1350 B, rind on desktop: 109 ns, 1.00× the fastest -AES-256-GCM seal, 1350 B, rind on nixos2: 343 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 1350 B, aws-lc-rs on nixos: 313 ns, 1.66× the fastest -AES-256-GCM seal, 1350 B, aws-lc-rs on desktop: 176 ns, 1.62× the fastest -AES-256-GCM seal, 1350 B, aws-lc-rs on nixos2: 364 ns, 1.06× the fastest -AES-256-GCM seal, 1350 B, ring on nixos: 206 ns, 1.10× the fastest -AES-256-GCM seal, 1350 B, ring on desktop: 135 ns, 1.25× the fastest -AES-256-GCM seal, 1350 B, ring on nixos2: 356 ns, 1.04× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos: 488 ns, 2.60× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on desktop: 312 ns, 2.88× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 648 ns, 1.89× the fastest -AES-256-GCM seal, 1350 B, graviola on nixos: 338 ns, 1.80× the fastest -AES-256-GCM seal, 1350 B, graviola on desktop: 261 ns, 2.41× the fastest -AES-256-GCM seal, 1350 B, graviola on nixos2: 485 ns, 1.41× the fastest -AES-256-GCM seal, 1350 B, libcrux on nixos: 6.96 µs, 37.07× the fastest -AES-256-GCM seal, 1350 B, libcrux on desktop: 2.86 µs, 26.33× the fastest -AES-256-GCM seal, 1350 B, libcrux on nixos2: 4.49 µs, 13.06× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on nixos: 345 ns, 1.84× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on desktop: 184 ns, 1.69× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on nixos2: 438 ns, 1.28× the fastest +AES-256-GCM seal, 1350 B, rind on nixos: 184 ns, 1.00× the fastest +AES-256-GCM seal, 1350 B, rind on desktop: 106 ns, 1.00× the fastest +AES-256-GCM seal, 1350 B, rind on nixos2: 325 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, rind on ovh-iad: 514 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, rind on ovh-sea: 495 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, aws-lc-rs on nixos: 311 ns, 1.69× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on desktop: 173 ns, 1.63× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on nixos2: 363 ns, 1.12× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on ovh-iad: 577 ns, 1.12× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on ovh-sea: 559 ns, 1.13× the fastest +AES-256-GCM seal, 1350 B, ring on nixos: 205 ns, 1.11× the fastest +AES-256-GCM seal, 1350 B, ring on desktop: 133 ns, 1.25× the fastest +AES-256-GCM seal, 1350 B, ring on nixos2: 353 ns, 1.09× the fastest +AES-256-GCM seal, 1350 B, ring on ovh-iad: 568 ns, 1.10× the fastest +AES-256-GCM seal, 1350 B, ring on ovh-sea: 538 ns, 1.09× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos: 489 ns, 2.65× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on desktop: 313 ns, 2.94× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 623 ns, 1.92× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on ovh-iad: 965 ns, 1.88× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on ovh-sea: 963 ns, 1.95× the fastest +AES-256-GCM seal, 1350 B, graviola on nixos: 337 ns, 1.83× the fastest +AES-256-GCM seal, 1350 B, graviola on desktop: 258 ns, 2.42× the fastest +AES-256-GCM seal, 1350 B, graviola on nixos2: 476 ns, 1.46× the fastest +AES-256-GCM seal, 1350 B, libcrux on nixos: 6.91 µs, 37.50× the fastest +AES-256-GCM seal, 1350 B, libcrux on desktop: 2.83 µs, 26.55× the fastest +AES-256-GCM seal, 1350 B, libcrux on nixos2: 4.50 µs, 13.86× the fastest +AES-256-GCM seal, 1350 B, libcrux on ovh-iad: 6.99 µs, 13.60× the fastest +AES-256-GCM seal, 1350 B, libcrux on ovh-sea: 6.89 µs, 13.93× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on nixos: 345 ns, 1.87× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on desktop: 186 ns, 1.75× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on nixos2: 437 ns, 1.34× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on ovh-iad: 678 ns, 1.32× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on ovh-sea: 651 ns, 1.32× the fastest AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind on nixos: 1.54 µs, 1.00× the fastest -AES-256-GCM seal, 16 KB, rind on desktop: 924 ns, 1.00× the fastest -AES-256-GCM seal, 16 KB, rind on nixos2: 3.24 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 16 KB, aws-lc-rs on nixos: 2.79 µs, 1.81× the fastest -AES-256-GCM seal, 16 KB, aws-lc-rs on desktop: 1.58 µs, 1.71× the fastest -AES-256-GCM seal, 16 KB, aws-lc-rs on nixos2: 3.32 µs, 1.02× the fastest -AES-256-GCM seal, 16 KB, ring on nixos: 1.56 µs, 1.01× the fastest -AES-256-GCM seal, 16 KB, ring on desktop: 953 ns, 1.03× the fastest -AES-256-GCM seal, 16 KB, ring on nixos2: 3.25 µs, 1.00× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.83 µs, 3.14× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.91 µs, 3.15× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 6.54 µs, 2.02× the fastest -AES-256-GCM seal, 16 KB, graviola on nixos: 3.00 µs, 1.95× the fastest -AES-256-GCM seal, 16 KB, graviola on desktop: 2.42 µs, 2.62× the fastest -AES-256-GCM seal, 16 KB, graviola on nixos2: 4.72 µs, 1.45× the fastest -AES-256-GCM seal, 16 KB, libcrux on nixos: 80.86 µs, 52.58× the fastest -AES-256-GCM seal, 16 KB, libcrux on desktop: 32.27 µs, 34.93× the fastest -AES-256-GCM seal, 16 KB, libcrux on nixos2: 50.79 µs, 15.66× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on nixos: 2.82 µs, 1.83× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on desktop: 1.57 µs, 1.70× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on nixos2: 3.35 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, rind on nixos: 1.51 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind on desktop: 925 ns, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind on nixos2: 3.22 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, rind on ovh-iad: 5.27 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, rind on ovh-sea: 5.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, aws-lc-rs on nixos: 2.78 µs, 1.84× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on desktop: 1.56 µs, 1.69× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on nixos2: 3.30 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on ovh-iad: 5.32 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on ovh-sea: 5.10 µs, 1.02× the fastest +AES-256-GCM seal, 16 KB, ring on nixos: 1.53 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, ring on desktop: 946 ns, 1.02× the fastest +AES-256-GCM seal, 16 KB, ring on nixos2: 3.25 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, ring on ovh-iad: 5.26 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, ring on ovh-sea: 5.02 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.78 µs, 3.16× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.91 µs, 3.14× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 6.45 µs, 2.00× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on ovh-iad: 10.07 µs, 1.91× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on ovh-sea: 9.97 µs, 2.00× the fastest +AES-256-GCM seal, 16 KB, graviola on nixos: 2.98 µs, 1.97× the fastest +AES-256-GCM seal, 16 KB, graviola on desktop: 2.46 µs, 2.66× the fastest +AES-256-GCM seal, 16 KB, graviola on nixos2: 4.71 µs, 1.46× the fastest +AES-256-GCM seal, 16 KB, libcrux on nixos: 80.61 µs, 53.39× the fastest +AES-256-GCM seal, 16 KB, libcrux on desktop: 32.69 µs, 35.34× the fastest +AES-256-GCM seal, 16 KB, libcrux on nixos2: 50.92 µs, 15.81× the fastest +AES-256-GCM seal, 16 KB, libcrux on ovh-iad: 82.15 µs, 15.61× the fastest +AES-256-GCM seal, 16 KB, libcrux on ovh-sea: 78.65 µs, 15.74× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on nixos: 2.82 µs, 1.87× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on desktop: 1.59 µs, 1.72× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on nixos2: 3.34 µs, 1.04× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on ovh-iad: 5.43 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on ovh-sea: 5.12 µs, 1.02× the fastest AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind on nixos: 52 ns, 1.00× the fastest -AES-256-GCM open, 32 B, rind on desktop: 24 ns, 1.00× the fastest -AES-256-GCM open, 32 B, rind on nixos2: 57 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 32 B, aws-lc-rs on nixos: 82 ns, 1.56× the fastest -AES-256-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.53× the fastest -AES-256-GCM open, 32 B, aws-lc-rs on nixos2: 104 ns, 1.83× the fastest -AES-256-GCM open, 32 B, ring on nixos: 62 ns, 1.18× the fastest -AES-256-GCM open, 32 B, ring on desktop: 44 ns, 1.81× the fastest -AES-256-GCM open, 32 B, ring on nixos2: 83 ns, 1.45× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on nixos: 111 ns, 2.12× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on desktop: 81 ns, 3.34× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on nixos2: 118 ns, 2.08× the fastest -AES-256-GCM open, 32 B, graviola on nixos: 68 ns, 1.30× the fastest -AES-256-GCM open, 32 B, graviola on desktop: 38 ns, 1.54× the fastest -AES-256-GCM open, 32 B, graviola on nixos2: 79 ns, 1.39× the fastest -AES-256-GCM open, 32 B, libcrux on nixos: 442 ns, 8.43× the fastest -AES-256-GCM open, 32 B, libcrux on desktop: 218 ns, 8.95× the fastest -AES-256-GCM open, 32 B, libcrux on nixos2: 385 ns, 6.76× the fastest -AES-256-GCM open, 32 B, OpenSSL on nixos: 121 ns, 2.30× the fastest -AES-256-GCM open, 32 B, OpenSSL on desktop: 61 ns, 2.52× the fastest -AES-256-GCM open, 32 B, OpenSSL on nixos2: 173 ns, 3.05× the fastest +AES-256-GCM open, 32 B, rind on nixos: 48 ns, 1.00× the fastest +AES-256-GCM open, 32 B, rind on desktop: 28 ns, 1.00× the fastest +AES-256-GCM open, 32 B, rind on nixos2: 45 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, rind on ovh-iad: 70 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, rind on ovh-sea: 68 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, aws-lc-rs on nixos: 79 ns, 1.62× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on desktop: 38 ns, 1.37× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on nixos2: 101 ns, 2.26× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on ovh-iad: 156 ns, 2.22× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on ovh-sea: 146 ns, 2.14× the fastest +AES-256-GCM open, 32 B, ring on nixos: 61 ns, 1.25× the fastest +AES-256-GCM open, 32 B, ring on desktop: 45 ns, 1.61× the fastest +AES-256-GCM open, 32 B, ring on nixos2: 107 ns, 2.39× the fastest +AES-256-GCM open, 32 B, ring on ovh-iad: 132 ns, 1.87× the fastest +AES-256-GCM open, 32 B, ring on ovh-sea: 127 ns, 1.86× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on nixos: 109 ns, 2.24× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on desktop: 82 ns, 2.98× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on nixos2: 118 ns, 2.65× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on ovh-iad: 179 ns, 2.54× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on ovh-sea: 173 ns, 2.54× the fastest +AES-256-GCM open, 32 B, graviola on nixos: 68 ns, 1.39× the fastest +AES-256-GCM open, 32 B, graviola on desktop: 38 ns, 1.37× the fastest +AES-256-GCM open, 32 B, graviola on nixos2: 73 ns, 1.64× the fastest +AES-256-GCM open, 32 B, libcrux on nixos: 441 ns, 9.10× the fastest +AES-256-GCM open, 32 B, libcrux on desktop: 218 ns, 7.86× the fastest +AES-256-GCM open, 32 B, libcrux on nixos2: 363 ns, 8.12× the fastest +AES-256-GCM open, 32 B, libcrux on ovh-iad: 571 ns, 8.10× the fastest +AES-256-GCM open, 32 B, libcrux on ovh-sea: 562 ns, 8.27× the fastest +AES-256-GCM open, 32 B, OpenSSL on nixos: 122 ns, 2.52× the fastest +AES-256-GCM open, 32 B, OpenSSL on desktop: 62 ns, 2.22× the fastest +AES-256-GCM open, 32 B, OpenSSL on nixos2: 172 ns, 3.84× the fastest +AES-256-GCM open, 32 B, OpenSSL on ovh-iad: 266 ns, 3.78× the fastest +AES-256-GCM open, 32 B, OpenSSL on ovh-sea: 248 ns, 3.65× the fastest AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind on nixos: 194 ns, 1.00× the fastest -AES-256-GCM open, 1350 B, rind on desktop: 110 ns, 1.00× the fastest -AES-256-GCM open, 1350 B, rind on nixos2: 351 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 1350 B, aws-lc-rs on nixos: 320 ns, 1.65× the fastest -AES-256-GCM open, 1350 B, aws-lc-rs on desktop: 174 ns, 1.59× the fastest -AES-256-GCM open, 1350 B, aws-lc-rs on nixos2: 391 ns, 1.11× the fastest -AES-256-GCM open, 1350 B, ring on nixos: 205 ns, 1.06× the fastest -AES-256-GCM open, 1350 B, ring on desktop: 123 ns, 1.12× the fastest -AES-256-GCM open, 1350 B, ring on nixos2: 371 ns, 1.06× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos: 507 ns, 2.61× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on desktop: 323 ns, 2.95× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos2: 672 ns, 1.91× the fastest -AES-256-GCM open, 1350 B, graviola on nixos: 342 ns, 1.76× the fastest -AES-256-GCM open, 1350 B, graviola on desktop: 203 ns, 1.86× the fastest -AES-256-GCM open, 1350 B, graviola on nixos2: 456 ns, 1.30× the fastest -AES-256-GCM open, 1350 B, libcrux on nixos: 6.39 µs, 32.91× the fastest -AES-256-GCM open, 1350 B, libcrux on desktop: 2.86 µs, 26.07× the fastest -AES-256-GCM open, 1350 B, libcrux on nixos2: 4.55 µs, 12.94× the fastest -AES-256-GCM open, 1350 B, OpenSSL on nixos: 358 ns, 1.84× the fastest -AES-256-GCM open, 1350 B, OpenSSL on desktop: 188 ns, 1.72× the fastest -AES-256-GCM open, 1350 B, OpenSSL on nixos2: 436 ns, 1.24× the fastest +AES-256-GCM open, 1350 B, rind on nixos: 192 ns, 1.00× the fastest +AES-256-GCM open, 1350 B, rind on desktop: 107 ns, 1.00× the fastest +AES-256-GCM open, 1350 B, rind on nixos2: 328 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, rind on ovh-iad: 488 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, rind on ovh-sea: 480 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, aws-lc-rs on nixos: 322 ns, 1.68× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on desktop: 173 ns, 1.62× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on nixos2: 422 ns, 1.29× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on ovh-iad: 593 ns, 1.22× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on ovh-sea: 560 ns, 1.17× the fastest +AES-256-GCM open, 1350 B, ring on nixos: 204 ns, 1.06× the fastest +AES-256-GCM open, 1350 B, ring on desktop: 124 ns, 1.16× the fastest +AES-256-GCM open, 1350 B, ring on nixos2: 388 ns, 1.18× the fastest +AES-256-GCM open, 1350 B, ring on ovh-iad: 581 ns, 1.19× the fastest +AES-256-GCM open, 1350 B, ring on ovh-sea: 537 ns, 1.12× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos: 508 ns, 2.65× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on desktop: 322 ns, 3.01× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos2: 677 ns, 2.06× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on ovh-iad: 1.02 µs, 2.08× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on ovh-sea: 991 ns, 2.06× the fastest +AES-256-GCM open, 1350 B, graviola on nixos: 341 ns, 1.78× the fastest +AES-256-GCM open, 1350 B, graviola on desktop: 203 ns, 1.90× the fastest +AES-256-GCM open, 1350 B, graviola on nixos2: 510 ns, 1.56× the fastest +AES-256-GCM open, 1350 B, libcrux on nixos: 6.79 µs, 35.42× the fastest +AES-256-GCM open, 1350 B, libcrux on desktop: 2.85 µs, 26.66× the fastest +AES-256-GCM open, 1350 B, libcrux on nixos2: 4.74 µs, 14.46× the fastest +AES-256-GCM open, 1350 B, libcrux on ovh-iad: 7.11 µs, 14.56× the fastest +AES-256-GCM open, 1350 B, libcrux on ovh-sea: 6.87 µs, 14.32× the fastest +AES-256-GCM open, 1350 B, OpenSSL on nixos: 354 ns, 1.85× the fastest +AES-256-GCM open, 1350 B, OpenSSL on desktop: 189 ns, 1.77× the fastest +AES-256-GCM open, 1350 B, OpenSSL on nixos2: 643 ns, 1.96× the fastest +AES-256-GCM open, 1350 B, OpenSSL on ovh-iad: 702 ns, 1.44× the fastest +AES-256-GCM open, 1350 B, OpenSSL on ovh-sea: 649 ns, 1.35× the fastest AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind on nixos: 1.62 µs, 1.00× the fastest -AES-256-GCM open, 16 KB, rind on desktop: 926 ns, 1.00× the fastest -AES-256-GCM open, 16 KB, rind on nixos2: 3.58 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 16 KB, aws-lc-rs on nixos: 2.89 µs, 1.79× the fastest -AES-256-GCM open, 16 KB, aws-lc-rs on desktop: 1.58 µs, 1.71× the fastest -AES-256-GCM open, 16 KB, aws-lc-rs on nixos2: 3.56 µs, 1.00× the fastest -AES-256-GCM open, 16 KB, ring on nixos: 1.65 µs, 1.02× the fastest -AES-256-GCM open, 16 KB, ring on desktop: 939 ns, 1.01× the fastest -AES-256-GCM open, 16 KB, ring on nixos2: 3.59 µs, 1.01× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.92 µs, 3.04× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.97 µs, 3.20× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos2: 6.77 µs, 1.90× the fastest -AES-256-GCM open, 16 KB, graviola on nixos: 3.05 µs, 1.89× the fastest -AES-256-GCM open, 16 KB, graviola on desktop: 1.75 µs, 1.89× the fastest -AES-256-GCM open, 16 KB, graviola on nixos2: 4.38 µs, 1.23× the fastest -AES-256-GCM open, 16 KB, libcrux on nixos: 74.38 µs, 46.05× the fastest -AES-256-GCM open, 16 KB, libcrux on desktop: 32.50 µs, 35.10× the fastest -AES-256-GCM open, 16 KB, libcrux on nixos2: 50.89 µs, 14.30× the fastest -AES-256-GCM open, 16 KB, OpenSSL on nixos: 2.96 µs, 1.83× the fastest -AES-256-GCM open, 16 KB, OpenSSL on desktop: 1.60 µs, 1.73× the fastest -AES-256-GCM open, 16 KB, OpenSSL on nixos2: 3.64 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, rind on nixos: 1.60 µs, 1.00× the fastest +AES-256-GCM open, 16 KB, rind on desktop: 917 ns, 1.00× the fastest +AES-256-GCM open, 16 KB, rind on nixos2: 3.62 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, rind on ovh-iad: 5.19 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, rind on ovh-sea: 5.15 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, aws-lc-rs on nixos: 2.92 µs, 1.82× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on desktop: 1.57 µs, 1.71× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on nixos2: 3.69 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on ovh-iad: 5.51 µs, 1.06× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on ovh-sea: 5.23 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, ring on nixos: 1.62 µs, 1.01× the fastest +AES-256-GCM open, 16 KB, ring on desktop: 921 ns, 1.00× the fastest +AES-256-GCM open, 16 KB, ring on nixos2: 3.70 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, ring on ovh-iad: 5.38 µs, 1.04× the fastest +AES-256-GCM open, 16 KB, ring on ovh-sea: 5.22 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.93 µs, 3.08× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.96 µs, 3.23× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos2: 7.23 µs, 2.00× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on ovh-iad: 10.28 µs, 1.98× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on ovh-sea: 10.13 µs, 1.97× the fastest +AES-256-GCM open, 16 KB, graviola on nixos: 3.04 µs, 1.90× the fastest +AES-256-GCM open, 16 KB, graviola on desktop: 1.74 µs, 1.90× the fastest +AES-256-GCM open, 16 KB, graviola on nixos2: 4.54 µs, 1.25× the fastest +AES-256-GCM open, 16 KB, libcrux on nixos: 79.19 µs, 49.38× the fastest +AES-256-GCM open, 16 KB, libcrux on desktop: 32.51 µs, 35.44× the fastest +AES-256-GCM open, 16 KB, libcrux on nixos2: 53.96 µs, 14.91× the fastest +AES-256-GCM open, 16 KB, libcrux on ovh-iad: 80.09 µs, 15.44× the fastest +AES-256-GCM open, 16 KB, libcrux on ovh-sea: 78.52 µs, 15.26× the fastest +AES-256-GCM open, 16 KB, OpenSSL on nixos: 2.98 µs, 1.86× the fastest +AES-256-GCM open, 16 KB, OpenSSL on desktop: 1.60 µs, 1.75× the fastest +AES-256-GCM open, 16 KB, OpenSSL on nixos2: 3.87 µs, 1.07× the fastest +AES-256-GCM open, 16 KB, OpenSSL on ovh-iad: 5.46 µs, 1.05× the fastest +AES-256-GCM open, 16 KB, OpenSSL on ovh-sea: 5.38 µs, 1.05× the fastest ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind on nixos: 114 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 32 B, rind on desktop: 99 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, rind on nixos2: 124 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 119 ns, 1.06× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 105 ns, 1.06× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 141 ns, 1.13× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on nixos: 113 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on desktop: 101 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on nixos2: 130 ns, 1.05× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.18 µs, 10.45× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.06 µs, 10.71× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.16 µs, 9.36× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on nixos: 216 ns, 1.91× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on desktop: 180 ns, 1.81× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 222 ns, 1.79× the fastest -ChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 218 ns, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 157 ns, 1.58× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 274 ns, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos: 255 ns, 2.26× the fastest -ChaCha20-Poly1305 seal, 32 B, OpenSSL on desktop: 177 ns, 1.78× the fastest -ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos2: 325 ns, 2.62× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on nixos: 114 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on desktop: 100 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on nixos2: 129 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on ovh-iad: 192 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on ovh-sea: 187 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 119 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 105 ns, 1.05× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 149 ns, 1.15× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-iad: 219 ns, 1.14× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-sea: 210 ns, 1.12× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on nixos: 113 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on desktop: 101 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on nixos2: 130 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on ovh-iad: 196 ns, 1.02× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on ovh-sea: 189 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.18 µs, 10.48× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.07 µs, 10.75× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.21 µs, 9.37× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-iad: 1.82 µs, 9.45× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-sea: 1.74 µs, 9.32× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on nixos: 216 ns, 1.92× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on desktop: 180 ns, 1.80× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 232 ns, 1.80× the fastest +ChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 220 ns, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 157 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 301 ns, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on ovh-iad: 462 ns, 2.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on ovh-sea: 429 ns, 2.29× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos: 257 ns, 2.29× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on desktop: 177 ns, 1.77× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos2: 337 ns, 2.61× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on ovh-iad: 496 ns, 2.58× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on ovh-sea: 495 ns, 2.64× the fastest ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind on nixos: 530 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, rind on desktop: 447 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 691 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 535 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 453 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 700 ns, 1.02× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on nixos: 531 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on desktop: 446 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on nixos2: 686 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 1.92 µs, 3.63× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.67 µs, 3.75× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.08 µs, 3.04× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.08 µs, 2.03× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 911 ns, 2.04× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.24 µs, 1.81× the fastest -ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.33 µs, 4.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.78 µs, 3.98× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.08 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos: 742 ns, 1.40× the fastest -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on desktop: 589 ns, 1.32× the fastest -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos2: 933 ns, 1.36× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on nixos: 533 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on desktop: 441 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 718 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on ovh-iad: 1.08 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on ovh-sea: 1.03 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 532 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 453 ns, 1.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 755 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-iad: 1.07 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-sea: 1.06 µs, 1.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on nixos: 527 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on desktop: 447 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on nixos2: 714 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on ovh-iad: 1.07 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on ovh-sea: 1.04 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 1.93 µs, 3.65× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.67 µs, 3.79× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.18 µs, 3.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-iad: 3.21 µs, 3.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-sea: 3.16 µs, 3.07× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.08 µs, 2.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 905 ns, 2.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.29 µs, 1.81× the fastest +ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.34 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.78 µs, 4.03× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.16 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-iad: 4.80 µs, 4.50× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-sea: 4.62 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos: 745 ns, 1.41× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on desktop: 590 ns, 1.34× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos2: 971 ns, 1.36× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on ovh-iad: 1.61 µs, 1.51× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on ovh-sea: 1.57 µs, 1.52× the fastest ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.58 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.13 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.35 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.62 µs, 1.02× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.13 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.43 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on nixos: 4.55 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on desktop: 4.12 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on nixos2: 6.39 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 9.81 µs, 2.15× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.15 µs, 1.98× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.38 µs, 1.95× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 9.87 µs, 2.17× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.36 µs, 2.03× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.98 µs, 1.89× the fastest -ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.03 µs, 5.72× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.36 µs, 4.70× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 34.70 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos: 5.10 µs, 1.12× the fastest -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on desktop: 4.41 µs, 1.07× the fastest -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos2: 6.41 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.68 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.17 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.81 µs, 1.03× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on ovh-iad: 9.95 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on ovh-sea: 9.66 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.78 µs, 1.02× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.15 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.63 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-iad: 10.30 µs, 1.04× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-sea: 9.60 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on nixos: 4.68 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on desktop: 4.14 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on nixos2: 6.60 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on ovh-iad: 10.07 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on ovh-sea: 9.59 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 10.09 µs, 2.16× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.14 µs, 1.97× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.61 µs, 1.91× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-iad: 18.85 µs, 1.89× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-sea: 18.38 µs, 1.92× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.15 µs, 2.17× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.30 µs, 2.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 12.52 µs, 1.90× the fastest +ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.70 µs, 5.71× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.63 µs, 4.74× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 35.52 µs, 5.38× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-iad: 56.11 µs, 5.64× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-sea: 52.14 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos: 5.14 µs, 1.10× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on desktop: 4.41 µs, 1.07× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos2: 6.64 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on ovh-iad: 11.14 µs, 1.12× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on ovh-sea: 10.99 µs, 1.15× the fastest XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind on nixos: 242 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, rind on desktop: 188 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, rind on nixos2: 270 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 263 ns, 1.09× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 196 ns, 1.04× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 282 ns, 1.04× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.35 µs, 5.61× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.15 µs, 6.09× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.28 µs, 4.72× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on nixos: 348 ns, 1.44× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on desktop: 259 ns, 1.37× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 335 ns, 1.24× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 336 ns, 1.39× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 243 ns, 1.29× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 400 ns, 1.48× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on nixos: 243 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on desktop: 188 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on nixos2: 256 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on ovh-iad: 402 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on ovh-sea: 402 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 267 ns, 1.10× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 199 ns, 1.06× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 278 ns, 1.09× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-iad: 432 ns, 1.07× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-sea: 433 ns, 1.08× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.36 µs, 5.60× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 889 ns, 4.72× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.27 µs, 4.95× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-iad: 1.98 µs, 4.93× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-sea: 1.98 µs, 4.92× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on nixos: 357 ns, 1.47× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on desktop: 259 ns, 1.38× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 335 ns, 1.31× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 351 ns, 1.45× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 248 ns, 1.32× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 400 ns, 1.56× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on ovh-iad: 653 ns, 1.62× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on ovh-sea: 631 ns, 1.57× the fastest XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind on nixos: 653 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, rind on desktop: 528 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 814 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 673 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 541 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 839 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 2.06 µs, 3.16× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.76 µs, 3.33× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.20 µs, 2.71× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.20 µs, 1.84× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 987 ns, 1.87× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.37 µs, 1.68× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.45 µs, 3.75× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.83 µs, 3.47× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.12 µs, 3.84× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on nixos: 775 ns, 1.07× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on desktop: 838 ns, 1.22× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 804 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on ovh-iad: 1.31 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on ovh-sea: 1.25 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 723 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 687 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 831 ns, 1.03× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-iad: 1.32 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-sea: 1.32 µs, 1.05× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 2.18 µs, 3.01× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.74 µs, 2.54× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.20 µs, 2.74× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-iad: 3.46 µs, 2.63× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-sea: 3.36 µs, 2.68× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.31 µs, 1.81× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 1.35 µs, 1.97× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.32 µs, 1.64× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.70 µs, 3.73× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 2.56 µs, 3.73× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.16 µs, 3.92× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-iad: 5.11 µs, 3.89× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-sea: 4.83 µs, 3.86× the fastest XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.76 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.20 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.51 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.74 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.29 µs, 1.02× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.55 µs, 1.01× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 9.95 µs, 2.10× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.25 µs, 1.97× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.11 µs, 1.86× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.02 µs, 2.11× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.30 µs, 1.98× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.96 µs, 1.84× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.08 µs, 5.50× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.58 µs, 4.67× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 34.02 µs, 5.22× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on nixos: 5.23 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on desktop: 6.26 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.38 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on ovh-iad: 9.99 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on ovh-sea: 9.89 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 5.37 µs, 1.03× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 6.27 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.44 µs, 1.01× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-iad: 10.34 µs, 1.04× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-sea: 9.93 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 11.38 µs, 2.17× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 12.28 µs, 1.96× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.04 µs, 1.89× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-iad: 19.22 µs, 1.92× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-sea: 18.67 µs, 1.89× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.80 µs, 2.06× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 12.79 µs, 2.04× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.86 µs, 1.86× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 28.66 µs, 5.48× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 27.40 µs, 4.37× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 33.42 µs, 5.23× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-iad: 52.60 µs, 5.27× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-sea: 51.64 µs, 5.22× the fastest QUIC header protection - + AES-128 header protection -AES-128 header protection, rind on nixos: 4 ns, 1.00× the fastest -AES-128 header protection, rind on desktop: 2 ns, 1.00× the fastest -AES-128 header protection, aws-lc-rs on nixos: 6 ns, 1.51× the fastest -AES-128 header protection, aws-lc-rs on desktop: 3 ns, 1.78× the fastest -AES-128 header protection, ring on nixos: 7 ns, 1.67× the fastest -AES-128 header protection, ring on desktop: 3 ns, 1.85× the fastest +AES-128 header protection, rind on nixos: 4 ns, 1.00× the fastest +AES-128 header protection, rind on desktop: 2 ns, 1.00× the fastest +AES-128 header protection, rind on nixos2: 5 ns, 1.00× the fastest +AES-128 header protection, rind on ovh-iad: 7 ns, 1.00× the fastest +AES-128 header protection, rind on ovh-sea: 7 ns, 1.00× the fastest +AES-128 header protection, aws-lc-rs on nixos: 6 ns, 1.45× the fastest +AES-128 header protection, aws-lc-rs on desktop: 3 ns, 1.59× the fastest +AES-128 header protection, aws-lc-rs on nixos2: 9 ns, 1.95× the fastest +AES-128 header protection, aws-lc-rs on ovh-iad: 12 ns, 1.74× the fastest +AES-128 header protection, aws-lc-rs on ovh-sea: 12 ns, 1.64× the fastest +AES-128 header protection, ring on nixos: 7 ns, 1.74× the fastest +AES-128 header protection, ring on desktop: 3 ns, 1.68× the fastest +AES-128 header protection, ring on nixos2: 8 ns, 1.73× the fastest +AES-128 header protection, ring on ovh-iad: 12 ns, 1.74× the fastest +AES-128 header protection, ring on ovh-sea: 12 ns, 1.72× the fastest AES-256 header protection -AES-256 header protection, rind on nixos: 6 ns, 1.00× the fastest -AES-256 header protection, rind on desktop: 2 ns, 1.00× the fastest -AES-256 header protection, aws-lc-rs on nixos: 8 ns, 1.40× the fastest -AES-256 header protection, aws-lc-rs on desktop: 4 ns, 1.64× the fastest -AES-256 header protection, ring on nixos: 9 ns, 1.60× the fastest -AES-256 header protection, ring on desktop: 5 ns, 2.17× the fastest +AES-256 header protection, rind on nixos: 6 ns, 1.00× the fastest +AES-256 header protection, rind on desktop: 2 ns, 1.00× the fastest +AES-256 header protection, rind on nixos2: 8 ns, 1.00× the fastest +AES-256 header protection, rind on ovh-iad: 10 ns, 1.00× the fastest +AES-256 header protection, rind on ovh-sea: 9 ns, 1.00× the fastest +AES-256 header protection, aws-lc-rs on nixos: 8 ns, 1.32× the fastest +AES-256 header protection, aws-lc-rs on desktop: 5 ns, 2.06× the fastest +AES-256 header protection, aws-lc-rs on nixos2: 10 ns, 1.25× the fastest +AES-256 header protection, aws-lc-rs on ovh-iad: 15 ns, 1.50× the fastest +AES-256 header protection, aws-lc-rs on ovh-sea: 15 ns, 1.57× the fastest +AES-256 header protection, ring on nixos: 10 ns, 1.64× the fastest +AES-256 header protection, ring on desktop: 5 ns, 2.16× the fastest +AES-256 header protection, ring on nixos2: 10 ns, 1.24× the fastest +AES-256 header protection, ring on ovh-iad: 15 ns, 1.49× the fastest +AES-256 header protection, ring on ovh-sea: 15 ns, 1.56× the fastest ChaCha20 header protection -ChaCha20 header protection, rind on nixos: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included -✓ -ChaCha20 header protection, rind on desktop: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included -✓ -ChaCha20 header protection, aws-lc-rs on nixos: 81 ns, 1.34× the fastest -ChaCha20 header protection, aws-lc-rs on desktop: 69 ns, 1.27× the fastest -ChaCha20 header protection, ring on nixos: 75 ns, 1.23× the fastest -ChaCha20 header protection, ring on desktop: 61 ns, 1.14× the fastest +ChaCha20 header protection, rind on nixos: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on desktop: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on nixos2: 84 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on ovh-iad: 128 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on ovh-sea: 123 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, aws-lc-rs on nixos: 82 ns, 1.34× the fastest +ChaCha20 header protection, aws-lc-rs on desktop: 69 ns, 1.28× the fastest +ChaCha20 header protection, aws-lc-rs on nixos2: 104 ns, 1.24× the fastest +ChaCha20 header protection, aws-lc-rs on ovh-iad: 157 ns, 1.22× the fastest +ChaCha20 header protection, aws-lc-rs on ovh-sea: 151 ns, 1.23× the fastest +ChaCha20 header protection, ring on nixos: 74 ns, 1.22× the fastest +ChaCha20 header protection, ring on desktop: 61 ns, 1.14× the fastest +ChaCha20 header protection, ring on nixos2: 98 ns, 1.17× the fastest +ChaCha20 header protection, ring on ovh-iad: 139 ns, 1.09× the fastest +ChaCha20 header protection, ring on ovh-sea: 136 ns, 1.11× the fastest Key agreement - + X25519 -X25519, rind on nixos: 24.80 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, rind on desktop: 17.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, rind on nixos2: 26.86 µs, 1.07× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, aws-lc-rs on nixos: 25.24 µs, 1.02× the fastest -X25519, aws-lc-rs on desktop: 19.14 µs, 1.07× the fastest -X25519, aws-lc-rs on nixos2: 33.12 µs, 1.32× the fastest -X25519, ring on nixos: 47.40 µs, 1.92× the fastest -X25519, ring on desktop: 35.19 µs, 1.96× the fastest -X25519, ring on nixos2: 55.23 µs, 2.19× the fastest -X25519, RustCrypto + dalek on nixos: 53.79 µs, 2.18× the fastest -X25519, RustCrypto + dalek on desktop: 36.03 µs, 2.01× the fastest -X25519, RustCrypto + dalek on nixos2: 60.51 µs, 2.40× the fastest -X25519, graviola on nixos: 24.65 µs, 1.00× the fastest -X25519, graviola on desktop: 18.25 µs, 1.02× the fastest -X25519, graviola on nixos2: 25.17 µs, 1.00× the fastest -X25519, libcrux on nixos: 64.51 µs, 2.62× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, libcrux on desktop: 42.71 µs, 2.38× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, libcrux on nixos2: 73.49 µs, 2.92× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, OpenSSL on nixos: 49.46 µs, 2.01× the fastest -X25519, OpenSSL on desktop: 33.93 µs, 1.89× the fastest -X25519, OpenSSL on nixos2: 55.22 µs, 2.19× the fastest +X25519, rind on nixos: 23.97 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on desktop: 19.68 µs, 1.06× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on nixos2: 25.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on ovh-iad: 50.92 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on ovh-sea: 49.74 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, aws-lc-rs on nixos: 24.61 µs, 1.03× the fastest +X25519, aws-lc-rs on desktop: 19.54 µs, 1.06× the fastest +X25519, aws-lc-rs on nixos2: 30.89 µs, 1.24× the fastest +X25519, aws-lc-rs on ovh-iad: 53.04 µs, 1.04× the fastest +X25519, aws-lc-rs on ovh-sea: 50.78 µs, 1.02× the fastest +X25519, ring on nixos: 46.72 µs, 1.95× the fastest +X25519, ring on desktop: 35.63 µs, 1.93× the fastest +X25519, ring on nixos2: 53.60 µs, 2.15× the fastest +X25519, ring on ovh-iad: 80.26 µs, 1.58× the fastest +X25519, ring on ovh-sea: 75.97 µs, 1.53× the fastest +X25519, RustCrypto + dalek on nixos: 52.09 µs, 2.18× the fastest +X25519, RustCrypto + dalek on desktop: 36.52 µs, 1.97× the fastest +X25519, RustCrypto + dalek on nixos2: 56.59 µs, 2.27× the fastest +X25519, RustCrypto + dalek on ovh-iad: 90.44 µs, 1.78× the fastest +X25519, RustCrypto + dalek on ovh-sea: 89.48 µs, 1.80× the fastest +X25519, graviola on nixos: 23.94 µs, 1.00× the fastest +X25519, graviola on desktop: 18.50 µs, 1.00× the fastest +X25519, graviola on nixos2: 24.95 µs, 1.00× the fastest +X25519, libcrux on nixos: 64.60 µs, 2.70× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on desktop: 43.11 µs, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on nixos2: 72.34 µs, 2.90× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on ovh-iad: 114.24 µs, 2.24× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on ovh-sea: 111.77 µs, 2.25× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, OpenSSL on nixos: 49.70 µs, 2.08× the fastest +X25519, OpenSSL on desktop: 34.02 µs, 1.84× the fastest +X25519, OpenSSL on nixos2: 55.20 µs, 2.21× the fastest +X25519, OpenSSL on ovh-iad: 100.16 µs, 1.97× the fastest +X25519, OpenSSL on ovh-sea: 96.94 µs, 1.95× the fastest P-256 ECDH -P-256 ECDH, rind on nixos: 39.18 µs, 1.00× the fastest -P-256 ECDH, rind on desktop: 29.99 µs, 1.00× the fastest -P-256 ECDH, rind on nixos2: 46.60 µs, 1.00× the fastest -P-256 ECDH, aws-lc-rs on nixos: 41.12 µs, 1.05× the fastest -P-256 ECDH, aws-lc-rs on desktop: 32.02 µs, 1.07× the fastest -P-256 ECDH, aws-lc-rs on nixos2: 56.11 µs, 1.20× the fastest -P-256 ECDH, ring on nixos: 41.79 µs, 1.07× the fastest -P-256 ECDH, ring on desktop: 34.21 µs, 1.14× the fastest -P-256 ECDH, ring on nixos2: 51.77 µs, 1.11× the fastest -P-256 ECDH, RustCrypto + dalek on nixos: 256.63 µs, 6.55× the fastest -P-256 ECDH, RustCrypto + dalek on desktop: 120.66 µs, 4.02× the fastest -P-256 ECDH, RustCrypto + dalek on nixos2: 252.15 µs, 5.41× the fastest -P-256 ECDH, graviola on nixos: 41.91 µs, 1.07× the fastest -P-256 ECDH, graviola on desktop: 32.86 µs, 1.10× the fastest -P-256 ECDH, graviola on nixos2: 50.53 µs, 1.08× the fastest -P-256 ECDH, libcrux on nixos: 246.51 µs, 6.29× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, libcrux on desktop: 168.88 µs, 5.63× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, libcrux on nixos2: 304.85 µs, 6.54× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, OpenSSL on nixos: 68.12 µs, 1.74× the fastest -P-256 ECDH, OpenSSL on desktop: 52.96 µs, 1.77× the fastest -P-256 ECDH, OpenSSL on nixos2: 87.27 µs, 1.87× the fastest +P-256 ECDH, rind on nixos: 42.82 µs, 1.01× the fastest +P-256 ECDH, rind on desktop: 29.85 µs, 1.00× the fastest +P-256 ECDH, rind on nixos2: 42.80 µs, 1.00× the fastest +P-256 ECDH, rind on ovh-iad: 82.02 µs, 1.00× the fastest +P-256 ECDH, rind on ovh-sea: 79.73 µs, 1.00× the fastest +P-256 ECDH, aws-lc-rs on nixos: 42.60 µs, 1.00× the fastest +P-256 ECDH, aws-lc-rs on desktop: 32.27 µs, 1.08× the fastest +P-256 ECDH, aws-lc-rs on nixos2: 51.71 µs, 1.21× the fastest +P-256 ECDH, aws-lc-rs on ovh-iad: 88.08 µs, 1.07× the fastest +P-256 ECDH, aws-lc-rs on ovh-sea: 84.92 µs, 1.07× the fastest +P-256 ECDH, ring on nixos: 46.05 µs, 1.08× the fastest +P-256 ECDH, ring on desktop: 34.14 µs, 1.14× the fastest +P-256 ECDH, ring on nixos2: 47.10 µs, 1.10× the fastest +P-256 ECDH, ring on ovh-iad: 86.79 µs, 1.06× the fastest +P-256 ECDH, ring on ovh-sea: 83.88 µs, 1.05× the fastest +P-256 ECDH, RustCrypto + dalek on nixos: 268.62 µs, 6.31× the fastest +P-256 ECDH, RustCrypto + dalek on desktop: 123.01 µs, 4.12× the fastest +P-256 ECDH, RustCrypto + dalek on nixos2: 233.70 µs, 5.46× the fastest +P-256 ECDH, RustCrypto + dalek on ovh-iad: 393.87 µs, 4.80× the fastest +P-256 ECDH, RustCrypto + dalek on ovh-sea: 361.66 µs, 4.54× the fastest +P-256 ECDH, graviola on nixos: 47.87 µs, 1.12× the fastest +P-256 ECDH, graviola on desktop: 33.46 µs, 1.12× the fastest +P-256 ECDH, graviola on nixos2: 46.44 µs, 1.08× the fastest +P-256 ECDH, libcrux on nixos: 268.70 µs, 6.31× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on desktop: 169.87 µs, 5.69× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on nixos2: 280.52 µs, 6.55× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on ovh-iad: 460.35 µs, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on ovh-sea: 435.47 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, OpenSSL on nixos: 71.25 µs, 1.67× the fastest +P-256 ECDH, OpenSSL on desktop: 52.91 µs, 1.77× the fastest +P-256 ECDH, OpenSSL on nixos2: 81.68 µs, 1.91× the fastest +P-256 ECDH, OpenSSL on ovh-iad: 144.87 µs, 1.77× the fastest +P-256 ECDH, OpenSSL on ovh-sea: 135.67 µs, 1.70× the fastest Signatures - + Ed25519 sign -Ed25519 sign, rind on nixos: 5.79 µs, 1.00× the fastest -Ed25519 sign, rind on desktop: 4.29 µs, 1.00× the fastest -Ed25519 sign, rind on nixos2: 7.09 µs, 1.00× the fastest -Ed25519 sign, aws-lc-rs on nixos: 6.10 µs, 1.05× the fastest -Ed25519 sign, aws-lc-rs on desktop: 4.44 µs, 1.04× the fastest -Ed25519 sign, aws-lc-rs on nixos2: 7.54 µs, 1.06× the fastest -Ed25519 sign, ring on nixos: 17.26 µs, 2.98× the fastest -Ed25519 sign, ring on desktop: 13.30 µs, 3.10× the fastest -Ed25519 sign, ring on nixos2: 22.05 µs, 3.11× the fastest -Ed25519 sign, RustCrypto + dalek on nixos: 13.36 µs, 2.31× the fastest -Ed25519 sign, RustCrypto + dalek on desktop: 9.56 µs, 2.23× the fastest -Ed25519 sign, RustCrypto + dalek on nixos2: 16.08 µs, 2.27× the fastest -Ed25519 sign, graviola on nixos: 5.79 µs, 1.00× the fastest -Ed25519 sign, graviola on desktop: 4.37 µs, 1.02× the fastest -Ed25519 sign, graviola on nixos2: 7.27 µs, 1.03× the fastest -Ed25519 sign, libcrux on nixos: 40.33 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, libcrux on desktop: 29.05 µs, 6.78× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, libcrux on nixos2: 49.67 µs, 7.01× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, OpenSSL on nixos: 23.40 µs, 4.04× the fastest -Ed25519 sign, OpenSSL on desktop: 13.47 µs, 3.14× the fastest -Ed25519 sign, OpenSSL on nixos2: 28.46 µs, 4.02× the fastest +Ed25519 sign, rind on nixos: 5.72 µs, 1.00× the fastest +Ed25519 sign, rind on desktop: 4.15 µs, 1.00× the fastest +Ed25519 sign, rind on nixos2: 7.13 µs, 1.00× the fastest +Ed25519 sign, rind on ovh-iad: 11.89 µs, 1.00× the fastest +Ed25519 sign, rind on ovh-sea: 11.76 µs, 1.00× the fastest +Ed25519 sign, aws-lc-rs on nixos: 6.13 µs, 1.07× the fastest +Ed25519 sign, aws-lc-rs on desktop: 4.56 µs, 1.10× the fastest +Ed25519 sign, aws-lc-rs on nixos2: 7.81 µs, 1.10× the fastest +Ed25519 sign, aws-lc-rs on ovh-iad: 12.66 µs, 1.06× the fastest +Ed25519 sign, aws-lc-rs on ovh-sea: 12.44 µs, 1.06× the fastest +Ed25519 sign, ring on nixos: 17.23 µs, 3.01× the fastest +Ed25519 sign, ring on desktop: 13.14 µs, 3.16× the fastest +Ed25519 sign, ring on nixos2: 22.26 µs, 3.12× the fastest +Ed25519 sign, ring on ovh-iad: 29.88 µs, 2.51× the fastest +Ed25519 sign, ring on ovh-sea: 28.85 µs, 2.45× the fastest +Ed25519 sign, RustCrypto + dalek on nixos: 13.30 µs, 2.33× the fastest +Ed25519 sign, RustCrypto + dalek on desktop: 9.61 µs, 2.31× the fastest +Ed25519 sign, RustCrypto + dalek on nixos2: 17.40 µs, 2.44× the fastest +Ed25519 sign, RustCrypto + dalek on ovh-iad: 23.99 µs, 2.02× the fastest +Ed25519 sign, RustCrypto + dalek on ovh-sea: 23.39 µs, 1.99× the fastest +Ed25519 sign, graviola on nixos: 5.83 µs, 1.02× the fastest +Ed25519 sign, graviola on desktop: 4.39 µs, 1.06× the fastest +Ed25519 sign, graviola on nixos2: 7.22 µs, 1.01× the fastest +Ed25519 sign, libcrux on nixos: 41.37 µs, 7.24× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on desktop: 28.97 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on nixos2: 53.66 µs, 7.52× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on ovh-iad: 74.31 µs, 6.25× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on ovh-sea: 74.60 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, OpenSSL on nixos: 23.38 µs, 4.09× the fastest +Ed25519 sign, OpenSSL on desktop: 13.69 µs, 3.30× the fastest +Ed25519 sign, OpenSSL on nixos2: 31.01 µs, 4.35× the fastest +Ed25519 sign, OpenSSL on ovh-iad: 42.70 µs, 3.59× the fastest +Ed25519 sign, OpenSSL on ovh-sea: 41.54 µs, 3.53× the fastest Ed25519 verify -Ed25519 verify, rind on nixos: 27.18 µs, 1.09× the fastest -Ed25519 verify, rind on desktop: 21.87 µs, 1.01× the fastest -Ed25519 verify, rind on nixos2: 31.59 µs, 1.13× the fastest -Ed25519 verify, aws-lc-rs on nixos: 27.25 µs, 1.09× the fastest -Ed25519 verify, aws-lc-rs on desktop: 21.82 µs, 1.01× the fastest -Ed25519 verify, aws-lc-rs on nixos2: 31.57 µs, 1.13× the fastest -Ed25519 verify, ring on nixos: 34.90 µs, 1.40× the fastest -Ed25519 verify, ring on desktop: 26.51 µs, 1.23× the fastest -Ed25519 verify, ring on nixos2: 41.59 µs, 1.49× the fastest -Ed25519 verify, RustCrypto + dalek on nixos: 24.97 µs, 1.00× the fastest -Ed25519 verify, RustCrypto + dalek on desktop: 22.15 µs, 1.03× the fastest -Ed25519 verify, RustCrypto + dalek on nixos2: 27.88 µs, 1.00× the fastest -Ed25519 verify, graviola on nixos: 27.14 µs, 1.09× the fastest -Ed25519 verify, graviola on desktop: 21.56 µs, 1.00× the fastest -Ed25519 verify, graviola on nixos2: 31.39 µs, 1.13× the fastest -Ed25519 verify, libcrux on nixos: 54.65 µs, 2.19× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, libcrux on desktop: 41.91 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, libcrux on nixos2: 64.33 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, OpenSSL on nixos: 79.44 µs, 3.18× the fastest -Ed25519 verify, OpenSSL on desktop: 45.62 µs, 2.12× the fastest -Ed25519 verify, OpenSSL on nixos2: 93.95 µs, 3.37× the fastest +Ed25519 verify, rind on nixos: 27.15 µs, 1.09× the fastest +Ed25519 verify, rind on desktop: 21.75 µs, 1.01× the fastest +Ed25519 verify, rind on nixos2: 31.81 µs, 1.06× the fastest +Ed25519 verify, rind on ovh-iad: 59.90 µs, 1.25× the fastest +Ed25519 verify, rind on ovh-sea: 58.82 µs, 1.28× the fastest +Ed25519 verify, aws-lc-rs on nixos: 27.03 µs, 1.09× the fastest +Ed25519 verify, aws-lc-rs on desktop: 21.56 µs, 1.00× the fastest +Ed25519 verify, aws-lc-rs on nixos2: 31.62 µs, 1.06× the fastest +Ed25519 verify, aws-lc-rs on ovh-iad: 60.52 µs, 1.27× the fastest +Ed25519 verify, aws-lc-rs on ovh-sea: 57.65 µs, 1.26× the fastest +Ed25519 verify, ring on nixos: 34.76 µs, 1.40× the fastest +Ed25519 verify, ring on desktop: 26.22 µs, 1.22× the fastest +Ed25519 verify, ring on nixos2: 42.48 µs, 1.42× the fastest +Ed25519 verify, ring on ovh-iad: 62.83 µs, 1.32× the fastest +Ed25519 verify, ring on ovh-sea: 60.53 µs, 1.32× the fastest +Ed25519 verify, RustCrypto + dalek on nixos: 24.83 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on desktop: 21.88 µs, 1.02× the fastest +Ed25519 verify, RustCrypto + dalek on nixos2: 29.88 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on ovh-iad: 47.74 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on ovh-sea: 45.94 µs, 1.00× the fastest +Ed25519 verify, graviola on nixos: 27.08 µs, 1.09× the fastest +Ed25519 verify, graviola on desktop: 21.61 µs, 1.00× the fastest +Ed25519 verify, graviola on nixos2: 32.22 µs, 1.08× the fastest +Ed25519 verify, libcrux on nixos: 54.52 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on desktop: 42.16 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on nixos2: 69.12 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on ovh-iad: 97.20 µs, 2.04× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on ovh-sea: 94.85 µs, 2.06× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, OpenSSL on nixos: 79.25 µs, 3.19× the fastest +Ed25519 verify, OpenSSL on desktop: 45.59 µs, 2.11× the fastest +Ed25519 verify, OpenSSL on nixos2: 93.09 µs, 3.12× the fastest +Ed25519 verify, OpenSSL on ovh-iad: 140.19 µs, 2.94× the fastest +Ed25519 verify, OpenSSL on ovh-sea: 136.82 µs, 2.98× the fastest P-256 ECDSA sign -P-256 ECDSA sign, rind on nixos: 8.98 µs, 1.00× the fastest -P-256 ECDSA sign, rind on desktop: 7.08 µs, 1.00× the fastest -P-256 ECDSA sign, rind on nixos2: 15.72 µs, 1.00× the fastest -P-256 ECDSA sign, aws-lc-rs on nixos: 11.96 µs, 1.33× the fastest -P-256 ECDSA sign, aws-lc-rs on desktop: 12.42 µs, 1.75× the fastest -P-256 ECDSA sign, aws-lc-rs on nixos2: 22.35 µs, 1.42× the fastest -P-256 ECDSA sign, ring on nixos: 12.76 µs, 1.42× the fastest -P-256 ECDSA sign, ring on desktop: 12.38 µs, 1.75× the fastest -P-256 ECDSA sign, ring on nixos2: 16.56 µs, 1.05× the fastest -P-256 ECDSA sign, RustCrypto + dalek on nixos: 64.84 µs, 7.22× the fastest -P-256 ECDSA sign, RustCrypto + dalek on desktop: 31.49 µs, 4.45× the fastest -P-256 ECDSA sign, RustCrypto + dalek on nixos2: 78.32 µs, 4.98× the fastest -P-256 ECDSA sign, graviola on nixos: 10.48 µs, 1.17× the fastest -P-256 ECDSA sign, graviola on desktop: 8.81 µs, 1.24× the fastest -P-256 ECDSA sign, graviola on nixos2: 23.27 µs, 1.48× the fastest -P-256 ECDSA sign, libcrux on nixos: 87.54 µs, 9.75× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, libcrux on desktop: 60.93 µs, 8.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, libcrux on nixos2: 115.07 µs, 7.32× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, OpenSSL on nixos: 16.42 µs, 1.83× the fastest -P-256 ECDSA sign, OpenSSL on desktop: 14.37 µs, 2.03× the fastest -P-256 ECDSA sign, OpenSSL on nixos2: 28.83 µs, 1.83× the fastest +P-256 ECDSA sign, rind on nixos: 9.62 µs, 1.00× the fastest +P-256 ECDSA sign, rind on desktop: 6.84 µs, 1.00× the fastest +P-256 ECDSA sign, rind on nixos2: 13.11 µs, 1.00× the fastest +P-256 ECDSA sign, rind on ovh-iad: 23.25 µs, 1.00× the fastest +P-256 ECDSA sign, rind on ovh-sea: 21.44 µs, 1.00× the fastest +P-256 ECDSA sign, aws-lc-rs on nixos: 12.66 µs, 1.32× the fastest +P-256 ECDSA sign, aws-lc-rs on desktop: 12.33 µs, 1.80× the fastest +P-256 ECDSA sign, aws-lc-rs on nixos2: 19.80 µs, 1.51× the fastest +P-256 ECDSA sign, aws-lc-rs on ovh-iad: 25.45 µs, 1.09× the fastest +P-256 ECDSA sign, aws-lc-rs on ovh-sea: 23.66 µs, 1.10× the fastest +P-256 ECDSA sign, ring on nixos: 13.68 µs, 1.42× the fastest +P-256 ECDSA sign, ring on desktop: 12.24 µs, 1.79× the fastest +P-256 ECDSA sign, ring on nixos2: 14.86 µs, 1.13× the fastest +P-256 ECDSA sign, ring on ovh-iad: 26.75 µs, 1.15× the fastest +P-256 ECDSA sign, ring on ovh-sea: 25.02 µs, 1.17× the fastest +P-256 ECDSA sign, RustCrypto + dalek on nixos: 70.62 µs, 7.34× the fastest +P-256 ECDSA sign, RustCrypto + dalek on desktop: 31.65 µs, 4.63× the fastest +P-256 ECDSA sign, RustCrypto + dalek on nixos2: 69.11 µs, 5.27× the fastest +P-256 ECDSA sign, RustCrypto + dalek on ovh-iad: 114.03 µs, 4.91× the fastest +P-256 ECDSA sign, RustCrypto + dalek on ovh-sea: 105.57 µs, 4.92× the fastest +P-256 ECDSA sign, graviola on nixos: 11.49 µs, 1.19× the fastest +P-256 ECDSA sign, graviola on desktop: 9.26 µs, 1.35× the fastest +P-256 ECDSA sign, graviola on nixos2: 19.89 µs, 1.52× the fastest +P-256 ECDSA sign, libcrux on nixos: 95.47 µs, 9.92× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on desktop: 61.34 µs, 8.97× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on nixos2: 102.03 µs, 7.78× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on ovh-iad: 161.25 µs, 6.94× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on ovh-sea: 155.91 µs, 7.27× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, OpenSSL on nixos: 18.04 µs, 1.88× the fastest +P-256 ECDSA sign, OpenSSL on desktop: 14.33 µs, 2.09× the fastest +P-256 ECDSA sign, OpenSSL on nixos2: 20.35 µs, 1.55× the fastest +P-256 ECDSA sign, OpenSSL on ovh-iad: 32.99 µs, 1.42× the fastest +P-256 ECDSA sign, OpenSSL on ovh-sea: 31.72 µs, 1.48× the fastest P-256 ECDSA verify -P-256 ECDSA verify, rind on nixos: 38.23 µs, 1.00× the fastest -P-256 ECDSA verify, rind on desktop: 30.78 µs, 1.01× the fastest -P-256 ECDSA verify, rind on nixos2: 47.33 µs, 1.00× the fastest -P-256 ECDSA verify, aws-lc-rs on nixos: 38.71 µs, 1.01× the fastest -P-256 ECDSA verify, aws-lc-rs on desktop: 30.34 µs, 1.00× the fastest -P-256 ECDSA verify, aws-lc-rs on nixos2: 47.11 µs, 1.00× the fastest -P-256 ECDSA verify, ring on nixos: 39.16 µs, 1.02× the fastest -P-256 ECDSA verify, ring on desktop: 33.20 µs, 1.09× the fastest -P-256 ECDSA verify, ring on nixos2: 47.60 µs, 1.01× the fastest -P-256 ECDSA verify, RustCrypto + dalek on nixos: 217.96 µs, 5.70× the fastest -P-256 ECDSA verify, RustCrypto + dalek on desktop: 102.68 µs, 3.38× the fastest -P-256 ECDSA verify, RustCrypto + dalek on nixos2: 211.46 µs, 4.49× the fastest -P-256 ECDSA verify, graviola on nixos: 40.39 µs, 1.06× the fastest -P-256 ECDSA verify, graviola on desktop: 32.93 µs, 1.09× the fastest -P-256 ECDSA verify, graviola on nixos2: 48.45 µs, 1.03× the fastest -P-256 ECDSA verify, libcrux on nixos: 208.08 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, libcrux on desktop: 146.39 µs, 4.83× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, libcrux on nixos2: 262.54 µs, 5.57× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, OpenSSL on nixos: 57.01 µs, 1.49× the fastest -P-256 ECDSA verify, OpenSSL on desktop: 46.07 µs, 1.52× the fastest -P-256 ECDSA verify, OpenSSL on nixos2: 74.70 µs, 1.59× the fastest +P-256 ECDSA verify, rind on nixos: 39.25 µs, 1.00× the fastest +P-256 ECDSA verify, rind on desktop: 30.95 µs, 1.03× the fastest +P-256 ECDSA verify, rind on nixos2: 41.56 µs, 1.00× the fastest +P-256 ECDSA verify, rind on ovh-iad: 81.07 µs, 1.05× the fastest +P-256 ECDSA verify, rind on ovh-sea: 78.07 µs, 1.03× the fastest +P-256 ECDSA verify, aws-lc-rs on nixos: 40.24 µs, 1.03× the fastest +P-256 ECDSA verify, aws-lc-rs on desktop: 30.08 µs, 1.00× the fastest +P-256 ECDSA verify, aws-lc-rs on nixos2: 43.27 µs, 1.04× the fastest +P-256 ECDSA verify, aws-lc-rs on ovh-iad: 77.55 µs, 1.00× the fastest +P-256 ECDSA verify, aws-lc-rs on ovh-sea: 76.02 µs, 1.00× the fastest +P-256 ECDSA verify, ring on nixos: 41.25 µs, 1.05× the fastest +P-256 ECDSA verify, ring on desktop: 33.74 µs, 1.12× the fastest +P-256 ECDSA verify, ring on nixos2: 43.93 µs, 1.06× the fastest +P-256 ECDSA verify, ring on ovh-iad: 80.47 µs, 1.04× the fastest +P-256 ECDSA verify, ring on ovh-sea: 77.17 µs, 1.02× the fastest +P-256 ECDSA verify, RustCrypto + dalek on nixos: 226.27 µs, 5.77× the fastest +P-256 ECDSA verify, RustCrypto + dalek on desktop: 104.58 µs, 3.48× the fastest +P-256 ECDSA verify, RustCrypto + dalek on nixos2: 197.15 µs, 4.74× the fastest +P-256 ECDSA verify, RustCrypto + dalek on ovh-iad: 316.15 µs, 4.08× the fastest +P-256 ECDSA verify, RustCrypto + dalek on ovh-sea: 304.06 µs, 4.00× the fastest +P-256 ECDSA verify, graviola on nixos: 41.92 µs, 1.07× the fastest +P-256 ECDSA verify, graviola on desktop: 32.89 µs, 1.09× the fastest +P-256 ECDSA verify, graviola on nixos2: 44.30 µs, 1.07× the fastest +P-256 ECDSA verify, libcrux on nixos: 215.83 µs, 5.50× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on desktop: 147.11 µs, 4.89× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on nixos2: 236.87 µs, 5.70× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on ovh-iad: 375.03 µs, 4.84× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on ovh-sea: 365.46 µs, 4.81× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, OpenSSL on nixos: 60.27 µs, 1.54× the fastest +P-256 ECDSA verify, OpenSSL on desktop: 46.41 µs, 1.54× the fastest +P-256 ECDSA verify, OpenSSL on nixos2: 68.34 µs, 1.64× the fastest +P-256 ECDSA verify, OpenSSL on ovh-iad: 124.52 µs, 1.61× the fastest +P-256 ECDSA verify, OpenSSL on ovh-sea: 112.54 µs, 1.48× the fastest Hashes and KDFs - + SHA-256, 64 B -SHA-256, 64 B, rind on nixos: 80 ns, 1.38× the fastest -SHA-256, 64 B, rind on desktop: 56 ns, 1.44× the fastest -SHA-256, 64 B, rind on nixos2: 276 ns, 1.00× the fastest -SHA-256, 64 B, aws-lc-rs on nixos: 101 ns, 1.75× the fastest -SHA-256, 64 B, aws-lc-rs on desktop: 57 ns, 1.46× the fastest -SHA-256, 64 B, aws-lc-rs on nixos2: 313 ns, 1.13× the fastest -SHA-256, 64 B, ring on nixos: 86 ns, 1.48× the fastest -SHA-256, 64 B, ring on desktop: 57 ns, 1.46× the fastest -SHA-256, 64 B, ring on nixos2: 289 ns, 1.05× the fastest -SHA-256, 64 B, RustCrypto + dalek on nixos: 58 ns, 1.00× the fastest -SHA-256, 64 B, RustCrypto + dalek on desktop: 39 ns, 1.00× the fastest -SHA-256, 64 B, RustCrypto + dalek on nixos2: 483 ns, 1.75× the fastest -SHA-256, 64 B, graviola on nixos: 67 ns, 1.17× the fastest -SHA-256, 64 B, graviola on desktop: 40 ns, 1.03× the fastest -SHA-256, 64 B, graviola on nixos2: 579 ns, 2.10× the fastest -SHA-256, 64 B, libcrux on nixos: 355 ns, 6.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, libcrux on desktop: 212 ns, 5.41× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, libcrux on nixos2: 487 ns, 1.76× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, OpenSSL on nixos: 243 ns, 4.20× the fastest -SHA-256, 64 B, OpenSSL on desktop: 157 ns, 4.01× the fastest -SHA-256, 64 B, OpenSSL on nixos2: 514 ns, 1.86× the fastest +SHA-256, 64 B, rind on nixos: 69 ns, 1.17× the fastest +SHA-256, 64 B, rind on desktop: 28 ns, 1.00× the fastest +SHA-256, 64 B, rind on nixos2: 244 ns, 1.00× the fastest +SHA-256, 64 B, rind on ovh-iad: 392 ns, 1.00× the fastest +SHA-256, 64 B, rind on ovh-sea: 381 ns, 1.00× the fastest +SHA-256, 64 B, aws-lc-rs on nixos: 96 ns, 1.63× the fastest +SHA-256, 64 B, aws-lc-rs on desktop: 57 ns, 2.02× the fastest +SHA-256, 64 B, aws-lc-rs on nixos2: 307 ns, 1.26× the fastest +SHA-256, 64 B, aws-lc-rs on ovh-iad: 501 ns, 1.28× the fastest +SHA-256, 64 B, aws-lc-rs on ovh-sea: 479 ns, 1.26× the fastest +SHA-256, 64 B, ring on nixos: 78 ns, 1.34× the fastest +SHA-256, 64 B, ring on desktop: 58 ns, 2.04× the fastest +SHA-256, 64 B, ring on nixos2: 277 ns, 1.13× the fastest +SHA-256, 64 B, ring on ovh-iad: 449 ns, 1.15× the fastest +SHA-256, 64 B, ring on ovh-sea: 425 ns, 1.11× the fastest +SHA-256, 64 B, RustCrypto + dalek on nixos: 59 ns, 1.00× the fastest +SHA-256, 64 B, RustCrypto + dalek on desktop: 40 ns, 1.41× the fastest +SHA-256, 64 B, RustCrypto + dalek on nixos2: 473 ns, 1.94× the fastest +SHA-256, 64 B, RustCrypto + dalek on ovh-iad: 739 ns, 1.89× the fastest +SHA-256, 64 B, RustCrypto + dalek on ovh-sea: 734 ns, 1.92× the fastest +SHA-256, 64 B, graviola on nixos: 67 ns, 1.15× the fastest +SHA-256, 64 B, graviola on desktop: 41 ns, 1.45× the fastest +SHA-256, 64 B, graviola on nixos2: 576 ns, 2.37× the fastest +SHA-256, 64 B, libcrux on nixos: 385 ns, 6.56× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on desktop: 211 ns, 7.50× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on nixos2: 485 ns, 1.99× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on ovh-iad: 773 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on ovh-sea: 751 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, OpenSSL on nixos: 244 ns, 4.15× the fastest +SHA-256, 64 B, OpenSSL on desktop: 161 ns, 5.72× the fastest +SHA-256, 64 B, OpenSSL on nixos2: 505 ns, 2.07× the fastest +SHA-256, 64 B, OpenSSL on ovh-iad: 814 ns, 2.08× the fastest +SHA-256, 64 B, OpenSSL on ovh-sea: 792 ns, 2.08× the fastest SHA-256, 1350 B -SHA-256, 1350 B, rind on nixos: 653 ns, 1.03× the fastest -SHA-256, 1350 B, rind on desktop: 298 ns, 1.02× the fastest -SHA-256, 1350 B, rind on nixos2: 2.88 µs, 1.07× the fastest -SHA-256, 1350 B, aws-lc-rs on nixos: 669 ns, 1.06× the fastest -SHA-256, 1350 B, aws-lc-rs on desktop: 311 ns, 1.07× the fastest -SHA-256, 1350 B, aws-lc-rs on nixos2: 2.98 µs, 1.11× the fastest -SHA-256, 1350 B, ring on nixos: 662 ns, 1.05× the fastest -SHA-256, 1350 B, ring on desktop: 299 ns, 1.03× the fastest -SHA-256, 1350 B, ring on nixos2: 2.83 µs, 1.05× the fastest -SHA-256, 1350 B, RustCrypto + dalek on nixos: 631 ns, 1.00× the fastest -SHA-256, 1350 B, RustCrypto + dalek on desktop: 292 ns, 1.00× the fastest -SHA-256, 1350 B, RustCrypto + dalek on nixos2: 5.33 µs, 1.98× the fastest -SHA-256, 1350 B, graviola on nixos: 642 ns, 1.02× the fastest -SHA-256, 1350 B, graviola on desktop: 298 ns, 1.02× the fastest -SHA-256, 1350 B, graviola on nixos2: 6.11 µs, 2.27× the fastest -SHA-256, 1350 B, libcrux on nixos: 3.77 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, libcrux on desktop: 2.30 µs, 7.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, libcrux on nixos2: 5.27 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, OpenSSL on nixos: 827 ns, 1.31× the fastest -SHA-256, 1350 B, OpenSSL on desktop: 412 ns, 1.41× the fastest -SHA-256, 1350 B, OpenSSL on nixos2: 2.69 µs, 1.00× the fastest +SHA-256, 1350 B, rind on nixos: 620 ns, 1.00× the fastest +SHA-256, 1350 B, rind on desktop: 279 ns, 1.00× the fastest +SHA-256, 1350 B, rind on nixos2: 2.46 µs, 1.00× the fastest +SHA-256, 1350 B, rind on ovh-iad: 4.04 µs, 1.00× the fastest +SHA-256, 1350 B, rind on ovh-sea: 3.82 µs, 1.00× the fastest +SHA-256, 1350 B, aws-lc-rs on nixos: 740 ns, 1.20× the fastest +SHA-256, 1350 B, aws-lc-rs on desktop: 312 ns, 1.12× the fastest +SHA-256, 1350 B, aws-lc-rs on nixos2: 2.79 µs, 1.14× the fastest +SHA-256, 1350 B, aws-lc-rs on ovh-iad: 4.38 µs, 1.08× the fastest +SHA-256, 1350 B, aws-lc-rs on ovh-sea: 4.30 µs, 1.13× the fastest +SHA-256, 1350 B, ring on nixos: 637 ns, 1.03× the fastest +SHA-256, 1350 B, ring on desktop: 304 ns, 1.09× the fastest +SHA-256, 1350 B, ring on nixos2: 2.82 µs, 1.15× the fastest +SHA-256, 1350 B, ring on ovh-iad: 4.36 µs, 1.08× the fastest +SHA-256, 1350 B, ring on ovh-sea: 4.27 µs, 1.12× the fastest +SHA-256, 1350 B, RustCrypto + dalek on nixos: 618 ns, 1.00× the fastest +SHA-256, 1350 B, RustCrypto + dalek on desktop: 296 ns, 1.06× the fastest +SHA-256, 1350 B, RustCrypto + dalek on nixos2: 5.11 µs, 2.08× the fastest +SHA-256, 1350 B, RustCrypto + dalek on ovh-iad: 8.11 µs, 2.01× the fastest +SHA-256, 1350 B, RustCrypto + dalek on ovh-sea: 7.80 µs, 2.04× the fastest +SHA-256, 1350 B, graviola on nixos: 637 ns, 1.03× the fastest +SHA-256, 1350 B, graviola on desktop: 297 ns, 1.06× the fastest +SHA-256, 1350 B, graviola on nixos2: 6.07 µs, 2.47× the fastest +SHA-256, 1350 B, libcrux on nixos: 3.71 µs, 6.00× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on desktop: 2.31 µs, 8.25× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on nixos2: 5.23 µs, 2.13× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on ovh-iad: 8.52 µs, 2.11× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on ovh-sea: 8.29 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, OpenSSL on nixos: 815 ns, 1.32× the fastest +SHA-256, 1350 B, OpenSSL on desktop: 415 ns, 1.48× the fastest +SHA-256, 1350 B, OpenSSL on nixos2: 2.68 µs, 1.09× the fastest +SHA-256, 1350 B, OpenSSL on ovh-iad: 4.48 µs, 1.11× the fastest +SHA-256, 1350 B, OpenSSL on ovh-sea: 4.16 µs, 1.09× the fastest SHA-256, 16 KB -SHA-256, 16 KB, rind on nixos: 7.24 µs, 1.00× the fastest -SHA-256, 16 KB, rind on desktop: 3.21 µs, 1.00× the fastest -SHA-256, 16 KB, rind on nixos2: 31.57 µs, 1.11× the fastest -SHA-256, 16 KB, aws-lc-rs on nixos: 7.38 µs, 1.02× the fastest -SHA-256, 16 KB, aws-lc-rs on desktop: 3.23 µs, 1.00× the fastest -SHA-256, 16 KB, aws-lc-rs on nixos2: 31.63 µs, 1.12× the fastest -SHA-256, 16 KB, ring on nixos: 7.40 µs, 1.02× the fastest -SHA-256, 16 KB, ring on desktop: 3.22 µs, 1.00× the fastest -SHA-256, 16 KB, ring on nixos2: 31.56 µs, 1.11× the fastest -SHA-256, 16 KB, RustCrypto + dalek on nixos: 7.32 µs, 1.01× the fastest -SHA-256, 16 KB, RustCrypto + dalek on desktop: 3.21 µs, 1.00× the fastest -SHA-256, 16 KB, RustCrypto + dalek on nixos2: 58.88 µs, 2.08× the fastest -SHA-256, 16 KB, graviola on nixos: 7.31 µs, 1.01× the fastest -SHA-256, 16 KB, graviola on desktop: 3.22 µs, 1.00× the fastest -SHA-256, 16 KB, graviola on nixos2: 69.99 µs, 2.47× the fastest -SHA-256, 16 KB, libcrux on nixos: 45.19 µs, 6.24× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, libcrux on desktop: 26.37 µs, 8.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, libcrux on nixos2: 61.29 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, OpenSSL on nixos: 7.52 µs, 1.04× the fastest -SHA-256, 16 KB, OpenSSL on desktop: 3.38 µs, 1.05× the fastest -SHA-256, 16 KB, OpenSSL on nixos2: 28.35 µs, 1.00× the fastest +SHA-256, 16 KB, rind on nixos: 6.86 µs, 1.00× the fastest +SHA-256, 16 KB, rind on desktop: 3.24 µs, 1.00× the fastest +SHA-256, 16 KB, rind on nixos2: 28.06 µs, 1.00× the fastest +SHA-256, 16 KB, rind on ovh-iad: 44.12 µs, 1.00× the fastest +SHA-256, 16 KB, rind on ovh-sea: 43.31 µs, 1.00× the fastest +SHA-256, 16 KB, aws-lc-rs on nixos: 6.88 µs, 1.00× the fastest +SHA-256, 16 KB, aws-lc-rs on desktop: 3.28 µs, 1.01× the fastest +SHA-256, 16 KB, aws-lc-rs on nixos2: 31.46 µs, 1.12× the fastest +SHA-256, 16 KB, aws-lc-rs on ovh-iad: 51.22 µs, 1.16× the fastest +SHA-256, 16 KB, aws-lc-rs on ovh-sea: 48.32 µs, 1.12× the fastest +SHA-256, 16 KB, ring on nixos: 6.97 µs, 1.01× the fastest +SHA-256, 16 KB, ring on desktop: 3.28 µs, 1.01× the fastest +SHA-256, 16 KB, ring on nixos2: 32.37 µs, 1.15× the fastest +SHA-256, 16 KB, ring on ovh-iad: 55.38 µs, 1.26× the fastest +SHA-256, 16 KB, ring on ovh-sea: 48.73 µs, 1.13× the fastest +SHA-256, 16 KB, RustCrypto + dalek on nixos: 7.22 µs, 1.05× the fastest +SHA-256, 16 KB, RustCrypto + dalek on desktop: 3.26 µs, 1.01× the fastest +SHA-256, 16 KB, RustCrypto + dalek on nixos2: 58.17 µs, 2.07× the fastest +SHA-256, 16 KB, RustCrypto + dalek on ovh-iad: 93.62 µs, 2.12× the fastest +SHA-256, 16 KB, RustCrypto + dalek on ovh-sea: 89.76 µs, 2.07× the fastest +SHA-256, 16 KB, graviola on nixos: 7.08 µs, 1.03× the fastest +SHA-256, 16 KB, graviola on desktop: 3.27 µs, 1.01× the fastest +SHA-256, 16 KB, graviola on nixos2: 69.84 µs, 2.49× the fastest +SHA-256, 16 KB, libcrux on nixos: 43.12 µs, 6.28× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on desktop: 26.81 µs, 8.27× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on nixos2: 61.68 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on ovh-iad: 97.65 µs, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on ovh-sea: 94.03 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, OpenSSL on nixos: 7.37 µs, 1.07× the fastest +SHA-256, 16 KB, OpenSSL on desktop: 3.39 µs, 1.05× the fastest +SHA-256, 16 KB, OpenSSL on nixos2: 28.83 µs, 1.03× the fastest +SHA-256, 16 KB, OpenSSL on ovh-iad: 45.31 µs, 1.03× the fastest +SHA-256, 16 KB, OpenSSL on ovh-sea: 43.45 µs, 1.00× the fastest SHA-512, 64 B -SHA-512, 64 B, rind on nixos: 195 ns, 1.05× the fastest -SHA-512, 64 B, rind on desktop: 132 ns, 1.05× the fastest -SHA-512, 64 B, rind on nixos2: 200 ns, 1.00× the fastest -SHA-512, 64 B, aws-lc-rs on nixos: 233 ns, 1.26× the fastest -SHA-512, 64 B, aws-lc-rs on desktop: 133 ns, 1.06× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 64 B, aws-lc-rs on nixos2: 233 ns, 1.17× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 64 B, ring on nixos: 202 ns, 1.09× the fastest -SHA-512, 64 B, ring on desktop: 139 ns, 1.11× the fastest -SHA-512, 64 B, ring on nixos2: 204 ns, 1.02× the fastest -SHA-512, 64 B, RustCrypto + dalek on nixos: 203 ns, 1.10× the fastest -SHA-512, 64 B, RustCrypto + dalek on desktop: 125 ns, 1.00× the fastest -SHA-512, 64 B, RustCrypto + dalek on nixos2: 272 ns, 1.36× the fastest -SHA-512, 64 B, graviola on nixos: 185 ns, 1.00× the fastest -SHA-512, 64 B, graviola on desktop: 146 ns, 1.17× the fastest -SHA-512, 64 B, graviola on nixos2: 237 ns, 1.18× the fastest -SHA-512, 64 B, libcrux on nixos: 268 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, libcrux on desktop: 163 ns, 1.30× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, libcrux on nixos2: 290 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, OpenSSL on nixos: 390 ns, 2.11× the fastest -SHA-512, 64 B, OpenSSL on desktop: 227 ns, 1.81× the fastest -SHA-512, 64 B, OpenSSL on nixos2: 436 ns, 2.18× the fastest +SHA-512, 64 B, rind on nixos: 138 ns, 1.00× the fastest +SHA-512, 64 B, rind on desktop: 60 ns, 1.00× the fastest +SHA-512, 64 B, rind on nixos2: 198 ns, 1.00× the fastest +SHA-512, 64 B, rind on ovh-iad: 312 ns, 1.00× the fastest +SHA-512, 64 B, rind on ovh-sea: 310 ns, 1.00× the fastest +SHA-512, 64 B, aws-lc-rs on nixos: 224 ns, 1.62× the fastest +SHA-512, 64 B, aws-lc-rs on desktop: 136 ns, 2.27× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on nixos2: 228 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on ovh-iad: 373 ns, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on ovh-sea: 357 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, ring on nixos: 198 ns, 1.43× the fastest +SHA-512, 64 B, ring on desktop: 142 ns, 2.36× the fastest +SHA-512, 64 B, ring on nixos2: 203 ns, 1.02× the fastest +SHA-512, 64 B, ring on ovh-iad: 328 ns, 1.05× the fastest +SHA-512, 64 B, ring on ovh-sea: 312 ns, 1.01× the fastest +SHA-512, 64 B, RustCrypto + dalek on nixos: 192 ns, 1.39× the fastest +SHA-512, 64 B, RustCrypto + dalek on desktop: 120 ns, 1.99× the fastest +SHA-512, 64 B, RustCrypto + dalek on nixos2: 270 ns, 1.36× the fastest +SHA-512, 64 B, RustCrypto + dalek on ovh-iad: 432 ns, 1.38× the fastest +SHA-512, 64 B, RustCrypto + dalek on ovh-sea: 418 ns, 1.35× the fastest +SHA-512, 64 B, graviola on nixos: 206 ns, 1.49× the fastest +SHA-512, 64 B, graviola on desktop: 150 ns, 2.49× the fastest +SHA-512, 64 B, graviola on nixos2: 236 ns, 1.19× the fastest +SHA-512, 64 B, libcrux on nixos: 246 ns, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on desktop: 167 ns, 2.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on nixos2: 289 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on ovh-iad: 489 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on ovh-sea: 448 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, OpenSSL on nixos: 355 ns, 2.57× the fastest +SHA-512, 64 B, OpenSSL on desktop: 233 ns, 3.87× the fastest +SHA-512, 64 B, OpenSSL on nixos2: 430 ns, 2.17× the fastest +SHA-512, 64 B, OpenSSL on ovh-iad: 771 ns, 2.47× the fastest +SHA-512, 64 B, OpenSSL on ovh-sea: 671 ns, 2.16× the fastest SHA-512, 1350 B -SHA-512, 1350 B, rind on nixos: 2.75 µs, 1.83× the fastest -SHA-512, 1350 B, rind on desktop: 1.23 µs, 1.05× the fastest -SHA-512, 1350 B, rind on nixos2: 1.95 µs, 1.01× the fastest -SHA-512, 1350 B, aws-lc-rs on nixos: 2.31 µs, 1.54× the fastest -SHA-512, 1350 B, aws-lc-rs on desktop: 1.26 µs, 1.08× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 1350 B, aws-lc-rs on nixos2: 1.98 µs, 1.03× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 1350 B, ring on nixos: 1.97 µs, 1.31× the fastest -SHA-512, 1350 B, ring on desktop: 1.26 µs, 1.07× the fastest -SHA-512, 1350 B, ring on nixos2: 1.95 µs, 1.01× the fastest -SHA-512, 1350 B, RustCrypto + dalek on nixos: 2.66 µs, 1.77× the fastest -SHA-512, 1350 B, RustCrypto + dalek on desktop: 1.17 µs, 1.00× the fastest -SHA-512, 1350 B, RustCrypto + dalek on nixos2: 2.68 µs, 1.40× the fastest -SHA-512, 1350 B, graviola on nixos: 1.96 µs, 1.30× the fastest -SHA-512, 1350 B, graviola on desktop: 1.50 µs, 1.28× the fastest -SHA-512, 1350 B, graviola on nixos2: 2.35 µs, 1.22× the fastest -SHA-512, 1350 B, libcrux on nixos: 2.80 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, libcrux on desktop: 1.72 µs, 1.47× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, libcrux on nixos2: 3.08 µs, 1.60× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, OpenSSL on nixos: 1.50 µs, 1.00× the fastest -SHA-512, 1350 B, OpenSSL on desktop: 1.19 µs, 1.02× the fastest -SHA-512, 1350 B, OpenSSL on nixos2: 1.92 µs, 1.00× the fastest +SHA-512, 1350 B, rind on nixos: 1.77 µs, 1.01× the fastest +SHA-512, 1350 B, rind on desktop: 470 ns, 1.00× the fastest +SHA-512, 1350 B, rind on nixos2: 1.65 µs, 1.00× the fastest +SHA-512, 1350 B, rind on ovh-iad: 2.70 µs, 1.00× the fastest +SHA-512, 1350 B, rind on ovh-sea: 2.61 µs, 1.00× the fastest +SHA-512, 1350 B, aws-lc-rs on nixos: 1.90 µs, 1.08× the fastest +SHA-512, 1350 B, aws-lc-rs on desktop: 1.27 µs, 2.69× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on nixos2: 1.97 µs, 1.19× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on ovh-iad: 3.11 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on ovh-sea: 2.99 µs, 1.14× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, ring on nixos: 1.87 µs, 1.06× the fastest +SHA-512, 1350 B, ring on desktop: 1.26 µs, 2.69× the fastest +SHA-512, 1350 B, ring on nixos2: 1.93 µs, 1.17× the fastest +SHA-512, 1350 B, ring on ovh-iad: 3.30 µs, 1.22× the fastest +SHA-512, 1350 B, ring on ovh-sea: 2.93 µs, 1.12× the fastest +SHA-512, 1350 B, RustCrypto + dalek on nixos: 1.92 µs, 1.09× the fastest +SHA-512, 1350 B, RustCrypto + dalek on desktop: 1.18 µs, 2.50× the fastest +SHA-512, 1350 B, RustCrypto + dalek on nixos2: 2.67 µs, 1.61× the fastest +SHA-512, 1350 B, RustCrypto + dalek on ovh-iad: 4.38 µs, 1.62× the fastest +SHA-512, 1350 B, RustCrypto + dalek on ovh-sea: 4.17 µs, 1.60× the fastest +SHA-512, 1350 B, graviola on nixos: 1.98 µs, 1.13× the fastest +SHA-512, 1350 B, graviola on desktop: 1.51 µs, 3.21× the fastest +SHA-512, 1350 B, graviola on nixos2: 2.35 µs, 1.42× the fastest +SHA-512, 1350 B, libcrux on nixos: 2.94 µs, 1.67× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on desktop: 1.69 µs, 3.59× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on nixos2: 3.08 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on ovh-iad: 4.98 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on ovh-sea: 4.74 µs, 1.82× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, OpenSSL on nixos: 1.76 µs, 1.00× the fastest +SHA-512, 1350 B, OpenSSL on desktop: 1.20 µs, 2.55× the fastest +SHA-512, 1350 B, OpenSSL on nixos2: 1.90 µs, 1.15× the fastest +SHA-512, 1350 B, OpenSSL on ovh-iad: 3.06 µs, 1.13× the fastest +SHA-512, 1350 B, OpenSSL on ovh-sea: 2.96 µs, 1.13× the fastest SHA-512, 16 KB -SHA-512, 16 KB, rind on nixos: 20.37 µs, 1.37× the fastest -SHA-512, 16 KB, rind on desktop: 14.31 µs, 1.16× the fastest -SHA-512, 16 KB, rind on nixos2: 21.82 µs, 1.15× the fastest -SHA-512, 16 KB, aws-lc-rs on nixos: 20.45 µs, 1.38× the fastest -SHA-512, 16 KB, aws-lc-rs on desktop: 14.09 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 16 KB, aws-lc-rs on nixos2: 21.95 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 16 KB, ring on nixos: 20.63 µs, 1.39× the fastest -SHA-512, 16 KB, ring on desktop: 14.09 µs, 1.15× the fastest -SHA-512, 16 KB, ring on nixos2: 22.31 µs, 1.17× the fastest -SHA-512, 16 KB, RustCrypto + dalek on nixos: 20.78 µs, 1.40× the fastest -SHA-512, 16 KB, RustCrypto + dalek on desktop: 13.36 µs, 1.09× the fastest -SHA-512, 16 KB, RustCrypto + dalek on nixos2: 31.08 µs, 1.63× the fastest -SHA-512, 16 KB, graviola on nixos: 21.56 µs, 1.45× the fastest -SHA-512, 16 KB, graviola on desktop: 17.62 µs, 1.43× the fastest -SHA-512, 16 KB, graviola on nixos2: 27.35 µs, 1.44× the fastest -SHA-512, 16 KB, libcrux on nixos: 29.02 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, libcrux on desktop: 19.80 µs, 1.61× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, libcrux on nixos2: 35.63 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, OpenSSL on nixos: 14.83 µs, 1.00× the fastest -SHA-512, 16 KB, OpenSSL on desktop: 12.30 µs, 1.00× the fastest -SHA-512, 16 KB, OpenSSL on nixos2: 19.04 µs, 1.00× the fastest +SHA-512, 16 KB, rind on nixos: 16.28 µs, 1.07× the fastest +SHA-512, 16 KB, rind on desktop: 2.68 µs, 1.00× the fastest +SHA-512, 16 KB, rind on nixos2: 18.53 µs, 1.00× the fastest +SHA-512, 16 KB, rind on ovh-iad: 30.70 µs, 1.00× the fastest +SHA-512, 16 KB, rind on ovh-sea: 28.35 µs, 1.00× the fastest +SHA-512, 16 KB, aws-lc-rs on nixos: 25.17 µs, 1.66× the fastest +SHA-512, 16 KB, aws-lc-rs on desktop: 14.32 µs, 5.34× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on nixos2: 21.92 µs, 1.18× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on ovh-iad: 35.44 µs, 1.16× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on ovh-sea: 33.98 µs, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, ring on nixos: 25.38 µs, 1.68× the fastest +SHA-512, 16 KB, ring on desktop: 14.36 µs, 5.35× the fastest +SHA-512, 16 KB, ring on nixos2: 21.75 µs, 1.17× the fastest +SHA-512, 16 KB, ring on ovh-iad: 34.66 µs, 1.13× the fastest +SHA-512, 16 KB, ring on ovh-sea: 33.85 µs, 1.19× the fastest +SHA-512, 16 KB, RustCrypto + dalek on nixos: 24.12 µs, 1.59× the fastest +SHA-512, 16 KB, RustCrypto + dalek on desktop: 13.55 µs, 5.05× the fastest +SHA-512, 16 KB, RustCrypto + dalek on nixos2: 30.73 µs, 1.66× the fastest +SHA-512, 16 KB, RustCrypto + dalek on ovh-iad: 50.00 µs, 1.63× the fastest +SHA-512, 16 KB, RustCrypto + dalek on ovh-sea: 47.68 µs, 1.68× the fastest +SHA-512, 16 KB, graviola on nixos: 21.04 µs, 1.39× the fastest +SHA-512, 16 KB, graviola on desktop: 17.96 µs, 6.70× the fastest +SHA-512, 16 KB, graviola on nixos2: 27.16 µs, 1.47× the fastest +SHA-512, 16 KB, libcrux on nixos: 29.75 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on desktop: 20.01 µs, 7.46× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on nixos2: 35.45 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on ovh-iad: 56.95 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on ovh-sea: 55.08 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, OpenSSL on nixos: 15.14 µs, 1.00× the fastest +SHA-512, 16 KB, OpenSSL on desktop: 12.51 µs, 4.66× the fastest +SHA-512, 16 KB, OpenSSL on nixos2: 18.99 µs, 1.02× the fastest +SHA-512, 16 KB, OpenSSL on ovh-iad: 30.66 µs, 1.00× the fastest +SHA-512, 16 KB, OpenSSL on ovh-sea: 29.86 µs, 1.05× the fastest HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind on nixos: 153 ns, 1.00× the fastest -HMAC-SHA256, 64 B, rind on desktop: 87 ns, 1.00× the fastest -HMAC-SHA256, 64 B, rind on nixos2: 690 ns, 1.00× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on nixos: 263 ns, 1.72× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on desktop: 177 ns, 2.03× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on nixos2: 840 ns, 1.22× the fastest -HMAC-SHA256, 64 B, ring on nixos: 214 ns, 1.39× the fastest -HMAC-SHA256, 64 B, ring on desktop: 143 ns, 1.64× the fastest -HMAC-SHA256, 64 B, ring on nixos2: 746 ns, 1.08× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on nixos: 155 ns, 1.01× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on desktop: 103 ns, 1.18× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on nixos2: 1.25 µs, 1.81× the fastest -HMAC-SHA256, 64 B, graviola on nixos: 170 ns, 1.11× the fastest -HMAC-SHA256, 64 B, graviola on desktop: 109 ns, 1.26× the fastest -HMAC-SHA256, 64 B, graviola on nixos2: 1.47 µs, 2.12× the fastest -HMAC-SHA256, 64 B, libcrux on nixos: 823 ns, 5.37× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, libcrux on desktop: 547 ns, 6.27× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, libcrux on nixos2: 1.22 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, OpenSSL on nixos: 2.49 µs, 16.24× the fastest -HMAC-SHA256, 64 B, OpenSSL on desktop: 1.54 µs, 17.65× the fastest -HMAC-SHA256, 64 B, OpenSSL on nixos2: 3.90 µs, 5.65× the fastest +HMAC-SHA256, 64 B, rind on nixos: 147 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on desktop: 75 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on nixos2: 628 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on ovh-iad: 1.01 µs, 1.00× the fastest +HMAC-SHA256, 64 B, rind on ovh-sea: 964 ns, 1.00× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on nixos: 264 ns, 1.80× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on desktop: 180 ns, 2.38× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on nixos2: 811 ns, 1.29× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on ovh-iad: 1.31 µs, 1.29× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on ovh-sea: 1.25 µs, 1.30× the fastest +HMAC-SHA256, 64 B, ring on nixos: 214 ns, 1.45× the fastest +HMAC-SHA256, 64 B, ring on desktop: 145 ns, 1.93× the fastest +HMAC-SHA256, 64 B, ring on nixos2: 707 ns, 1.13× the fastest +HMAC-SHA256, 64 B, ring on ovh-iad: 1.11 µs, 1.10× the fastest +HMAC-SHA256, 64 B, ring on ovh-sea: 1.11 µs, 1.15× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on nixos: 155 ns, 1.06× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on desktop: 104 ns, 1.39× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on nixos2: 1.19 µs, 1.89× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on ovh-iad: 1.94 µs, 1.92× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on ovh-sea: 1.84 µs, 1.91× the fastest +HMAC-SHA256, 64 B, graviola on nixos: 172 ns, 1.17× the fastest +HMAC-SHA256, 64 B, graviola on desktop: 115 ns, 1.52× the fastest +HMAC-SHA256, 64 B, graviola on nixos2: 1.44 µs, 2.30× the fastest +HMAC-SHA256, 64 B, libcrux on nixos: 851 ns, 5.79× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on desktop: 536 ns, 7.12× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on nixos2: 1.20 µs, 1.92× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on ovh-iad: 1.93 µs, 1.90× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on ovh-sea: 1.85 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, OpenSSL on nixos: 2.57 µs, 17.50× the fastest +HMAC-SHA256, 64 B, OpenSSL on desktop: 1.56 µs, 20.76× the fastest +HMAC-SHA256, 64 B, OpenSSL on nixos2: 3.69 µs, 5.88× the fastest +HMAC-SHA256, 64 B, OpenSSL on ovh-iad: 6.01 µs, 5.94× the fastest +HMAC-SHA256, 64 B, OpenSSL on ovh-sea: 5.65 µs, 5.86× the fastest HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind on nixos: 678 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, rind on desktop: 340 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, rind on nixos2: 3.29 µs, 1.00× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on nixos: 794 ns, 1.17× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on desktop: 433 ns, 1.27× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on nixos2: 3.49 µs, 1.06× the fastest -HMAC-SHA256, 1350 B, ring on nixos: 749 ns, 1.11× the fastest -HMAC-SHA256, 1350 B, ring on desktop: 396 ns, 1.16× the fastest -HMAC-SHA256, 1350 B, ring on nixos2: 3.39 µs, 1.03× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos: 681 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on desktop: 355 ns, 1.04× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos2: 6.54 µs, 1.99× the fastest -HMAC-SHA256, 1350 B, graviola on nixos: 696 ns, 1.03× the fastest -HMAC-SHA256, 1350 B, graviola on desktop: 364 ns, 1.07× the fastest -HMAC-SHA256, 1350 B, graviola on nixos2: 7.49 µs, 2.28× the fastest -HMAC-SHA256, 1350 B, libcrux on nixos: 4.05 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, libcrux on desktop: 2.78 µs, 8.18× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, libcrux on nixos2: 7.14 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, OpenSSL on nixos: 3.03 µs, 4.46× the fastest -HMAC-SHA256, 1350 B, OpenSSL on desktop: 1.80 µs, 5.29× the fastest -HMAC-SHA256, 1350 B, OpenSSL on nixos2: 6.24 µs, 1.89× the fastest +HMAC-SHA256, 1350 B, rind on nixos: 692 ns, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on desktop: 327 ns, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on nixos2: 2.79 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on ovh-iad: 4.40 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on ovh-sea: 4.33 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on nixos: 853 ns, 1.23× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on desktop: 434 ns, 1.33× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on nixos2: 3.30 µs, 1.18× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on ovh-iad: 5.15 µs, 1.17× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on ovh-sea: 5.01 µs, 1.16× the fastest +HMAC-SHA256, 1350 B, ring on nixos: 791 ns, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on desktop: 399 ns, 1.22× the fastest +HMAC-SHA256, 1350 B, ring on nixos2: 3.19 µs, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on ovh-iad: 5.00 µs, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on ovh-sea: 4.88 µs, 1.13× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos: 728 ns, 1.05× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on desktop: 358 ns, 1.09× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos2: 5.80 µs, 2.08× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on ovh-iad: 9.13 µs, 2.08× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on ovh-sea: 8.93 µs, 2.06× the fastest +HMAC-SHA256, 1350 B, graviola on nixos: 731 ns, 1.06× the fastest +HMAC-SHA256, 1350 B, graviola on desktop: 363 ns, 1.11× the fastest +HMAC-SHA256, 1350 B, graviola on nixos2: 7.05 µs, 2.53× the fastest +HMAC-SHA256, 1350 B, libcrux on nixos: 4.39 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on desktop: 2.66 µs, 8.15× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on nixos2: 6.02 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on ovh-iad: 9.50 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on ovh-sea: 9.26 µs, 2.14× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, OpenSSL on nixos: 3.11 µs, 4.50× the fastest +HMAC-SHA256, 1350 B, OpenSSL on desktop: 1.83 µs, 5.60× the fastest +HMAC-SHA256, 1350 B, OpenSSL on nixos2: 5.94 µs, 2.13× the fastest +HMAC-SHA256, 1350 B, OpenSSL on ovh-iad: 9.61 µs, 2.19× the fastest +HMAC-SHA256, 1350 B, OpenSSL on ovh-sea: 9.20 µs, 2.13× the fastest HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind on nixos: 304 ns, 1.00× the fastest -HKDF-SHA256 extract and expand, rind on desktop: 192 ns, 1.00× the fastest -HKDF-SHA256 extract and expand, rind on nixos2: 1.18 µs, 1.00× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on nixos: 376 ns, 1.24× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on desktop: 290 ns, 1.51× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on nixos2: 1.35 µs, 1.14× the fastest -HKDF-SHA256 extract and expand, ring on nixos: 398 ns, 1.31× the fastest -HKDF-SHA256 extract and expand, ring on desktop: 300 ns, 1.56× the fastest -HKDF-SHA256 extract and expand, ring on nixos2: 1.26 µs, 1.07× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos: 310 ns, 1.02× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on desktop: 221 ns, 1.15× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos2: 2.11 µs, 1.79× the fastest -HKDF-SHA256 extract and expand, libcrux on nixos: 1.37 µs, 4.52× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, libcrux on desktop: 971 ns, 5.05× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, libcrux on nixos2: 2.17 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, OpenSSL on nixos: 2.77 µs, 9.12× the fastest -HKDF-SHA256 extract and expand, OpenSSL on desktop: 1.73 µs, 8.99× the fastest -HKDF-SHA256 extract and expand, OpenSSL on nixos2: 4.68 µs, 3.97× the fastest +HKDF-SHA256 extract and expand, rind on nixos: 257 ns, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on desktop: 152 ns, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on nixos2: 1.15 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on ovh-iad: 1.74 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on ovh-sea: 1.71 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on nixos: 369 ns, 1.44× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on desktop: 288 ns, 1.90× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on nixos2: 1.44 µs, 1.25× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on ovh-iad: 2.15 µs, 1.24× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on ovh-sea: 2.07 µs, 1.21× the fastest +HKDF-SHA256 extract and expand, ring on nixos: 399 ns, 1.55× the fastest +HKDF-SHA256 extract and expand, ring on desktop: 305 ns, 2.01× the fastest +HKDF-SHA256 extract and expand, ring on nixos2: 1.31 µs, 1.14× the fastest +HKDF-SHA256 extract and expand, ring on ovh-iad: 1.98 µs, 1.14× the fastest +HKDF-SHA256 extract and expand, ring on ovh-sea: 1.84 µs, 1.07× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos: 309 ns, 1.20× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on desktop: 223 ns, 1.47× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos2: 1.98 µs, 1.72× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on ovh-iad: 3.08 µs, 1.77× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on ovh-sea: 3.02 µs, 1.76× the fastest +HKDF-SHA256 extract and expand, libcrux on nixos: 1.37 µs, 5.34× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on desktop: 965 ns, 6.36× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on nixos2: 2.04 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on ovh-iad: 3.26 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on ovh-sea: 3.05 µs, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, OpenSSL on nixos: 2.72 µs, 10.57× the fastest +HKDF-SHA256 extract and expand, OpenSSL on desktop: 1.76 µs, 11.57× the fastest +HKDF-SHA256 extract and expand, OpenSSL on nixos2: 4.33 µs, 3.76× the fastest +HKDF-SHA256 extract and expand, OpenSSL on ovh-iad: 7.08 µs, 4.07× the fastest +HKDF-SHA256 extract and expand, OpenSSL on ovh-sea: 6.74 µs, 3.93× the fastest HKDF-SHA256 expand -HKDF-SHA256 expand, rind on nixos: 104 ns, 1.01× the fastest -HKDF-SHA256 expand, rind on desktop: 81 ns, 1.00× the fastest -HKDF-SHA256 expand, rind on nixos2: 330 ns, 1.00× the fastest -HKDF-SHA256 expand, aws-lc-rs on nixos: 178 ns, 1.73× the fastest -HKDF-SHA256 expand, aws-lc-rs on desktop: 126 ns, 1.55× the fastest -HKDF-SHA256 expand, aws-lc-rs on nixos2: 673 ns, 2.04× the fastest -HKDF-SHA256 expand, ring on nixos: 142 ns, 1.38× the fastest -HKDF-SHA256 expand, ring on desktop: 120 ns, 1.48× the fastest -HKDF-SHA256 expand, ring on nixos2: 344 ns, 1.04× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on nixos: 103 ns, 1.00× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on desktop: 84 ns, 1.03× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on nixos2: 527 ns, 1.60× the fastest -HKDF-SHA256 expand, libcrux on nixos: 706 ns, 6.88× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, libcrux on desktop: 456 ns, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, libcrux on nixos2: 1.07 µs, 3.23× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, OpenSSL on nixos: 1.96 µs, 19.03× the fastest -HKDF-SHA256 expand, OpenSSL on desktop: 1.24 µs, 15.25× the fastest -HKDF-SHA256 expand, OpenSSL on nixos2: 3.12 µs, 9.45× the fastest +HKDF-SHA256 expand, rind on nixos: 89 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on desktop: 47 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on nixos2: 300 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on ovh-iad: 488 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on ovh-sea: 462 ns, 1.00× the fastest +HKDF-SHA256 expand, aws-lc-rs on nixos: 179 ns, 2.02× the fastest +HKDF-SHA256 expand, aws-lc-rs on desktop: 126 ns, 2.70× the fastest +HKDF-SHA256 expand, aws-lc-rs on nixos2: 636 ns, 2.12× the fastest +HKDF-SHA256 expand, aws-lc-rs on ovh-iad: 1.00 µs, 2.05× the fastest +HKDF-SHA256 expand, aws-lc-rs on ovh-sea: 988 ns, 2.14× the fastest +HKDF-SHA256 expand, ring on nixos: 142 ns, 1.60× the fastest +HKDF-SHA256 expand, ring on desktop: 122 ns, 2.63× the fastest +HKDF-SHA256 expand, ring on nixos2: 337 ns, 1.12× the fastest +HKDF-SHA256 expand, ring on ovh-iad: 526 ns, 1.08× the fastest +HKDF-SHA256 expand, ring on ovh-sea: 509 ns, 1.10× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on nixos: 103 ns, 1.16× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on desktop: 85 ns, 1.83× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on nixos2: 512 ns, 1.71× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on ovh-iad: 792 ns, 1.62× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on ovh-sea: 771 ns, 1.67× the fastest +HKDF-SHA256 expand, libcrux on nixos: 714 ns, 8.06× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on desktop: 484 ns, 10.38× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on nixos2: 1.01 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on ovh-iad: 1.65 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on ovh-sea: 1.58 µs, 3.42× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, OpenSSL on nixos: 2.00 µs, 22.59× the fastest +HKDF-SHA256 expand, OpenSSL on desktop: 1.25 µs, 26.79× the fastest +HKDF-SHA256 expand, OpenSSL on nixos2: 2.87 µs, 9.58× the fastest +HKDF-SHA256 expand, OpenSSL on ovh-iad: 4.55 µs, 9.32× the fastest +HKDF-SHA256 expand, OpenSSL on ovh-sea: 4.47 µs, 9.67× the fastest RSA - + RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind on nixos: 474.44 µs, 1.15× the fastest -RSA-2048 PKCS#1 sign, rind on desktop: 400.25 µs, 1.19× the fastest -RSA-2048 PKCS#1 sign, rind on nixos2: 567.70 µs, 1.28× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on nixos: 435.90 µs, 1.06× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on desktop: 349.67 µs, 1.04× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on nixos2: 454.36 µs, 1.03× the fastest -RSA-2048 PKCS#1 sign, ring on nixos: 423.03 µs, 1.03× the fastest -RSA-2048 PKCS#1 sign, ring on desktop: 336.09 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, ring on nixos2: 442.48 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos: 987.29 µs, 2.40× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on desktop: 592.98 µs, 1.76× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos2: 1.16 ms, 2.62× the fastest -RSA-2048 PKCS#1 sign, graviola on nixos: 411.78 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, graviola on desktop: 341.78 µs, 1.02× the fastest -RSA-2048 PKCS#1 sign, graviola on nixos2: 458.57 µs, 1.04× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on nixos: 437.30 µs, 1.06× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on desktop: 389.03 µs, 1.16× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on nixos2: 471.98 µs, 1.07× the fastest +RSA-2048 PKCS#1 sign, rind on nixos: 523.17 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, rind on desktop: 348.43 µs, 1.02× the fastest +RSA-2048 PKCS#1 sign, rind on nixos2: 447.43 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, rind on ovh-iad: 805.45 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, rind on ovh-sea: 744.79 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on nixos: 532.39 µs, 1.12× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on desktop: 349.47 µs, 1.02× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on nixos2: 448.68 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on ovh-iad: 872.67 µs, 1.08× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on ovh-sea: 767.91 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, ring on nixos: 523.12 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, ring on desktop: 341.11 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, ring on nixos2: 434.47 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, ring on ovh-iad: 1.19 ms, 1.47× the fastest +RSA-2048 PKCS#1 sign, ring on ovh-sea: 1.00 ms, 1.34× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos: 1.26 ms, 2.66× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on desktop: 588.67 µs, 1.73× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos2: 1.14 ms, 2.63× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on ovh-iad: 1.97 ms, 2.45× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on ovh-sea: 1.77 ms, 2.38× the fastest +RSA-2048 PKCS#1 sign, graviola on nixos: 474.44 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, graviola on desktop: 343.91 µs, 1.01× the fastest +RSA-2048 PKCS#1 sign, graviola on nixos2: 445.92 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on nixos: 520.25 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on desktop: 397.72 µs, 1.17× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on nixos2: 453.81 µs, 1.04× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on ovh-iad: 884.01 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on ovh-sea: 786.07 µs, 1.06× the fastest RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind on nixos: 14.79 µs, 1.08× the fastest -RSA-2048 PKCS#1 verify, rind on desktop: 8.99 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, rind on nixos2: 12.97 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on nixos: 13.65 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on desktop: 10.99 µs, 1.22× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on nixos2: 15.81 µs, 1.22× the fastest -RSA-2048 PKCS#1 verify, ring on nixos: 15.38 µs, 1.13× the fastest -RSA-2048 PKCS#1 verify, ring on desktop: 12.56 µs, 1.40× the fastest -RSA-2048 PKCS#1 verify, ring on nixos2: 16.73 µs, 1.29× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos: 50.57 µs, 3.71× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on desktop: 29.03 µs, 3.23× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos2: 58.28 µs, 4.49× the fastest -RSA-2048 PKCS#1 verify, graviola on nixos: 24.70 µs, 1.81× the fastest -RSA-2048 PKCS#1 verify, graviola on desktop: 13.94 µs, 1.55× the fastest -RSA-2048 PKCS#1 verify, graviola on nixos2: 19.61 µs, 1.51× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on nixos: 22.22 µs, 1.63× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on desktop: 15.50 µs, 1.72× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on nixos2: 28.37 µs, 2.19× the fastest +RSA-2048 PKCS#1 verify, rind on nixos: 12.28 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on desktop: 8.97 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on nixos2: 12.88 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on ovh-iad: 31.54 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on ovh-sea: 30.16 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on nixos: 14.60 µs, 1.19× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on desktop: 10.86 µs, 1.21× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on nixos2: 15.88 µs, 1.23× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on ovh-iad: 36.27 µs, 1.15× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on ovh-sea: 34.24 µs, 1.14× the fastest +RSA-2048 PKCS#1 verify, ring on nixos: 16.56 µs, 1.35× the fastest +RSA-2048 PKCS#1 verify, ring on desktop: 12.70 µs, 1.41× the fastest +RSA-2048 PKCS#1 verify, ring on nixos2: 16.51 µs, 1.28× the fastest +RSA-2048 PKCS#1 verify, ring on ovh-iad: 40.64 µs, 1.29× the fastest +RSA-2048 PKCS#1 verify, ring on ovh-sea: 37.78 µs, 1.25× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos: 54.06 µs, 4.40× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on desktop: 29.41 µs, 3.28× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos2: 57.81 µs, 4.49× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on ovh-iad: 94.92 µs, 3.01× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on ovh-sea: 87.58 µs, 2.90× the fastest +RSA-2048 PKCS#1 verify, graviola on nixos: 19.25 µs, 1.57× the fastest +RSA-2048 PKCS#1 verify, graviola on desktop: 14.06 µs, 1.57× the fastest +RSA-2048 PKCS#1 verify, graviola on nixos2: 19.05 µs, 1.48× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on nixos: 23.59 µs, 1.92× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on desktop: 15.59 µs, 1.74× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on nixos2: 24.54 µs, 1.91× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on ovh-iad: 50.88 µs, 1.61× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on ovh-sea: 47.33 µs, 1.57× the fastest RSA-2048 PSS sign -RSA-2048 PSS sign, rind on nixos: 475.37 µs, 1.15× the fastest -RSA-2048 PSS sign, rind on desktop: 393.47 µs, 1.17× the fastest -RSA-2048 PSS sign, rind on nixos2: 576.25 µs, 1.31× the fastest -RSA-2048 PSS sign, aws-lc-rs on nixos: 436.71 µs, 1.06× the fastest -RSA-2048 PSS sign, aws-lc-rs on desktop: 353.37 µs, 1.05× the fastest -RSA-2048 PSS sign, aws-lc-rs on nixos2: 459.05 µs, 1.04× the fastest -RSA-2048 PSS sign, ring on nixos: 424.64 µs, 1.03× the fastest -RSA-2048 PSS sign, ring on desktop: 336.61 µs, 1.00× the fastest -RSA-2048 PSS sign, ring on nixos2: 440.44 µs, 1.00× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on nixos: 995.72 µs, 2.41× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on desktop: 582.39 µs, 1.73× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on nixos2: 1.17 ms, 2.65× the fastest -RSA-2048 PSS sign, graviola on nixos: 413.56 µs, 1.00× the fastest -RSA-2048 PSS sign, graviola on desktop: 336.99 µs, 1.00× the fastest -RSA-2048 PSS sign, graviola on nixos2: 453.66 µs, 1.03× the fastest -RSA-2048 PSS sign, libcrux on nixos: 4.79 ms, 11.59× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, libcrux on desktop: 3.76 ms, 11.16× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, libcrux on nixos2: 7.10 ms, 16.12× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, OpenSSL on nixos: 439.05 µs, 1.06× the fastest -RSA-2048 PSS sign, OpenSSL on desktop: 399.27 µs, 1.19× the fastest -RSA-2048 PSS sign, OpenSSL on nixos2: 481.14 µs, 1.09× the fastest +RSA-2048 PSS sign, rind on nixos: 424.30 µs, 1.00× the fastest +RSA-2048 PSS sign, rind on desktop: 346.52 µs, 1.01× the fastest +RSA-2048 PSS sign, rind on nixos2: 445.92 µs, 1.02× the fastest +RSA-2048 PSS sign, rind on ovh-iad: 785.33 µs, 1.00× the fastest +RSA-2048 PSS sign, rind on ovh-sea: 743.83 µs, 1.00× the fastest +RSA-2048 PSS sign, aws-lc-rs on nixos: 481.00 µs, 1.13× the fastest +RSA-2048 PSS sign, aws-lc-rs on desktop: 350.45 µs, 1.03× the fastest +RSA-2048 PSS sign, aws-lc-rs on nixos2: 461.87 µs, 1.06× the fastest +RSA-2048 PSS sign, aws-lc-rs on ovh-iad: 842.38 µs, 1.07× the fastest +RSA-2048 PSS sign, aws-lc-rs on ovh-sea: 772.63 µs, 1.04× the fastest +RSA-2048 PSS sign, ring on nixos: 471.53 µs, 1.11× the fastest +RSA-2048 PSS sign, ring on desktop: 341.45 µs, 1.00× the fastest +RSA-2048 PSS sign, ring on nixos2: 437.28 µs, 1.00× the fastest +RSA-2048 PSS sign, ring on ovh-iad: 1.13 ms, 1.44× the fastest +RSA-2048 PSS sign, ring on ovh-sea: 993.35 µs, 1.34× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on nixos: 1.06 ms, 2.50× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on desktop: 588.33 µs, 1.72× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on nixos2: 1.15 ms, 2.63× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on ovh-iad: 1.90 ms, 2.42× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on ovh-sea: 1.77 ms, 2.37× the fastest +RSA-2048 PSS sign, graviola on nixos: 448.54 µs, 1.06× the fastest +RSA-2048 PSS sign, graviola on desktop: 342.67 µs, 1.00× the fastest +RSA-2048 PSS sign, graviola on nixos2: 450.24 µs, 1.03× the fastest +RSA-2048 PSS sign, libcrux on nixos: 5.86 ms, 13.81× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on desktop: 4.10 ms, 12.00× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on nixos2: 7.22 ms, 16.51× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on ovh-iad: 11.70 ms, 14.90× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on ovh-sea: 10.71 ms, 14.40× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, OpenSSL on nixos: 474.99 µs, 1.12× the fastest +RSA-2048 PSS sign, OpenSSL on desktop: 395.81 µs, 1.16× the fastest +RSA-2048 PSS sign, OpenSSL on nixos2: 456.55 µs, 1.04× the fastest +RSA-2048 PSS sign, OpenSSL on ovh-iad: 891.02 µs, 1.13× the fastest +RSA-2048 PSS sign, OpenSSL on ovh-sea: 784.77 µs, 1.06× the fastest RSA-2048 PSS verify -RSA-2048 PSS verify, rind on nixos: 11.82 µs, 1.00× the fastest -RSA-2048 PSS verify, rind on desktop: 9.45 µs, 1.00× the fastest -RSA-2048 PSS verify, rind on nixos2: 15.24 µs, 1.00× the fastest -RSA-2048 PSS verify, aws-lc-rs on nixos: 14.33 µs, 1.21× the fastest -RSA-2048 PSS verify, aws-lc-rs on desktop: 11.06 µs, 1.17× the fastest -RSA-2048 PSS verify, aws-lc-rs on nixos2: 18.00 µs, 1.18× the fastest -RSA-2048 PSS verify, ring on nixos: 16.27 µs, 1.38× the fastest -RSA-2048 PSS verify, ring on desktop: 13.17 µs, 1.39× the fastest -RSA-2048 PSS verify, ring on nixos2: 19.36 µs, 1.27× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on nixos: 96.98 µs, 8.20× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on desktop: 35.09 µs, 3.71× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on nixos2: 71.12 µs, 4.67× the fastest -RSA-2048 PSS verify, graviola on nixos: 21.66 µs, 1.83× the fastest -RSA-2048 PSS verify, graviola on desktop: 14.43 µs, 1.53× the fastest -RSA-2048 PSS verify, graviola on nixos2: 22.16 µs, 1.45× the fastest -RSA-2048 PSS verify, libcrux on nixos: 465.38 µs, 39.36× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, libcrux on desktop: 247.95 µs, 26.25× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, libcrux on nixos2: 379.99 µs, 24.94× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, OpenSSL on nixos: 23.36 µs, 1.98× the fastest -RSA-2048 PSS verify, OpenSSL on desktop: 16.29 µs, 1.72× the fastest -RSA-2048 PSS verify, OpenSSL on nixos2: 27.30 µs, 1.79× the fastest +RSA-2048 PSS verify, rind on nixos: 12.67 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on desktop: 9.18 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on nixos2: 14.36 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on ovh-iad: 32.94 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on ovh-sea: 32.49 µs, 1.00× the fastest +RSA-2048 PSS verify, aws-lc-rs on nixos: 15.94 µs, 1.26× the fastest +RSA-2048 PSS verify, aws-lc-rs on desktop: 11.17 µs, 1.22× the fastest +RSA-2048 PSS verify, aws-lc-rs on nixos2: 17.01 µs, 1.18× the fastest +RSA-2048 PSS verify, aws-lc-rs on ovh-iad: 37.98 µs, 1.15× the fastest +RSA-2048 PSS verify, aws-lc-rs on ovh-sea: 35.56 µs, 1.09× the fastest +RSA-2048 PSS verify, ring on nixos: 18.03 µs, 1.42× the fastest +RSA-2048 PSS verify, ring on desktop: 13.31 µs, 1.45× the fastest +RSA-2048 PSS verify, ring on nixos2: 18.22 µs, 1.27× the fastest +RSA-2048 PSS verify, ring on ovh-iad: 41.62 µs, 1.26× the fastest +RSA-2048 PSS verify, ring on ovh-sea: 39.91 µs, 1.23× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on nixos: 64.70 µs, 5.11× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on desktop: 35.62 µs, 3.88× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on nixos2: 70.02 µs, 4.88× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on ovh-iad: 111.34 µs, 3.38× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on ovh-sea: 107.72 µs, 3.32× the fastest +RSA-2048 PSS verify, graviola on nixos: 19.63 µs, 1.55× the fastest +RSA-2048 PSS verify, graviola on desktop: 14.44 µs, 1.57× the fastest +RSA-2048 PSS verify, graviola on nixos2: 21.85 µs, 1.52× the fastest +RSA-2048 PSS verify, libcrux on nixos: 312.23 µs, 24.64× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on desktop: 252.13 µs, 27.46× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on nixos2: 377.87 µs, 26.32× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on ovh-iad: 620.80 µs, 18.84× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on ovh-sea: 582.63 µs, 17.93× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, OpenSSL on nixos: 23.60 µs, 1.86× the fastest +RSA-2048 PSS verify, OpenSSL on desktop: 16.36 µs, 1.78× the fastest +RSA-2048 PSS verify, OpenSSL on nixos2: 27.16 µs, 1.89× the fastest +RSA-2048 PSS verify, OpenSSL on ovh-iad: 55.13 µs, 1.67× the fastest +RSA-2048 PSS verify, OpenSSL on ovh-sea: 51.25 µs, 1.58× the fastest ML-KEM - + ML-KEM-768 key generation -ML-KEM-768 key generation, rind on nixos: 8.05 µs, 1.00× the fastest -ML-KEM-768 key generation, rind on desktop: 6.47 µs, 1.00× the fastest -ML-KEM-768 key generation, rind on nixos2: 12.10 µs, 1.10× the fastest -ML-KEM-768 key generation, aws-lc-rs on nixos: 9.20 µs, 1.14× the fastest -ML-KEM-768 key generation, aws-lc-rs on desktop: 8.18 µs, 1.26× the fastest -ML-KEM-768 key generation, aws-lc-rs on nixos2: 23.32 µs, 2.11× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on nixos: 58.01 µs, 7.20× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on desktop: 40.16 µs, 6.21× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on nixos2: 71.58 µs, 6.48× the fastest -ML-KEM-768 key generation, graviola on nixos: 8.74 µs, 1.09× the fastest -ML-KEM-768 key generation, graviola on desktop: 7.68 µs, 1.19× the fastest -ML-KEM-768 key generation, graviola on nixos2: 11.04 µs, 1.00× the fastest -ML-KEM-768 key generation, libcrux on nixos: 17.51 µs, 2.17× the fastest -ML-KEM-768 key generation, libcrux on desktop: 15.00 µs, 2.32× the fastest -ML-KEM-768 key generation, libcrux on nixos2: 30.74 µs, 2.78× the fastest -ML-KEM-768 key generation, OpenSSL on nixos: 26.11 µs, 3.24× the fastest -ML-KEM-768 key generation, OpenSSL on desktop: 19.58 µs, 3.03× the fastest -ML-KEM-768 key generation, OpenSSL on nixos2: 42.66 µs, 3.86× the fastest +ML-KEM-768 key generation, rind on nixos: 8.43 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on desktop: 6.45 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on nixos2: 10.24 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on ovh-iad: 19.03 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on ovh-sea: 17.40 µs, 1.00× the fastest +ML-KEM-768 key generation, aws-lc-rs on nixos: 9.41 µs, 1.12× the fastest +ML-KEM-768 key generation, aws-lc-rs on desktop: 8.27 µs, 1.28× the fastest +ML-KEM-768 key generation, aws-lc-rs on nixos2: 18.44 µs, 1.80× the fastest +ML-KEM-768 key generation, aws-lc-rs on ovh-iad: 24.20 µs, 1.27× the fastest +ML-KEM-768 key generation, aws-lc-rs on ovh-sea: 23.24 µs, 1.34× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on nixos: 60.18 µs, 7.14× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on desktop: 40.26 µs, 6.24× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on nixos2: 59.97 µs, 5.86× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on ovh-iad: 99.32 µs, 5.22× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on ovh-sea: 92.15 µs, 5.30× the fastest +ML-KEM-768 key generation, graviola on nixos: 9.28 µs, 1.10× the fastest +ML-KEM-768 key generation, graviola on desktop: 7.67 µs, 1.19× the fastest +ML-KEM-768 key generation, graviola on nixos2: 10.41 µs, 1.02× the fastest +ML-KEM-768 key generation, libcrux on nixos: 18.15 µs, 2.15× the fastest +ML-KEM-768 key generation, libcrux on desktop: 15.15 µs, 2.35× the fastest +ML-KEM-768 key generation, libcrux on nixos2: 20.05 µs, 1.96× the fastest +ML-KEM-768 key generation, libcrux on ovh-iad: 36.70 µs, 1.93× the fastest +ML-KEM-768 key generation, libcrux on ovh-sea: 34.82 µs, 2.00× the fastest +ML-KEM-768 key generation, OpenSSL on nixos: 26.82 µs, 3.18× the fastest +ML-KEM-768 key generation, OpenSSL on desktop: 19.80 µs, 3.07× the fastest +ML-KEM-768 key generation, OpenSSL on nixos2: 40.63 µs, 3.97× the fastest +ML-KEM-768 key generation, OpenSSL on ovh-iad: 64.00 µs, 3.36× the fastest +ML-KEM-768 key generation, OpenSSL on ovh-sea: 62.15 µs, 3.57× the fastest ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind on nixos: 8.33 µs, 1.00× the fastest -ML-KEM-768 encapsulate, rind on desktop: 6.71 µs, 1.00× the fastest -ML-KEM-768 encapsulate, rind on nixos2: 15.73 µs, 1.23× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on nixos: 9.38 µs, 1.13× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on desktop: 8.59 µs, 1.28× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on nixos2: 20.31 µs, 1.58× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on nixos: 67.87 µs, 8.15× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on desktop: 42.13 µs, 6.28× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on nixos2: 75.08 µs, 5.85× the fastest -ML-KEM-768 encapsulate, graviola on nixos: 10.25 µs, 1.23× the fastest -ML-KEM-768 encapsulate, graviola on desktop: 9.13 µs, 1.36× the fastest -ML-KEM-768 encapsulate, graviola on nixos2: 12.83 µs, 1.00× the fastest -ML-KEM-768 encapsulate, libcrux on nixos: 14.93 µs, 1.79× the fastest -ML-KEM-768 encapsulate, libcrux on desktop: 12.80 µs, 1.91× the fastest -ML-KEM-768 encapsulate, libcrux on nixos2: 21.01 µs, 1.64× the fastest -ML-KEM-768 encapsulate, OpenSSL on nixos: 27.30 µs, 3.28× the fastest -ML-KEM-768 encapsulate, OpenSSL on desktop: 18.57 µs, 2.77× the fastest -ML-KEM-768 encapsulate, OpenSSL on nixos2: 44.49 µs, 3.47× the fastest +ML-KEM-768 encapsulate, rind on nixos: 8.53 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on desktop: 6.65 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on nixos2: 10.61 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on ovh-iad: 19.37 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on ovh-sea: 18.55 µs, 1.00× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on nixos: 10.41 µs, 1.22× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on desktop: 8.68 µs, 1.31× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on nixos2: 18.73 µs, 1.76× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on ovh-iad: 25.59 µs, 1.32× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on ovh-sea: 23.54 µs, 1.27× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on nixos: 72.03 µs, 8.44× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on desktop: 41.71 µs, 6.27× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on nixos2: 67.03 µs, 6.31× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on ovh-iad: 107.39 µs, 5.55× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on ovh-sea: 101.25 µs, 5.46× the fastest +ML-KEM-768 encapsulate, graviola on nixos: 10.95 µs, 1.28× the fastest +ML-KEM-768 encapsulate, graviola on desktop: 9.11 µs, 1.37× the fastest +ML-KEM-768 encapsulate, graviola on nixos2: 11.12 µs, 1.05× the fastest +ML-KEM-768 encapsulate, libcrux on nixos: 16.03 µs, 1.88× the fastest +ML-KEM-768 encapsulate, libcrux on desktop: 12.94 µs, 1.94× the fastest +ML-KEM-768 encapsulate, libcrux on nixos2: 18.13 µs, 1.71× the fastest +ML-KEM-768 encapsulate, libcrux on ovh-iad: 32.08 µs, 1.66× the fastest +ML-KEM-768 encapsulate, libcrux on ovh-sea: 31.43 µs, 1.69× the fastest +ML-KEM-768 encapsulate, OpenSSL on nixos: 30.02 µs, 3.52× the fastest +ML-KEM-768 encapsulate, OpenSSL on desktop: 18.77 µs, 2.82× the fastest +ML-KEM-768 encapsulate, OpenSSL on nixos2: 41.18 µs, 3.88× the fastest +ML-KEM-768 encapsulate, OpenSSL on ovh-iad: 68.64 µs, 3.54× the fastest +ML-KEM-768 encapsulate, OpenSSL on ovh-sea: 63.30 µs, 3.41× the fastest ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind on nixos: 5.93 µs, 1.00× the fastest -ML-KEM-768 decapsulate, rind on desktop: 4.83 µs, 1.00× the fastest -ML-KEM-768 decapsulate, rind on nixos2: 8.28 µs, 1.00× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on nixos: 11.29 µs, 1.90× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on desktop: 8.92 µs, 1.85× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on nixos2: 16.61 µs, 2.01× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on nixos: 87.75 µs, 14.80× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on desktop: 55.21 µs, 11.43× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on nixos2: 89.79 µs, 10.85× the fastest -ML-KEM-768 decapsulate, graviola on nixos: 7.10 µs, 1.20× the fastest -ML-KEM-768 decapsulate, graviola on desktop: 6.56 µs, 1.36× the fastest -ML-KEM-768 decapsulate, graviola on nixos2: 8.30 µs, 1.00× the fastest -ML-KEM-768 decapsulate, libcrux on nixos: 15.64 µs, 2.64× the fastest -ML-KEM-768 decapsulate, libcrux on desktop: 13.50 µs, 2.79× the fastest -ML-KEM-768 decapsulate, libcrux on nixos2: 19.93 µs, 2.41× the fastest -ML-KEM-768 decapsulate, OpenSSL on nixos: 22.36 µs, 3.77× the fastest -ML-KEM-768 decapsulate, OpenSSL on desktop: 16.07 µs, 3.33× the fastest -ML-KEM-768 decapsulate, OpenSSL on nixos2: 33.05 µs, 3.99× the fastest +ML-KEM-768 decapsulate, rind on nixos: 6.07 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on desktop: 4.69 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on nixos2: 7.07 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on ovh-iad: 12.58 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on ovh-sea: 12.10 µs, 1.00× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on nixos: 11.96 µs, 1.97× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on desktop: 9.02 µs, 1.92× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on nixos2: 16.01 µs, 2.26× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on ovh-iad: 28.87 µs, 2.29× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on ovh-sea: 27.41 µs, 2.27× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on nixos: 95.17 µs, 15.68× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on desktop: 54.19 µs, 11.55× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on nixos2: 84.37 µs, 11.93× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on ovh-iad: 129.01 µs, 10.25× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on ovh-sea: 127.16 µs, 10.51× the fastest +ML-KEM-768 decapsulate, graviola on nixos: 7.72 µs, 1.27× the fastest +ML-KEM-768 decapsulate, graviola on desktop: 6.59 µs, 1.41× the fastest +ML-KEM-768 decapsulate, graviola on nixos2: 7.42 µs, 1.05× the fastest +ML-KEM-768 decapsulate, libcrux on nixos: 16.22 µs, 2.67× the fastest +ML-KEM-768 decapsulate, libcrux on desktop: 13.44 µs, 2.87× the fastest +ML-KEM-768 decapsulate, libcrux on nixos2: 19.04 µs, 2.69× the fastest +ML-KEM-768 decapsulate, libcrux on ovh-iad: 34.10 µs, 2.71× the fastest +ML-KEM-768 decapsulate, libcrux on ovh-sea: 32.99 µs, 2.73× the fastest +ML-KEM-768 decapsulate, OpenSSL on nixos: 24.64 µs, 4.06× the fastest +ML-KEM-768 decapsulate, OpenSSL on desktop: 16.05 µs, 3.42× the fastest +ML-KEM-768 decapsulate, OpenSSL on nixos2: 31.67 µs, 4.48× the fastest +ML-KEM-768 decapsulate, OpenSSL on ovh-iad: 49.30 µs, 3.92× the fastest +ML-KEM-768 decapsulate, OpenSSL on ovh-sea: 48.46 µs, 4.01× the fastest P-384 and P-521 - + P-384 ECDH -P-384 ECDH, rind on nixos: 129.00 µs, 1.00× the fastest -P-384 ECDH, rind on desktop: 100.00 µs, 1.00× the fastest -P-384 ECDH, rind on nixos2: 159.92 µs, 1.00× the fastest -P-384 ECDH, aws-lc-rs on nixos: 145.14 µs, 1.13× the fastest -P-384 ECDH, aws-lc-rs on desktop: 111.30 µs, 1.11× the fastest -P-384 ECDH, aws-lc-rs on nixos2: 191.62 µs, 1.20× the fastest -P-384 ECDH, ring on nixos: 580.80 µs, 4.50× the fastest -P-384 ECDH, ring on desktop: 370.25 µs, 3.70× the fastest -P-384 ECDH, ring on nixos2: 688.80 µs, 4.31× the fastest -P-384 ECDH, RustCrypto + dalek on nixos: 782.25 µs, 6.06× the fastest -P-384 ECDH, RustCrypto + dalek on desktop: 430.31 µs, 4.30× the fastest -P-384 ECDH, RustCrypto + dalek on nixos2: 871.98 µs, 5.45× the fastest -P-384 ECDH, graviola on nixos: 206.07 µs, 1.60× the fastest -P-384 ECDH, graviola on desktop: 171.49 µs, 1.71× the fastest -P-384 ECDH, graviola on nixos2: 254.75 µs, 1.59× the fastest -P-384 ECDH, OpenSSL on nixos: 451.93 µs, 3.50× the fastest -P-384 ECDH, OpenSSL on desktop: 262.12 µs, 2.62× the fastest -P-384 ECDH, OpenSSL on nixos2: 510.33 µs, 3.19× the fastest +P-384 ECDH, rind on nixos: 179.71 µs, 1.00× the fastest +P-384 ECDH, rind on desktop: 100.08 µs, 1.00× the fastest +P-384 ECDH, rind on nixos2: 150.97 µs, 1.00× the fastest +P-384 ECDH, rind on ovh-iad: 276.11 µs, 1.00× the fastest +P-384 ECDH, rind on ovh-sea: 265.15 µs, 1.00× the fastest +P-384 ECDH, aws-lc-rs on nixos: 180.49 µs, 1.00× the fastest +P-384 ECDH, aws-lc-rs on desktop: 111.11 µs, 1.11× the fastest +P-384 ECDH, aws-lc-rs on nixos2: 174.62 µs, 1.16× the fastest +P-384 ECDH, aws-lc-rs on ovh-iad: 303.78 µs, 1.10× the fastest +P-384 ECDH, aws-lc-rs on ovh-sea: 293.83 µs, 1.11× the fastest +P-384 ECDH, ring on nixos: 601.49 µs, 3.35× the fastest +P-384 ECDH, ring on desktop: 369.71 µs, 3.69× the fastest +P-384 ECDH, ring on nixos2: 645.54 µs, 4.28× the fastest +P-384 ECDH, ring on ovh-iad: 1.05 ms, 3.81× the fastest +P-384 ECDH, ring on ovh-sea: 986.79 µs, 3.72× the fastest +P-384 ECDH, RustCrypto + dalek on nixos: 1.04 ms, 5.80× the fastest +P-384 ECDH, RustCrypto + dalek on desktop: 401.25 µs, 4.01× the fastest +P-384 ECDH, RustCrypto + dalek on nixos2: 769.61 µs, 5.10× the fastest +P-384 ECDH, RustCrypto + dalek on ovh-iad: 1.24 ms, 4.50× the fastest +P-384 ECDH, RustCrypto + dalek on ovh-sea: 1.17 ms, 4.42× the fastest +P-384 ECDH, graviola on nixos: 302.57 µs, 1.68× the fastest +P-384 ECDH, graviola on desktop: 170.94 µs, 1.71× the fastest +P-384 ECDH, graviola on nixos2: 245.24 µs, 1.62× the fastest +P-384 ECDH, OpenSSL on nixos: 656.67 µs, 3.65× the fastest +P-384 ECDH, OpenSSL on desktop: 264.84 µs, 2.65× the fastest +P-384 ECDH, OpenSSL on nixos2: 483.50 µs, 3.20× the fastest +P-384 ECDH, OpenSSL on ovh-iad: 794.72 µs, 2.88× the fastest +P-384 ECDH, OpenSSL on ovh-sea: 744.13 µs, 2.81× the fastest P-384 ECDSA sign -P-384 ECDSA sign, rind on nixos: 33.91 µs, 1.00× the fastest -P-384 ECDSA sign, rind on desktop: 25.54 µs, 1.00× the fastest -P-384 ECDSA sign, rind on nixos2: 40.21 µs, 1.00× the fastest -P-384 ECDSA sign, aws-lc-rs on nixos: 64.48 µs, 1.90× the fastest -P-384 ECDSA sign, aws-lc-rs on desktop: 46.52 µs, 1.82× the fastest -P-384 ECDSA sign, aws-lc-rs on nixos2: 85.87 µs, 2.14× the fastest -P-384 ECDSA sign, ring on nixos: 313.48 µs, 9.25× the fastest -P-384 ECDSA sign, ring on desktop: 198.39 µs, 7.77× the fastest -P-384 ECDSA sign, ring on nixos2: 349.63 µs, 8.69× the fastest -P-384 ECDSA sign, RustCrypto + dalek on nixos: 183.17 µs, 5.40× the fastest -P-384 ECDSA sign, RustCrypto + dalek on desktop: 104.37 µs, 4.09× the fastest -P-384 ECDSA sign, RustCrypto + dalek on nixos2: 194.33 µs, 4.83× the fastest -P-384 ECDSA sign, graviola on nixos: 110.14 µs, 3.25× the fastest -P-384 ECDSA sign, graviola on desktop: 89.42 µs, 3.50× the fastest -P-384 ECDSA sign, graviola on nixos2: 133.02 µs, 3.31× the fastest -P-384 ECDSA sign, OpenSSL on nixos: 151.27 µs, 4.46× the fastest -P-384 ECDSA sign, OpenSSL on desktop: 89.07 µs, 3.49× the fastest -P-384 ECDSA sign, OpenSSL on nixos2: 170.79 µs, 4.25× the fastest +P-384 ECDSA sign, rind on nixos: 53.07 µs, 1.00× the fastest +P-384 ECDSA sign, rind on desktop: 23.53 µs, 1.00× the fastest +P-384 ECDSA sign, rind on nixos2: 39.62 µs, 1.00× the fastest +P-384 ECDSA sign, rind on ovh-iad: 70.24 µs, 1.00× the fastest +P-384 ECDSA sign, rind on ovh-sea: 67.30 µs, 1.00× the fastest +P-384 ECDSA sign, aws-lc-rs on nixos: 97.47 µs, 1.84× the fastest +P-384 ECDSA sign, aws-lc-rs on desktop: 46.52 µs, 1.98× the fastest +P-384 ECDSA sign, aws-lc-rs on nixos2: 82.65 µs, 2.09× the fastest +P-384 ECDSA sign, aws-lc-rs on ovh-iad: 131.24 µs, 1.87× the fastest +P-384 ECDSA sign, aws-lc-rs on ovh-sea: 126.70 µs, 1.88× the fastest +P-384 ECDSA sign, ring on nixos: 474.64 µs, 8.94× the fastest +P-384 ECDSA sign, ring on desktop: 200.86 µs, 8.54× the fastest +P-384 ECDSA sign, ring on nixos2: 343.16 µs, 8.66× the fastest +P-384 ECDSA sign, ring on ovh-iad: 547.60 µs, 7.80× the fastest +P-384 ECDSA sign, ring on ovh-sea: 546.26 µs, 8.12× the fastest +P-384 ECDSA sign, RustCrypto + dalek on nixos: 238.31 µs, 4.49× the fastest +P-384 ECDSA sign, RustCrypto + dalek on desktop: 86.86 µs, 3.69× the fastest +P-384 ECDSA sign, RustCrypto + dalek on nixos2: 170.64 µs, 4.31× the fastest +P-384 ECDSA sign, RustCrypto + dalek on ovh-iad: 268.01 µs, 3.82× the fastest +P-384 ECDSA sign, RustCrypto + dalek on ovh-sea: 263.32 µs, 3.91× the fastest +P-384 ECDSA sign, graviola on nixos: 185.15 µs, 3.49× the fastest +P-384 ECDSA sign, graviola on desktop: 90.69 µs, 3.85× the fastest +P-384 ECDSA sign, graviola on nixos2: 128.64 µs, 3.25× the fastest +P-384 ECDSA sign, OpenSSL on nixos: 235.52 µs, 4.44× the fastest +P-384 ECDSA sign, OpenSSL on desktop: 89.64 µs, 3.81× the fastest +P-384 ECDSA sign, OpenSSL on nixos2: 164.53 µs, 4.15× the fastest +P-384 ECDSA sign, OpenSSL on ovh-iad: 268.60 µs, 3.82× the fastest +P-384 ECDSA sign, OpenSSL on ovh-sea: 253.09 µs, 3.76× the fastest P-384 ECDSA verify -P-384 ECDSA verify, rind on nixos: 121.08 µs, 1.00× the fastest -P-384 ECDSA verify, rind on desktop: 98.58 µs, 1.00× the fastest -P-384 ECDSA verify, rind on nixos2: 154.44 µs, 1.00× the fastest -P-384 ECDSA verify, aws-lc-rs on nixos: 151.44 µs, 1.25× the fastest -P-384 ECDSA verify, aws-lc-rs on desktop: 115.28 µs, 1.17× the fastest -P-384 ECDSA verify, aws-lc-rs on nixos2: 186.63 µs, 1.21× the fastest -P-384 ECDSA verify, ring on nixos: 560.90 µs, 4.63× the fastest -P-384 ECDSA verify, ring on desktop: 359.23 µs, 3.64× the fastest -P-384 ECDSA verify, ring on nixos2: 628.36 µs, 4.07× the fastest -P-384 ECDSA verify, RustCrypto + dalek on nixos: 670.20 µs, 5.54× the fastest -P-384 ECDSA verify, RustCrypto + dalek on desktop: 360.90 µs, 3.66× the fastest -P-384 ECDSA verify, RustCrypto + dalek on nixos2: 712.25 µs, 4.61× the fastest -P-384 ECDSA verify, graviola on nixos: 204.92 µs, 1.69× the fastest -P-384 ECDSA verify, graviola on desktop: 168.94 µs, 1.71× the fastest -P-384 ECDSA verify, graviola on nixos2: 244.84 µs, 1.59× the fastest -P-384 ECDSA verify, OpenSSL on nixos: 371.49 µs, 3.07× the fastest -P-384 ECDSA verify, OpenSSL on desktop: 215.87 µs, 2.19× the fastest -P-384 ECDSA verify, OpenSSL on nixos2: 409.95 µs, 2.65× the fastest +P-384 ECDSA verify, rind on nixos: 157.33 µs, 1.00× the fastest +P-384 ECDSA verify, rind on desktop: 98.87 µs, 1.00× the fastest +P-384 ECDSA verify, rind on nixos2: 141.44 µs, 1.00× the fastest +P-384 ECDSA verify, rind on ovh-iad: 261.01 µs, 1.00× the fastest +P-384 ECDSA verify, rind on ovh-sea: 253.92 µs, 1.00× the fastest +P-384 ECDSA verify, aws-lc-rs on nixos: 199.21 µs, 1.27× the fastest +P-384 ECDSA verify, aws-lc-rs on desktop: 116.66 µs, 1.18× the fastest +P-384 ECDSA verify, aws-lc-rs on nixos2: 175.92 µs, 1.24× the fastest +P-384 ECDSA verify, aws-lc-rs on ovh-iad: 315.77 µs, 1.21× the fastest +P-384 ECDSA verify, aws-lc-rs on ovh-sea: 297.22 µs, 1.17× the fastest +P-384 ECDSA verify, ring on nixos: 727.10 µs, 4.62× the fastest +P-384 ECDSA verify, ring on desktop: 360.29 µs, 3.64× the fastest +P-384 ECDSA verify, ring on nixos2: 622.90 µs, 4.40× the fastest +P-384 ECDSA verify, ring on ovh-iad: 1.05 ms, 4.02× the fastest +P-384 ECDSA verify, ring on ovh-sea: 957.13 µs, 3.77× the fastest +P-384 ECDSA verify, RustCrypto + dalek on nixos: 872.06 µs, 5.54× the fastest +P-384 ECDSA verify, RustCrypto + dalek on desktop: 360.21 µs, 3.64× the fastest +P-384 ECDSA verify, RustCrypto + dalek on nixos2: 695.04 µs, 4.91× the fastest +P-384 ECDSA verify, RustCrypto + dalek on ovh-iad: 1.08 ms, 4.16× the fastest +P-384 ECDSA verify, RustCrypto + dalek on ovh-sea: 1.05 ms, 4.14× the fastest +P-384 ECDSA verify, graviola on nixos: 315.99 µs, 2.01× the fastest +P-384 ECDSA verify, graviola on desktop: 167.40 µs, 1.69× the fastest +P-384 ECDSA verify, graviola on nixos2: 239.41 µs, 1.69× the fastest +P-384 ECDSA verify, OpenSSL on nixos: 551.89 µs, 3.51× the fastest +P-384 ECDSA verify, OpenSSL on desktop: 215.86 µs, 2.18× the fastest +P-384 ECDSA verify, OpenSSL on nixos2: 399.63 µs, 2.83× the fastest +P-384 ECDSA verify, OpenSSL on ovh-iad: 657.01 µs, 2.52× the fastest +P-384 ECDSA verify, OpenSSL on ovh-sea: 631.24 µs, 2.49× the fastest P-521 ECDH -P-521 ECDH, rind on nixos: 221.05 µs, 1.00× the fastest -P-521 ECDH, rind on desktop: 160.40 µs, 1.00× the fastest -P-521 ECDH, rind on nixos2: 225.21 µs, 1.00× the fastest -P-521 ECDH, aws-lc-rs on nixos: 235.94 µs, 1.07× the fastest -P-521 ECDH, aws-lc-rs on desktop: 171.49 µs, 1.07× the fastest -P-521 ECDH, aws-lc-rs on nixos2: 255.05 µs, 1.13× the fastest -P-521 ECDH, RustCrypto + dalek on nixos: 604.98 µs, 2.74× the fastest -P-521 ECDH, RustCrypto + dalek on desktop: 433.75 µs, 2.70× the fastest -P-521 ECDH, RustCrypto + dalek on nixos2: 822.79 µs, 3.65× the fastest -P-521 ECDH, OpenSSL on nixos: 390.71 µs, 1.77× the fastest -P-521 ECDH, OpenSSL on desktop: 274.16 µs, 1.71× the fastest -P-521 ECDH, OpenSSL on nixos2: 498.14 µs, 2.21× the fastest +P-521 ECDH, rind on nixos: 283.91 µs, 1.00× the fastest +P-521 ECDH, rind on desktop: 160.77 µs, 1.00× the fastest +P-521 ECDH, rind on nixos2: 233.76 µs, 1.00× the fastest +P-521 ECDH, rind on ovh-iad: 477.22 µs, 1.00× the fastest +P-521 ECDH, rind on ovh-sea: 453.02 µs, 1.00× the fastest +P-521 ECDH, aws-lc-rs on nixos: 288.17 µs, 1.01× the fastest +P-521 ECDH, aws-lc-rs on desktop: 170.98 µs, 1.06× the fastest +P-521 ECDH, aws-lc-rs on nixos2: 262.34 µs, 1.12× the fastest +P-521 ECDH, aws-lc-rs on ovh-iad: 502.59 µs, 1.05× the fastest +P-521 ECDH, aws-lc-rs on ovh-sea: 486.31 µs, 1.07× the fastest +P-521 ECDH, RustCrypto + dalek on nixos: 868.41 µs, 3.06× the fastest +P-521 ECDH, RustCrypto + dalek on desktop: 431.17 µs, 2.68× the fastest +P-521 ECDH, RustCrypto + dalek on nixos2: 841.50 µs, 3.60× the fastest +P-521 ECDH, RustCrypto + dalek on ovh-iad: 1.26 ms, 2.65× the fastest +P-521 ECDH, RustCrypto + dalek on ovh-sea: 1.21 ms, 2.66× the fastest +P-521 ECDH, OpenSSL on nixos: 505.62 µs, 1.78× the fastest +P-521 ECDH, OpenSSL on desktop: 276.21 µs, 1.72× the fastest +P-521 ECDH, OpenSSL on nixos2: 497.39 µs, 2.13× the fastest +P-521 ECDH, OpenSSL on ovh-iad: 751.84 µs, 1.58× the fastest +P-521 ECDH, OpenSSL on ovh-sea: 720.27 µs, 1.59× the fastest P-521 ECDSA sign -P-521 ECDSA sign, rind on nixos: 56.66 µs, 1.00× the fastest -P-521 ECDSA sign, rind on desktop: 43.70 µs, 1.00× the fastest -P-521 ECDSA sign, rind on nixos2: 65.70 µs, 1.00× the fastest -P-521 ECDSA sign, aws-lc-rs on nixos: 125.99 µs, 2.22× the fastest -P-521 ECDSA sign, aws-lc-rs on desktop: 88.46 µs, 2.02× the fastest -P-521 ECDSA sign, aws-lc-rs on nixos2: 160.14 µs, 2.44× the fastest -P-521 ECDSA sign, RustCrypto + dalek on nixos: 144.49 µs, 2.55× the fastest -P-521 ECDSA sign, RustCrypto + dalek on desktop: 94.28 µs, 2.16× the fastest -P-521 ECDSA sign, RustCrypto + dalek on nixos2: 192.13 µs, 2.92× the fastest -P-521 ECDSA sign, OpenSSL on nixos: 186.41 µs, 3.29× the fastest -P-521 ECDSA sign, OpenSSL on desktop: 127.75 µs, 2.92× the fastest -P-521 ECDSA sign, OpenSSL on nixos2: 224.59 µs, 3.42× the fastest +P-521 ECDSA sign, rind on nixos: 58.32 µs, 1.00× the fastest +P-521 ECDSA sign, rind on desktop: 40.56 µs, 1.00× the fastest +P-521 ECDSA sign, rind on nixos2: 64.26 µs, 1.00× the fastest +P-521 ECDSA sign, rind on ovh-iad: 122.73 µs, 1.00× the fastest +P-521 ECDSA sign, rind on ovh-sea: 115.63 µs, 1.00× the fastest +P-521 ECDSA sign, aws-lc-rs on nixos: 152.35 µs, 2.61× the fastest +P-521 ECDSA sign, aws-lc-rs on desktop: 89.64 µs, 2.21× the fastest +P-521 ECDSA sign, aws-lc-rs on nixos2: 158.67 µs, 2.47× the fastest +P-521 ECDSA sign, aws-lc-rs on ovh-iad: 260.74 µs, 2.12× the fastest +P-521 ECDSA sign, aws-lc-rs on ovh-sea: 251.35 µs, 2.17× the fastest +P-521 ECDSA sign, RustCrypto + dalek on nixos: 177.47 µs, 3.04× the fastest +P-521 ECDSA sign, RustCrypto + dalek on desktop: 95.29 µs, 2.35× the fastest +P-521 ECDSA sign, RustCrypto + dalek on nixos2: 185.93 µs, 2.89× the fastest +P-521 ECDSA sign, RustCrypto + dalek on ovh-iad: 289.27 µs, 2.36× the fastest +P-521 ECDSA sign, RustCrypto + dalek on ovh-sea: 288.95 µs, 2.50× the fastest +P-521 ECDSA sign, OpenSSL on nixos: 219.60 µs, 3.77× the fastest +P-521 ECDSA sign, OpenSSL on desktop: 129.20 µs, 3.19× the fastest +P-521 ECDSA sign, OpenSSL on nixos2: 221.00 µs, 3.44× the fastest +P-521 ECDSA sign, OpenSSL on ovh-iad: 378.85 µs, 3.09× the fastest +P-521 ECDSA sign, OpenSSL on ovh-sea: 343.62 µs, 2.97× the fastest P-521 ECDSA verify -P-521 ECDSA verify, rind on nixos: 191.80 µs, 1.00× the fastest -P-521 ECDSA verify, rind on desktop: 145.01 µs, 1.00× the fastest -P-521 ECDSA verify, rind on nixos2: 236.22 µs, 1.00× the fastest -P-521 ECDSA verify, aws-lc-rs on nixos: 257.70 µs, 1.34× the fastest -P-521 ECDSA verify, aws-lc-rs on desktop: 184.47 µs, 1.27× the fastest -P-521 ECDSA verify, aws-lc-rs on nixos2: 307.98 µs, 1.30× the fastest -P-521 ECDSA verify, RustCrypto + dalek on nixos: 481.75 µs, 2.51× the fastest -P-521 ECDSA verify, RustCrypto + dalek on desktop: 359.53 µs, 2.48× the fastest -P-521 ECDSA verify, RustCrypto + dalek on nixos2: 666.03 µs, 2.82× the fastest -P-521 ECDSA verify, OpenSSL on nixos: 379.62 µs, 1.98× the fastest -P-521 ECDSA verify, OpenSSL on desktop: 261.07 µs, 1.80× the fastest -P-521 ECDSA verify, OpenSSL on nixos2: 465.58 µs, 1.97× the fastest +P-521 ECDSA verify, rind on nixos: 222.28 µs, 1.00× the fastest +P-521 ECDSA verify, rind on desktop: 147.09 µs, 1.00× the fastest +P-521 ECDSA verify, rind on nixos2: 214.43 µs, 1.00× the fastest +P-521 ECDSA verify, rind on ovh-iad: 434.67 µs, 1.00× the fastest +P-521 ECDSA verify, rind on ovh-sea: 406.77 µs, 1.00× the fastest +P-521 ECDSA verify, aws-lc-rs on nixos: 327.35 µs, 1.47× the fastest +P-521 ECDSA verify, aws-lc-rs on desktop: 186.61 µs, 1.27× the fastest +P-521 ECDSA verify, aws-lc-rs on nixos2: 303.23 µs, 1.41× the fastest +P-521 ECDSA verify, aws-lc-rs on ovh-iad: 544.59 µs, 1.25× the fastest +P-521 ECDSA verify, aws-lc-rs on ovh-sea: 524.48 µs, 1.29× the fastest +P-521 ECDSA verify, RustCrypto + dalek on nixos: 610.17 µs, 2.75× the fastest +P-521 ECDSA verify, RustCrypto + dalek on desktop: 359.57 µs, 2.44× the fastest +P-521 ECDSA verify, RustCrypto + dalek on nixos2: 636.37 µs, 2.97× the fastest +P-521 ECDSA verify, RustCrypto + dalek on ovh-iad: 1.02 ms, 2.34× the fastest +P-521 ECDSA verify, RustCrypto + dalek on ovh-sea: 1.03 ms, 2.54× the fastest +P-521 ECDSA verify, OpenSSL on nixos: 473.66 µs, 2.13× the fastest +P-521 ECDSA verify, OpenSSL on desktop: 267.51 µs, 1.82× the fastest +P-521 ECDSA verify, OpenSSL on nixos2: 460.02 µs, 2.15× the fastest +P-521 ECDSA verify, OpenSSL on ovh-iad: 750.34 µs, 1.73× the fastest +P-521 ECDSA verify, OpenSSL on ovh-sea: 698.05 µs, 1.72× the fastest diff --git a/benchmarks/overview.svg b/benchmarks/overview.svg index f17e2f908..213159e63 100644 --- a/benchmarks/overview.svg +++ b/benchmarks/overview.svg @@ -1,4 +1,4 @@ - + Time over the fastest library's, by operation, library, and host fastest, or within 10% @@ -16,1238 +16,1936 @@ over 8× ✓ verified code -Each cell's squares, left to right: nixos, desktop, nixos2. -rind -aws-lc-rs -ring -RustCrypto -+ dalek -graviola -libcrux -OpenSSL +Each cell's squares, left to right: nixos, desktop, nixos2, ovh-iad, ovh-sea. +rind +aws-lc-rs +ring +RustCrypto ++ dalek +graviola +libcrux +OpenSSL TLS 1.3 with rustls - + full handshake, X25519MLKEM768 -full handshake, X25519MLKEM768, rind on nixos: 239.83 µs, 1.00× the fastest -full handshake, X25519MLKEM768, rind on desktop: 176.38 µs, 1.00× the fastest -full handshake, X25519MLKEM768, rind on nixos2: 311.29 µs, 1.00× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on nixos: 308.49 µs, 1.29× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on desktop: 237.01 µs, 1.34× the fastest -full handshake, X25519MLKEM768, aws-lc-rs on nixos2: 452.02 µs, 1.45× the fastest -full handshake, X25519MLKEM768, graviola on nixos: 258.62 µs, 1.08× the fastest -full handshake, X25519MLKEM768, graviola on desktop: 188.12 µs, 1.07× the fastest -full handshake, X25519MLKEM768, graviola on nixos2: 375.56 µs, 1.21× the fastest -full handshake, X25519MLKEM768, OpenSSL on nixos: 805.54 µs, 3.36× the fastest -full handshake, X25519MLKEM768, OpenSSL on desktop: 435.26 µs, 2.47× the fastest -full handshake, X25519MLKEM768, OpenSSL on nixos2: 837.01 µs, 2.69× the fastest +full handshake, X25519MLKEM768, rind on nixos: 260.78 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on desktop: 174.97 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on nixos2: 302.43 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on ovh-iad: 676.16 µs, 1.00× the fastest +full handshake, X25519MLKEM768, rind on ovh-sea: 585.86 µs, 1.00× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on nixos: 331.87 µs, 1.27× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on desktop: 235.60 µs, 1.35× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on nixos2: 458.06 µs, 1.51× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on ovh-iad: 776.76 µs, 1.15× the fastest +full handshake, X25519MLKEM768, aws-lc-rs on ovh-sea: 682.34 µs, 1.16× the fastest +full handshake, X25519MLKEM768, graviola on nixos: 342.68 µs, 1.31× the fastest +full handshake, X25519MLKEM768, graviola on desktop: 191.49 µs, 1.09× the fastest +full handshake, X25519MLKEM768, graviola on nixos2: 375.57 µs, 1.24× the fastest +full handshake, X25519MLKEM768, OpenSSL on nixos: 802.57 µs, 3.08× the fastest +full handshake, X25519MLKEM768, OpenSSL on desktop: 437.46 µs, 2.50× the fastest +full handshake, X25519MLKEM768, OpenSSL on nixos2: 830.76 µs, 2.75× the fastest +full handshake, X25519MLKEM768, OpenSSL on ovh-iad: 1.48 ms, 2.18× the fastest +full handshake, X25519MLKEM768, OpenSSL on ovh-sea: 1.32 ms, 2.25× the fastest full handshake, X25519 -full handshake, X25519, rind on nixos: 215.61 µs, 1.00× the fastest -full handshake, X25519, rind on desktop: 152.03 µs, 1.00× the fastest -full handshake, X25519, rind on nixos2: 267.07 µs, 1.00× the fastest -full handshake, X25519, aws-lc-rs on nixos: 277.77 µs, 1.29× the fastest -full handshake, X25519, aws-lc-rs on desktop: 205.12 µs, 1.35× the fastest -full handshake, X25519, aws-lc-rs on nixos2: 379.99 µs, 1.42× the fastest -full handshake, X25519, ring on nixos: 296.66 µs, 1.38× the fastest -full handshake, X25519, ring on desktop: 221.18 µs, 1.45× the fastest -full handshake, X25519, ring on nixos2: 339.51 µs, 1.27× the fastest -full handshake, X25519, graviola on nixos: 225.37 µs, 1.05× the fastest -full handshake, X25519, graviola on desktop: 161.32 µs, 1.06× the fastest -full handshake, X25519, graviola on nixos2: 316.39 µs, 1.18× the fastest -full handshake, X25519, OpenSSL on nixos: 578.47 µs, 2.68× the fastest -full handshake, X25519, OpenSSL on desktop: 365.01 µs, 2.40× the fastest -full handshake, X25519, OpenSSL on nixos2: 688.73 µs, 2.58× the fastest +full handshake, X25519, rind on nixos: 227.82 µs, 1.00× the fastest +full handshake, X25519, rind on desktop: 152.75 µs, 1.00× the fastest +full handshake, X25519, rind on nixos2: 260.02 µs, 1.00× the fastest +full handshake, X25519, rind on ovh-iad: 476.73 µs, 1.00× the fastest +full handshake, X25519, rind on ovh-sea: 454.19 µs, 1.00× the fastest +full handshake, X25519, aws-lc-rs on nixos: 292.13 µs, 1.28× the fastest +full handshake, X25519, aws-lc-rs on desktop: 203.62 µs, 1.33× the fastest +full handshake, X25519, aws-lc-rs on nixos2: 369.74 µs, 1.42× the fastest +full handshake, X25519, aws-lc-rs on ovh-iad: 540.28 µs, 1.13× the fastest +full handshake, X25519, aws-lc-rs on ovh-sea: 510.37 µs, 1.12× the fastest +full handshake, X25519, ring on nixos: 328.46 µs, 1.44× the fastest +full handshake, X25519, ring on desktop: 222.88 µs, 1.46× the fastest +full handshake, X25519, ring on nixos2: 337.91 µs, 1.30× the fastest +full handshake, X25519, ring on ovh-iad: 568.18 µs, 1.19× the fastest +full handshake, X25519, ring on ovh-sea: 526.42 µs, 1.16× the fastest +full handshake, X25519, graviola on nixos: 238.70 µs, 1.05× the fastest +full handshake, X25519, graviola on desktop: 162.55 µs, 1.06× the fastest +full handshake, X25519, graviola on nixos2: 315.73 µs, 1.21× the fastest +full handshake, X25519, OpenSSL on nixos: 574.28 µs, 2.52× the fastest +full handshake, X25519, OpenSSL on desktop: 367.79 µs, 2.41× the fastest +full handshake, X25519, OpenSSL on nixos2: 686.50 µs, 2.64× the fastest +full handshake, X25519, OpenSSL on ovh-iad: 1.14 ms, 2.38× the fastest +full handshake, X25519, OpenSSL on ovh-sea: 1.08 ms, 2.38× the fastest full handshake, P-256 -full handshake, P-256, rind on nixos: 248.67 µs, 1.00× the fastest -full handshake, P-256, rind on desktop: 175.55 µs, 1.00× the fastest -full handshake, P-256, rind on nixos2: 302.72 µs, 1.00× the fastest -full handshake, P-256, aws-lc-rs on nixos: 312.54 µs, 1.26× the fastest -full handshake, P-256, aws-lc-rs on desktop: 227.34 µs, 1.30× the fastest -full handshake, P-256, aws-lc-rs on nixos2: 414.57 µs, 1.37× the fastest -full handshake, P-256, ring on nixos: 296.53 µs, 1.19× the fastest -full handshake, P-256, ring on desktop: 223.24 µs, 1.27× the fastest -full handshake, P-256, ring on nixos2: 327.28 µs, 1.08× the fastest -full handshake, P-256, graviola on nixos: 266.19 µs, 1.07× the fastest -full handshake, P-256, graviola on desktop: 194.81 µs, 1.11× the fastest -full handshake, P-256, graviola on nixos2: 371.36 µs, 1.23× the fastest -full handshake, P-256, OpenSSL on nixos: 639.58 µs, 2.57× the fastest -full handshake, P-256, OpenSSL on desktop: 403.92 µs, 2.30× the fastest -full handshake, P-256, OpenSSL on nixos2: 750.80 µs, 2.48× the fastest +full handshake, P-256, rind on nixos: 242.76 µs, 1.00× the fastest +full handshake, P-256, rind on desktop: 175.68 µs, 1.00× the fastest +full handshake, P-256, rind on nixos2: 295.92 µs, 1.00× the fastest +full handshake, P-256, rind on ovh-iad: 532.32 µs, 1.00× the fastest +full handshake, P-256, rind on ovh-sea: 511.71 µs, 1.00× the fastest +full handshake, P-256, aws-lc-rs on nixos: 304.37 µs, 1.25× the fastest +full handshake, P-256, aws-lc-rs on desktop: 228.85 µs, 1.30× the fastest +full handshake, P-256, aws-lc-rs on nixos2: 417.28 µs, 1.41× the fastest +full handshake, P-256, aws-lc-rs on ovh-iad: 614.10 µs, 1.15× the fastest +full handshake, P-256, aws-lc-rs on ovh-sea: 582.16 µs, 1.14× the fastest +full handshake, P-256, ring on nixos: 281.93 µs, 1.16× the fastest +full handshake, P-256, ring on desktop: 221.72 µs, 1.26× the fastest +full handshake, P-256, ring on nixos2: 327.88 µs, 1.11× the fastest +full handshake, P-256, ring on ovh-iad: 577.09 µs, 1.08× the fastest +full handshake, P-256, ring on ovh-sea: 541.36 µs, 1.06× the fastest +full handshake, P-256, graviola on nixos: 270.05 µs, 1.11× the fastest +full handshake, P-256, graviola on desktop: 193.10 µs, 1.10× the fastest +full handshake, P-256, graviola on nixos2: 368.79 µs, 1.25× the fastest +full handshake, P-256, OpenSSL on nixos: 624.35 µs, 2.57× the fastest +full handshake, P-256, OpenSSL on desktop: 406.49 µs, 2.31× the fastest +full handshake, P-256, OpenSSL on nixos2: 760.04 µs, 2.57× the fastest +full handshake, P-256, OpenSSL on ovh-iad: 1.35 ms, 2.53× the fastest +full handshake, P-256, OpenSSL on ovh-sea: 1.18 ms, 2.30× the fastest full handshake, Ed25519 certificate -full handshake, Ed25519 certificate, rind on nixos: 176.45 µs, 1.01× the fastest -full handshake, Ed25519 certificate, rind on desktop: 123.00 µs, 1.00× the fastest -full handshake, Ed25519 certificate, rind on nixos2: 216.15 µs, 1.00× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on nixos: 226.97 µs, 1.30× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on desktop: 166.65 µs, 1.35× the fastest -full handshake, Ed25519 certificate, aws-lc-rs on nixos2: 307.77 µs, 1.42× the fastest -full handshake, Ed25519 certificate, ring on nixos: 289.56 µs, 1.65× the fastest -full handshake, Ed25519 certificate, ring on desktop: 202.37 µs, 1.65× the fastest -full handshake, Ed25519 certificate, ring on nixos2: 326.17 µs, 1.51× the fastest -full handshake, Ed25519 certificate, graviola on nixos: 175.24 µs, 1.00× the fastest -full handshake, Ed25519 certificate, graviola on desktop: 125.59 µs, 1.02× the fastest -full handshake, Ed25519 certificate, graviola on nixos2: 251.07 µs, 1.16× the fastest -full handshake, Ed25519 certificate, OpenSSL on nixos: 647.87 µs, 3.70× the fastest -full handshake, Ed25519 certificate, OpenSSL on desktop: 374.89 µs, 3.05× the fastest -full handshake, Ed25519 certificate, OpenSSL on nixos2: 757.62 µs, 3.51× the fastest +full handshake, Ed25519 certificate, rind on nixos: 186.73 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on desktop: 123.11 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on nixos2: 213.12 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on ovh-iad: 395.96 µs, 1.00× the fastest +full handshake, Ed25519 certificate, rind on ovh-sea: 378.30 µs, 1.00× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on nixos: 233.43 µs, 1.25× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on desktop: 168.12 µs, 1.37× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on nixos2: 306.11 µs, 1.44× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on ovh-iad: 458.32 µs, 1.16× the fastest +full handshake, Ed25519 certificate, aws-lc-rs on ovh-sea: 436.82 µs, 1.15× the fastest +full handshake, Ed25519 certificate, ring on nixos: 292.96 µs, 1.57× the fastest +full handshake, Ed25519 certificate, ring on desktop: 205.53 µs, 1.67× the fastest +full handshake, Ed25519 certificate, ring on nixos2: 325.29 µs, 1.53× the fastest +full handshake, Ed25519 certificate, ring on ovh-iad: 505.59 µs, 1.28× the fastest +full handshake, Ed25519 certificate, ring on ovh-sea: 473.04 µs, 1.25× the fastest +full handshake, Ed25519 certificate, graviola on nixos: 186.05 µs, 1.00× the fastest +full handshake, Ed25519 certificate, graviola on desktop: 125.46 µs, 1.02× the fastest +full handshake, Ed25519 certificate, graviola on nixos2: 250.28 µs, 1.17× the fastest +full handshake, Ed25519 certificate, OpenSSL on nixos: 640.40 µs, 3.44× the fastest +full handshake, Ed25519 certificate, OpenSSL on desktop: 373.29 µs, 3.03× the fastest +full handshake, Ed25519 certificate, OpenSSL on nixos2: 747.09 µs, 3.51× the fastest +full handshake, Ed25519 certificate, OpenSSL on ovh-iad: 1.22 ms, 3.07× the fastest +full handshake, Ed25519 certificate, OpenSSL on ovh-sea: 1.18 ms, 3.13× the fastest full handshake, RSA-2048 certificate -full handshake, RSA-2048 certificate, rind on nixos: 644.89 µs, 1.11× the fastest -full handshake, RSA-2048 certificate, rind on desktop: 493.89 µs, 1.13× the fastest -full handshake, RSA-2048 certificate, rind on nixos2: 809.87 µs, 1.19× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on nixos: 650.26 µs, 1.12× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on desktop: 479.50 µs, 1.09× the fastest -full handshake, RSA-2048 certificate, aws-lc-rs on nixos2: 774.41 µs, 1.14× the fastest -full handshake, RSA-2048 certificate, ring on nixos: 666.29 µs, 1.14× the fastest -full handshake, RSA-2048 certificate, ring on desktop: 487.61 µs, 1.11× the fastest -full handshake, RSA-2048 certificate, ring on nixos2: 677.82 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on nixos: 582.45 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on desktop: 438.68 µs, 1.00× the fastest -full handshake, RSA-2048 certificate, graviola on nixos2: 713.80 µs, 1.05× the fastest -full handshake, RSA-2048 certificate, OpenSSL on nixos: 931.27 µs, 1.60× the fastest -full handshake, RSA-2048 certificate, OpenSSL on desktop: 684.14 µs, 1.56× the fastest -full handshake, RSA-2048 certificate, OpenSSL on nixos2: 1.02 ms, 1.50× the fastest +full handshake, RSA-2048 certificate, rind on nixos: 550.14 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on desktop: 428.67 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on nixos2: 613.80 µs, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on ovh-iad: 1.14 ms, 1.00× the fastest +full handshake, RSA-2048 certificate, rind on ovh-sea: 1.09 ms, 1.00× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on nixos: 646.28 µs, 1.17× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on desktop: 485.87 µs, 1.13× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on nixos2: 758.17 µs, 1.24× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on ovh-iad: 1.27 ms, 1.12× the fastest +full handshake, RSA-2048 certificate, aws-lc-rs on ovh-sea: 1.20 ms, 1.10× the fastest +full handshake, RSA-2048 certificate, ring on nixos: 647.36 µs, 1.18× the fastest +full handshake, RSA-2048 certificate, ring on desktop: 493.81 µs, 1.15× the fastest +full handshake, RSA-2048 certificate, ring on nixos2: 678.16 µs, 1.10× the fastest +full handshake, RSA-2048 certificate, ring on ovh-iad: 1.47 ms, 1.28× the fastest +full handshake, RSA-2048 certificate, ring on ovh-sea: 1.40 ms, 1.28× the fastest +full handshake, RSA-2048 certificate, graviola on nixos: 567.91 µs, 1.03× the fastest +full handshake, RSA-2048 certificate, graviola on desktop: 440.23 µs, 1.03× the fastest +full handshake, RSA-2048 certificate, graviola on nixos2: 687.17 µs, 1.12× the fastest +full handshake, RSA-2048 certificate, OpenSSL on nixos: 992.05 µs, 1.80× the fastest +full handshake, RSA-2048 certificate, OpenSSL on desktop: 682.29 µs, 1.59× the fastest +full handshake, RSA-2048 certificate, OpenSSL on nixos2: 1.01 ms, 1.65× the fastest +full handshake, RSA-2048 certificate, OpenSSL on ovh-iad: 1.90 ms, 1.66× the fastest +full handshake, RSA-2048 certificate, OpenSSL on ovh-sea: 1.76 ms, 1.62× the fastest resumed handshake, X25519 -resumed handshake, X25519, rind on nixos: 81.83 µs, 1.00× the fastest -resumed handshake, X25519, rind on desktop: 55.16 µs, 1.00× the fastest -resumed handshake, X25519, rind on nixos2: 121.78 µs, 1.00× the fastest -resumed handshake, X25519, aws-lc-rs on nixos: 137.94 µs, 1.69× the fastest -resumed handshake, X25519, aws-lc-rs on desktop: 101.03 µs, 1.83× the fastest -resumed handshake, X25519, aws-lc-rs on nixos2: 229.16 µs, 1.88× the fastest -resumed handshake, X25519, ring on nixos: 162.09 µs, 1.98× the fastest -resumed handshake, X25519, ring on desktop: 111.69 µs, 2.02× the fastest -resumed handshake, X25519, ring on nixos2: 195.23 µs, 1.60× the fastest -resumed handshake, X25519, graviola on nixos: 87.66 µs, 1.07× the fastest -resumed handshake, X25519, graviola on desktop: 55.45 µs, 1.01× the fastest -resumed handshake, X25519, graviola on nixos2: 160.19 µs, 1.32× the fastest -resumed handshake, X25519, OpenSSL on nixos: 461.94 µs, 5.65× the fastest -resumed handshake, X25519, OpenSSL on desktop: 229.74 µs, 4.16× the fastest -resumed handshake, X25519, OpenSSL on nixos2: 504.16 µs, 4.14× the fastest +resumed handshake, X25519, rind on nixos: 77.19 µs, 1.00× the fastest +resumed handshake, X25519, rind on desktop: 54.19 µs, 1.00× the fastest +resumed handshake, X25519, rind on nixos2: 120.95 µs, 1.00× the fastest +resumed handshake, X25519, rind on ovh-iad: 207.86 µs, 1.00× the fastest +resumed handshake, X25519, rind on ovh-sea: 195.20 µs, 1.00× the fastest +resumed handshake, X25519, aws-lc-rs on nixos: 132.67 µs, 1.72× the fastest +resumed handshake, X25519, aws-lc-rs on desktop: 102.84 µs, 1.90× the fastest +resumed handshake, X25519, aws-lc-rs on nixos2: 229.39 µs, 1.90× the fastest +resumed handshake, X25519, aws-lc-rs on ovh-iad: 263.78 µs, 1.27× the fastest +resumed handshake, X25519, aws-lc-rs on ovh-sea: 258.21 µs, 1.32× the fastest +resumed handshake, X25519, ring on nixos: 158.11 µs, 2.05× the fastest +resumed handshake, X25519, ring on desktop: 113.00 µs, 2.09× the fastest +resumed handshake, X25519, ring on nixos2: 199.88 µs, 1.65× the fastest +resumed handshake, X25519, ring on ovh-iad: 274.24 µs, 1.32× the fastest +resumed handshake, X25519, ring on ovh-sea: 262.51 µs, 1.34× the fastest +resumed handshake, X25519, graviola on nixos: 77.33 µs, 1.00× the fastest +resumed handshake, X25519, graviola on desktop: 55.16 µs, 1.02× the fastest +resumed handshake, X25519, graviola on nixos2: 159.71 µs, 1.32× the fastest +resumed handshake, X25519, OpenSSL on nixos: 370.51 µs, 4.80× the fastest +resumed handshake, X25519, OpenSSL on desktop: 231.44 µs, 4.27× the fastest +resumed handshake, X25519, OpenSSL on nixos2: 496.91 µs, 4.11× the fastest +resumed handshake, X25519, OpenSSL on ovh-iad: 802.84 µs, 3.86× the fastest +resumed handshake, X25519, OpenSSL on ovh-sea: 723.47 µs, 3.71× the fastest 1 MB transfer, AES-128-GCM -1 MB transfer, AES-128-GCM, rind on nixos: 290.62 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, rind on desktop: 169.85 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, rind on nixos2: 433.16 µs, 1.00× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on nixos: 459.42 µs, 1.58× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on desktop: 234.65 µs, 1.38× the fastest -1 MB transfer, AES-128-GCM, aws-lc-rs on nixos2: 453.78 µs, 1.05× the fastest -1 MB transfer, AES-128-GCM, ring on nixos: 314.22 µs, 1.08× the fastest -1 MB transfer, AES-128-GCM, ring on desktop: 171.60 µs, 1.01× the fastest -1 MB transfer, AES-128-GCM, ring on nixos2: 469.65 µs, 1.08× the fastest -1 MB transfer, AES-128-GCM, graviola on nixos: 453.27 µs, 1.56× the fastest -1 MB transfer, AES-128-GCM, graviola on desktop: 288.23 µs, 1.70× the fastest -1 MB transfer, AES-128-GCM, graviola on nixos2: 578.33 µs, 1.34× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on nixos: 492.29 µs, 1.69× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on desktop: 255.06 µs, 1.50× the fastest -1 MB transfer, AES-128-GCM, OpenSSL on nixos2: 496.82 µs, 1.15× the fastest +1 MB transfer, AES-128-GCM, rind on nixos: 289.43 µs, 1.03× the fastest +1 MB transfer, AES-128-GCM, rind on desktop: 193.36 µs, 1.11× the fastest +1 MB transfer, AES-128-GCM, rind on nixos2: 440.92 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, rind on ovh-iad: 701.22 µs, 1.01× the fastest +1 MB transfer, AES-128-GCM, rind on ovh-sea: 678.24 µs, 1.02× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on nixos: 458.21 µs, 1.62× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on desktop: 241.18 µs, 1.38× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on nixos2: 442.54 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on ovh-iad: 694.46 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, aws-lc-rs on ovh-sea: 689.64 µs, 1.03× the fastest +1 MB transfer, AES-128-GCM, ring on nixos: 282.22 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, ring on desktop: 174.96 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, ring on nixos2: 448.76 µs, 1.02× the fastest +1 MB transfer, AES-128-GCM, ring on ovh-iad: 724.53 µs, 1.04× the fastest +1 MB transfer, AES-128-GCM, ring on ovh-sea: 668.04 µs, 1.00× the fastest +1 MB transfer, AES-128-GCM, graviola on nixos: 424.38 µs, 1.50× the fastest +1 MB transfer, AES-128-GCM, graviola on desktop: 294.75 µs, 1.68× the fastest +1 MB transfer, AES-128-GCM, graviola on nixos2: 579.09 µs, 1.31× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on nixos: 469.84 µs, 1.66× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on desktop: 255.72 µs, 1.46× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on nixos2: 491.38 µs, 1.11× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on ovh-iad: 783.32 µs, 1.13× the fastest +1 MB transfer, AES-128-GCM, OpenSSL on ovh-sea: 747.12 µs, 1.12× the fastest 1 MB transfer, AES-256-GCM -1 MB transfer, AES-256-GCM, rind on nixos: 310.98 µs, 1.02× the fastest -1 MB transfer, AES-256-GCM, rind on desktop: 186.02 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, rind on nixos2: 544.93 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on nixos: 487.61 µs, 1.60× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on desktop: 270.36 µs, 1.45× the fastest -1 MB transfer, AES-256-GCM, aws-lc-rs on nixos2: 553.29 µs, 1.02× the fastest -1 MB transfer, AES-256-GCM, ring on nixos: 305.27 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, ring on desktop: 188.28 µs, 1.01× the fastest -1 MB transfer, AES-256-GCM, ring on nixos2: 544.73 µs, 1.00× the fastest -1 MB transfer, AES-256-GCM, graviola on nixos: 513.59 µs, 1.68× the fastest -1 MB transfer, AES-256-GCM, graviola on desktop: 332.16 µs, 1.79× the fastest -1 MB transfer, AES-256-GCM, graviola on nixos2: 697.29 µs, 1.28× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on nixos: 607.83 µs, 1.99× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on desktop: 285.87 µs, 1.54× the fastest -1 MB transfer, AES-256-GCM, OpenSSL on nixos2: 609.96 µs, 1.12× the fastest +1 MB transfer, AES-256-GCM, rind on nixos: 292.74 µs, 1.01× the fastest +1 MB transfer, AES-256-GCM, rind on desktop: 189.84 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, rind on nixos2: 544.88 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, rind on ovh-iad: 869.86 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, rind on ovh-sea: 849.60 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on nixos: 461.28 µs, 1.59× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on desktop: 272.23 µs, 1.43× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on nixos2: 557.86 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on ovh-iad: 867.68 µs, 1.02× the fastest +1 MB transfer, AES-256-GCM, aws-lc-rs on ovh-sea: 845.52 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on nixos: 289.90 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on desktop: 192.15 µs, 1.01× the fastest +1 MB transfer, AES-256-GCM, ring on nixos2: 567.27 µs, 1.04× the fastest +1 MB transfer, AES-256-GCM, ring on ovh-iad: 854.61 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, ring on ovh-sea: 849.22 µs, 1.00× the fastest +1 MB transfer, AES-256-GCM, graviola on nixos: 490.29 µs, 1.69× the fastest +1 MB transfer, AES-256-GCM, graviola on desktop: 338.97 µs, 1.79× the fastest +1 MB transfer, AES-256-GCM, graviola on nixos2: 691.18 µs, 1.27× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on nixos: 533.20 µs, 1.84× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on desktop: 292.12 µs, 1.54× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on nixos2: 596.82 µs, 1.10× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on ovh-iad: 966.07 µs, 1.13× the fastest +1 MB transfer, AES-256-GCM, OpenSSL on ovh-sea: 933.35 µs, 1.10× the fastest 1 MB transfer, ChaCha20-Poly1305 -1 MB transfer, ChaCha20-Poly1305, rind on nixos: 739.91 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, rind on desktop: 587.48 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, rind on nixos2: 924.76 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos: 739.12 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on desktop: 586.46 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos2: 932.29 µs, 1.01× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on nixos: 747.52 µs, 1.01× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on desktop: 588.81 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, ring on nixos2: 928.70 µs, 1.00× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on nixos: 1.49 ms, 2.02× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on desktop: 1.16 ms, 1.97× the fastest -1 MB transfer, ChaCha20-Poly1305, graviola on nixos2: 1.64 ms, 1.78× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos: 855.61 µs, 1.16× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on desktop: 658.14 µs, 1.12× the fastest -1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos2: 1.00 ms, 1.08× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on nixos: 688.78 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on desktop: 621.49 µs, 1.04× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on nixos2: 923.82 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on ovh-iad: 1.58 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, rind on ovh-sea: 1.44 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos: 687.53 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on desktop: 609.72 µs, 1.02× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on nixos2: 928.09 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on ovh-iad: 1.56 ms, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs on ovh-sea: 1.43 ms, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on nixos: 693.01 µs, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on desktop: 594.88 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on nixos2: 925.14 µs, 1.00× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on ovh-iad: 1.59 ms, 1.02× the fastest +1 MB transfer, ChaCha20-Poly1305, ring on ovh-sea: 1.44 ms, 1.01× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on nixos: 1.37 ms, 2.00× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on desktop: 1.17 ms, 1.97× the fastest +1 MB transfer, ChaCha20-Poly1305, graviola on nixos2: 1.64 ms, 1.78× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos: 782.98 µs, 1.14× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on desktop: 661.80 µs, 1.11× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on nixos2: 983.97 µs, 1.07× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on ovh-iad: 1.77 ms, 1.13× the fastest +1 MB transfer, ChaCha20-Poly1305, OpenSSL on ovh-sea: 1.71 ms, 1.20× the fastest AEADs - + AES-128-GCM seal, 32 B -AES-128-GCM seal, 32 B, rind on nixos: 40 ns, 1.00× the fastest -AES-128-GCM seal, 32 B, rind on desktop: 19 ns, 1.00× the fastest -AES-128-GCM seal, 32 B, rind on nixos2: 42 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 32 B, aws-lc-rs on nixos: 81 ns, 2.00× the fastest -AES-128-GCM seal, 32 B, aws-lc-rs on desktop: 37 ns, 1.93× the fastest -AES-128-GCM seal, 32 B, aws-lc-rs on nixos2: 89 ns, 2.12× the fastest -AES-128-GCM seal, 32 B, ring on nixos: 54 ns, 1.34× the fastest -AES-128-GCM seal, 32 B, ring on desktop: 42 ns, 2.17× the fastest -AES-128-GCM seal, 32 B, ring on nixos2: 72 ns, 1.71× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos: 95 ns, 2.35× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on desktop: 73 ns, 3.76× the fastest -AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos2: 101 ns, 2.42× the fastest -AES-128-GCM seal, 32 B, graviola on nixos: 67 ns, 1.67× the fastest -AES-128-GCM seal, 32 B, graviola on desktop: 42 ns, 2.19× the fastest -AES-128-GCM seal, 32 B, graviola on nixos2: 72 ns, 1.71× the fastest -AES-128-GCM seal, 32 B, libcrux on nixos: 308 ns, 7.60× the fastest -AES-128-GCM seal, 32 B, libcrux on desktop: 171 ns, 8.78× the fastest -AES-128-GCM seal, 32 B, libcrux on nixos2: 290 ns, 6.94× the fastest -AES-128-GCM seal, 32 B, OpenSSL on nixos: 114 ns, 2.81× the fastest -AES-128-GCM seal, 32 B, OpenSSL on desktop: 55 ns, 2.85× the fastest -AES-128-GCM seal, 32 B, OpenSSL on nixos2: 161 ns, 3.84× the fastest +AES-128-GCM seal, 32 B, rind on nixos: 39 ns, 1.00× the fastest +AES-128-GCM seal, 32 B, rind on desktop: 18 ns, 1.00× the fastest +AES-128-GCM seal, 32 B, rind on nixos2: 43 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, rind on ovh-iad: 69 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, rind on ovh-sea: 66 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 32 B, aws-lc-rs on nixos: 78 ns, 2.02× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on desktop: 37 ns, 2.03× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on nixos2: 89 ns, 2.06× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on ovh-iad: 138 ns, 2.01× the fastest +AES-128-GCM seal, 32 B, aws-lc-rs on ovh-sea: 136 ns, 2.05× the fastest +AES-128-GCM seal, 32 B, ring on nixos: 56 ns, 1.45× the fastest +AES-128-GCM seal, 32 B, ring on desktop: 42 ns, 2.30× the fastest +AES-128-GCM seal, 32 B, ring on nixos2: 71 ns, 1.64× the fastest +AES-128-GCM seal, 32 B, ring on ovh-iad: 111 ns, 1.61× the fastest +AES-128-GCM seal, 32 B, ring on ovh-sea: 111 ns, 1.68× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos: 97 ns, 2.50× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on desktop: 73 ns, 3.98× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on nixos2: 100 ns, 2.33× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on ovh-iad: 157 ns, 2.29× the fastest +AES-128-GCM seal, 32 B, RustCrypto + dalek on ovh-sea: 155 ns, 2.35× the fastest +AES-128-GCM seal, 32 B, graviola on nixos: 70 ns, 1.80× the fastest +AES-128-GCM seal, 32 B, graviola on desktop: 42 ns, 2.33× the fastest +AES-128-GCM seal, 32 B, graviola on nixos2: 71 ns, 1.65× the fastest +AES-128-GCM seal, 32 B, libcrux on nixos: 321 ns, 8.29× the fastest +AES-128-GCM seal, 32 B, libcrux on desktop: 168 ns, 9.19× the fastest +AES-128-GCM seal, 32 B, libcrux on nixos2: 282 ns, 6.52× the fastest +AES-128-GCM seal, 32 B, libcrux on ovh-iad: 446 ns, 6.50× the fastest +AES-128-GCM seal, 32 B, libcrux on ovh-sea: 435 ns, 6.59× the fastest +AES-128-GCM seal, 32 B, OpenSSL on nixos: 115 ns, 2.97× the fastest +AES-128-GCM seal, 32 B, OpenSSL on desktop: 55 ns, 3.02× the fastest +AES-128-GCM seal, 32 B, OpenSSL on nixos2: 156 ns, 3.62× the fastest +AES-128-GCM seal, 32 B, OpenSSL on ovh-iad: 242 ns, 3.52× the fastest +AES-128-GCM seal, 32 B, OpenSSL on ovh-sea: 233 ns, 3.53× the fastest AES-128-GCM seal, 1350 B -AES-128-GCM seal, 1350 B, rind on nixos: 170 ns, 1.00× the fastest -AES-128-GCM seal, 1350 B, rind on desktop: 94 ns, 1.00× the fastest -AES-128-GCM seal, 1350 B, rind on nixos2: 264 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 1350 B, aws-lc-rs on nixos: 289 ns, 1.70× the fastest -AES-128-GCM seal, 1350 B, aws-lc-rs on desktop: 152 ns, 1.62× the fastest -AES-128-GCM seal, 1350 B, aws-lc-rs on nixos2: 287 ns, 1.09× the fastest -AES-128-GCM seal, 1350 B, ring on nixos: 184 ns, 1.08× the fastest -AES-128-GCM seal, 1350 B, ring on desktop: 119 ns, 1.27× the fastest -AES-128-GCM seal, 1350 B, ring on nixos2: 280 ns, 1.06× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos: 435 ns, 2.55× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on desktop: 276 ns, 2.95× the fastest -AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 556 ns, 2.11× the fastest -AES-128-GCM seal, 1350 B, graviola on nixos: 296 ns, 1.74× the fastest -AES-128-GCM seal, 1350 B, graviola on desktop: 226 ns, 2.41× the fastest -AES-128-GCM seal, 1350 B, graviola on nixos2: 403 ns, 1.53× the fastest -AES-128-GCM seal, 1350 B, libcrux on nixos: 3.91 µs, 22.95× the fastest -AES-128-GCM seal, 1350 B, libcrux on desktop: 1.98 µs, 21.10× the fastest -AES-128-GCM seal, 1350 B, libcrux on nixos2: 3.41 µs, 12.95× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on nixos: 323 ns, 1.90× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on desktop: 159 ns, 1.70× the fastest -AES-128-GCM seal, 1350 B, OpenSSL on nixos2: 362 ns, 1.37× the fastest +AES-128-GCM seal, 1350 B, rind on nixos: 165 ns, 1.00× the fastest +AES-128-GCM seal, 1350 B, rind on desktop: 94 ns, 1.00× the fastest +AES-128-GCM seal, 1350 B, rind on nixos2: 246 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, rind on ovh-iad: 398 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, rind on ovh-sea: 387 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 1350 B, aws-lc-rs on nixos: 291 ns, 1.77× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on desktop: 149 ns, 1.59× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on nixos2: 285 ns, 1.16× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on ovh-iad: 500 ns, 1.26× the fastest +AES-128-GCM seal, 1350 B, aws-lc-rs on ovh-sea: 445 ns, 1.15× the fastest +AES-128-GCM seal, 1350 B, ring on nixos: 191 ns, 1.16× the fastest +AES-128-GCM seal, 1350 B, ring on desktop: 118 ns, 1.26× the fastest +AES-128-GCM seal, 1350 B, ring on nixos2: 277 ns, 1.13× the fastest +AES-128-GCM seal, 1350 B, ring on ovh-iad: 463 ns, 1.17× the fastest +AES-128-GCM seal, 1350 B, ring on ovh-sea: 427 ns, 1.10× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos: 434 ns, 2.63× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on desktop: 272 ns, 2.90× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 547 ns, 2.22× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on ovh-iad: 872 ns, 2.19× the fastest +AES-128-GCM seal, 1350 B, RustCrypto + dalek on ovh-sea: 854 ns, 2.21× the fastest +AES-128-GCM seal, 1350 B, graviola on nixos: 295 ns, 1.79× the fastest +AES-128-GCM seal, 1350 B, graviola on desktop: 227 ns, 2.42× the fastest +AES-128-GCM seal, 1350 B, graviola on nixos2: 400 ns, 1.63× the fastest +AES-128-GCM seal, 1350 B, libcrux on nixos: 4.72 µs, 28.63× the fastest +AES-128-GCM seal, 1350 B, libcrux on desktop: 1.94 µs, 20.74× the fastest +AES-128-GCM seal, 1350 B, libcrux on nixos2: 3.49 µs, 14.19× the fastest +AES-128-GCM seal, 1350 B, libcrux on ovh-iad: 5.56 µs, 13.98× the fastest +AES-128-GCM seal, 1350 B, libcrux on ovh-sea: 5.44 µs, 14.06× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on nixos: 326 ns, 1.98× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on desktop: 163 ns, 1.74× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on nixos2: 352 ns, 1.43× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on ovh-iad: 561 ns, 1.41× the fastest +AES-128-GCM seal, 1350 B, OpenSSL on ovh-sea: 550 ns, 1.42× the fastest AES-128-GCM seal, 16 KB -AES-128-GCM seal, 16 KB, rind on nixos: 1.39 µs, 1.00× the fastest -AES-128-GCM seal, 16 KB, rind on desktop: 772 ns, 1.00× the fastest -AES-128-GCM seal, 16 KB, rind on nixos2: 2.38 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM seal, 16 KB, aws-lc-rs on nixos: 2.58 µs, 1.85× the fastest -AES-128-GCM seal, 16 KB, aws-lc-rs on desktop: 1.33 µs, 1.72× the fastest -AES-128-GCM seal, 16 KB, aws-lc-rs on nixos2: 2.46 µs, 1.04× the fastest -AES-128-GCM seal, 16 KB, ring on nixos: 1.43 µs, 1.03× the fastest -AES-128-GCM seal, 16 KB, ring on desktop: 795 ns, 1.03× the fastest -AES-128-GCM seal, 16 KB, ring on nixos2: 2.38 µs, 1.00× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.18 µs, 3.00× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.45 µs, 3.18× the fastest -AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 5.63 µs, 2.37× the fastest -AES-128-GCM seal, 16 KB, graviola on nixos: 2.58 µs, 1.85× the fastest -AES-128-GCM seal, 16 KB, graviola on desktop: 2.05 µs, 2.65× the fastest -AES-128-GCM seal, 16 KB, graviola on nixos2: 3.84 µs, 1.62× the fastest -AES-128-GCM seal, 16 KB, libcrux on nixos: 44.41 µs, 31.87× the fastest -AES-128-GCM seal, 16 KB, libcrux on desktop: 22.01 µs, 28.52× the fastest -AES-128-GCM seal, 16 KB, libcrux on nixos2: 38.50 µs, 16.20× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on nixos: 2.62 µs, 1.88× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on desktop: 1.34 µs, 1.74× the fastest -AES-128-GCM seal, 16 KB, OpenSSL on nixos2: 2.53 µs, 1.06× the fastest +AES-128-GCM seal, 16 KB, rind on nixos: 1.38 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind on desktop: 781 ns, 1.00× the fastest +AES-128-GCM seal, 16 KB, rind on nixos2: 2.33 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, rind on ovh-iad: 3.83 µs, 1.03× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, rind on ovh-sea: 3.70 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM seal, 16 KB, aws-lc-rs on nixos: 2.63 µs, 1.91× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on desktop: 1.33 µs, 1.70× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on nixos2: 2.42 µs, 1.04× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on ovh-iad: 4.04 µs, 1.08× the fastest +AES-128-GCM seal, 16 KB, aws-lc-rs on ovh-sea: 3.70 µs, 1.01× the fastest +AES-128-GCM seal, 16 KB, ring on nixos: 1.39 µs, 1.01× the fastest +AES-128-GCM seal, 16 KB, ring on desktop: 799 ns, 1.02× the fastest +AES-128-GCM seal, 16 KB, ring on nixos2: 2.38 µs, 1.02× the fastest +AES-128-GCM seal, 16 KB, ring on ovh-iad: 3.72 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, ring on ovh-sea: 3.67 µs, 1.00× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.28 µs, 3.10× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.49 µs, 3.19× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 5.62 µs, 2.41× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on ovh-iad: 8.91 µs, 2.39× the fastest +AES-128-GCM seal, 16 KB, RustCrypto + dalek on ovh-sea: 8.67 µs, 2.36× the fastest +AES-128-GCM seal, 16 KB, graviola on nixos: 2.57 µs, 1.86× the fastest +AES-128-GCM seal, 16 KB, graviola on desktop: 2.02 µs, 2.59× the fastest +AES-128-GCM seal, 16 KB, graviola on nixos2: 3.75 µs, 1.61× the fastest +AES-128-GCM seal, 16 KB, libcrux on nixos: 53.90 µs, 39.11× the fastest +AES-128-GCM seal, 16 KB, libcrux on desktop: 22.02 µs, 28.20× the fastest +AES-128-GCM seal, 16 KB, libcrux on nixos2: 39.94 µs, 17.11× the fastest +AES-128-GCM seal, 16 KB, libcrux on ovh-iad: 62.33 µs, 16.74× the fastest +AES-128-GCM seal, 16 KB, libcrux on ovh-sea: 60.39 µs, 16.47× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on nixos: 2.61 µs, 1.89× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on desktop: 1.34 µs, 1.72× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on nixos2: 2.45 µs, 1.05× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on ovh-iad: 4.03 µs, 1.08× the fastest +AES-128-GCM seal, 16 KB, OpenSSL on ovh-sea: 3.81 µs, 1.04× the fastest AES-128-GCM open, 32 B -AES-128-GCM open, 32 B, rind on nixos: 47 ns, 1.00× the fastest -AES-128-GCM open, 32 B, rind on desktop: 23 ns, 1.00× the fastest -AES-128-GCM open, 32 B, rind on nixos2: 50 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 32 B, aws-lc-rs on nixos: 72 ns, 1.53× the fastest -AES-128-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.57× the fastest -AES-128-GCM open, 32 B, aws-lc-rs on nixos2: 95 ns, 1.89× the fastest -AES-128-GCM open, 32 B, ring on nixos: 58 ns, 1.24× the fastest -AES-128-GCM open, 32 B, ring on desktop: 42 ns, 1.79× the fastest -AES-128-GCM open, 32 B, ring on nixos2: 79 ns, 1.58× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on nixos: 102 ns, 2.16× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on desktop: 78 ns, 3.32× the fastest -AES-128-GCM open, 32 B, RustCrypto + dalek on nixos2: 106 ns, 2.11× the fastest -AES-128-GCM open, 32 B, graviola on nixos: 65 ns, 1.39× the fastest -AES-128-GCM open, 32 B, graviola on desktop: 35 ns, 1.52× the fastest -AES-128-GCM open, 32 B, graviola on nixos2: 68 ns, 1.37× the fastest -AES-128-GCM open, 32 B, libcrux on nixos: 320 ns, 6.81× the fastest -AES-128-GCM open, 32 B, libcrux on desktop: 161 ns, 6.89× the fastest -AES-128-GCM open, 32 B, libcrux on nixos2: 305 ns, 6.10× the fastest -AES-128-GCM open, 32 B, OpenSSL on nixos: 118 ns, 2.52× the fastest -AES-128-GCM open, 32 B, OpenSSL on desktop: 58 ns, 2.50× the fastest -AES-128-GCM open, 32 B, OpenSSL on nixos2: 156 ns, 3.13× the fastest +AES-128-GCM open, 32 B, rind on nixos: 44 ns, 1.00× the fastest +AES-128-GCM open, 32 B, rind on desktop: 28 ns, 1.00× the fastest +AES-128-GCM open, 32 B, rind on nixos2: 38 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, rind on ovh-iad: 63 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, rind on ovh-sea: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 32 B, aws-lc-rs on nixos: 72 ns, 1.63× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.31× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on nixos2: 90 ns, 2.41× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on ovh-iad: 145 ns, 2.29× the fastest +AES-128-GCM open, 32 B, aws-lc-rs on ovh-sea: 138 ns, 2.28× the fastest +AES-128-GCM open, 32 B, ring on nixos: 58 ns, 1.30× the fastest +AES-128-GCM open, 32 B, ring on desktop: 42 ns, 1.49× the fastest +AES-128-GCM open, 32 B, ring on nixos2: 98 ns, 2.60× the fastest +AES-128-GCM open, 32 B, ring on ovh-iad: 131 ns, 2.07× the fastest +AES-128-GCM open, 32 B, ring on ovh-sea: 124 ns, 2.04× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on nixos: 102 ns, 2.29× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on desktop: 78 ns, 2.73× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on nixos2: 104 ns, 2.78× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on ovh-iad: 163 ns, 2.57× the fastest +AES-128-GCM open, 32 B, RustCrypto + dalek on ovh-sea: 162 ns, 2.66× the fastest +AES-128-GCM open, 32 B, graviola on nixos: 65 ns, 1.46× the fastest +AES-128-GCM open, 32 B, graviola on desktop: 36 ns, 1.26× the fastest +AES-128-GCM open, 32 B, graviola on nixos2: 69 ns, 1.83× the fastest +AES-128-GCM open, 32 B, libcrux on nixos: 317 ns, 7.15× the fastest +AES-128-GCM open, 32 B, libcrux on desktop: 159 ns, 5.59× the fastest +AES-128-GCM open, 32 B, libcrux on nixos2: 303 ns, 8.06× the fastest +AES-128-GCM open, 32 B, libcrux on ovh-iad: 467 ns, 7.39× the fastest +AES-128-GCM open, 32 B, libcrux on ovh-sea: 465 ns, 7.65× the fastest +AES-128-GCM open, 32 B, OpenSSL on nixos: 118 ns, 2.65× the fastest +AES-128-GCM open, 32 B, OpenSSL on desktop: 58 ns, 2.02× the fastest +AES-128-GCM open, 32 B, OpenSSL on nixos2: 159 ns, 4.24× the fastest +AES-128-GCM open, 32 B, OpenSSL on ovh-iad: 245 ns, 3.88× the fastest +AES-128-GCM open, 32 B, OpenSSL on ovh-sea: 242 ns, 3.99× the fastest AES-128-GCM open, 1350 B -AES-128-GCM open, 1350 B, rind on nixos: 175 ns, 1.00× the fastest -AES-128-GCM open, 1350 B, rind on desktop: 101 ns, 1.00× the fastest -AES-128-GCM open, 1350 B, rind on nixos2: 261 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 1350 B, aws-lc-rs on nixos: 295 ns, 1.68× the fastest -AES-128-GCM open, 1350 B, aws-lc-rs on desktop: 149 ns, 1.47× the fastest -AES-128-GCM open, 1350 B, aws-lc-rs on nixos2: 297 ns, 1.14× the fastest -AES-128-GCM open, 1350 B, ring on nixos: 185 ns, 1.06× the fastest -AES-128-GCM open, 1350 B, ring on desktop: 113 ns, 1.12× the fastest -AES-128-GCM open, 1350 B, ring on nixos2: 278 ns, 1.07× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos: 448 ns, 2.56× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on desktop: 283 ns, 2.81× the fastest -AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos2: 569 ns, 2.18× the fastest -AES-128-GCM open, 1350 B, graviola on nixos: 307 ns, 1.75× the fastest -AES-128-GCM open, 1350 B, graviola on desktop: 176 ns, 1.75× the fastest -AES-128-GCM open, 1350 B, graviola on nixos2: 362 ns, 1.39× the fastest -AES-128-GCM open, 1350 B, libcrux on nixos: 3.93 µs, 22.44× the fastest -AES-128-GCM open, 1350 B, libcrux on desktop: 1.99 µs, 19.73× the fastest -AES-128-GCM open, 1350 B, libcrux on nixos2: 3.63 µs, 13.91× the fastest -AES-128-GCM open, 1350 B, OpenSSL on nixos: 332 ns, 1.90× the fastest -AES-128-GCM open, 1350 B, OpenSSL on desktop: 157 ns, 1.56× the fastest -AES-128-GCM open, 1350 B, OpenSSL on nixos2: 360 ns, 1.38× the fastest +AES-128-GCM open, 1350 B, rind on nixos: 174 ns, 1.00× the fastest +AES-128-GCM open, 1350 B, rind on desktop: 99 ns, 1.00× the fastest +AES-128-GCM open, 1350 B, rind on nixos2: 236 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, rind on ovh-iad: 388 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, rind on ovh-sea: 373 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 1350 B, aws-lc-rs on nixos: 298 ns, 1.71× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on desktop: 149 ns, 1.51× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on nixos2: 285 ns, 1.21× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on ovh-iad: 443 ns, 1.14× the fastest +AES-128-GCM open, 1350 B, aws-lc-rs on ovh-sea: 444 ns, 1.19× the fastest +AES-128-GCM open, 1350 B, ring on nixos: 185 ns, 1.06× the fastest +AES-128-GCM open, 1350 B, ring on desktop: 114 ns, 1.16× the fastest +AES-128-GCM open, 1350 B, ring on nixos2: 296 ns, 1.25× the fastest +AES-128-GCM open, 1350 B, ring on ovh-iad: 431 ns, 1.11× the fastest +AES-128-GCM open, 1350 B, ring on ovh-sea: 440 ns, 1.18× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos: 451 ns, 2.58× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on desktop: 282 ns, 2.86× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on nixos2: 564 ns, 2.39× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on ovh-iad: 899 ns, 2.32× the fastest +AES-128-GCM open, 1350 B, RustCrypto + dalek on ovh-sea: 881 ns, 2.37× the fastest +AES-128-GCM open, 1350 B, graviola on nixos: 305 ns, 1.75× the fastest +AES-128-GCM open, 1350 B, graviola on desktop: 176 ns, 1.79× the fastest +AES-128-GCM open, 1350 B, graviola on nixos2: 358 ns, 1.51× the fastest +AES-128-GCM open, 1350 B, libcrux on nixos: 3.92 µs, 22.46× the fastest +AES-128-GCM open, 1350 B, libcrux on desktop: 2.00 µs, 20.29× the fastest +AES-128-GCM open, 1350 B, libcrux on nixos2: 3.48 µs, 14.75× the fastest +AES-128-GCM open, 1350 B, libcrux on ovh-iad: 5.59 µs, 14.43× the fastest +AES-128-GCM open, 1350 B, libcrux on ovh-sea: 5.33 µs, 14.31× the fastest +AES-128-GCM open, 1350 B, OpenSSL on nixos: 333 ns, 1.91× the fastest +AES-128-GCM open, 1350 B, OpenSSL on desktop: 159 ns, 1.62× the fastest +AES-128-GCM open, 1350 B, OpenSSL on nixos2: 355 ns, 1.50× the fastest +AES-128-GCM open, 1350 B, OpenSSL on ovh-iad: 590 ns, 1.52× the fastest +AES-128-GCM open, 1350 B, OpenSSL on ovh-sea: 552 ns, 1.48× the fastest AES-128-GCM open, 16 KB -AES-128-GCM open, 16 KB, rind on nixos: 1.45 µs, 1.00× the fastest -AES-128-GCM open, 16 KB, rind on desktop: 812 ns, 1.00× the fastest -AES-128-GCM open, 16 KB, rind on nixos2: 2.58 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-128-GCM open, 16 KB, aws-lc-rs on nixos: 2.71 µs, 1.87× the fastest -AES-128-GCM open, 16 KB, aws-lc-rs on desktop: 1.26 µs, 1.55× the fastest -AES-128-GCM open, 16 KB, aws-lc-rs on nixos2: 2.63 µs, 1.02× the fastest -AES-128-GCM open, 16 KB, ring on nixos: 1.48 µs, 1.02× the fastest -AES-128-GCM open, 16 KB, ring on desktop: 823 ns, 1.01× the fastest -AES-128-GCM open, 16 KB, ring on nixos2: 2.59 µs, 1.00× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.28 µs, 2.95× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.51 µs, 3.09× the fastest -AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos2: 5.81 µs, 2.25× the fastest -AES-128-GCM open, 16 KB, graviola on nixos: 2.66 µs, 1.83× the fastest -AES-128-GCM open, 16 KB, graviola on desktop: 1.40 µs, 1.72× the fastest -AES-128-GCM open, 16 KB, graviola on nixos2: 3.41 µs, 1.32× the fastest -AES-128-GCM open, 16 KB, libcrux on nixos: 44.58 µs, 30.67× the fastest -AES-128-GCM open, 16 KB, libcrux on desktop: 22.00 µs, 27.09× the fastest -AES-128-GCM open, 16 KB, libcrux on nixos2: 39.83 µs, 15.43× the fastest -AES-128-GCM open, 16 KB, OpenSSL on nixos: 2.75 µs, 1.89× the fastest -AES-128-GCM open, 16 KB, OpenSSL on desktop: 1.29 µs, 1.58× the fastest -AES-128-GCM open, 16 KB, OpenSSL on nixos2: 2.70 µs, 1.05× the fastest +AES-128-GCM open, 16 KB, rind on nixos: 1.44 µs, 1.00× the fastest +AES-128-GCM open, 16 KB, rind on desktop: 816 ns, 1.00× the fastest +AES-128-GCM open, 16 KB, rind on nixos2: 2.52 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, rind on ovh-iad: 3.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, rind on ovh-sea: 3.78 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-128-GCM open, 16 KB, aws-lc-rs on nixos: 2.72 µs, 1.89× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on desktop: 1.28 µs, 1.56× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on nixos2: 2.60 µs, 1.03× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on ovh-iad: 4.08 µs, 1.04× the fastest +AES-128-GCM open, 16 KB, aws-lc-rs on ovh-sea: 3.90 µs, 1.03× the fastest +AES-128-GCM open, 16 KB, ring on nixos: 1.45 µs, 1.01× the fastest +AES-128-GCM open, 16 KB, ring on desktop: 829 ns, 1.02× the fastest +AES-128-GCM open, 16 KB, ring on nixos2: 2.62 µs, 1.04× the fastest +AES-128-GCM open, 16 KB, ring on ovh-iad: 4.03 µs, 1.02× the fastest +AES-128-GCM open, 16 KB, ring on ovh-sea: 3.77 µs, 1.00× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.29 µs, 2.98× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.54 µs, 3.12× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on nixos2: 5.75 µs, 2.28× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on ovh-iad: 8.88 µs, 2.26× the fastest +AES-128-GCM open, 16 KB, RustCrypto + dalek on ovh-sea: 8.84 µs, 2.34× the fastest +AES-128-GCM open, 16 KB, graviola on nixos: 2.65 µs, 1.84× the fastest +AES-128-GCM open, 16 KB, graviola on desktop: 1.42 µs, 1.73× the fastest +AES-128-GCM open, 16 KB, graviola on nixos2: 3.39 µs, 1.34× the fastest +AES-128-GCM open, 16 KB, libcrux on nixos: 44.29 µs, 30.79× the fastest +AES-128-GCM open, 16 KB, libcrux on desktop: 22.31 µs, 27.33× the fastest +AES-128-GCM open, 16 KB, libcrux on nixos2: 41.66 µs, 16.52× the fastest +AES-128-GCM open, 16 KB, libcrux on ovh-iad: 60.53 µs, 15.38× the fastest +AES-128-GCM open, 16 KB, libcrux on ovh-sea: 60.11 µs, 15.93× the fastest +AES-128-GCM open, 16 KB, OpenSSL on nixos: 2.77 µs, 1.93× the fastest +AES-128-GCM open, 16 KB, OpenSSL on desktop: 1.30 µs, 1.59× the fastest +AES-128-GCM open, 16 KB, OpenSSL on nixos2: 2.85 µs, 1.13× the fastest +AES-128-GCM open, 16 KB, OpenSSL on ovh-iad: 3.99 µs, 1.01× the fastest +AES-128-GCM open, 16 KB, OpenSSL on ovh-sea: 4.03 µs, 1.07× the fastest AES-256-GCM seal, 32 B -AES-256-GCM seal, 32 B, rind on nixos: 44 ns, 1.00× the fastest -AES-256-GCM seal, 32 B, rind on desktop: 21 ns, 1.00× the fastest -AES-256-GCM seal, 32 B, rind on nixos2: 46 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 32 B, aws-lc-rs on nixos: 81 ns, 1.84× the fastest -AES-256-GCM seal, 32 B, aws-lc-rs on desktop: 39 ns, 1.87× the fastest -AES-256-GCM seal, 32 B, aws-lc-rs on nixos2: 96 ns, 2.06× the fastest -AES-256-GCM seal, 32 B, ring on nixos: 58 ns, 1.31× the fastest -AES-256-GCM seal, 32 B, ring on desktop: 43 ns, 2.07× the fastest -AES-256-GCM seal, 32 B, ring on nixos2: 76 ns, 1.64× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos: 101 ns, 2.29× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on desktop: 78 ns, 3.73× the fastest -AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos2: 109 ns, 2.35× the fastest -AES-256-GCM seal, 32 B, graviola on nixos: 73 ns, 1.67× the fastest -AES-256-GCM seal, 32 B, graviola on desktop: 45 ns, 2.14× the fastest -AES-256-GCM seal, 32 B, graviola on nixos2: 80 ns, 1.72× the fastest -AES-256-GCM seal, 32 B, libcrux on nixos: 426 ns, 9.69× the fastest -AES-256-GCM seal, 32 B, libcrux on desktop: 218 ns, 10.42× the fastest -AES-256-GCM seal, 32 B, libcrux on nixos2: 343 ns, 7.41× the fastest -AES-256-GCM seal, 32 B, OpenSSL on nixos: 119 ns, 2.70× the fastest -AES-256-GCM seal, 32 B, OpenSSL on desktop: 58 ns, 2.78× the fastest -AES-256-GCM seal, 32 B, OpenSSL on nixos2: 167 ns, 3.60× the fastest +AES-256-GCM seal, 32 B, rind on nixos: 41 ns, 1.00× the fastest +AES-256-GCM seal, 32 B, rind on desktop: 20 ns, 1.00× the fastest +AES-256-GCM seal, 32 B, rind on nixos2: 49 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, rind on ovh-iad: 80 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, rind on ovh-sea: 74 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 32 B, aws-lc-rs on nixos: 82 ns, 1.99× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on desktop: 40 ns, 1.99× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on nixos2: 95 ns, 1.96× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on ovh-iad: 147 ns, 1.85× the fastest +AES-256-GCM seal, 32 B, aws-lc-rs on ovh-sea: 146 ns, 1.96× the fastest +AES-256-GCM seal, 32 B, ring on nixos: 57 ns, 1.38× the fastest +AES-256-GCM seal, 32 B, ring on desktop: 43 ns, 2.16× the fastest +AES-256-GCM seal, 32 B, ring on nixos2: 75 ns, 1.54× the fastest +AES-256-GCM seal, 32 B, ring on ovh-iad: 121 ns, 1.52× the fastest +AES-256-GCM seal, 32 B, ring on ovh-sea: 117 ns, 1.57× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos: 101 ns, 2.45× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on desktop: 77 ns, 3.90× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on nixos2: 107 ns, 2.21× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on ovh-iad: 169 ns, 2.12× the fastest +AES-256-GCM seal, 32 B, RustCrypto + dalek on ovh-sea: 166 ns, 2.23× the fastest +AES-256-GCM seal, 32 B, graviola on nixos: 74 ns, 1.81× the fastest +AES-256-GCM seal, 32 B, graviola on desktop: 44 ns, 2.22× the fastest +AES-256-GCM seal, 32 B, graviola on nixos2: 78 ns, 1.60× the fastest +AES-256-GCM seal, 32 B, libcrux on nixos: 426 ns, 10.35× the fastest +AES-256-GCM seal, 32 B, libcrux on desktop: 216 ns, 10.88× the fastest +AES-256-GCM seal, 32 B, libcrux on nixos2: 344 ns, 7.07× the fastest +AES-256-GCM seal, 32 B, libcrux on ovh-iad: 558 ns, 7.00× the fastest +AES-256-GCM seal, 32 B, libcrux on ovh-sea: 531 ns, 7.14× the fastest +AES-256-GCM seal, 32 B, OpenSSL on nixos: 118 ns, 2.87× the fastest +AES-256-GCM seal, 32 B, OpenSSL on desktop: 58 ns, 2.93× the fastest +AES-256-GCM seal, 32 B, OpenSSL on nixos2: 161 ns, 3.32× the fastest +AES-256-GCM seal, 32 B, OpenSSL on ovh-iad: 288 ns, 3.61× the fastest +AES-256-GCM seal, 32 B, OpenSSL on ovh-sea: 250 ns, 3.36× the fastest AES-256-GCM seal, 1350 B -AES-256-GCM seal, 1350 B, rind on nixos: 188 ns, 1.00× the fastest -AES-256-GCM seal, 1350 B, rind on desktop: 109 ns, 1.00× the fastest -AES-256-GCM seal, 1350 B, rind on nixos2: 343 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 1350 B, aws-lc-rs on nixos: 313 ns, 1.66× the fastest -AES-256-GCM seal, 1350 B, aws-lc-rs on desktop: 176 ns, 1.62× the fastest -AES-256-GCM seal, 1350 B, aws-lc-rs on nixos2: 364 ns, 1.06× the fastest -AES-256-GCM seal, 1350 B, ring on nixos: 206 ns, 1.10× the fastest -AES-256-GCM seal, 1350 B, ring on desktop: 135 ns, 1.25× the fastest -AES-256-GCM seal, 1350 B, ring on nixos2: 356 ns, 1.04× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos: 488 ns, 2.60× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on desktop: 312 ns, 2.88× the fastest -AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 648 ns, 1.89× the fastest -AES-256-GCM seal, 1350 B, graviola on nixos: 338 ns, 1.80× the fastest -AES-256-GCM seal, 1350 B, graviola on desktop: 261 ns, 2.41× the fastest -AES-256-GCM seal, 1350 B, graviola on nixos2: 485 ns, 1.41× the fastest -AES-256-GCM seal, 1350 B, libcrux on nixos: 6.96 µs, 37.07× the fastest -AES-256-GCM seal, 1350 B, libcrux on desktop: 2.86 µs, 26.33× the fastest -AES-256-GCM seal, 1350 B, libcrux on nixos2: 4.49 µs, 13.06× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on nixos: 345 ns, 1.84× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on desktop: 184 ns, 1.69× the fastest -AES-256-GCM seal, 1350 B, OpenSSL on nixos2: 438 ns, 1.28× the fastest +AES-256-GCM seal, 1350 B, rind on nixos: 184 ns, 1.00× the fastest +AES-256-GCM seal, 1350 B, rind on desktop: 106 ns, 1.00× the fastest +AES-256-GCM seal, 1350 B, rind on nixos2: 325 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, rind on ovh-iad: 514 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, rind on ovh-sea: 495 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 1350 B, aws-lc-rs on nixos: 311 ns, 1.69× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on desktop: 173 ns, 1.63× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on nixos2: 363 ns, 1.12× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on ovh-iad: 577 ns, 1.12× the fastest +AES-256-GCM seal, 1350 B, aws-lc-rs on ovh-sea: 559 ns, 1.13× the fastest +AES-256-GCM seal, 1350 B, ring on nixos: 205 ns, 1.11× the fastest +AES-256-GCM seal, 1350 B, ring on desktop: 133 ns, 1.25× the fastest +AES-256-GCM seal, 1350 B, ring on nixos2: 353 ns, 1.09× the fastest +AES-256-GCM seal, 1350 B, ring on ovh-iad: 568 ns, 1.10× the fastest +AES-256-GCM seal, 1350 B, ring on ovh-sea: 538 ns, 1.09× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos: 489 ns, 2.65× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on desktop: 313 ns, 2.94× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on nixos2: 623 ns, 1.92× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on ovh-iad: 965 ns, 1.88× the fastest +AES-256-GCM seal, 1350 B, RustCrypto + dalek on ovh-sea: 963 ns, 1.95× the fastest +AES-256-GCM seal, 1350 B, graviola on nixos: 337 ns, 1.83× the fastest +AES-256-GCM seal, 1350 B, graviola on desktop: 258 ns, 2.42× the fastest +AES-256-GCM seal, 1350 B, graviola on nixos2: 476 ns, 1.46× the fastest +AES-256-GCM seal, 1350 B, libcrux on nixos: 6.91 µs, 37.50× the fastest +AES-256-GCM seal, 1350 B, libcrux on desktop: 2.83 µs, 26.55× the fastest +AES-256-GCM seal, 1350 B, libcrux on nixos2: 4.50 µs, 13.86× the fastest +AES-256-GCM seal, 1350 B, libcrux on ovh-iad: 6.99 µs, 13.60× the fastest +AES-256-GCM seal, 1350 B, libcrux on ovh-sea: 6.89 µs, 13.93× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on nixos: 345 ns, 1.87× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on desktop: 186 ns, 1.75× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on nixos2: 437 ns, 1.34× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on ovh-iad: 678 ns, 1.32× the fastest +AES-256-GCM seal, 1350 B, OpenSSL on ovh-sea: 651 ns, 1.32× the fastest AES-256-GCM seal, 16 KB -AES-256-GCM seal, 16 KB, rind on nixos: 1.54 µs, 1.00× the fastest -AES-256-GCM seal, 16 KB, rind on desktop: 924 ns, 1.00× the fastest -AES-256-GCM seal, 16 KB, rind on nixos2: 3.24 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM seal, 16 KB, aws-lc-rs on nixos: 2.79 µs, 1.81× the fastest -AES-256-GCM seal, 16 KB, aws-lc-rs on desktop: 1.58 µs, 1.71× the fastest -AES-256-GCM seal, 16 KB, aws-lc-rs on nixos2: 3.32 µs, 1.02× the fastest -AES-256-GCM seal, 16 KB, ring on nixos: 1.56 µs, 1.01× the fastest -AES-256-GCM seal, 16 KB, ring on desktop: 953 ns, 1.03× the fastest -AES-256-GCM seal, 16 KB, ring on nixos2: 3.25 µs, 1.00× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.83 µs, 3.14× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.91 µs, 3.15× the fastest -AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 6.54 µs, 2.02× the fastest -AES-256-GCM seal, 16 KB, graviola on nixos: 3.00 µs, 1.95× the fastest -AES-256-GCM seal, 16 KB, graviola on desktop: 2.42 µs, 2.62× the fastest -AES-256-GCM seal, 16 KB, graviola on nixos2: 4.72 µs, 1.45× the fastest -AES-256-GCM seal, 16 KB, libcrux on nixos: 80.86 µs, 52.58× the fastest -AES-256-GCM seal, 16 KB, libcrux on desktop: 32.27 µs, 34.93× the fastest -AES-256-GCM seal, 16 KB, libcrux on nixos2: 50.79 µs, 15.66× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on nixos: 2.82 µs, 1.83× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on desktop: 1.57 µs, 1.70× the fastest -AES-256-GCM seal, 16 KB, OpenSSL on nixos2: 3.35 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, rind on nixos: 1.51 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind on desktop: 925 ns, 1.00× the fastest +AES-256-GCM seal, 16 KB, rind on nixos2: 3.22 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, rind on ovh-iad: 5.27 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, rind on ovh-sea: 5.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM seal, 16 KB, aws-lc-rs on nixos: 2.78 µs, 1.84× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on desktop: 1.56 µs, 1.69× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on nixos2: 3.30 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on ovh-iad: 5.32 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, aws-lc-rs on ovh-sea: 5.10 µs, 1.02× the fastest +AES-256-GCM seal, 16 KB, ring on nixos: 1.53 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, ring on desktop: 946 ns, 1.02× the fastest +AES-256-GCM seal, 16 KB, ring on nixos2: 3.25 µs, 1.01× the fastest +AES-256-GCM seal, 16 KB, ring on ovh-iad: 5.26 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, ring on ovh-sea: 5.02 µs, 1.00× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos: 4.78 µs, 3.16× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on desktop: 2.91 µs, 3.14× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on nixos2: 6.45 µs, 2.00× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on ovh-iad: 10.07 µs, 1.91× the fastest +AES-256-GCM seal, 16 KB, RustCrypto + dalek on ovh-sea: 9.97 µs, 2.00× the fastest +AES-256-GCM seal, 16 KB, graviola on nixos: 2.98 µs, 1.97× the fastest +AES-256-GCM seal, 16 KB, graviola on desktop: 2.46 µs, 2.66× the fastest +AES-256-GCM seal, 16 KB, graviola on nixos2: 4.71 µs, 1.46× the fastest +AES-256-GCM seal, 16 KB, libcrux on nixos: 80.61 µs, 53.39× the fastest +AES-256-GCM seal, 16 KB, libcrux on desktop: 32.69 µs, 35.34× the fastest +AES-256-GCM seal, 16 KB, libcrux on nixos2: 50.92 µs, 15.81× the fastest +AES-256-GCM seal, 16 KB, libcrux on ovh-iad: 82.15 µs, 15.61× the fastest +AES-256-GCM seal, 16 KB, libcrux on ovh-sea: 78.65 µs, 15.74× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on nixos: 2.82 µs, 1.87× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on desktop: 1.59 µs, 1.72× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on nixos2: 3.34 µs, 1.04× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on ovh-iad: 5.43 µs, 1.03× the fastest +AES-256-GCM seal, 16 KB, OpenSSL on ovh-sea: 5.12 µs, 1.02× the fastest AES-256-GCM open, 32 B -AES-256-GCM open, 32 B, rind on nixos: 52 ns, 1.00× the fastest -AES-256-GCM open, 32 B, rind on desktop: 24 ns, 1.00× the fastest -AES-256-GCM open, 32 B, rind on nixos2: 57 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 32 B, aws-lc-rs on nixos: 82 ns, 1.56× the fastest -AES-256-GCM open, 32 B, aws-lc-rs on desktop: 37 ns, 1.53× the fastest -AES-256-GCM open, 32 B, aws-lc-rs on nixos2: 104 ns, 1.83× the fastest -AES-256-GCM open, 32 B, ring on nixos: 62 ns, 1.18× the fastest -AES-256-GCM open, 32 B, ring on desktop: 44 ns, 1.81× the fastest -AES-256-GCM open, 32 B, ring on nixos2: 83 ns, 1.45× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on nixos: 111 ns, 2.12× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on desktop: 81 ns, 3.34× the fastest -AES-256-GCM open, 32 B, RustCrypto + dalek on nixos2: 118 ns, 2.08× the fastest -AES-256-GCM open, 32 B, graviola on nixos: 68 ns, 1.30× the fastest -AES-256-GCM open, 32 B, graviola on desktop: 38 ns, 1.54× the fastest -AES-256-GCM open, 32 B, graviola on nixos2: 79 ns, 1.39× the fastest -AES-256-GCM open, 32 B, libcrux on nixos: 442 ns, 8.43× the fastest -AES-256-GCM open, 32 B, libcrux on desktop: 218 ns, 8.95× the fastest -AES-256-GCM open, 32 B, libcrux on nixos2: 385 ns, 6.76× the fastest -AES-256-GCM open, 32 B, OpenSSL on nixos: 121 ns, 2.30× the fastest -AES-256-GCM open, 32 B, OpenSSL on desktop: 61 ns, 2.52× the fastest -AES-256-GCM open, 32 B, OpenSSL on nixos2: 173 ns, 3.05× the fastest +AES-256-GCM open, 32 B, rind on nixos: 48 ns, 1.00× the fastest +AES-256-GCM open, 32 B, rind on desktop: 28 ns, 1.00× the fastest +AES-256-GCM open, 32 B, rind on nixos2: 45 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, rind on ovh-iad: 70 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, rind on ovh-sea: 68 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 32 B, aws-lc-rs on nixos: 79 ns, 1.62× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on desktop: 38 ns, 1.37× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on nixos2: 101 ns, 2.26× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on ovh-iad: 156 ns, 2.22× the fastest +AES-256-GCM open, 32 B, aws-lc-rs on ovh-sea: 146 ns, 2.14× the fastest +AES-256-GCM open, 32 B, ring on nixos: 61 ns, 1.25× the fastest +AES-256-GCM open, 32 B, ring on desktop: 45 ns, 1.61× the fastest +AES-256-GCM open, 32 B, ring on nixos2: 107 ns, 2.39× the fastest +AES-256-GCM open, 32 B, ring on ovh-iad: 132 ns, 1.87× the fastest +AES-256-GCM open, 32 B, ring on ovh-sea: 127 ns, 1.86× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on nixos: 109 ns, 2.24× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on desktop: 82 ns, 2.98× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on nixos2: 118 ns, 2.65× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on ovh-iad: 179 ns, 2.54× the fastest +AES-256-GCM open, 32 B, RustCrypto + dalek on ovh-sea: 173 ns, 2.54× the fastest +AES-256-GCM open, 32 B, graviola on nixos: 68 ns, 1.39× the fastest +AES-256-GCM open, 32 B, graviola on desktop: 38 ns, 1.37× the fastest +AES-256-GCM open, 32 B, graviola on nixos2: 73 ns, 1.64× the fastest +AES-256-GCM open, 32 B, libcrux on nixos: 441 ns, 9.10× the fastest +AES-256-GCM open, 32 B, libcrux on desktop: 218 ns, 7.86× the fastest +AES-256-GCM open, 32 B, libcrux on nixos2: 363 ns, 8.12× the fastest +AES-256-GCM open, 32 B, libcrux on ovh-iad: 571 ns, 8.10× the fastest +AES-256-GCM open, 32 B, libcrux on ovh-sea: 562 ns, 8.27× the fastest +AES-256-GCM open, 32 B, OpenSSL on nixos: 122 ns, 2.52× the fastest +AES-256-GCM open, 32 B, OpenSSL on desktop: 62 ns, 2.22× the fastest +AES-256-GCM open, 32 B, OpenSSL on nixos2: 172 ns, 3.84× the fastest +AES-256-GCM open, 32 B, OpenSSL on ovh-iad: 266 ns, 3.78× the fastest +AES-256-GCM open, 32 B, OpenSSL on ovh-sea: 248 ns, 3.65× the fastest AES-256-GCM open, 1350 B -AES-256-GCM open, 1350 B, rind on nixos: 194 ns, 1.00× the fastest -AES-256-GCM open, 1350 B, rind on desktop: 110 ns, 1.00× the fastest -AES-256-GCM open, 1350 B, rind on nixos2: 351 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 1350 B, aws-lc-rs on nixos: 320 ns, 1.65× the fastest -AES-256-GCM open, 1350 B, aws-lc-rs on desktop: 174 ns, 1.59× the fastest -AES-256-GCM open, 1350 B, aws-lc-rs on nixos2: 391 ns, 1.11× the fastest -AES-256-GCM open, 1350 B, ring on nixos: 205 ns, 1.06× the fastest -AES-256-GCM open, 1350 B, ring on desktop: 123 ns, 1.12× the fastest -AES-256-GCM open, 1350 B, ring on nixos2: 371 ns, 1.06× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos: 507 ns, 2.61× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on desktop: 323 ns, 2.95× the fastest -AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos2: 672 ns, 1.91× the fastest -AES-256-GCM open, 1350 B, graviola on nixos: 342 ns, 1.76× the fastest -AES-256-GCM open, 1350 B, graviola on desktop: 203 ns, 1.86× the fastest -AES-256-GCM open, 1350 B, graviola on nixos2: 456 ns, 1.30× the fastest -AES-256-GCM open, 1350 B, libcrux on nixos: 6.39 µs, 32.91× the fastest -AES-256-GCM open, 1350 B, libcrux on desktop: 2.86 µs, 26.07× the fastest -AES-256-GCM open, 1350 B, libcrux on nixos2: 4.55 µs, 12.94× the fastest -AES-256-GCM open, 1350 B, OpenSSL on nixos: 358 ns, 1.84× the fastest -AES-256-GCM open, 1350 B, OpenSSL on desktop: 188 ns, 1.72× the fastest -AES-256-GCM open, 1350 B, OpenSSL on nixos2: 436 ns, 1.24× the fastest +AES-256-GCM open, 1350 B, rind on nixos: 192 ns, 1.00× the fastest +AES-256-GCM open, 1350 B, rind on desktop: 107 ns, 1.00× the fastest +AES-256-GCM open, 1350 B, rind on nixos2: 328 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, rind on ovh-iad: 488 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, rind on ovh-sea: 480 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 1350 B, aws-lc-rs on nixos: 322 ns, 1.68× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on desktop: 173 ns, 1.62× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on nixos2: 422 ns, 1.29× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on ovh-iad: 593 ns, 1.22× the fastest +AES-256-GCM open, 1350 B, aws-lc-rs on ovh-sea: 560 ns, 1.17× the fastest +AES-256-GCM open, 1350 B, ring on nixos: 204 ns, 1.06× the fastest +AES-256-GCM open, 1350 B, ring on desktop: 124 ns, 1.16× the fastest +AES-256-GCM open, 1350 B, ring on nixos2: 388 ns, 1.18× the fastest +AES-256-GCM open, 1350 B, ring on ovh-iad: 581 ns, 1.19× the fastest +AES-256-GCM open, 1350 B, ring on ovh-sea: 537 ns, 1.12× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos: 508 ns, 2.65× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on desktop: 322 ns, 3.01× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on nixos2: 677 ns, 2.06× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on ovh-iad: 1.02 µs, 2.08× the fastest +AES-256-GCM open, 1350 B, RustCrypto + dalek on ovh-sea: 991 ns, 2.06× the fastest +AES-256-GCM open, 1350 B, graviola on nixos: 341 ns, 1.78× the fastest +AES-256-GCM open, 1350 B, graviola on desktop: 203 ns, 1.90× the fastest +AES-256-GCM open, 1350 B, graviola on nixos2: 510 ns, 1.56× the fastest +AES-256-GCM open, 1350 B, libcrux on nixos: 6.79 µs, 35.42× the fastest +AES-256-GCM open, 1350 B, libcrux on desktop: 2.85 µs, 26.66× the fastest +AES-256-GCM open, 1350 B, libcrux on nixos2: 4.74 µs, 14.46× the fastest +AES-256-GCM open, 1350 B, libcrux on ovh-iad: 7.11 µs, 14.56× the fastest +AES-256-GCM open, 1350 B, libcrux on ovh-sea: 6.87 µs, 14.32× the fastest +AES-256-GCM open, 1350 B, OpenSSL on nixos: 354 ns, 1.85× the fastest +AES-256-GCM open, 1350 B, OpenSSL on desktop: 189 ns, 1.77× the fastest +AES-256-GCM open, 1350 B, OpenSSL on nixos2: 643 ns, 1.96× the fastest +AES-256-GCM open, 1350 B, OpenSSL on ovh-iad: 702 ns, 1.44× the fastest +AES-256-GCM open, 1350 B, OpenSSL on ovh-sea: 649 ns, 1.35× the fastest AES-256-GCM open, 16 KB -AES-256-GCM open, 16 KB, rind on nixos: 1.62 µs, 1.00× the fastest -AES-256-GCM open, 16 KB, rind on desktop: 926 ns, 1.00× the fastest -AES-256-GCM open, 16 KB, rind on nixos2: 3.58 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports -✓ -AES-256-GCM open, 16 KB, aws-lc-rs on nixos: 2.89 µs, 1.79× the fastest -AES-256-GCM open, 16 KB, aws-lc-rs on desktop: 1.58 µs, 1.71× the fastest -AES-256-GCM open, 16 KB, aws-lc-rs on nixos2: 3.56 µs, 1.00× the fastest -AES-256-GCM open, 16 KB, ring on nixos: 1.65 µs, 1.02× the fastest -AES-256-GCM open, 16 KB, ring on desktop: 939 ns, 1.01× the fastest -AES-256-GCM open, 16 KB, ring on nixos2: 3.59 µs, 1.01× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.92 µs, 3.04× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.97 µs, 3.20× the fastest -AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos2: 6.77 µs, 1.90× the fastest -AES-256-GCM open, 16 KB, graviola on nixos: 3.05 µs, 1.89× the fastest -AES-256-GCM open, 16 KB, graviola on desktop: 1.75 µs, 1.89× the fastest -AES-256-GCM open, 16 KB, graviola on nixos2: 4.38 µs, 1.23× the fastest -AES-256-GCM open, 16 KB, libcrux on nixos: 74.38 µs, 46.05× the fastest -AES-256-GCM open, 16 KB, libcrux on desktop: 32.50 µs, 35.10× the fastest -AES-256-GCM open, 16 KB, libcrux on nixos2: 50.89 µs, 14.30× the fastest -AES-256-GCM open, 16 KB, OpenSSL on nixos: 2.96 µs, 1.83× the fastest -AES-256-GCM open, 16 KB, OpenSSL on desktop: 1.60 µs, 1.73× the fastest -AES-256-GCM open, 16 KB, OpenSSL on nixos2: 3.64 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, rind on nixos: 1.60 µs, 1.00× the fastest +AES-256-GCM open, 16 KB, rind on desktop: 917 ns, 1.00× the fastest +AES-256-GCM open, 16 KB, rind on nixos2: 3.62 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, rind on ovh-iad: 5.19 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, rind on ovh-sea: 5.15 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +✓ +AES-256-GCM open, 16 KB, aws-lc-rs on nixos: 2.92 µs, 1.82× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on desktop: 1.57 µs, 1.71× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on nixos2: 3.69 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on ovh-iad: 5.51 µs, 1.06× the fastest +AES-256-GCM open, 16 KB, aws-lc-rs on ovh-sea: 5.23 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, ring on nixos: 1.62 µs, 1.01× the fastest +AES-256-GCM open, 16 KB, ring on desktop: 921 ns, 1.00× the fastest +AES-256-GCM open, 16 KB, ring on nixos2: 3.70 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, ring on ovh-iad: 5.38 µs, 1.04× the fastest +AES-256-GCM open, 16 KB, ring on ovh-sea: 5.22 µs, 1.02× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos: 4.93 µs, 3.08× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on desktop: 2.96 µs, 3.23× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on nixos2: 7.23 µs, 2.00× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on ovh-iad: 10.28 µs, 1.98× the fastest +AES-256-GCM open, 16 KB, RustCrypto + dalek on ovh-sea: 10.13 µs, 1.97× the fastest +AES-256-GCM open, 16 KB, graviola on nixos: 3.04 µs, 1.90× the fastest +AES-256-GCM open, 16 KB, graviola on desktop: 1.74 µs, 1.90× the fastest +AES-256-GCM open, 16 KB, graviola on nixos2: 4.54 µs, 1.25× the fastest +AES-256-GCM open, 16 KB, libcrux on nixos: 79.19 µs, 49.38× the fastest +AES-256-GCM open, 16 KB, libcrux on desktop: 32.51 µs, 35.44× the fastest +AES-256-GCM open, 16 KB, libcrux on nixos2: 53.96 µs, 14.91× the fastest +AES-256-GCM open, 16 KB, libcrux on ovh-iad: 80.09 µs, 15.44× the fastest +AES-256-GCM open, 16 KB, libcrux on ovh-sea: 78.52 µs, 15.26× the fastest +AES-256-GCM open, 16 KB, OpenSSL on nixos: 2.98 µs, 1.86× the fastest +AES-256-GCM open, 16 KB, OpenSSL on desktop: 1.60 µs, 1.75× the fastest +AES-256-GCM open, 16 KB, OpenSSL on nixos2: 3.87 µs, 1.07× the fastest +AES-256-GCM open, 16 KB, OpenSSL on ovh-iad: 5.46 µs, 1.05× the fastest +AES-256-GCM open, 16 KB, OpenSSL on ovh-sea: 5.38 µs, 1.05× the fastest ChaCha20-Poly1305 seal, 32 B -ChaCha20-Poly1305 seal, 32 B, rind on nixos: 114 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 32 B, rind on desktop: 99 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, rind on nixos2: 124 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 119 ns, 1.06× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 105 ns, 1.06× the fastest -ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 141 ns, 1.13× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on nixos: 113 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on desktop: 101 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 32 B, ring on nixos2: 130 ns, 1.05× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.18 µs, 10.45× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.06 µs, 10.71× the fastest -ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.16 µs, 9.36× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on nixos: 216 ns, 1.91× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on desktop: 180 ns, 1.81× the fastest -ChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 222 ns, 1.79× the fastest -ChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 218 ns, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 157 ns, 1.58× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 274 ns, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos: 255 ns, 2.26× the fastest -ChaCha20-Poly1305 seal, 32 B, OpenSSL on desktop: 177 ns, 1.78× the fastest -ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos2: 325 ns, 2.62× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on nixos: 114 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on desktop: 100 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on nixos2: 129 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on ovh-iad: 192 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, rind on ovh-sea: 187 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 119 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 105 ns, 1.05× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 149 ns, 1.15× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-iad: 219 ns, 1.14× the fastest +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-sea: 210 ns, 1.12× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on nixos: 113 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on desktop: 101 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on nixos2: 130 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on ovh-iad: 196 ns, 1.02× the fastest +ChaCha20-Poly1305 seal, 32 B, ring on ovh-sea: 189 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.18 µs, 10.48× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.07 µs, 10.75× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.21 µs, 9.37× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-iad: 1.82 µs, 9.45× the fastest +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-sea: 1.74 µs, 9.32× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on nixos: 216 ns, 1.92× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on desktop: 180 ns, 1.80× the fastest +ChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 232 ns, 1.80× the fastest +ChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 220 ns, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 157 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 301 ns, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on ovh-iad: 462 ns, 2.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, libcrux on ovh-sea: 429 ns, 2.29× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos: 257 ns, 2.29× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on desktop: 177 ns, 1.77× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on nixos2: 337 ns, 2.61× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on ovh-iad: 496 ns, 2.58× the fastest +ChaCha20-Poly1305 seal, 32 B, OpenSSL on ovh-sea: 495 ns, 2.64× the fastest ChaCha20-Poly1305 seal, 1350 B -ChaCha20-Poly1305 seal, 1350 B, rind on nixos: 530 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, rind on desktop: 447 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 691 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 535 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 453 ns, 1.01× the fastest -ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 700 ns, 1.02× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on nixos: 531 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on desktop: 446 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, ring on nixos2: 686 ns, 1.00× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 1.92 µs, 3.63× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.67 µs, 3.75× the fastest -ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.08 µs, 3.04× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.08 µs, 2.03× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 911 ns, 2.04× the fastest -ChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.24 µs, 1.81× the fastest -ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.33 µs, 4.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.78 µs, 3.98× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.08 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos: 742 ns, 1.40× the fastest -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on desktop: 589 ns, 1.32× the fastest -ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos2: 933 ns, 1.36× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on nixos: 533 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on desktop: 441 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 718 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on ovh-iad: 1.08 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, rind on ovh-sea: 1.03 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 532 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 453 ns, 1.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 755 ns, 1.06× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-iad: 1.07 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-sea: 1.06 µs, 1.03× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on nixos: 527 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on desktop: 447 ns, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on nixos2: 714 ns, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on ovh-iad: 1.07 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 1350 B, ring on ovh-sea: 1.04 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 1.93 µs, 3.65× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.67 µs, 3.79× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.18 µs, 3.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-iad: 3.21 µs, 3.01× the fastest +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-sea: 3.16 µs, 3.07× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.08 µs, 2.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 905 ns, 2.05× the fastest +ChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.29 µs, 1.81× the fastest +ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.34 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.78 µs, 4.03× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.16 µs, 4.43× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-iad: 4.80 µs, 4.50× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-sea: 4.62 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos: 745 ns, 1.41× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on desktop: 590 ns, 1.34× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on nixos2: 971 ns, 1.36× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on ovh-iad: 1.61 µs, 1.51× the fastest +ChaCha20-Poly1305 seal, 1350 B, OpenSSL on ovh-sea: 1.57 µs, 1.52× the fastest ChaCha20-Poly1305 seal, 16 KB -ChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.58 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.13 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.35 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.62 µs, 1.02× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.13 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.43 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on nixos: 4.55 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on desktop: 4.12 µs, 1.00× the fastest -ChaCha20-Poly1305 seal, 16 KB, ring on nixos2: 6.39 µs, 1.01× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 9.81 µs, 2.15× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.15 µs, 1.98× the fastest -ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.38 µs, 1.95× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 9.87 µs, 2.17× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.36 µs, 2.03× the fastest -ChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.98 µs, 1.89× the fastest -ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.03 µs, 5.72× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.36 µs, 4.70× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 34.70 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step -✓ -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos: 5.10 µs, 1.12× the fastest -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on desktop: 4.41 µs, 1.07× the fastest -ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos2: 6.41 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.68 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.17 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.81 µs, 1.03× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on ovh-iad: 9.95 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, rind on ovh-sea: 9.66 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.78 µs, 1.02× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.15 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.63 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-iad: 10.30 µs, 1.04× the fastest +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-sea: 9.60 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on nixos: 4.68 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on desktop: 4.14 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on nixos2: 6.60 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on ovh-iad: 10.07 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, ring on ovh-sea: 9.59 µs, 1.00× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 10.09 µs, 2.16× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.14 µs, 1.97× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.61 µs, 1.91× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-iad: 18.85 µs, 1.89× the fastest +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-sea: 18.38 µs, 1.92× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.15 µs, 2.17× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.30 µs, 2.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 12.52 µs, 1.90× the fastest +ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.70 µs, 5.71× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.63 µs, 4.74× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 35.52 µs, 5.38× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-iad: 56.11 µs, 5.64× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-sea: 52.14 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos: 5.14 µs, 1.10× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on desktop: 4.41 µs, 1.07× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on nixos2: 6.64 µs, 1.01× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on ovh-iad: 11.14 µs, 1.12× the fastest +ChaCha20-Poly1305 seal, 16 KB, OpenSSL on ovh-sea: 10.99 µs, 1.15× the fastest XChaCha20-Poly1305 seal, 32 B -XChaCha20-Poly1305 seal, 32 B, rind on nixos: 242 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, rind on desktop: 188 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, rind on nixos2: 270 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 263 ns, 1.09× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 196 ns, 1.04× the fastest -XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 282 ns, 1.04× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.35 µs, 5.61× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 1.15 µs, 6.09× the fastest -XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.28 µs, 4.72× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on nixos: 348 ns, 1.44× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on desktop: 259 ns, 1.37× the fastest -XChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 335 ns, 1.24× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 336 ns, 1.39× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 243 ns, 1.29× the fastest -XChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 400 ns, 1.48× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on nixos: 243 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on desktop: 188 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on nixos2: 256 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on ovh-iad: 402 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, rind on ovh-sea: 402 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos: 267 ns, 1.10× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on desktop: 199 ns, 1.06× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on nixos2: 278 ns, 1.09× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-iad: 432 ns, 1.07× the fastest +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs on ovh-sea: 433 ns, 1.08× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos: 1.36 µs, 5.60× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on desktop: 889 ns, 4.72× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on nixos2: 1.27 µs, 4.95× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-iad: 1.98 µs, 4.93× the fastest +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek on ovh-sea: 1.98 µs, 4.92× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on nixos: 357 ns, 1.47× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on desktop: 259 ns, 1.38× the fastest +XChaCha20-Poly1305 seal, 32 B, graviola on nixos2: 335 ns, 1.31× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on nixos: 351 ns, 1.45× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on desktop: 248 ns, 1.32× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on nixos2: 400 ns, 1.56× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on ovh-iad: 653 ns, 1.62× the fastest +XChaCha20-Poly1305 seal, 32 B, libcrux on ovh-sea: 631 ns, 1.57× the fastest XChaCha20-Poly1305 seal, 1350 B -XChaCha20-Poly1305 seal, 1350 B, rind on nixos: 653 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, rind on desktop: 528 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 814 ns, 1.00× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 673 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 541 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 839 ns, 1.03× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 2.06 µs, 3.16× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.76 µs, 3.33× the fastest -XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.20 µs, 2.71× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.20 µs, 1.84× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 987 ns, 1.87× the fastest -XChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.37 µs, 1.68× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.45 µs, 3.75× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 1.83 µs, 3.47× the fastest -XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.12 µs, 3.84× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on nixos: 775 ns, 1.07× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on desktop: 838 ns, 1.22× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on nixos2: 804 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on ovh-iad: 1.31 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, rind on ovh-sea: 1.25 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos: 723 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on desktop: 687 ns, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on nixos2: 831 ns, 1.03× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-iad: 1.32 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs on ovh-sea: 1.32 µs, 1.05× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos: 2.18 µs, 3.01× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on desktop: 1.74 µs, 2.54× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on nixos2: 2.20 µs, 2.74× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-iad: 3.46 µs, 2.63× the fastest +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek on ovh-sea: 3.36 µs, 2.68× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on nixos: 1.31 µs, 1.81× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on desktop: 1.35 µs, 1.97× the fastest +XChaCha20-Poly1305 seal, 1350 B, graviola on nixos2: 1.32 µs, 1.64× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos: 2.70 µs, 3.73× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on desktop: 2.56 µs, 3.73× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on nixos2: 3.16 µs, 3.92× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-iad: 5.11 µs, 3.89× the fastest +XChaCha20-Poly1305 seal, 1350 B, libcrux on ovh-sea: 4.83 µs, 3.86× the fastest XChaCha20-Poly1305 seal, 16 KB -XChaCha20-Poly1305 seal, 16 KB, rind on nixos: 4.76 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, rind on desktop: 4.20 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.51 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 4.74 µs, 1.00× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 4.29 µs, 1.02× the fastest -XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.55 µs, 1.01× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 9.95 µs, 2.10× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 8.25 µs, 1.97× the fastest -XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.11 µs, 1.86× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.02 µs, 2.11× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 8.30 µs, 1.98× the fastest -XChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.96 µs, 1.84× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 26.08 µs, 5.50× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 19.58 µs, 4.67× the fastest -XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 34.02 µs, 5.22× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on nixos: 5.23 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on desktop: 6.26 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on nixos2: 6.38 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on ovh-iad: 9.99 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, rind on ovh-sea: 9.89 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos: 5.37 µs, 1.03× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on desktop: 6.27 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on nixos2: 6.44 µs, 1.01× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-iad: 10.34 µs, 1.04× the fastest +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs on ovh-sea: 9.93 µs, 1.00× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos: 11.38 µs, 2.17× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on desktop: 12.28 µs, 1.96× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on nixos2: 12.04 µs, 1.89× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-iad: 19.22 µs, 1.92× the fastest +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek on ovh-sea: 18.67 µs, 1.89× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on nixos: 10.80 µs, 2.06× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on desktop: 12.79 µs, 2.04× the fastest +XChaCha20-Poly1305 seal, 16 KB, graviola on nixos2: 11.86 µs, 1.86× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos: 28.66 µs, 5.48× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on desktop: 27.40 µs, 4.37× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on nixos2: 33.42 µs, 5.23× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-iad: 52.60 µs, 5.27× the fastest +XChaCha20-Poly1305 seal, 16 KB, libcrux on ovh-sea: 51.64 µs, 5.22× the fastest QUIC header protection - + AES-128 header protection -AES-128 header protection, rind on nixos: 4 ns, 1.00× the fastest -AES-128 header protection, rind on desktop: 2 ns, 1.00× the fastest -AES-128 header protection, aws-lc-rs on nixos: 6 ns, 1.51× the fastest -AES-128 header protection, aws-lc-rs on desktop: 3 ns, 1.78× the fastest -AES-128 header protection, ring on nixos: 7 ns, 1.67× the fastest -AES-128 header protection, ring on desktop: 3 ns, 1.85× the fastest +AES-128 header protection, rind on nixos: 4 ns, 1.00× the fastest +AES-128 header protection, rind on desktop: 2 ns, 1.00× the fastest +AES-128 header protection, rind on nixos2: 5 ns, 1.00× the fastest +AES-128 header protection, rind on ovh-iad: 7 ns, 1.00× the fastest +AES-128 header protection, rind on ovh-sea: 7 ns, 1.00× the fastest +AES-128 header protection, aws-lc-rs on nixos: 6 ns, 1.45× the fastest +AES-128 header protection, aws-lc-rs on desktop: 3 ns, 1.59× the fastest +AES-128 header protection, aws-lc-rs on nixos2: 9 ns, 1.95× the fastest +AES-128 header protection, aws-lc-rs on ovh-iad: 12 ns, 1.74× the fastest +AES-128 header protection, aws-lc-rs on ovh-sea: 12 ns, 1.64× the fastest +AES-128 header protection, ring on nixos: 7 ns, 1.74× the fastest +AES-128 header protection, ring on desktop: 3 ns, 1.68× the fastest +AES-128 header protection, ring on nixos2: 8 ns, 1.73× the fastest +AES-128 header protection, ring on ovh-iad: 12 ns, 1.74× the fastest +AES-128 header protection, ring on ovh-sea: 12 ns, 1.72× the fastest AES-256 header protection -AES-256 header protection, rind on nixos: 6 ns, 1.00× the fastest -AES-256 header protection, rind on desktop: 2 ns, 1.00× the fastest -AES-256 header protection, aws-lc-rs on nixos: 8 ns, 1.40× the fastest -AES-256 header protection, aws-lc-rs on desktop: 4 ns, 1.64× the fastest -AES-256 header protection, ring on nixos: 9 ns, 1.60× the fastest -AES-256 header protection, ring on desktop: 5 ns, 2.17× the fastest +AES-256 header protection, rind on nixos: 6 ns, 1.00× the fastest +AES-256 header protection, rind on desktop: 2 ns, 1.00× the fastest +AES-256 header protection, rind on nixos2: 8 ns, 1.00× the fastest +AES-256 header protection, rind on ovh-iad: 10 ns, 1.00× the fastest +AES-256 header protection, rind on ovh-sea: 9 ns, 1.00× the fastest +AES-256 header protection, aws-lc-rs on nixos: 8 ns, 1.32× the fastest +AES-256 header protection, aws-lc-rs on desktop: 5 ns, 2.06× the fastest +AES-256 header protection, aws-lc-rs on nixos2: 10 ns, 1.25× the fastest +AES-256 header protection, aws-lc-rs on ovh-iad: 15 ns, 1.50× the fastest +AES-256 header protection, aws-lc-rs on ovh-sea: 15 ns, 1.57× the fastest +AES-256 header protection, ring on nixos: 10 ns, 1.64× the fastest +AES-256 header protection, ring on desktop: 5 ns, 2.16× the fastest +AES-256 header protection, ring on nixos2: 10 ns, 1.24× the fastest +AES-256 header protection, ring on ovh-iad: 15 ns, 1.49× the fastest +AES-256 header protection, ring on ovh-sea: 15 ns, 1.56× the fastest ChaCha20 header protection -ChaCha20 header protection, rind on nixos: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included -✓ -ChaCha20 header protection, rind on desktop: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included -✓ -ChaCha20 header protection, aws-lc-rs on nixos: 81 ns, 1.34× the fastest -ChaCha20 header protection, aws-lc-rs on desktop: 69 ns, 1.27× the fastest -ChaCha20 header protection, ring on nixos: 75 ns, 1.23× the fastest -ChaCha20 header protection, ring on desktop: 61 ns, 1.14× the fastest +ChaCha20 header protection, rind on nixos: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on desktop: 54 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on nixos2: 84 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on ovh-iad: 128 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, rind on ovh-sea: 123 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +✓ +ChaCha20 header protection, aws-lc-rs on nixos: 82 ns, 1.34× the fastest +ChaCha20 header protection, aws-lc-rs on desktop: 69 ns, 1.28× the fastest +ChaCha20 header protection, aws-lc-rs on nixos2: 104 ns, 1.24× the fastest +ChaCha20 header protection, aws-lc-rs on ovh-iad: 157 ns, 1.22× the fastest +ChaCha20 header protection, aws-lc-rs on ovh-sea: 151 ns, 1.23× the fastest +ChaCha20 header protection, ring on nixos: 74 ns, 1.22× the fastest +ChaCha20 header protection, ring on desktop: 61 ns, 1.14× the fastest +ChaCha20 header protection, ring on nixos2: 98 ns, 1.17× the fastest +ChaCha20 header protection, ring on ovh-iad: 139 ns, 1.09× the fastest +ChaCha20 header protection, ring on ovh-sea: 136 ns, 1.11× the fastest Key agreement - + X25519 -X25519, rind on nixos: 24.80 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, rind on desktop: 17.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, rind on nixos2: 26.86 µs, 1.07× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates -✓ -X25519, aws-lc-rs on nixos: 25.24 µs, 1.02× the fastest -X25519, aws-lc-rs on desktop: 19.14 µs, 1.07× the fastest -X25519, aws-lc-rs on nixos2: 33.12 µs, 1.32× the fastest -X25519, ring on nixos: 47.40 µs, 1.92× the fastest -X25519, ring on desktop: 35.19 µs, 1.96× the fastest -X25519, ring on nixos2: 55.23 µs, 2.19× the fastest -X25519, RustCrypto + dalek on nixos: 53.79 µs, 2.18× the fastest -X25519, RustCrypto + dalek on desktop: 36.03 µs, 2.01× the fastest -X25519, RustCrypto + dalek on nixos2: 60.51 µs, 2.40× the fastest -X25519, graviola on nixos: 24.65 µs, 1.00× the fastest -X25519, graviola on desktop: 18.25 µs, 1.02× the fastest -X25519, graviola on nixos2: 25.17 µs, 1.00× the fastest -X25519, libcrux on nixos: 64.51 µs, 2.62× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, libcrux on desktop: 42.71 µs, 2.38× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, libcrux on nixos2: 73.49 µs, 2.92× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step -✓ -X25519, OpenSSL on nixos: 49.46 µs, 2.01× the fastest -X25519, OpenSSL on desktop: 33.93 µs, 1.89× the fastest -X25519, OpenSSL on nixos2: 55.22 µs, 2.19× the fastest +X25519, rind on nixos: 23.97 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on desktop: 19.68 µs, 1.06× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on nixos2: 25.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on ovh-iad: 50.92 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, rind on ovh-sea: 49.74 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +✓ +X25519, aws-lc-rs on nixos: 24.61 µs, 1.03× the fastest +X25519, aws-lc-rs on desktop: 19.54 µs, 1.06× the fastest +X25519, aws-lc-rs on nixos2: 30.89 µs, 1.24× the fastest +X25519, aws-lc-rs on ovh-iad: 53.04 µs, 1.04× the fastest +X25519, aws-lc-rs on ovh-sea: 50.78 µs, 1.02× the fastest +X25519, ring on nixos: 46.72 µs, 1.95× the fastest +X25519, ring on desktop: 35.63 µs, 1.93× the fastest +X25519, ring on nixos2: 53.60 µs, 2.15× the fastest +X25519, ring on ovh-iad: 80.26 µs, 1.58× the fastest +X25519, ring on ovh-sea: 75.97 µs, 1.53× the fastest +X25519, RustCrypto + dalek on nixos: 52.09 µs, 2.18× the fastest +X25519, RustCrypto + dalek on desktop: 36.52 µs, 1.97× the fastest +X25519, RustCrypto + dalek on nixos2: 56.59 µs, 2.27× the fastest +X25519, RustCrypto + dalek on ovh-iad: 90.44 µs, 1.78× the fastest +X25519, RustCrypto + dalek on ovh-sea: 89.48 µs, 1.80× the fastest +X25519, graviola on nixos: 23.94 µs, 1.00× the fastest +X25519, graviola on desktop: 18.50 µs, 1.00× the fastest +X25519, graviola on nixos2: 24.95 µs, 1.00× the fastest +X25519, libcrux on nixos: 64.60 µs, 2.70× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on desktop: 43.11 µs, 2.33× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on nixos2: 72.34 µs, 2.90× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on ovh-iad: 114.24 µs, 2.24× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, libcrux on ovh-sea: 111.77 µs, 2.25× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +✓ +X25519, OpenSSL on nixos: 49.70 µs, 2.08× the fastest +X25519, OpenSSL on desktop: 34.02 µs, 1.84× the fastest +X25519, OpenSSL on nixos2: 55.20 µs, 2.21× the fastest +X25519, OpenSSL on ovh-iad: 100.16 µs, 1.97× the fastest +X25519, OpenSSL on ovh-sea: 96.94 µs, 1.95× the fastest P-256 ECDH -P-256 ECDH, rind on nixos: 39.18 µs, 1.00× the fastest -P-256 ECDH, rind on desktop: 29.99 µs, 1.00× the fastest -P-256 ECDH, rind on nixos2: 46.60 µs, 1.00× the fastest -P-256 ECDH, aws-lc-rs on nixos: 41.12 µs, 1.05× the fastest -P-256 ECDH, aws-lc-rs on desktop: 32.02 µs, 1.07× the fastest -P-256 ECDH, aws-lc-rs on nixos2: 56.11 µs, 1.20× the fastest -P-256 ECDH, ring on nixos: 41.79 µs, 1.07× the fastest -P-256 ECDH, ring on desktop: 34.21 µs, 1.14× the fastest -P-256 ECDH, ring on nixos2: 51.77 µs, 1.11× the fastest -P-256 ECDH, RustCrypto + dalek on nixos: 256.63 µs, 6.55× the fastest -P-256 ECDH, RustCrypto + dalek on desktop: 120.66 µs, 4.02× the fastest -P-256 ECDH, RustCrypto + dalek on nixos2: 252.15 µs, 5.41× the fastest -P-256 ECDH, graviola on nixos: 41.91 µs, 1.07× the fastest -P-256 ECDH, graviola on desktop: 32.86 µs, 1.10× the fastest -P-256 ECDH, graviola on nixos2: 50.53 µs, 1.08× the fastest -P-256 ECDH, libcrux on nixos: 246.51 µs, 6.29× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, libcrux on desktop: 168.88 µs, 5.63× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, libcrux on nixos2: 304.85 µs, 6.54× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDH, OpenSSL on nixos: 68.12 µs, 1.74× the fastest -P-256 ECDH, OpenSSL on desktop: 52.96 µs, 1.77× the fastest -P-256 ECDH, OpenSSL on nixos2: 87.27 µs, 1.87× the fastest +P-256 ECDH, rind on nixos: 42.82 µs, 1.01× the fastest +P-256 ECDH, rind on desktop: 29.85 µs, 1.00× the fastest +P-256 ECDH, rind on nixos2: 42.80 µs, 1.00× the fastest +P-256 ECDH, rind on ovh-iad: 82.02 µs, 1.00× the fastest +P-256 ECDH, rind on ovh-sea: 79.73 µs, 1.00× the fastest +P-256 ECDH, aws-lc-rs on nixos: 42.60 µs, 1.00× the fastest +P-256 ECDH, aws-lc-rs on desktop: 32.27 µs, 1.08× the fastest +P-256 ECDH, aws-lc-rs on nixos2: 51.71 µs, 1.21× the fastest +P-256 ECDH, aws-lc-rs on ovh-iad: 88.08 µs, 1.07× the fastest +P-256 ECDH, aws-lc-rs on ovh-sea: 84.92 µs, 1.07× the fastest +P-256 ECDH, ring on nixos: 46.05 µs, 1.08× the fastest +P-256 ECDH, ring on desktop: 34.14 µs, 1.14× the fastest +P-256 ECDH, ring on nixos2: 47.10 µs, 1.10× the fastest +P-256 ECDH, ring on ovh-iad: 86.79 µs, 1.06× the fastest +P-256 ECDH, ring on ovh-sea: 83.88 µs, 1.05× the fastest +P-256 ECDH, RustCrypto + dalek on nixos: 268.62 µs, 6.31× the fastest +P-256 ECDH, RustCrypto + dalek on desktop: 123.01 µs, 4.12× the fastest +P-256 ECDH, RustCrypto + dalek on nixos2: 233.70 µs, 5.46× the fastest +P-256 ECDH, RustCrypto + dalek on ovh-iad: 393.87 µs, 4.80× the fastest +P-256 ECDH, RustCrypto + dalek on ovh-sea: 361.66 µs, 4.54× the fastest +P-256 ECDH, graviola on nixos: 47.87 µs, 1.12× the fastest +P-256 ECDH, graviola on desktop: 33.46 µs, 1.12× the fastest +P-256 ECDH, graviola on nixos2: 46.44 µs, 1.08× the fastest +P-256 ECDH, libcrux on nixos: 268.70 µs, 6.31× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on desktop: 169.87 µs, 5.69× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on nixos2: 280.52 µs, 6.55× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on ovh-iad: 460.35 µs, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, libcrux on ovh-sea: 435.47 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDH, OpenSSL on nixos: 71.25 µs, 1.67× the fastest +P-256 ECDH, OpenSSL on desktop: 52.91 µs, 1.77× the fastest +P-256 ECDH, OpenSSL on nixos2: 81.68 µs, 1.91× the fastest +P-256 ECDH, OpenSSL on ovh-iad: 144.87 µs, 1.77× the fastest +P-256 ECDH, OpenSSL on ovh-sea: 135.67 µs, 1.70× the fastest Signatures - + Ed25519 sign -Ed25519 sign, rind on nixos: 5.79 µs, 1.00× the fastest -Ed25519 sign, rind on desktop: 4.29 µs, 1.00× the fastest -Ed25519 sign, rind on nixos2: 7.09 µs, 1.00× the fastest -Ed25519 sign, aws-lc-rs on nixos: 6.10 µs, 1.05× the fastest -Ed25519 sign, aws-lc-rs on desktop: 4.44 µs, 1.04× the fastest -Ed25519 sign, aws-lc-rs on nixos2: 7.54 µs, 1.06× the fastest -Ed25519 sign, ring on nixos: 17.26 µs, 2.98× the fastest -Ed25519 sign, ring on desktop: 13.30 µs, 3.10× the fastest -Ed25519 sign, ring on nixos2: 22.05 µs, 3.11× the fastest -Ed25519 sign, RustCrypto + dalek on nixos: 13.36 µs, 2.31× the fastest -Ed25519 sign, RustCrypto + dalek on desktop: 9.56 µs, 2.23× the fastest -Ed25519 sign, RustCrypto + dalek on nixos2: 16.08 µs, 2.27× the fastest -Ed25519 sign, graviola on nixos: 5.79 µs, 1.00× the fastest -Ed25519 sign, graviola on desktop: 4.37 µs, 1.02× the fastest -Ed25519 sign, graviola on nixos2: 7.27 µs, 1.03× the fastest -Ed25519 sign, libcrux on nixos: 40.33 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, libcrux on desktop: 29.05 µs, 6.78× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, libcrux on nixos2: 49.67 µs, 7.01× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 sign, OpenSSL on nixos: 23.40 µs, 4.04× the fastest -Ed25519 sign, OpenSSL on desktop: 13.47 µs, 3.14× the fastest -Ed25519 sign, OpenSSL on nixos2: 28.46 µs, 4.02× the fastest +Ed25519 sign, rind on nixos: 5.72 µs, 1.00× the fastest +Ed25519 sign, rind on desktop: 4.15 µs, 1.00× the fastest +Ed25519 sign, rind on nixos2: 7.13 µs, 1.00× the fastest +Ed25519 sign, rind on ovh-iad: 11.89 µs, 1.00× the fastest +Ed25519 sign, rind on ovh-sea: 11.76 µs, 1.00× the fastest +Ed25519 sign, aws-lc-rs on nixos: 6.13 µs, 1.07× the fastest +Ed25519 sign, aws-lc-rs on desktop: 4.56 µs, 1.10× the fastest +Ed25519 sign, aws-lc-rs on nixos2: 7.81 µs, 1.10× the fastest +Ed25519 sign, aws-lc-rs on ovh-iad: 12.66 µs, 1.06× the fastest +Ed25519 sign, aws-lc-rs on ovh-sea: 12.44 µs, 1.06× the fastest +Ed25519 sign, ring on nixos: 17.23 µs, 3.01× the fastest +Ed25519 sign, ring on desktop: 13.14 µs, 3.16× the fastest +Ed25519 sign, ring on nixos2: 22.26 µs, 3.12× the fastest +Ed25519 sign, ring on ovh-iad: 29.88 µs, 2.51× the fastest +Ed25519 sign, ring on ovh-sea: 28.85 µs, 2.45× the fastest +Ed25519 sign, RustCrypto + dalek on nixos: 13.30 µs, 2.33× the fastest +Ed25519 sign, RustCrypto + dalek on desktop: 9.61 µs, 2.31× the fastest +Ed25519 sign, RustCrypto + dalek on nixos2: 17.40 µs, 2.44× the fastest +Ed25519 sign, RustCrypto + dalek on ovh-iad: 23.99 µs, 2.02× the fastest +Ed25519 sign, RustCrypto + dalek on ovh-sea: 23.39 µs, 1.99× the fastest +Ed25519 sign, graviola on nixos: 5.83 µs, 1.02× the fastest +Ed25519 sign, graviola on desktop: 4.39 µs, 1.06× the fastest +Ed25519 sign, graviola on nixos2: 7.22 µs, 1.01× the fastest +Ed25519 sign, libcrux on nixos: 41.37 µs, 7.24× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on desktop: 28.97 µs, 6.97× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on nixos2: 53.66 µs, 7.52× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on ovh-iad: 74.31 µs, 6.25× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, libcrux on ovh-sea: 74.60 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 sign, OpenSSL on nixos: 23.38 µs, 4.09× the fastest +Ed25519 sign, OpenSSL on desktop: 13.69 µs, 3.30× the fastest +Ed25519 sign, OpenSSL on nixos2: 31.01 µs, 4.35× the fastest +Ed25519 sign, OpenSSL on ovh-iad: 42.70 µs, 3.59× the fastest +Ed25519 sign, OpenSSL on ovh-sea: 41.54 µs, 3.53× the fastest Ed25519 verify -Ed25519 verify, rind on nixos: 27.18 µs, 1.09× the fastest -Ed25519 verify, rind on desktop: 21.87 µs, 1.01× the fastest -Ed25519 verify, rind on nixos2: 31.59 µs, 1.13× the fastest -Ed25519 verify, aws-lc-rs on nixos: 27.25 µs, 1.09× the fastest -Ed25519 verify, aws-lc-rs on desktop: 21.82 µs, 1.01× the fastest -Ed25519 verify, aws-lc-rs on nixos2: 31.57 µs, 1.13× the fastest -Ed25519 verify, ring on nixos: 34.90 µs, 1.40× the fastest -Ed25519 verify, ring on desktop: 26.51 µs, 1.23× the fastest -Ed25519 verify, ring on nixos2: 41.59 µs, 1.49× the fastest -Ed25519 verify, RustCrypto + dalek on nixos: 24.97 µs, 1.00× the fastest -Ed25519 verify, RustCrypto + dalek on desktop: 22.15 µs, 1.03× the fastest -Ed25519 verify, RustCrypto + dalek on nixos2: 27.88 µs, 1.00× the fastest -Ed25519 verify, graviola on nixos: 27.14 µs, 1.09× the fastest -Ed25519 verify, graviola on desktop: 21.56 µs, 1.00× the fastest -Ed25519 verify, graviola on nixos2: 31.39 µs, 1.13× the fastest -Ed25519 verify, libcrux on nixos: 54.65 µs, 2.19× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, libcrux on desktop: 41.91 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, libcrux on nixos2: 64.33 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step -✓ -Ed25519 verify, OpenSSL on nixos: 79.44 µs, 3.18× the fastest -Ed25519 verify, OpenSSL on desktop: 45.62 µs, 2.12× the fastest -Ed25519 verify, OpenSSL on nixos2: 93.95 µs, 3.37× the fastest +Ed25519 verify, rind on nixos: 27.15 µs, 1.09× the fastest +Ed25519 verify, rind on desktop: 21.75 µs, 1.01× the fastest +Ed25519 verify, rind on nixos2: 31.81 µs, 1.06× the fastest +Ed25519 verify, rind on ovh-iad: 59.90 µs, 1.25× the fastest +Ed25519 verify, rind on ovh-sea: 58.82 µs, 1.28× the fastest +Ed25519 verify, aws-lc-rs on nixos: 27.03 µs, 1.09× the fastest +Ed25519 verify, aws-lc-rs on desktop: 21.56 µs, 1.00× the fastest +Ed25519 verify, aws-lc-rs on nixos2: 31.62 µs, 1.06× the fastest +Ed25519 verify, aws-lc-rs on ovh-iad: 60.52 µs, 1.27× the fastest +Ed25519 verify, aws-lc-rs on ovh-sea: 57.65 µs, 1.26× the fastest +Ed25519 verify, ring on nixos: 34.76 µs, 1.40× the fastest +Ed25519 verify, ring on desktop: 26.22 µs, 1.22× the fastest +Ed25519 verify, ring on nixos2: 42.48 µs, 1.42× the fastest +Ed25519 verify, ring on ovh-iad: 62.83 µs, 1.32× the fastest +Ed25519 verify, ring on ovh-sea: 60.53 µs, 1.32× the fastest +Ed25519 verify, RustCrypto + dalek on nixos: 24.83 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on desktop: 21.88 µs, 1.02× the fastest +Ed25519 verify, RustCrypto + dalek on nixos2: 29.88 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on ovh-iad: 47.74 µs, 1.00× the fastest +Ed25519 verify, RustCrypto + dalek on ovh-sea: 45.94 µs, 1.00× the fastest +Ed25519 verify, graviola on nixos: 27.08 µs, 1.09× the fastest +Ed25519 verify, graviola on desktop: 21.61 µs, 1.00× the fastest +Ed25519 verify, graviola on nixos2: 32.22 µs, 1.08× the fastest +Ed25519 verify, libcrux on nixos: 54.52 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on desktop: 42.16 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on nixos2: 69.12 µs, 2.31× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on ovh-iad: 97.20 µs, 2.04× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, libcrux on ovh-sea: 94.85 µs, 2.06× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +✓ +Ed25519 verify, OpenSSL on nixos: 79.25 µs, 3.19× the fastest +Ed25519 verify, OpenSSL on desktop: 45.59 µs, 2.11× the fastest +Ed25519 verify, OpenSSL on nixos2: 93.09 µs, 3.12× the fastest +Ed25519 verify, OpenSSL on ovh-iad: 140.19 µs, 2.94× the fastest +Ed25519 verify, OpenSSL on ovh-sea: 136.82 µs, 2.98× the fastest P-256 ECDSA sign -P-256 ECDSA sign, rind on nixos: 8.98 µs, 1.00× the fastest -P-256 ECDSA sign, rind on desktop: 7.08 µs, 1.00× the fastest -P-256 ECDSA sign, rind on nixos2: 15.72 µs, 1.00× the fastest -P-256 ECDSA sign, aws-lc-rs on nixos: 11.96 µs, 1.33× the fastest -P-256 ECDSA sign, aws-lc-rs on desktop: 12.42 µs, 1.75× the fastest -P-256 ECDSA sign, aws-lc-rs on nixos2: 22.35 µs, 1.42× the fastest -P-256 ECDSA sign, ring on nixos: 12.76 µs, 1.42× the fastest -P-256 ECDSA sign, ring on desktop: 12.38 µs, 1.75× the fastest -P-256 ECDSA sign, ring on nixos2: 16.56 µs, 1.05× the fastest -P-256 ECDSA sign, RustCrypto + dalek on nixos: 64.84 µs, 7.22× the fastest -P-256 ECDSA sign, RustCrypto + dalek on desktop: 31.49 µs, 4.45× the fastest -P-256 ECDSA sign, RustCrypto + dalek on nixos2: 78.32 µs, 4.98× the fastest -P-256 ECDSA sign, graviola on nixos: 10.48 µs, 1.17× the fastest -P-256 ECDSA sign, graviola on desktop: 8.81 µs, 1.24× the fastest -P-256 ECDSA sign, graviola on nixos2: 23.27 µs, 1.48× the fastest -P-256 ECDSA sign, libcrux on nixos: 87.54 µs, 9.75× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, libcrux on desktop: 60.93 µs, 8.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, libcrux on nixos2: 115.07 µs, 7.32× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA sign, OpenSSL on nixos: 16.42 µs, 1.83× the fastest -P-256 ECDSA sign, OpenSSL on desktop: 14.37 µs, 2.03× the fastest -P-256 ECDSA sign, OpenSSL on nixos2: 28.83 µs, 1.83× the fastest +P-256 ECDSA sign, rind on nixos: 9.62 µs, 1.00× the fastest +P-256 ECDSA sign, rind on desktop: 6.84 µs, 1.00× the fastest +P-256 ECDSA sign, rind on nixos2: 13.11 µs, 1.00× the fastest +P-256 ECDSA sign, rind on ovh-iad: 23.25 µs, 1.00× the fastest +P-256 ECDSA sign, rind on ovh-sea: 21.44 µs, 1.00× the fastest +P-256 ECDSA sign, aws-lc-rs on nixos: 12.66 µs, 1.32× the fastest +P-256 ECDSA sign, aws-lc-rs on desktop: 12.33 µs, 1.80× the fastest +P-256 ECDSA sign, aws-lc-rs on nixos2: 19.80 µs, 1.51× the fastest +P-256 ECDSA sign, aws-lc-rs on ovh-iad: 25.45 µs, 1.09× the fastest +P-256 ECDSA sign, aws-lc-rs on ovh-sea: 23.66 µs, 1.10× the fastest +P-256 ECDSA sign, ring on nixos: 13.68 µs, 1.42× the fastest +P-256 ECDSA sign, ring on desktop: 12.24 µs, 1.79× the fastest +P-256 ECDSA sign, ring on nixos2: 14.86 µs, 1.13× the fastest +P-256 ECDSA sign, ring on ovh-iad: 26.75 µs, 1.15× the fastest +P-256 ECDSA sign, ring on ovh-sea: 25.02 µs, 1.17× the fastest +P-256 ECDSA sign, RustCrypto + dalek on nixos: 70.62 µs, 7.34× the fastest +P-256 ECDSA sign, RustCrypto + dalek on desktop: 31.65 µs, 4.63× the fastest +P-256 ECDSA sign, RustCrypto + dalek on nixos2: 69.11 µs, 5.27× the fastest +P-256 ECDSA sign, RustCrypto + dalek on ovh-iad: 114.03 µs, 4.91× the fastest +P-256 ECDSA sign, RustCrypto + dalek on ovh-sea: 105.57 µs, 4.92× the fastest +P-256 ECDSA sign, graviola on nixos: 11.49 µs, 1.19× the fastest +P-256 ECDSA sign, graviola on desktop: 9.26 µs, 1.35× the fastest +P-256 ECDSA sign, graviola on nixos2: 19.89 µs, 1.52× the fastest +P-256 ECDSA sign, libcrux on nixos: 95.47 µs, 9.92× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on desktop: 61.34 µs, 8.97× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on nixos2: 102.03 µs, 7.78× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on ovh-iad: 161.25 µs, 6.94× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, libcrux on ovh-sea: 155.91 µs, 7.27× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA sign, OpenSSL on nixos: 18.04 µs, 1.88× the fastest +P-256 ECDSA sign, OpenSSL on desktop: 14.33 µs, 2.09× the fastest +P-256 ECDSA sign, OpenSSL on nixos2: 20.35 µs, 1.55× the fastest +P-256 ECDSA sign, OpenSSL on ovh-iad: 32.99 µs, 1.42× the fastest +P-256 ECDSA sign, OpenSSL on ovh-sea: 31.72 µs, 1.48× the fastest P-256 ECDSA verify -P-256 ECDSA verify, rind on nixos: 38.23 µs, 1.00× the fastest -P-256 ECDSA verify, rind on desktop: 30.78 µs, 1.01× the fastest -P-256 ECDSA verify, rind on nixos2: 47.33 µs, 1.00× the fastest -P-256 ECDSA verify, aws-lc-rs on nixos: 38.71 µs, 1.01× the fastest -P-256 ECDSA verify, aws-lc-rs on desktop: 30.34 µs, 1.00× the fastest -P-256 ECDSA verify, aws-lc-rs on nixos2: 47.11 µs, 1.00× the fastest -P-256 ECDSA verify, ring on nixos: 39.16 µs, 1.02× the fastest -P-256 ECDSA verify, ring on desktop: 33.20 µs, 1.09× the fastest -P-256 ECDSA verify, ring on nixos2: 47.60 µs, 1.01× the fastest -P-256 ECDSA verify, RustCrypto + dalek on nixos: 217.96 µs, 5.70× the fastest -P-256 ECDSA verify, RustCrypto + dalek on desktop: 102.68 µs, 3.38× the fastest -P-256 ECDSA verify, RustCrypto + dalek on nixos2: 211.46 µs, 4.49× the fastest -P-256 ECDSA verify, graviola on nixos: 40.39 µs, 1.06× the fastest -P-256 ECDSA verify, graviola on desktop: 32.93 µs, 1.09× the fastest -P-256 ECDSA verify, graviola on nixos2: 48.45 µs, 1.03× the fastest -P-256 ECDSA verify, libcrux on nixos: 208.08 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, libcrux on desktop: 146.39 µs, 4.83× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, libcrux on nixos2: 262.54 µs, 5.57× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step -✓ -P-256 ECDSA verify, OpenSSL on nixos: 57.01 µs, 1.49× the fastest -P-256 ECDSA verify, OpenSSL on desktop: 46.07 µs, 1.52× the fastest -P-256 ECDSA verify, OpenSSL on nixos2: 74.70 µs, 1.59× the fastest +P-256 ECDSA verify, rind on nixos: 39.25 µs, 1.00× the fastest +P-256 ECDSA verify, rind on desktop: 30.95 µs, 1.03× the fastest +P-256 ECDSA verify, rind on nixos2: 41.56 µs, 1.00× the fastest +P-256 ECDSA verify, rind on ovh-iad: 81.07 µs, 1.05× the fastest +P-256 ECDSA verify, rind on ovh-sea: 78.07 µs, 1.03× the fastest +P-256 ECDSA verify, aws-lc-rs on nixos: 40.24 µs, 1.03× the fastest +P-256 ECDSA verify, aws-lc-rs on desktop: 30.08 µs, 1.00× the fastest +P-256 ECDSA verify, aws-lc-rs on nixos2: 43.27 µs, 1.04× the fastest +P-256 ECDSA verify, aws-lc-rs on ovh-iad: 77.55 µs, 1.00× the fastest +P-256 ECDSA verify, aws-lc-rs on ovh-sea: 76.02 µs, 1.00× the fastest +P-256 ECDSA verify, ring on nixos: 41.25 µs, 1.05× the fastest +P-256 ECDSA verify, ring on desktop: 33.74 µs, 1.12× the fastest +P-256 ECDSA verify, ring on nixos2: 43.93 µs, 1.06× the fastest +P-256 ECDSA verify, ring on ovh-iad: 80.47 µs, 1.04× the fastest +P-256 ECDSA verify, ring on ovh-sea: 77.17 µs, 1.02× the fastest +P-256 ECDSA verify, RustCrypto + dalek on nixos: 226.27 µs, 5.77× the fastest +P-256 ECDSA verify, RustCrypto + dalek on desktop: 104.58 µs, 3.48× the fastest +P-256 ECDSA verify, RustCrypto + dalek on nixos2: 197.15 µs, 4.74× the fastest +P-256 ECDSA verify, RustCrypto + dalek on ovh-iad: 316.15 µs, 4.08× the fastest +P-256 ECDSA verify, RustCrypto + dalek on ovh-sea: 304.06 µs, 4.00× the fastest +P-256 ECDSA verify, graviola on nixos: 41.92 µs, 1.07× the fastest +P-256 ECDSA verify, graviola on desktop: 32.89 µs, 1.09× the fastest +P-256 ECDSA verify, graviola on nixos2: 44.30 µs, 1.07× the fastest +P-256 ECDSA verify, libcrux on nixos: 215.83 µs, 5.50× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on desktop: 147.11 µs, 4.89× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on nixos2: 236.87 µs, 5.70× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on ovh-iad: 375.03 µs, 4.84× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, libcrux on ovh-sea: 365.46 µs, 4.81× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +✓ +P-256 ECDSA verify, OpenSSL on nixos: 60.27 µs, 1.54× the fastest +P-256 ECDSA verify, OpenSSL on desktop: 46.41 µs, 1.54× the fastest +P-256 ECDSA verify, OpenSSL on nixos2: 68.34 µs, 1.64× the fastest +P-256 ECDSA verify, OpenSSL on ovh-iad: 124.52 µs, 1.61× the fastest +P-256 ECDSA verify, OpenSSL on ovh-sea: 112.54 µs, 1.48× the fastest Hashes and KDFs - + SHA-256, 64 B -SHA-256, 64 B, rind on nixos: 80 ns, 1.38× the fastest -SHA-256, 64 B, rind on desktop: 56 ns, 1.44× the fastest -SHA-256, 64 B, rind on nixos2: 276 ns, 1.00× the fastest -SHA-256, 64 B, aws-lc-rs on nixos: 101 ns, 1.75× the fastest -SHA-256, 64 B, aws-lc-rs on desktop: 57 ns, 1.46× the fastest -SHA-256, 64 B, aws-lc-rs on nixos2: 313 ns, 1.13× the fastest -SHA-256, 64 B, ring on nixos: 86 ns, 1.48× the fastest -SHA-256, 64 B, ring on desktop: 57 ns, 1.46× the fastest -SHA-256, 64 B, ring on nixos2: 289 ns, 1.05× the fastest -SHA-256, 64 B, RustCrypto + dalek on nixos: 58 ns, 1.00× the fastest -SHA-256, 64 B, RustCrypto + dalek on desktop: 39 ns, 1.00× the fastest -SHA-256, 64 B, RustCrypto + dalek on nixos2: 483 ns, 1.75× the fastest -SHA-256, 64 B, graviola on nixos: 67 ns, 1.17× the fastest -SHA-256, 64 B, graviola on desktop: 40 ns, 1.03× the fastest -SHA-256, 64 B, graviola on nixos2: 579 ns, 2.10× the fastest -SHA-256, 64 B, libcrux on nixos: 355 ns, 6.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, libcrux on desktop: 212 ns, 5.41× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, libcrux on nixos2: 487 ns, 1.76× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 64 B, OpenSSL on nixos: 243 ns, 4.20× the fastest -SHA-256, 64 B, OpenSSL on desktop: 157 ns, 4.01× the fastest -SHA-256, 64 B, OpenSSL on nixos2: 514 ns, 1.86× the fastest +SHA-256, 64 B, rind on nixos: 69 ns, 1.17× the fastest +SHA-256, 64 B, rind on desktop: 28 ns, 1.00× the fastest +SHA-256, 64 B, rind on nixos2: 244 ns, 1.00× the fastest +SHA-256, 64 B, rind on ovh-iad: 392 ns, 1.00× the fastest +SHA-256, 64 B, rind on ovh-sea: 381 ns, 1.00× the fastest +SHA-256, 64 B, aws-lc-rs on nixos: 96 ns, 1.63× the fastest +SHA-256, 64 B, aws-lc-rs on desktop: 57 ns, 2.02× the fastest +SHA-256, 64 B, aws-lc-rs on nixos2: 307 ns, 1.26× the fastest +SHA-256, 64 B, aws-lc-rs on ovh-iad: 501 ns, 1.28× the fastest +SHA-256, 64 B, aws-lc-rs on ovh-sea: 479 ns, 1.26× the fastest +SHA-256, 64 B, ring on nixos: 78 ns, 1.34× the fastest +SHA-256, 64 B, ring on desktop: 58 ns, 2.04× the fastest +SHA-256, 64 B, ring on nixos2: 277 ns, 1.13× the fastest +SHA-256, 64 B, ring on ovh-iad: 449 ns, 1.15× the fastest +SHA-256, 64 B, ring on ovh-sea: 425 ns, 1.11× the fastest +SHA-256, 64 B, RustCrypto + dalek on nixos: 59 ns, 1.00× the fastest +SHA-256, 64 B, RustCrypto + dalek on desktop: 40 ns, 1.41× the fastest +SHA-256, 64 B, RustCrypto + dalek on nixos2: 473 ns, 1.94× the fastest +SHA-256, 64 B, RustCrypto + dalek on ovh-iad: 739 ns, 1.89× the fastest +SHA-256, 64 B, RustCrypto + dalek on ovh-sea: 734 ns, 1.92× the fastest +SHA-256, 64 B, graviola on nixos: 67 ns, 1.15× the fastest +SHA-256, 64 B, graviola on desktop: 41 ns, 1.45× the fastest +SHA-256, 64 B, graviola on nixos2: 576 ns, 2.37× the fastest +SHA-256, 64 B, libcrux on nixos: 385 ns, 6.56× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on desktop: 211 ns, 7.50× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on nixos2: 485 ns, 1.99× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on ovh-iad: 773 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, libcrux on ovh-sea: 751 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 64 B, OpenSSL on nixos: 244 ns, 4.15× the fastest +SHA-256, 64 B, OpenSSL on desktop: 161 ns, 5.72× the fastest +SHA-256, 64 B, OpenSSL on nixos2: 505 ns, 2.07× the fastest +SHA-256, 64 B, OpenSSL on ovh-iad: 814 ns, 2.08× the fastest +SHA-256, 64 B, OpenSSL on ovh-sea: 792 ns, 2.08× the fastest SHA-256, 1350 B -SHA-256, 1350 B, rind on nixos: 653 ns, 1.03× the fastest -SHA-256, 1350 B, rind on desktop: 298 ns, 1.02× the fastest -SHA-256, 1350 B, rind on nixos2: 2.88 µs, 1.07× the fastest -SHA-256, 1350 B, aws-lc-rs on nixos: 669 ns, 1.06× the fastest -SHA-256, 1350 B, aws-lc-rs on desktop: 311 ns, 1.07× the fastest -SHA-256, 1350 B, aws-lc-rs on nixos2: 2.98 µs, 1.11× the fastest -SHA-256, 1350 B, ring on nixos: 662 ns, 1.05× the fastest -SHA-256, 1350 B, ring on desktop: 299 ns, 1.03× the fastest -SHA-256, 1350 B, ring on nixos2: 2.83 µs, 1.05× the fastest -SHA-256, 1350 B, RustCrypto + dalek on nixos: 631 ns, 1.00× the fastest -SHA-256, 1350 B, RustCrypto + dalek on desktop: 292 ns, 1.00× the fastest -SHA-256, 1350 B, RustCrypto + dalek on nixos2: 5.33 µs, 1.98× the fastest -SHA-256, 1350 B, graviola on nixos: 642 ns, 1.02× the fastest -SHA-256, 1350 B, graviola on desktop: 298 ns, 1.02× the fastest -SHA-256, 1350 B, graviola on nixos2: 6.11 µs, 2.27× the fastest -SHA-256, 1350 B, libcrux on nixos: 3.77 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, libcrux on desktop: 2.30 µs, 7.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, libcrux on nixos2: 5.27 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 1350 B, OpenSSL on nixos: 827 ns, 1.31× the fastest -SHA-256, 1350 B, OpenSSL on desktop: 412 ns, 1.41× the fastest -SHA-256, 1350 B, OpenSSL on nixos2: 2.69 µs, 1.00× the fastest +SHA-256, 1350 B, rind on nixos: 620 ns, 1.00× the fastest +SHA-256, 1350 B, rind on desktop: 279 ns, 1.00× the fastest +SHA-256, 1350 B, rind on nixos2: 2.46 µs, 1.00× the fastest +SHA-256, 1350 B, rind on ovh-iad: 4.04 µs, 1.00× the fastest +SHA-256, 1350 B, rind on ovh-sea: 3.82 µs, 1.00× the fastest +SHA-256, 1350 B, aws-lc-rs on nixos: 740 ns, 1.20× the fastest +SHA-256, 1350 B, aws-lc-rs on desktop: 312 ns, 1.12× the fastest +SHA-256, 1350 B, aws-lc-rs on nixos2: 2.79 µs, 1.14× the fastest +SHA-256, 1350 B, aws-lc-rs on ovh-iad: 4.38 µs, 1.08× the fastest +SHA-256, 1350 B, aws-lc-rs on ovh-sea: 4.30 µs, 1.13× the fastest +SHA-256, 1350 B, ring on nixos: 637 ns, 1.03× the fastest +SHA-256, 1350 B, ring on desktop: 304 ns, 1.09× the fastest +SHA-256, 1350 B, ring on nixos2: 2.82 µs, 1.15× the fastest +SHA-256, 1350 B, ring on ovh-iad: 4.36 µs, 1.08× the fastest +SHA-256, 1350 B, ring on ovh-sea: 4.27 µs, 1.12× the fastest +SHA-256, 1350 B, RustCrypto + dalek on nixos: 618 ns, 1.00× the fastest +SHA-256, 1350 B, RustCrypto + dalek on desktop: 296 ns, 1.06× the fastest +SHA-256, 1350 B, RustCrypto + dalek on nixos2: 5.11 µs, 2.08× the fastest +SHA-256, 1350 B, RustCrypto + dalek on ovh-iad: 8.11 µs, 2.01× the fastest +SHA-256, 1350 B, RustCrypto + dalek on ovh-sea: 7.80 µs, 2.04× the fastest +SHA-256, 1350 B, graviola on nixos: 637 ns, 1.03× the fastest +SHA-256, 1350 B, graviola on desktop: 297 ns, 1.06× the fastest +SHA-256, 1350 B, graviola on nixos2: 6.07 µs, 2.47× the fastest +SHA-256, 1350 B, libcrux on nixos: 3.71 µs, 6.00× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on desktop: 2.31 µs, 8.25× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on nixos2: 5.23 µs, 2.13× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on ovh-iad: 8.52 µs, 2.11× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, libcrux on ovh-sea: 8.29 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 1350 B, OpenSSL on nixos: 815 ns, 1.32× the fastest +SHA-256, 1350 B, OpenSSL on desktop: 415 ns, 1.48× the fastest +SHA-256, 1350 B, OpenSSL on nixos2: 2.68 µs, 1.09× the fastest +SHA-256, 1350 B, OpenSSL on ovh-iad: 4.48 µs, 1.11× the fastest +SHA-256, 1350 B, OpenSSL on ovh-sea: 4.16 µs, 1.09× the fastest SHA-256, 16 KB -SHA-256, 16 KB, rind on nixos: 7.24 µs, 1.00× the fastest -SHA-256, 16 KB, rind on desktop: 3.21 µs, 1.00× the fastest -SHA-256, 16 KB, rind on nixos2: 31.57 µs, 1.11× the fastest -SHA-256, 16 KB, aws-lc-rs on nixos: 7.38 µs, 1.02× the fastest -SHA-256, 16 KB, aws-lc-rs on desktop: 3.23 µs, 1.00× the fastest -SHA-256, 16 KB, aws-lc-rs on nixos2: 31.63 µs, 1.12× the fastest -SHA-256, 16 KB, ring on nixos: 7.40 µs, 1.02× the fastest -SHA-256, 16 KB, ring on desktop: 3.22 µs, 1.00× the fastest -SHA-256, 16 KB, ring on nixos2: 31.56 µs, 1.11× the fastest -SHA-256, 16 KB, RustCrypto + dalek on nixos: 7.32 µs, 1.01× the fastest -SHA-256, 16 KB, RustCrypto + dalek on desktop: 3.21 µs, 1.00× the fastest -SHA-256, 16 KB, RustCrypto + dalek on nixos2: 58.88 µs, 2.08× the fastest -SHA-256, 16 KB, graviola on nixos: 7.31 µs, 1.01× the fastest -SHA-256, 16 KB, graviola on desktop: 3.22 µs, 1.00× the fastest -SHA-256, 16 KB, graviola on nixos2: 69.99 µs, 2.47× the fastest -SHA-256, 16 KB, libcrux on nixos: 45.19 µs, 6.24× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, libcrux on desktop: 26.37 µs, 8.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, libcrux on nixos2: 61.29 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-256, 16 KB, OpenSSL on nixos: 7.52 µs, 1.04× the fastest -SHA-256, 16 KB, OpenSSL on desktop: 3.38 µs, 1.05× the fastest -SHA-256, 16 KB, OpenSSL on nixos2: 28.35 µs, 1.00× the fastest +SHA-256, 16 KB, rind on nixos: 6.86 µs, 1.00× the fastest +SHA-256, 16 KB, rind on desktop: 3.24 µs, 1.00× the fastest +SHA-256, 16 KB, rind on nixos2: 28.06 µs, 1.00× the fastest +SHA-256, 16 KB, rind on ovh-iad: 44.12 µs, 1.00× the fastest +SHA-256, 16 KB, rind on ovh-sea: 43.31 µs, 1.00× the fastest +SHA-256, 16 KB, aws-lc-rs on nixos: 6.88 µs, 1.00× the fastest +SHA-256, 16 KB, aws-lc-rs on desktop: 3.28 µs, 1.01× the fastest +SHA-256, 16 KB, aws-lc-rs on nixos2: 31.46 µs, 1.12× the fastest +SHA-256, 16 KB, aws-lc-rs on ovh-iad: 51.22 µs, 1.16× the fastest +SHA-256, 16 KB, aws-lc-rs on ovh-sea: 48.32 µs, 1.12× the fastest +SHA-256, 16 KB, ring on nixos: 6.97 µs, 1.01× the fastest +SHA-256, 16 KB, ring on desktop: 3.28 µs, 1.01× the fastest +SHA-256, 16 KB, ring on nixos2: 32.37 µs, 1.15× the fastest +SHA-256, 16 KB, ring on ovh-iad: 55.38 µs, 1.26× the fastest +SHA-256, 16 KB, ring on ovh-sea: 48.73 µs, 1.13× the fastest +SHA-256, 16 KB, RustCrypto + dalek on nixos: 7.22 µs, 1.05× the fastest +SHA-256, 16 KB, RustCrypto + dalek on desktop: 3.26 µs, 1.01× the fastest +SHA-256, 16 KB, RustCrypto + dalek on nixos2: 58.17 µs, 2.07× the fastest +SHA-256, 16 KB, RustCrypto + dalek on ovh-iad: 93.62 µs, 2.12× the fastest +SHA-256, 16 KB, RustCrypto + dalek on ovh-sea: 89.76 µs, 2.07× the fastest +SHA-256, 16 KB, graviola on nixos: 7.08 µs, 1.03× the fastest +SHA-256, 16 KB, graviola on desktop: 3.27 µs, 1.01× the fastest +SHA-256, 16 KB, graviola on nixos2: 69.84 µs, 2.49× the fastest +SHA-256, 16 KB, libcrux on nixos: 43.12 µs, 6.28× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on desktop: 26.81 µs, 8.27× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on nixos2: 61.68 µs, 2.20× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on ovh-iad: 97.65 µs, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, libcrux on ovh-sea: 94.03 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-256, 16 KB, OpenSSL on nixos: 7.37 µs, 1.07× the fastest +SHA-256, 16 KB, OpenSSL on desktop: 3.39 µs, 1.05× the fastest +SHA-256, 16 KB, OpenSSL on nixos2: 28.83 µs, 1.03× the fastest +SHA-256, 16 KB, OpenSSL on ovh-iad: 45.31 µs, 1.03× the fastest +SHA-256, 16 KB, OpenSSL on ovh-sea: 43.45 µs, 1.00× the fastest SHA-512, 64 B -SHA-512, 64 B, rind on nixos: 195 ns, 1.05× the fastest -SHA-512, 64 B, rind on desktop: 132 ns, 1.05× the fastest -SHA-512, 64 B, rind on nixos2: 200 ns, 1.00× the fastest -SHA-512, 64 B, aws-lc-rs on nixos: 233 ns, 1.26× the fastest -SHA-512, 64 B, aws-lc-rs on desktop: 133 ns, 1.06× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 64 B, aws-lc-rs on nixos2: 233 ns, 1.17× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 64 B, ring on nixos: 202 ns, 1.09× the fastest -SHA-512, 64 B, ring on desktop: 139 ns, 1.11× the fastest -SHA-512, 64 B, ring on nixos2: 204 ns, 1.02× the fastest -SHA-512, 64 B, RustCrypto + dalek on nixos: 203 ns, 1.10× the fastest -SHA-512, 64 B, RustCrypto + dalek on desktop: 125 ns, 1.00× the fastest -SHA-512, 64 B, RustCrypto + dalek on nixos2: 272 ns, 1.36× the fastest -SHA-512, 64 B, graviola on nixos: 185 ns, 1.00× the fastest -SHA-512, 64 B, graviola on desktop: 146 ns, 1.17× the fastest -SHA-512, 64 B, graviola on nixos2: 237 ns, 1.18× the fastest -SHA-512, 64 B, libcrux on nixos: 268 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, libcrux on desktop: 163 ns, 1.30× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, libcrux on nixos2: 290 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 64 B, OpenSSL on nixos: 390 ns, 2.11× the fastest -SHA-512, 64 B, OpenSSL on desktop: 227 ns, 1.81× the fastest -SHA-512, 64 B, OpenSSL on nixos2: 436 ns, 2.18× the fastest +SHA-512, 64 B, rind on nixos: 138 ns, 1.00× the fastest +SHA-512, 64 B, rind on desktop: 60 ns, 1.00× the fastest +SHA-512, 64 B, rind on nixos2: 198 ns, 1.00× the fastest +SHA-512, 64 B, rind on ovh-iad: 312 ns, 1.00× the fastest +SHA-512, 64 B, rind on ovh-sea: 310 ns, 1.00× the fastest +SHA-512, 64 B, aws-lc-rs on nixos: 224 ns, 1.62× the fastest +SHA-512, 64 B, aws-lc-rs on desktop: 136 ns, 2.27× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on nixos2: 228 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on ovh-iad: 373 ns, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, aws-lc-rs on ovh-sea: 357 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 64 B, ring on nixos: 198 ns, 1.43× the fastest +SHA-512, 64 B, ring on desktop: 142 ns, 2.36× the fastest +SHA-512, 64 B, ring on nixos2: 203 ns, 1.02× the fastest +SHA-512, 64 B, ring on ovh-iad: 328 ns, 1.05× the fastest +SHA-512, 64 B, ring on ovh-sea: 312 ns, 1.01× the fastest +SHA-512, 64 B, RustCrypto + dalek on nixos: 192 ns, 1.39× the fastest +SHA-512, 64 B, RustCrypto + dalek on desktop: 120 ns, 1.99× the fastest +SHA-512, 64 B, RustCrypto + dalek on nixos2: 270 ns, 1.36× the fastest +SHA-512, 64 B, RustCrypto + dalek on ovh-iad: 432 ns, 1.38× the fastest +SHA-512, 64 B, RustCrypto + dalek on ovh-sea: 418 ns, 1.35× the fastest +SHA-512, 64 B, graviola on nixos: 206 ns, 1.49× the fastest +SHA-512, 64 B, graviola on desktop: 150 ns, 2.49× the fastest +SHA-512, 64 B, graviola on nixos2: 236 ns, 1.19× the fastest +SHA-512, 64 B, libcrux on nixos: 246 ns, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on desktop: 167 ns, 2.78× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on nixos2: 289 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on ovh-iad: 489 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, libcrux on ovh-sea: 448 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 64 B, OpenSSL on nixos: 355 ns, 2.57× the fastest +SHA-512, 64 B, OpenSSL on desktop: 233 ns, 3.87× the fastest +SHA-512, 64 B, OpenSSL on nixos2: 430 ns, 2.17× the fastest +SHA-512, 64 B, OpenSSL on ovh-iad: 771 ns, 2.47× the fastest +SHA-512, 64 B, OpenSSL on ovh-sea: 671 ns, 2.16× the fastest SHA-512, 1350 B -SHA-512, 1350 B, rind on nixos: 2.75 µs, 1.83× the fastest -SHA-512, 1350 B, rind on desktop: 1.23 µs, 1.05× the fastest -SHA-512, 1350 B, rind on nixos2: 1.95 µs, 1.01× the fastest -SHA-512, 1350 B, aws-lc-rs on nixos: 2.31 µs, 1.54× the fastest -SHA-512, 1350 B, aws-lc-rs on desktop: 1.26 µs, 1.08× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 1350 B, aws-lc-rs on nixos2: 1.98 µs, 1.03× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 1350 B, ring on nixos: 1.97 µs, 1.31× the fastest -SHA-512, 1350 B, ring on desktop: 1.26 µs, 1.07× the fastest -SHA-512, 1350 B, ring on nixos2: 1.95 µs, 1.01× the fastest -SHA-512, 1350 B, RustCrypto + dalek on nixos: 2.66 µs, 1.77× the fastest -SHA-512, 1350 B, RustCrypto + dalek on desktop: 1.17 µs, 1.00× the fastest -SHA-512, 1350 B, RustCrypto + dalek on nixos2: 2.68 µs, 1.40× the fastest -SHA-512, 1350 B, graviola on nixos: 1.96 µs, 1.30× the fastest -SHA-512, 1350 B, graviola on desktop: 1.50 µs, 1.28× the fastest -SHA-512, 1350 B, graviola on nixos2: 2.35 µs, 1.22× the fastest -SHA-512, 1350 B, libcrux on nixos: 2.80 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, libcrux on desktop: 1.72 µs, 1.47× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, libcrux on nixos2: 3.08 µs, 1.60× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 1350 B, OpenSSL on nixos: 1.50 µs, 1.00× the fastest -SHA-512, 1350 B, OpenSSL on desktop: 1.19 µs, 1.02× the fastest -SHA-512, 1350 B, OpenSSL on nixos2: 1.92 µs, 1.00× the fastest +SHA-512, 1350 B, rind on nixos: 1.77 µs, 1.01× the fastest +SHA-512, 1350 B, rind on desktop: 470 ns, 1.00× the fastest +SHA-512, 1350 B, rind on nixos2: 1.65 µs, 1.00× the fastest +SHA-512, 1350 B, rind on ovh-iad: 2.70 µs, 1.00× the fastest +SHA-512, 1350 B, rind on ovh-sea: 2.61 µs, 1.00× the fastest +SHA-512, 1350 B, aws-lc-rs on nixos: 1.90 µs, 1.08× the fastest +SHA-512, 1350 B, aws-lc-rs on desktop: 1.27 µs, 2.69× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on nixos2: 1.97 µs, 1.19× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on ovh-iad: 3.11 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, aws-lc-rs on ovh-sea: 2.99 µs, 1.14× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 1350 B, ring on nixos: 1.87 µs, 1.06× the fastest +SHA-512, 1350 B, ring on desktop: 1.26 µs, 2.69× the fastest +SHA-512, 1350 B, ring on nixos2: 1.93 µs, 1.17× the fastest +SHA-512, 1350 B, ring on ovh-iad: 3.30 µs, 1.22× the fastest +SHA-512, 1350 B, ring on ovh-sea: 2.93 µs, 1.12× the fastest +SHA-512, 1350 B, RustCrypto + dalek on nixos: 1.92 µs, 1.09× the fastest +SHA-512, 1350 B, RustCrypto + dalek on desktop: 1.18 µs, 2.50× the fastest +SHA-512, 1350 B, RustCrypto + dalek on nixos2: 2.67 µs, 1.61× the fastest +SHA-512, 1350 B, RustCrypto + dalek on ovh-iad: 4.38 µs, 1.62× the fastest +SHA-512, 1350 B, RustCrypto + dalek on ovh-sea: 4.17 µs, 1.60× the fastest +SHA-512, 1350 B, graviola on nixos: 1.98 µs, 1.13× the fastest +SHA-512, 1350 B, graviola on desktop: 1.51 µs, 3.21× the fastest +SHA-512, 1350 B, graviola on nixos2: 2.35 µs, 1.42× the fastest +SHA-512, 1350 B, libcrux on nixos: 2.94 µs, 1.67× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on desktop: 1.69 µs, 3.59× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on nixos2: 3.08 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on ovh-iad: 4.98 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, libcrux on ovh-sea: 4.74 µs, 1.82× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 1350 B, OpenSSL on nixos: 1.76 µs, 1.00× the fastest +SHA-512, 1350 B, OpenSSL on desktop: 1.20 µs, 2.55× the fastest +SHA-512, 1350 B, OpenSSL on nixos2: 1.90 µs, 1.15× the fastest +SHA-512, 1350 B, OpenSSL on ovh-iad: 3.06 µs, 1.13× the fastest +SHA-512, 1350 B, OpenSSL on ovh-sea: 2.96 µs, 1.13× the fastest SHA-512, 16 KB -SHA-512, 16 KB, rind on nixos: 20.37 µs, 1.37× the fastest -SHA-512, 16 KB, rind on desktop: 14.31 µs, 1.16× the fastest -SHA-512, 16 KB, rind on nixos2: 21.82 µs, 1.15× the fastest -SHA-512, 16 KB, aws-lc-rs on nixos: 20.45 µs, 1.38× the fastest -SHA-512, 16 KB, aws-lc-rs on desktop: 14.09 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 16 KB, aws-lc-rs on nixos2: 21.95 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps -✓ -SHA-512, 16 KB, ring on nixos: 20.63 µs, 1.39× the fastest -SHA-512, 16 KB, ring on desktop: 14.09 µs, 1.15× the fastest -SHA-512, 16 KB, ring on nixos2: 22.31 µs, 1.17× the fastest -SHA-512, 16 KB, RustCrypto + dalek on nixos: 20.78 µs, 1.40× the fastest -SHA-512, 16 KB, RustCrypto + dalek on desktop: 13.36 µs, 1.09× the fastest -SHA-512, 16 KB, RustCrypto + dalek on nixos2: 31.08 µs, 1.63× the fastest -SHA-512, 16 KB, graviola on nixos: 21.56 µs, 1.45× the fastest -SHA-512, 16 KB, graviola on desktop: 17.62 µs, 1.43× the fastest -SHA-512, 16 KB, graviola on nixos2: 27.35 µs, 1.44× the fastest -SHA-512, 16 KB, libcrux on nixos: 29.02 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, libcrux on desktop: 19.80 µs, 1.61× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, libcrux on nixos2: 35.63 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step -✓ -SHA-512, 16 KB, OpenSSL on nixos: 14.83 µs, 1.00× the fastest -SHA-512, 16 KB, OpenSSL on desktop: 12.30 µs, 1.00× the fastest -SHA-512, 16 KB, OpenSSL on nixos2: 19.04 µs, 1.00× the fastest +SHA-512, 16 KB, rind on nixos: 16.28 µs, 1.07× the fastest +SHA-512, 16 KB, rind on desktop: 2.68 µs, 1.00× the fastest +SHA-512, 16 KB, rind on nixos2: 18.53 µs, 1.00× the fastest +SHA-512, 16 KB, rind on ovh-iad: 30.70 µs, 1.00× the fastest +SHA-512, 16 KB, rind on ovh-sea: 28.35 µs, 1.00× the fastest +SHA-512, 16 KB, aws-lc-rs on nixos: 25.17 µs, 1.66× the fastest +SHA-512, 16 KB, aws-lc-rs on desktop: 14.32 µs, 5.34× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on nixos2: 21.92 µs, 1.18× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on ovh-iad: 35.44 µs, 1.16× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, aws-lc-rs on ovh-sea: 33.98 µs, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +✓ +SHA-512, 16 KB, ring on nixos: 25.38 µs, 1.68× the fastest +SHA-512, 16 KB, ring on desktop: 14.36 µs, 5.35× the fastest +SHA-512, 16 KB, ring on nixos2: 21.75 µs, 1.17× the fastest +SHA-512, 16 KB, ring on ovh-iad: 34.66 µs, 1.13× the fastest +SHA-512, 16 KB, ring on ovh-sea: 33.85 µs, 1.19× the fastest +SHA-512, 16 KB, RustCrypto + dalek on nixos: 24.12 µs, 1.59× the fastest +SHA-512, 16 KB, RustCrypto + dalek on desktop: 13.55 µs, 5.05× the fastest +SHA-512, 16 KB, RustCrypto + dalek on nixos2: 30.73 µs, 1.66× the fastest +SHA-512, 16 KB, RustCrypto + dalek on ovh-iad: 50.00 µs, 1.63× the fastest +SHA-512, 16 KB, RustCrypto + dalek on ovh-sea: 47.68 µs, 1.68× the fastest +SHA-512, 16 KB, graviola on nixos: 21.04 µs, 1.39× the fastest +SHA-512, 16 KB, graviola on desktop: 17.96 µs, 6.70× the fastest +SHA-512, 16 KB, graviola on nixos2: 27.16 µs, 1.47× the fastest +SHA-512, 16 KB, libcrux on nixos: 29.75 µs, 1.96× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on desktop: 20.01 µs, 7.46× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on nixos2: 35.45 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on ovh-iad: 56.95 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, libcrux on ovh-sea: 55.08 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +✓ +SHA-512, 16 KB, OpenSSL on nixos: 15.14 µs, 1.00× the fastest +SHA-512, 16 KB, OpenSSL on desktop: 12.51 µs, 4.66× the fastest +SHA-512, 16 KB, OpenSSL on nixos2: 18.99 µs, 1.02× the fastest +SHA-512, 16 KB, OpenSSL on ovh-iad: 30.66 µs, 1.00× the fastest +SHA-512, 16 KB, OpenSSL on ovh-sea: 29.86 µs, 1.05× the fastest HMAC-SHA256, 64 B -HMAC-SHA256, 64 B, rind on nixos: 153 ns, 1.00× the fastest -HMAC-SHA256, 64 B, rind on desktop: 87 ns, 1.00× the fastest -HMAC-SHA256, 64 B, rind on nixos2: 690 ns, 1.00× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on nixos: 263 ns, 1.72× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on desktop: 177 ns, 2.03× the fastest -HMAC-SHA256, 64 B, aws-lc-rs on nixos2: 840 ns, 1.22× the fastest -HMAC-SHA256, 64 B, ring on nixos: 214 ns, 1.39× the fastest -HMAC-SHA256, 64 B, ring on desktop: 143 ns, 1.64× the fastest -HMAC-SHA256, 64 B, ring on nixos2: 746 ns, 1.08× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on nixos: 155 ns, 1.01× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on desktop: 103 ns, 1.18× the fastest -HMAC-SHA256, 64 B, RustCrypto + dalek on nixos2: 1.25 µs, 1.81× the fastest -HMAC-SHA256, 64 B, graviola on nixos: 170 ns, 1.11× the fastest -HMAC-SHA256, 64 B, graviola on desktop: 109 ns, 1.26× the fastest -HMAC-SHA256, 64 B, graviola on nixos2: 1.47 µs, 2.12× the fastest -HMAC-SHA256, 64 B, libcrux on nixos: 823 ns, 5.37× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, libcrux on desktop: 547 ns, 6.27× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, libcrux on nixos2: 1.22 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 64 B, OpenSSL on nixos: 2.49 µs, 16.24× the fastest -HMAC-SHA256, 64 B, OpenSSL on desktop: 1.54 µs, 17.65× the fastest -HMAC-SHA256, 64 B, OpenSSL on nixos2: 3.90 µs, 5.65× the fastest +HMAC-SHA256, 64 B, rind on nixos: 147 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on desktop: 75 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on nixos2: 628 ns, 1.00× the fastest +HMAC-SHA256, 64 B, rind on ovh-iad: 1.01 µs, 1.00× the fastest +HMAC-SHA256, 64 B, rind on ovh-sea: 964 ns, 1.00× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on nixos: 264 ns, 1.80× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on desktop: 180 ns, 2.38× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on nixos2: 811 ns, 1.29× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on ovh-iad: 1.31 µs, 1.29× the fastest +HMAC-SHA256, 64 B, aws-lc-rs on ovh-sea: 1.25 µs, 1.30× the fastest +HMAC-SHA256, 64 B, ring on nixos: 214 ns, 1.45× the fastest +HMAC-SHA256, 64 B, ring on desktop: 145 ns, 1.93× the fastest +HMAC-SHA256, 64 B, ring on nixos2: 707 ns, 1.13× the fastest +HMAC-SHA256, 64 B, ring on ovh-iad: 1.11 µs, 1.10× the fastest +HMAC-SHA256, 64 B, ring on ovh-sea: 1.11 µs, 1.15× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on nixos: 155 ns, 1.06× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on desktop: 104 ns, 1.39× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on nixos2: 1.19 µs, 1.89× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on ovh-iad: 1.94 µs, 1.92× the fastest +HMAC-SHA256, 64 B, RustCrypto + dalek on ovh-sea: 1.84 µs, 1.91× the fastest +HMAC-SHA256, 64 B, graviola on nixos: 172 ns, 1.17× the fastest +HMAC-SHA256, 64 B, graviola on desktop: 115 ns, 1.52× the fastest +HMAC-SHA256, 64 B, graviola on nixos2: 1.44 µs, 2.30× the fastest +HMAC-SHA256, 64 B, libcrux on nixos: 851 ns, 5.79× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on desktop: 536 ns, 7.12× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on nixos2: 1.20 µs, 1.92× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on ovh-iad: 1.93 µs, 1.90× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, libcrux on ovh-sea: 1.85 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 64 B, OpenSSL on nixos: 2.57 µs, 17.50× the fastest +HMAC-SHA256, 64 B, OpenSSL on desktop: 1.56 µs, 20.76× the fastest +HMAC-SHA256, 64 B, OpenSSL on nixos2: 3.69 µs, 5.88× the fastest +HMAC-SHA256, 64 B, OpenSSL on ovh-iad: 6.01 µs, 5.94× the fastest +HMAC-SHA256, 64 B, OpenSSL on ovh-sea: 5.65 µs, 5.86× the fastest HMAC-SHA256, 1350 B -HMAC-SHA256, 1350 B, rind on nixos: 678 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, rind on desktop: 340 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, rind on nixos2: 3.29 µs, 1.00× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on nixos: 794 ns, 1.17× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on desktop: 433 ns, 1.27× the fastest -HMAC-SHA256, 1350 B, aws-lc-rs on nixos2: 3.49 µs, 1.06× the fastest -HMAC-SHA256, 1350 B, ring on nixos: 749 ns, 1.11× the fastest -HMAC-SHA256, 1350 B, ring on desktop: 396 ns, 1.16× the fastest -HMAC-SHA256, 1350 B, ring on nixos2: 3.39 µs, 1.03× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos: 681 ns, 1.00× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on desktop: 355 ns, 1.04× the fastest -HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos2: 6.54 µs, 1.99× the fastest -HMAC-SHA256, 1350 B, graviola on nixos: 696 ns, 1.03× the fastest -HMAC-SHA256, 1350 B, graviola on desktop: 364 ns, 1.07× the fastest -HMAC-SHA256, 1350 B, graviola on nixos2: 7.49 µs, 2.28× the fastest -HMAC-SHA256, 1350 B, libcrux on nixos: 4.05 µs, 5.97× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, libcrux on desktop: 2.78 µs, 8.18× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, libcrux on nixos2: 7.14 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step -✓ -HMAC-SHA256, 1350 B, OpenSSL on nixos: 3.03 µs, 4.46× the fastest -HMAC-SHA256, 1350 B, OpenSSL on desktop: 1.80 µs, 5.29× the fastest -HMAC-SHA256, 1350 B, OpenSSL on nixos2: 6.24 µs, 1.89× the fastest +HMAC-SHA256, 1350 B, rind on nixos: 692 ns, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on desktop: 327 ns, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on nixos2: 2.79 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on ovh-iad: 4.40 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, rind on ovh-sea: 4.33 µs, 1.00× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on nixos: 853 ns, 1.23× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on desktop: 434 ns, 1.33× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on nixos2: 3.30 µs, 1.18× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on ovh-iad: 5.15 µs, 1.17× the fastest +HMAC-SHA256, 1350 B, aws-lc-rs on ovh-sea: 5.01 µs, 1.16× the fastest +HMAC-SHA256, 1350 B, ring on nixos: 791 ns, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on desktop: 399 ns, 1.22× the fastest +HMAC-SHA256, 1350 B, ring on nixos2: 3.19 µs, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on ovh-iad: 5.00 µs, 1.14× the fastest +HMAC-SHA256, 1350 B, ring on ovh-sea: 4.88 µs, 1.13× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos: 728 ns, 1.05× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on desktop: 358 ns, 1.09× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on nixos2: 5.80 µs, 2.08× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on ovh-iad: 9.13 µs, 2.08× the fastest +HMAC-SHA256, 1350 B, RustCrypto + dalek on ovh-sea: 8.93 µs, 2.06× the fastest +HMAC-SHA256, 1350 B, graviola on nixos: 731 ns, 1.06× the fastest +HMAC-SHA256, 1350 B, graviola on desktop: 363 ns, 1.11× the fastest +HMAC-SHA256, 1350 B, graviola on nixos2: 7.05 µs, 2.53× the fastest +HMAC-SHA256, 1350 B, libcrux on nixos: 4.39 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on desktop: 2.66 µs, 8.15× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on nixos2: 6.02 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on ovh-iad: 9.50 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, libcrux on ovh-sea: 9.26 µs, 2.14× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +✓ +HMAC-SHA256, 1350 B, OpenSSL on nixos: 3.11 µs, 4.50× the fastest +HMAC-SHA256, 1350 B, OpenSSL on desktop: 1.83 µs, 5.60× the fastest +HMAC-SHA256, 1350 B, OpenSSL on nixos2: 5.94 µs, 2.13× the fastest +HMAC-SHA256, 1350 B, OpenSSL on ovh-iad: 9.61 µs, 2.19× the fastest +HMAC-SHA256, 1350 B, OpenSSL on ovh-sea: 9.20 µs, 2.13× the fastest HKDF-SHA256 extract and expand -HKDF-SHA256 extract and expand, rind on nixos: 304 ns, 1.00× the fastest -HKDF-SHA256 extract and expand, rind on desktop: 192 ns, 1.00× the fastest -HKDF-SHA256 extract and expand, rind on nixos2: 1.18 µs, 1.00× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on nixos: 376 ns, 1.24× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on desktop: 290 ns, 1.51× the fastest -HKDF-SHA256 extract and expand, aws-lc-rs on nixos2: 1.35 µs, 1.14× the fastest -HKDF-SHA256 extract and expand, ring on nixos: 398 ns, 1.31× the fastest -HKDF-SHA256 extract and expand, ring on desktop: 300 ns, 1.56× the fastest -HKDF-SHA256 extract and expand, ring on nixos2: 1.26 µs, 1.07× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos: 310 ns, 1.02× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on desktop: 221 ns, 1.15× the fastest -HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos2: 2.11 µs, 1.79× the fastest -HKDF-SHA256 extract and expand, libcrux on nixos: 1.37 µs, 4.52× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, libcrux on desktop: 971 ns, 5.05× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, libcrux on nixos2: 2.17 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 extract and expand, OpenSSL on nixos: 2.77 µs, 9.12× the fastest -HKDF-SHA256 extract and expand, OpenSSL on desktop: 1.73 µs, 8.99× the fastest -HKDF-SHA256 extract and expand, OpenSSL on nixos2: 4.68 µs, 3.97× the fastest +HKDF-SHA256 extract and expand, rind on nixos: 257 ns, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on desktop: 152 ns, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on nixos2: 1.15 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on ovh-iad: 1.74 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, rind on ovh-sea: 1.71 µs, 1.00× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on nixos: 369 ns, 1.44× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on desktop: 288 ns, 1.90× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on nixos2: 1.44 µs, 1.25× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on ovh-iad: 2.15 µs, 1.24× the fastest +HKDF-SHA256 extract and expand, aws-lc-rs on ovh-sea: 2.07 µs, 1.21× the fastest +HKDF-SHA256 extract and expand, ring on nixos: 399 ns, 1.55× the fastest +HKDF-SHA256 extract and expand, ring on desktop: 305 ns, 2.01× the fastest +HKDF-SHA256 extract and expand, ring on nixos2: 1.31 µs, 1.14× the fastest +HKDF-SHA256 extract and expand, ring on ovh-iad: 1.98 µs, 1.14× the fastest +HKDF-SHA256 extract and expand, ring on ovh-sea: 1.84 µs, 1.07× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos: 309 ns, 1.20× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on desktop: 223 ns, 1.47× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on nixos2: 1.98 µs, 1.72× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on ovh-iad: 3.08 µs, 1.77× the fastest +HKDF-SHA256 extract and expand, RustCrypto + dalek on ovh-sea: 3.02 µs, 1.76× the fastest +HKDF-SHA256 extract and expand, libcrux on nixos: 1.37 µs, 5.34× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on desktop: 965 ns, 6.36× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on nixos2: 2.04 µs, 1.77× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on ovh-iad: 3.26 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, libcrux on ovh-sea: 3.05 µs, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 extract and expand, OpenSSL on nixos: 2.72 µs, 10.57× the fastest +HKDF-SHA256 extract and expand, OpenSSL on desktop: 1.76 µs, 11.57× the fastest +HKDF-SHA256 extract and expand, OpenSSL on nixos2: 4.33 µs, 3.76× the fastest +HKDF-SHA256 extract and expand, OpenSSL on ovh-iad: 7.08 µs, 4.07× the fastest +HKDF-SHA256 extract and expand, OpenSSL on ovh-sea: 6.74 µs, 3.93× the fastest HKDF-SHA256 expand -HKDF-SHA256 expand, rind on nixos: 104 ns, 1.01× the fastest -HKDF-SHA256 expand, rind on desktop: 81 ns, 1.00× the fastest -HKDF-SHA256 expand, rind on nixos2: 330 ns, 1.00× the fastest -HKDF-SHA256 expand, aws-lc-rs on nixos: 178 ns, 1.73× the fastest -HKDF-SHA256 expand, aws-lc-rs on desktop: 126 ns, 1.55× the fastest -HKDF-SHA256 expand, aws-lc-rs on nixos2: 673 ns, 2.04× the fastest -HKDF-SHA256 expand, ring on nixos: 142 ns, 1.38× the fastest -HKDF-SHA256 expand, ring on desktop: 120 ns, 1.48× the fastest -HKDF-SHA256 expand, ring on nixos2: 344 ns, 1.04× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on nixos: 103 ns, 1.00× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on desktop: 84 ns, 1.03× the fastest -HKDF-SHA256 expand, RustCrypto + dalek on nixos2: 527 ns, 1.60× the fastest -HKDF-SHA256 expand, libcrux on nixos: 706 ns, 6.88× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, libcrux on desktop: 456 ns, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, libcrux on nixos2: 1.07 µs, 3.23× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step -✓ -HKDF-SHA256 expand, OpenSSL on nixos: 1.96 µs, 19.03× the fastest -HKDF-SHA256 expand, OpenSSL on desktop: 1.24 µs, 15.25× the fastest -HKDF-SHA256 expand, OpenSSL on nixos2: 3.12 µs, 9.45× the fastest +HKDF-SHA256 expand, rind on nixos: 89 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on desktop: 47 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on nixos2: 300 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on ovh-iad: 488 ns, 1.00× the fastest +HKDF-SHA256 expand, rind on ovh-sea: 462 ns, 1.00× the fastest +HKDF-SHA256 expand, aws-lc-rs on nixos: 179 ns, 2.02× the fastest +HKDF-SHA256 expand, aws-lc-rs on desktop: 126 ns, 2.70× the fastest +HKDF-SHA256 expand, aws-lc-rs on nixos2: 636 ns, 2.12× the fastest +HKDF-SHA256 expand, aws-lc-rs on ovh-iad: 1.00 µs, 2.05× the fastest +HKDF-SHA256 expand, aws-lc-rs on ovh-sea: 988 ns, 2.14× the fastest +HKDF-SHA256 expand, ring on nixos: 142 ns, 1.60× the fastest +HKDF-SHA256 expand, ring on desktop: 122 ns, 2.63× the fastest +HKDF-SHA256 expand, ring on nixos2: 337 ns, 1.12× the fastest +HKDF-SHA256 expand, ring on ovh-iad: 526 ns, 1.08× the fastest +HKDF-SHA256 expand, ring on ovh-sea: 509 ns, 1.10× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on nixos: 103 ns, 1.16× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on desktop: 85 ns, 1.83× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on nixos2: 512 ns, 1.71× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on ovh-iad: 792 ns, 1.62× the fastest +HKDF-SHA256 expand, RustCrypto + dalek on ovh-sea: 771 ns, 1.67× the fastest +HKDF-SHA256 expand, libcrux on nixos: 714 ns, 8.06× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on desktop: 484 ns, 10.38× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on nixos2: 1.01 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on ovh-iad: 1.65 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, libcrux on ovh-sea: 1.58 µs, 3.42× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +✓ +HKDF-SHA256 expand, OpenSSL on nixos: 2.00 µs, 22.59× the fastest +HKDF-SHA256 expand, OpenSSL on desktop: 1.25 µs, 26.79× the fastest +HKDF-SHA256 expand, OpenSSL on nixos2: 2.87 µs, 9.58× the fastest +HKDF-SHA256 expand, OpenSSL on ovh-iad: 4.55 µs, 9.32× the fastest +HKDF-SHA256 expand, OpenSSL on ovh-sea: 4.47 µs, 9.67× the fastest RSA - + RSA-2048 PKCS#1 sign -RSA-2048 PKCS#1 sign, rind on nixos: 474.44 µs, 1.15× the fastest -RSA-2048 PKCS#1 sign, rind on desktop: 400.25 µs, 1.19× the fastest -RSA-2048 PKCS#1 sign, rind on nixos2: 567.70 µs, 1.28× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on nixos: 435.90 µs, 1.06× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on desktop: 349.67 µs, 1.04× the fastest -RSA-2048 PKCS#1 sign, aws-lc-rs on nixos2: 454.36 µs, 1.03× the fastest -RSA-2048 PKCS#1 sign, ring on nixos: 423.03 µs, 1.03× the fastest -RSA-2048 PKCS#1 sign, ring on desktop: 336.09 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, ring on nixos2: 442.48 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos: 987.29 µs, 2.40× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on desktop: 592.98 µs, 1.76× the fastest -RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos2: 1.16 ms, 2.62× the fastest -RSA-2048 PKCS#1 sign, graviola on nixos: 411.78 µs, 1.00× the fastest -RSA-2048 PKCS#1 sign, graviola on desktop: 341.78 µs, 1.02× the fastest -RSA-2048 PKCS#1 sign, graviola on nixos2: 458.57 µs, 1.04× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on nixos: 437.30 µs, 1.06× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on desktop: 389.03 µs, 1.16× the fastest -RSA-2048 PKCS#1 sign, OpenSSL on nixos2: 471.98 µs, 1.07× the fastest +RSA-2048 PKCS#1 sign, rind on nixos: 523.17 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, rind on desktop: 348.43 µs, 1.02× the fastest +RSA-2048 PKCS#1 sign, rind on nixos2: 447.43 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, rind on ovh-iad: 805.45 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, rind on ovh-sea: 744.79 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on nixos: 532.39 µs, 1.12× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on desktop: 349.47 µs, 1.02× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on nixos2: 448.68 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on ovh-iad: 872.67 µs, 1.08× the fastest +RSA-2048 PKCS#1 sign, aws-lc-rs on ovh-sea: 767.91 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, ring on nixos: 523.12 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, ring on desktop: 341.11 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, ring on nixos2: 434.47 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, ring on ovh-iad: 1.19 ms, 1.47× the fastest +RSA-2048 PKCS#1 sign, ring on ovh-sea: 1.00 ms, 1.34× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos: 1.26 ms, 2.66× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on desktop: 588.67 µs, 1.73× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on nixos2: 1.14 ms, 2.63× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on ovh-iad: 1.97 ms, 2.45× the fastest +RSA-2048 PKCS#1 sign, RustCrypto + dalek on ovh-sea: 1.77 ms, 2.38× the fastest +RSA-2048 PKCS#1 sign, graviola on nixos: 474.44 µs, 1.00× the fastest +RSA-2048 PKCS#1 sign, graviola on desktop: 343.91 µs, 1.01× the fastest +RSA-2048 PKCS#1 sign, graviola on nixos2: 445.92 µs, 1.03× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on nixos: 520.25 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on desktop: 397.72 µs, 1.17× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on nixos2: 453.81 µs, 1.04× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on ovh-iad: 884.01 µs, 1.10× the fastest +RSA-2048 PKCS#1 sign, OpenSSL on ovh-sea: 786.07 µs, 1.06× the fastest RSA-2048 PKCS#1 verify -RSA-2048 PKCS#1 verify, rind on nixos: 14.79 µs, 1.08× the fastest -RSA-2048 PKCS#1 verify, rind on desktop: 8.99 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, rind on nixos2: 12.97 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on nixos: 13.65 µs, 1.00× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on desktop: 10.99 µs, 1.22× the fastest -RSA-2048 PKCS#1 verify, aws-lc-rs on nixos2: 15.81 µs, 1.22× the fastest -RSA-2048 PKCS#1 verify, ring on nixos: 15.38 µs, 1.13× the fastest -RSA-2048 PKCS#1 verify, ring on desktop: 12.56 µs, 1.40× the fastest -RSA-2048 PKCS#1 verify, ring on nixos2: 16.73 µs, 1.29× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos: 50.57 µs, 3.71× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on desktop: 29.03 µs, 3.23× the fastest -RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos2: 58.28 µs, 4.49× the fastest -RSA-2048 PKCS#1 verify, graviola on nixos: 24.70 µs, 1.81× the fastest -RSA-2048 PKCS#1 verify, graviola on desktop: 13.94 µs, 1.55× the fastest -RSA-2048 PKCS#1 verify, graviola on nixos2: 19.61 µs, 1.51× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on nixos: 22.22 µs, 1.63× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on desktop: 15.50 µs, 1.72× the fastest -RSA-2048 PKCS#1 verify, OpenSSL on nixos2: 28.37 µs, 2.19× the fastest +RSA-2048 PKCS#1 verify, rind on nixos: 12.28 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on desktop: 8.97 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on nixos2: 12.88 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on ovh-iad: 31.54 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, rind on ovh-sea: 30.16 µs, 1.00× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on nixos: 14.60 µs, 1.19× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on desktop: 10.86 µs, 1.21× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on nixos2: 15.88 µs, 1.23× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on ovh-iad: 36.27 µs, 1.15× the fastest +RSA-2048 PKCS#1 verify, aws-lc-rs on ovh-sea: 34.24 µs, 1.14× the fastest +RSA-2048 PKCS#1 verify, ring on nixos: 16.56 µs, 1.35× the fastest +RSA-2048 PKCS#1 verify, ring on desktop: 12.70 µs, 1.41× the fastest +RSA-2048 PKCS#1 verify, ring on nixos2: 16.51 µs, 1.28× the fastest +RSA-2048 PKCS#1 verify, ring on ovh-iad: 40.64 µs, 1.29× the fastest +RSA-2048 PKCS#1 verify, ring on ovh-sea: 37.78 µs, 1.25× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos: 54.06 µs, 4.40× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on desktop: 29.41 µs, 3.28× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on nixos2: 57.81 µs, 4.49× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on ovh-iad: 94.92 µs, 3.01× the fastest +RSA-2048 PKCS#1 verify, RustCrypto + dalek on ovh-sea: 87.58 µs, 2.90× the fastest +RSA-2048 PKCS#1 verify, graviola on nixos: 19.25 µs, 1.57× the fastest +RSA-2048 PKCS#1 verify, graviola on desktop: 14.06 µs, 1.57× the fastest +RSA-2048 PKCS#1 verify, graviola on nixos2: 19.05 µs, 1.48× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on nixos: 23.59 µs, 1.92× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on desktop: 15.59 µs, 1.74× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on nixos2: 24.54 µs, 1.91× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on ovh-iad: 50.88 µs, 1.61× the fastest +RSA-2048 PKCS#1 verify, OpenSSL on ovh-sea: 47.33 µs, 1.57× the fastest RSA-2048 PSS sign -RSA-2048 PSS sign, rind on nixos: 475.37 µs, 1.15× the fastest -RSA-2048 PSS sign, rind on desktop: 393.47 µs, 1.17× the fastest -RSA-2048 PSS sign, rind on nixos2: 576.25 µs, 1.31× the fastest -RSA-2048 PSS sign, aws-lc-rs on nixos: 436.71 µs, 1.06× the fastest -RSA-2048 PSS sign, aws-lc-rs on desktop: 353.37 µs, 1.05× the fastest -RSA-2048 PSS sign, aws-lc-rs on nixos2: 459.05 µs, 1.04× the fastest -RSA-2048 PSS sign, ring on nixos: 424.64 µs, 1.03× the fastest -RSA-2048 PSS sign, ring on desktop: 336.61 µs, 1.00× the fastest -RSA-2048 PSS sign, ring on nixos2: 440.44 µs, 1.00× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on nixos: 995.72 µs, 2.41× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on desktop: 582.39 µs, 1.73× the fastest -RSA-2048 PSS sign, RustCrypto + dalek on nixos2: 1.17 ms, 2.65× the fastest -RSA-2048 PSS sign, graviola on nixos: 413.56 µs, 1.00× the fastest -RSA-2048 PSS sign, graviola on desktop: 336.99 µs, 1.00× the fastest -RSA-2048 PSS sign, graviola on nixos2: 453.66 µs, 1.03× the fastest -RSA-2048 PSS sign, libcrux on nixos: 4.79 ms, 11.59× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, libcrux on desktop: 3.76 ms, 11.16× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, libcrux on nixos2: 7.10 ms, 16.12× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS sign, OpenSSL on nixos: 439.05 µs, 1.06× the fastest -RSA-2048 PSS sign, OpenSSL on desktop: 399.27 µs, 1.19× the fastest -RSA-2048 PSS sign, OpenSSL on nixos2: 481.14 µs, 1.09× the fastest +RSA-2048 PSS sign, rind on nixos: 424.30 µs, 1.00× the fastest +RSA-2048 PSS sign, rind on desktop: 346.52 µs, 1.01× the fastest +RSA-2048 PSS sign, rind on nixos2: 445.92 µs, 1.02× the fastest +RSA-2048 PSS sign, rind on ovh-iad: 785.33 µs, 1.00× the fastest +RSA-2048 PSS sign, rind on ovh-sea: 743.83 µs, 1.00× the fastest +RSA-2048 PSS sign, aws-lc-rs on nixos: 481.00 µs, 1.13× the fastest +RSA-2048 PSS sign, aws-lc-rs on desktop: 350.45 µs, 1.03× the fastest +RSA-2048 PSS sign, aws-lc-rs on nixos2: 461.87 µs, 1.06× the fastest +RSA-2048 PSS sign, aws-lc-rs on ovh-iad: 842.38 µs, 1.07× the fastest +RSA-2048 PSS sign, aws-lc-rs on ovh-sea: 772.63 µs, 1.04× the fastest +RSA-2048 PSS sign, ring on nixos: 471.53 µs, 1.11× the fastest +RSA-2048 PSS sign, ring on desktop: 341.45 µs, 1.00× the fastest +RSA-2048 PSS sign, ring on nixos2: 437.28 µs, 1.00× the fastest +RSA-2048 PSS sign, ring on ovh-iad: 1.13 ms, 1.44× the fastest +RSA-2048 PSS sign, ring on ovh-sea: 993.35 µs, 1.34× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on nixos: 1.06 ms, 2.50× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on desktop: 588.33 µs, 1.72× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on nixos2: 1.15 ms, 2.63× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on ovh-iad: 1.90 ms, 2.42× the fastest +RSA-2048 PSS sign, RustCrypto + dalek on ovh-sea: 1.77 ms, 2.37× the fastest +RSA-2048 PSS sign, graviola on nixos: 448.54 µs, 1.06× the fastest +RSA-2048 PSS sign, graviola on desktop: 342.67 µs, 1.00× the fastest +RSA-2048 PSS sign, graviola on nixos2: 450.24 µs, 1.03× the fastest +RSA-2048 PSS sign, libcrux on nixos: 5.86 ms, 13.81× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on desktop: 4.10 ms, 12.00× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on nixos2: 7.22 ms, 16.51× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on ovh-iad: 11.70 ms, 14.90× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, libcrux on ovh-sea: 10.71 ms, 14.40× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS sign, OpenSSL on nixos: 474.99 µs, 1.12× the fastest +RSA-2048 PSS sign, OpenSSL on desktop: 395.81 µs, 1.16× the fastest +RSA-2048 PSS sign, OpenSSL on nixos2: 456.55 µs, 1.04× the fastest +RSA-2048 PSS sign, OpenSSL on ovh-iad: 891.02 µs, 1.13× the fastest +RSA-2048 PSS sign, OpenSSL on ovh-sea: 784.77 µs, 1.06× the fastest RSA-2048 PSS verify -RSA-2048 PSS verify, rind on nixos: 11.82 µs, 1.00× the fastest -RSA-2048 PSS verify, rind on desktop: 9.45 µs, 1.00× the fastest -RSA-2048 PSS verify, rind on nixos2: 15.24 µs, 1.00× the fastest -RSA-2048 PSS verify, aws-lc-rs on nixos: 14.33 µs, 1.21× the fastest -RSA-2048 PSS verify, aws-lc-rs on desktop: 11.06 µs, 1.17× the fastest -RSA-2048 PSS verify, aws-lc-rs on nixos2: 18.00 µs, 1.18× the fastest -RSA-2048 PSS verify, ring on nixos: 16.27 µs, 1.38× the fastest -RSA-2048 PSS verify, ring on desktop: 13.17 µs, 1.39× the fastest -RSA-2048 PSS verify, ring on nixos2: 19.36 µs, 1.27× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on nixos: 96.98 µs, 8.20× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on desktop: 35.09 µs, 3.71× the fastest -RSA-2048 PSS verify, RustCrypto + dalek on nixos2: 71.12 µs, 4.67× the fastest -RSA-2048 PSS verify, graviola on nixos: 21.66 µs, 1.83× the fastest -RSA-2048 PSS verify, graviola on desktop: 14.43 µs, 1.53× the fastest -RSA-2048 PSS verify, graviola on nixos2: 22.16 µs, 1.45× the fastest -RSA-2048 PSS verify, libcrux on nixos: 465.38 µs, 39.36× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, libcrux on desktop: 247.95 µs, 26.25× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, libcrux on nixos2: 379.99 µs, 24.94× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step -✓ -RSA-2048 PSS verify, OpenSSL on nixos: 23.36 µs, 1.98× the fastest -RSA-2048 PSS verify, OpenSSL on desktop: 16.29 µs, 1.72× the fastest -RSA-2048 PSS verify, OpenSSL on nixos2: 27.30 µs, 1.79× the fastest +RSA-2048 PSS verify, rind on nixos: 12.67 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on desktop: 9.18 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on nixos2: 14.36 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on ovh-iad: 32.94 µs, 1.00× the fastest +RSA-2048 PSS verify, rind on ovh-sea: 32.49 µs, 1.00× the fastest +RSA-2048 PSS verify, aws-lc-rs on nixos: 15.94 µs, 1.26× the fastest +RSA-2048 PSS verify, aws-lc-rs on desktop: 11.17 µs, 1.22× the fastest +RSA-2048 PSS verify, aws-lc-rs on nixos2: 17.01 µs, 1.18× the fastest +RSA-2048 PSS verify, aws-lc-rs on ovh-iad: 37.98 µs, 1.15× the fastest +RSA-2048 PSS verify, aws-lc-rs on ovh-sea: 35.56 µs, 1.09× the fastest +RSA-2048 PSS verify, ring on nixos: 18.03 µs, 1.42× the fastest +RSA-2048 PSS verify, ring on desktop: 13.31 µs, 1.45× the fastest +RSA-2048 PSS verify, ring on nixos2: 18.22 µs, 1.27× the fastest +RSA-2048 PSS verify, ring on ovh-iad: 41.62 µs, 1.26× the fastest +RSA-2048 PSS verify, ring on ovh-sea: 39.91 µs, 1.23× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on nixos: 64.70 µs, 5.11× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on desktop: 35.62 µs, 3.88× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on nixos2: 70.02 µs, 4.88× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on ovh-iad: 111.34 µs, 3.38× the fastest +RSA-2048 PSS verify, RustCrypto + dalek on ovh-sea: 107.72 µs, 3.32× the fastest +RSA-2048 PSS verify, graviola on nixos: 19.63 µs, 1.55× the fastest +RSA-2048 PSS verify, graviola on desktop: 14.44 µs, 1.57× the fastest +RSA-2048 PSS verify, graviola on nixos2: 21.85 µs, 1.52× the fastest +RSA-2048 PSS verify, libcrux on nixos: 312.23 µs, 24.64× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on desktop: 252.13 µs, 27.46× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on nixos2: 377.87 µs, 26.32× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on ovh-iad: 620.80 µs, 18.84× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, libcrux on ovh-sea: 582.63 µs, 17.93× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +✓ +RSA-2048 PSS verify, OpenSSL on nixos: 23.60 µs, 1.86× the fastest +RSA-2048 PSS verify, OpenSSL on desktop: 16.36 µs, 1.78× the fastest +RSA-2048 PSS verify, OpenSSL on nixos2: 27.16 µs, 1.89× the fastest +RSA-2048 PSS verify, OpenSSL on ovh-iad: 55.13 µs, 1.67× the fastest +RSA-2048 PSS verify, OpenSSL on ovh-sea: 51.25 µs, 1.58× the fastest ML-KEM - + ML-KEM-768 key generation -ML-KEM-768 key generation, rind on nixos: 8.05 µs, 1.00× the fastest -ML-KEM-768 key generation, rind on desktop: 6.47 µs, 1.00× the fastest -ML-KEM-768 key generation, rind on nixos2: 12.10 µs, 1.10× the fastest -ML-KEM-768 key generation, aws-lc-rs on nixos: 9.20 µs, 1.14× the fastest -ML-KEM-768 key generation, aws-lc-rs on desktop: 8.18 µs, 1.26× the fastest -ML-KEM-768 key generation, aws-lc-rs on nixos2: 23.32 µs, 2.11× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on nixos: 58.01 µs, 7.20× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on desktop: 40.16 µs, 6.21× the fastest -ML-KEM-768 key generation, RustCrypto + dalek on nixos2: 71.58 µs, 6.48× the fastest -ML-KEM-768 key generation, graviola on nixos: 8.74 µs, 1.09× the fastest -ML-KEM-768 key generation, graviola on desktop: 7.68 µs, 1.19× the fastest -ML-KEM-768 key generation, graviola on nixos2: 11.04 µs, 1.00× the fastest -ML-KEM-768 key generation, libcrux on nixos: 17.51 µs, 2.17× the fastest -ML-KEM-768 key generation, libcrux on desktop: 15.00 µs, 2.32× the fastest -ML-KEM-768 key generation, libcrux on nixos2: 30.74 µs, 2.78× the fastest -ML-KEM-768 key generation, OpenSSL on nixos: 26.11 µs, 3.24× the fastest -ML-KEM-768 key generation, OpenSSL on desktop: 19.58 µs, 3.03× the fastest -ML-KEM-768 key generation, OpenSSL on nixos2: 42.66 µs, 3.86× the fastest +ML-KEM-768 key generation, rind on nixos: 8.43 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on desktop: 6.45 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on nixos2: 10.24 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on ovh-iad: 19.03 µs, 1.00× the fastest +ML-KEM-768 key generation, rind on ovh-sea: 17.40 µs, 1.00× the fastest +ML-KEM-768 key generation, aws-lc-rs on nixos: 9.41 µs, 1.12× the fastest +ML-KEM-768 key generation, aws-lc-rs on desktop: 8.27 µs, 1.28× the fastest +ML-KEM-768 key generation, aws-lc-rs on nixos2: 18.44 µs, 1.80× the fastest +ML-KEM-768 key generation, aws-lc-rs on ovh-iad: 24.20 µs, 1.27× the fastest +ML-KEM-768 key generation, aws-lc-rs on ovh-sea: 23.24 µs, 1.34× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on nixos: 60.18 µs, 7.14× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on desktop: 40.26 µs, 6.24× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on nixos2: 59.97 µs, 5.86× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on ovh-iad: 99.32 µs, 5.22× the fastest +ML-KEM-768 key generation, RustCrypto + dalek on ovh-sea: 92.15 µs, 5.30× the fastest +ML-KEM-768 key generation, graviola on nixos: 9.28 µs, 1.10× the fastest +ML-KEM-768 key generation, graviola on desktop: 7.67 µs, 1.19× the fastest +ML-KEM-768 key generation, graviola on nixos2: 10.41 µs, 1.02× the fastest +ML-KEM-768 key generation, libcrux on nixos: 18.15 µs, 2.15× the fastest +ML-KEM-768 key generation, libcrux on desktop: 15.15 µs, 2.35× the fastest +ML-KEM-768 key generation, libcrux on nixos2: 20.05 µs, 1.96× the fastest +ML-KEM-768 key generation, libcrux on ovh-iad: 36.70 µs, 1.93× the fastest +ML-KEM-768 key generation, libcrux on ovh-sea: 34.82 µs, 2.00× the fastest +ML-KEM-768 key generation, OpenSSL on nixos: 26.82 µs, 3.18× the fastest +ML-KEM-768 key generation, OpenSSL on desktop: 19.80 µs, 3.07× the fastest +ML-KEM-768 key generation, OpenSSL on nixos2: 40.63 µs, 3.97× the fastest +ML-KEM-768 key generation, OpenSSL on ovh-iad: 64.00 µs, 3.36× the fastest +ML-KEM-768 key generation, OpenSSL on ovh-sea: 62.15 µs, 3.57× the fastest ML-KEM-768 encapsulate -ML-KEM-768 encapsulate, rind on nixos: 8.33 µs, 1.00× the fastest -ML-KEM-768 encapsulate, rind on desktop: 6.71 µs, 1.00× the fastest -ML-KEM-768 encapsulate, rind on nixos2: 15.73 µs, 1.23× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on nixos: 9.38 µs, 1.13× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on desktop: 8.59 µs, 1.28× the fastest -ML-KEM-768 encapsulate, aws-lc-rs on nixos2: 20.31 µs, 1.58× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on nixos: 67.87 µs, 8.15× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on desktop: 42.13 µs, 6.28× the fastest -ML-KEM-768 encapsulate, RustCrypto + dalek on nixos2: 75.08 µs, 5.85× the fastest -ML-KEM-768 encapsulate, graviola on nixos: 10.25 µs, 1.23× the fastest -ML-KEM-768 encapsulate, graviola on desktop: 9.13 µs, 1.36× the fastest -ML-KEM-768 encapsulate, graviola on nixos2: 12.83 µs, 1.00× the fastest -ML-KEM-768 encapsulate, libcrux on nixos: 14.93 µs, 1.79× the fastest -ML-KEM-768 encapsulate, libcrux on desktop: 12.80 µs, 1.91× the fastest -ML-KEM-768 encapsulate, libcrux on nixos2: 21.01 µs, 1.64× the fastest -ML-KEM-768 encapsulate, OpenSSL on nixos: 27.30 µs, 3.28× the fastest -ML-KEM-768 encapsulate, OpenSSL on desktop: 18.57 µs, 2.77× the fastest -ML-KEM-768 encapsulate, OpenSSL on nixos2: 44.49 µs, 3.47× the fastest +ML-KEM-768 encapsulate, rind on nixos: 8.53 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on desktop: 6.65 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on nixos2: 10.61 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on ovh-iad: 19.37 µs, 1.00× the fastest +ML-KEM-768 encapsulate, rind on ovh-sea: 18.55 µs, 1.00× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on nixos: 10.41 µs, 1.22× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on desktop: 8.68 µs, 1.31× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on nixos2: 18.73 µs, 1.76× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on ovh-iad: 25.59 µs, 1.32× the fastest +ML-KEM-768 encapsulate, aws-lc-rs on ovh-sea: 23.54 µs, 1.27× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on nixos: 72.03 µs, 8.44× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on desktop: 41.71 µs, 6.27× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on nixos2: 67.03 µs, 6.31× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on ovh-iad: 107.39 µs, 5.55× the fastest +ML-KEM-768 encapsulate, RustCrypto + dalek on ovh-sea: 101.25 µs, 5.46× the fastest +ML-KEM-768 encapsulate, graviola on nixos: 10.95 µs, 1.28× the fastest +ML-KEM-768 encapsulate, graviola on desktop: 9.11 µs, 1.37× the fastest +ML-KEM-768 encapsulate, graviola on nixos2: 11.12 µs, 1.05× the fastest +ML-KEM-768 encapsulate, libcrux on nixos: 16.03 µs, 1.88× the fastest +ML-KEM-768 encapsulate, libcrux on desktop: 12.94 µs, 1.94× the fastest +ML-KEM-768 encapsulate, libcrux on nixos2: 18.13 µs, 1.71× the fastest +ML-KEM-768 encapsulate, libcrux on ovh-iad: 32.08 µs, 1.66× the fastest +ML-KEM-768 encapsulate, libcrux on ovh-sea: 31.43 µs, 1.69× the fastest +ML-KEM-768 encapsulate, OpenSSL on nixos: 30.02 µs, 3.52× the fastest +ML-KEM-768 encapsulate, OpenSSL on desktop: 18.77 µs, 2.82× the fastest +ML-KEM-768 encapsulate, OpenSSL on nixos2: 41.18 µs, 3.88× the fastest +ML-KEM-768 encapsulate, OpenSSL on ovh-iad: 68.64 µs, 3.54× the fastest +ML-KEM-768 encapsulate, OpenSSL on ovh-sea: 63.30 µs, 3.41× the fastest ML-KEM-768 decapsulate -ML-KEM-768 decapsulate, rind on nixos: 5.93 µs, 1.00× the fastest -ML-KEM-768 decapsulate, rind on desktop: 4.83 µs, 1.00× the fastest -ML-KEM-768 decapsulate, rind on nixos2: 8.28 µs, 1.00× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on nixos: 11.29 µs, 1.90× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on desktop: 8.92 µs, 1.85× the fastest -ML-KEM-768 decapsulate, aws-lc-rs on nixos2: 16.61 µs, 2.01× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on nixos: 87.75 µs, 14.80× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on desktop: 55.21 µs, 11.43× the fastest -ML-KEM-768 decapsulate, RustCrypto + dalek on nixos2: 89.79 µs, 10.85× the fastest -ML-KEM-768 decapsulate, graviola on nixos: 7.10 µs, 1.20× the fastest -ML-KEM-768 decapsulate, graviola on desktop: 6.56 µs, 1.36× the fastest -ML-KEM-768 decapsulate, graviola on nixos2: 8.30 µs, 1.00× the fastest -ML-KEM-768 decapsulate, libcrux on nixos: 15.64 µs, 2.64× the fastest -ML-KEM-768 decapsulate, libcrux on desktop: 13.50 µs, 2.79× the fastest -ML-KEM-768 decapsulate, libcrux on nixos2: 19.93 µs, 2.41× the fastest -ML-KEM-768 decapsulate, OpenSSL on nixos: 22.36 µs, 3.77× the fastest -ML-KEM-768 decapsulate, OpenSSL on desktop: 16.07 µs, 3.33× the fastest -ML-KEM-768 decapsulate, OpenSSL on nixos2: 33.05 µs, 3.99× the fastest +ML-KEM-768 decapsulate, rind on nixos: 6.07 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on desktop: 4.69 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on nixos2: 7.07 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on ovh-iad: 12.58 µs, 1.00× the fastest +ML-KEM-768 decapsulate, rind on ovh-sea: 12.10 µs, 1.00× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on nixos: 11.96 µs, 1.97× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on desktop: 9.02 µs, 1.92× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on nixos2: 16.01 µs, 2.26× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on ovh-iad: 28.87 µs, 2.29× the fastest +ML-KEM-768 decapsulate, aws-lc-rs on ovh-sea: 27.41 µs, 2.27× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on nixos: 95.17 µs, 15.68× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on desktop: 54.19 µs, 11.55× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on nixos2: 84.37 µs, 11.93× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on ovh-iad: 129.01 µs, 10.25× the fastest +ML-KEM-768 decapsulate, RustCrypto + dalek on ovh-sea: 127.16 µs, 10.51× the fastest +ML-KEM-768 decapsulate, graviola on nixos: 7.72 µs, 1.27× the fastest +ML-KEM-768 decapsulate, graviola on desktop: 6.59 µs, 1.41× the fastest +ML-KEM-768 decapsulate, graviola on nixos2: 7.42 µs, 1.05× the fastest +ML-KEM-768 decapsulate, libcrux on nixos: 16.22 µs, 2.67× the fastest +ML-KEM-768 decapsulate, libcrux on desktop: 13.44 µs, 2.87× the fastest +ML-KEM-768 decapsulate, libcrux on nixos2: 19.04 µs, 2.69× the fastest +ML-KEM-768 decapsulate, libcrux on ovh-iad: 34.10 µs, 2.71× the fastest +ML-KEM-768 decapsulate, libcrux on ovh-sea: 32.99 µs, 2.73× the fastest +ML-KEM-768 decapsulate, OpenSSL on nixos: 24.64 µs, 4.06× the fastest +ML-KEM-768 decapsulate, OpenSSL on desktop: 16.05 µs, 3.42× the fastest +ML-KEM-768 decapsulate, OpenSSL on nixos2: 31.67 µs, 4.48× the fastest +ML-KEM-768 decapsulate, OpenSSL on ovh-iad: 49.30 µs, 3.92× the fastest +ML-KEM-768 decapsulate, OpenSSL on ovh-sea: 48.46 µs, 4.01× the fastest P-384 and P-521 - + P-384 ECDH -P-384 ECDH, rind on nixos: 129.00 µs, 1.00× the fastest -P-384 ECDH, rind on desktop: 100.00 µs, 1.00× the fastest -P-384 ECDH, rind on nixos2: 159.92 µs, 1.00× the fastest -P-384 ECDH, aws-lc-rs on nixos: 145.14 µs, 1.13× the fastest -P-384 ECDH, aws-lc-rs on desktop: 111.30 µs, 1.11× the fastest -P-384 ECDH, aws-lc-rs on nixos2: 191.62 µs, 1.20× the fastest -P-384 ECDH, ring on nixos: 580.80 µs, 4.50× the fastest -P-384 ECDH, ring on desktop: 370.25 µs, 3.70× the fastest -P-384 ECDH, ring on nixos2: 688.80 µs, 4.31× the fastest -P-384 ECDH, RustCrypto + dalek on nixos: 782.25 µs, 6.06× the fastest -P-384 ECDH, RustCrypto + dalek on desktop: 430.31 µs, 4.30× the fastest -P-384 ECDH, RustCrypto + dalek on nixos2: 871.98 µs, 5.45× the fastest -P-384 ECDH, graviola on nixos: 206.07 µs, 1.60× the fastest -P-384 ECDH, graviola on desktop: 171.49 µs, 1.71× the fastest -P-384 ECDH, graviola on nixos2: 254.75 µs, 1.59× the fastest -P-384 ECDH, OpenSSL on nixos: 451.93 µs, 3.50× the fastest -P-384 ECDH, OpenSSL on desktop: 262.12 µs, 2.62× the fastest -P-384 ECDH, OpenSSL on nixos2: 510.33 µs, 3.19× the fastest +P-384 ECDH, rind on nixos: 179.71 µs, 1.00× the fastest +P-384 ECDH, rind on desktop: 100.08 µs, 1.00× the fastest +P-384 ECDH, rind on nixos2: 150.97 µs, 1.00× the fastest +P-384 ECDH, rind on ovh-iad: 276.11 µs, 1.00× the fastest +P-384 ECDH, rind on ovh-sea: 265.15 µs, 1.00× the fastest +P-384 ECDH, aws-lc-rs on nixos: 180.49 µs, 1.00× the fastest +P-384 ECDH, aws-lc-rs on desktop: 111.11 µs, 1.11× the fastest +P-384 ECDH, aws-lc-rs on nixos2: 174.62 µs, 1.16× the fastest +P-384 ECDH, aws-lc-rs on ovh-iad: 303.78 µs, 1.10× the fastest +P-384 ECDH, aws-lc-rs on ovh-sea: 293.83 µs, 1.11× the fastest +P-384 ECDH, ring on nixos: 601.49 µs, 3.35× the fastest +P-384 ECDH, ring on desktop: 369.71 µs, 3.69× the fastest +P-384 ECDH, ring on nixos2: 645.54 µs, 4.28× the fastest +P-384 ECDH, ring on ovh-iad: 1.05 ms, 3.81× the fastest +P-384 ECDH, ring on ovh-sea: 986.79 µs, 3.72× the fastest +P-384 ECDH, RustCrypto + dalek on nixos: 1.04 ms, 5.80× the fastest +P-384 ECDH, RustCrypto + dalek on desktop: 401.25 µs, 4.01× the fastest +P-384 ECDH, RustCrypto + dalek on nixos2: 769.61 µs, 5.10× the fastest +P-384 ECDH, RustCrypto + dalek on ovh-iad: 1.24 ms, 4.50× the fastest +P-384 ECDH, RustCrypto + dalek on ovh-sea: 1.17 ms, 4.42× the fastest +P-384 ECDH, graviola on nixos: 302.57 µs, 1.68× the fastest +P-384 ECDH, graviola on desktop: 170.94 µs, 1.71× the fastest +P-384 ECDH, graviola on nixos2: 245.24 µs, 1.62× the fastest +P-384 ECDH, OpenSSL on nixos: 656.67 µs, 3.65× the fastest +P-384 ECDH, OpenSSL on desktop: 264.84 µs, 2.65× the fastest +P-384 ECDH, OpenSSL on nixos2: 483.50 µs, 3.20× the fastest +P-384 ECDH, OpenSSL on ovh-iad: 794.72 µs, 2.88× the fastest +P-384 ECDH, OpenSSL on ovh-sea: 744.13 µs, 2.81× the fastest P-384 ECDSA sign -P-384 ECDSA sign, rind on nixos: 33.91 µs, 1.00× the fastest -P-384 ECDSA sign, rind on desktop: 25.54 µs, 1.00× the fastest -P-384 ECDSA sign, rind on nixos2: 40.21 µs, 1.00× the fastest -P-384 ECDSA sign, aws-lc-rs on nixos: 64.48 µs, 1.90× the fastest -P-384 ECDSA sign, aws-lc-rs on desktop: 46.52 µs, 1.82× the fastest -P-384 ECDSA sign, aws-lc-rs on nixos2: 85.87 µs, 2.14× the fastest -P-384 ECDSA sign, ring on nixos: 313.48 µs, 9.25× the fastest -P-384 ECDSA sign, ring on desktop: 198.39 µs, 7.77× the fastest -P-384 ECDSA sign, ring on nixos2: 349.63 µs, 8.69× the fastest -P-384 ECDSA sign, RustCrypto + dalek on nixos: 183.17 µs, 5.40× the fastest -P-384 ECDSA sign, RustCrypto + dalek on desktop: 104.37 µs, 4.09× the fastest -P-384 ECDSA sign, RustCrypto + dalek on nixos2: 194.33 µs, 4.83× the fastest -P-384 ECDSA sign, graviola on nixos: 110.14 µs, 3.25× the fastest -P-384 ECDSA sign, graviola on desktop: 89.42 µs, 3.50× the fastest -P-384 ECDSA sign, graviola on nixos2: 133.02 µs, 3.31× the fastest -P-384 ECDSA sign, OpenSSL on nixos: 151.27 µs, 4.46× the fastest -P-384 ECDSA sign, OpenSSL on desktop: 89.07 µs, 3.49× the fastest -P-384 ECDSA sign, OpenSSL on nixos2: 170.79 µs, 4.25× the fastest +P-384 ECDSA sign, rind on nixos: 53.07 µs, 1.00× the fastest +P-384 ECDSA sign, rind on desktop: 23.53 µs, 1.00× the fastest +P-384 ECDSA sign, rind on nixos2: 39.62 µs, 1.00× the fastest +P-384 ECDSA sign, rind on ovh-iad: 70.24 µs, 1.00× the fastest +P-384 ECDSA sign, rind on ovh-sea: 67.30 µs, 1.00× the fastest +P-384 ECDSA sign, aws-lc-rs on nixos: 97.47 µs, 1.84× the fastest +P-384 ECDSA sign, aws-lc-rs on desktop: 46.52 µs, 1.98× the fastest +P-384 ECDSA sign, aws-lc-rs on nixos2: 82.65 µs, 2.09× the fastest +P-384 ECDSA sign, aws-lc-rs on ovh-iad: 131.24 µs, 1.87× the fastest +P-384 ECDSA sign, aws-lc-rs on ovh-sea: 126.70 µs, 1.88× the fastest +P-384 ECDSA sign, ring on nixos: 474.64 µs, 8.94× the fastest +P-384 ECDSA sign, ring on desktop: 200.86 µs, 8.54× the fastest +P-384 ECDSA sign, ring on nixos2: 343.16 µs, 8.66× the fastest +P-384 ECDSA sign, ring on ovh-iad: 547.60 µs, 7.80× the fastest +P-384 ECDSA sign, ring on ovh-sea: 546.26 µs, 8.12× the fastest +P-384 ECDSA sign, RustCrypto + dalek on nixos: 238.31 µs, 4.49× the fastest +P-384 ECDSA sign, RustCrypto + dalek on desktop: 86.86 µs, 3.69× the fastest +P-384 ECDSA sign, RustCrypto + dalek on nixos2: 170.64 µs, 4.31× the fastest +P-384 ECDSA sign, RustCrypto + dalek on ovh-iad: 268.01 µs, 3.82× the fastest +P-384 ECDSA sign, RustCrypto + dalek on ovh-sea: 263.32 µs, 3.91× the fastest +P-384 ECDSA sign, graviola on nixos: 185.15 µs, 3.49× the fastest +P-384 ECDSA sign, graviola on desktop: 90.69 µs, 3.85× the fastest +P-384 ECDSA sign, graviola on nixos2: 128.64 µs, 3.25× the fastest +P-384 ECDSA sign, OpenSSL on nixos: 235.52 µs, 4.44× the fastest +P-384 ECDSA sign, OpenSSL on desktop: 89.64 µs, 3.81× the fastest +P-384 ECDSA sign, OpenSSL on nixos2: 164.53 µs, 4.15× the fastest +P-384 ECDSA sign, OpenSSL on ovh-iad: 268.60 µs, 3.82× the fastest +P-384 ECDSA sign, OpenSSL on ovh-sea: 253.09 µs, 3.76× the fastest P-384 ECDSA verify -P-384 ECDSA verify, rind on nixos: 121.08 µs, 1.00× the fastest -P-384 ECDSA verify, rind on desktop: 98.58 µs, 1.00× the fastest -P-384 ECDSA verify, rind on nixos2: 154.44 µs, 1.00× the fastest -P-384 ECDSA verify, aws-lc-rs on nixos: 151.44 µs, 1.25× the fastest -P-384 ECDSA verify, aws-lc-rs on desktop: 115.28 µs, 1.17× the fastest -P-384 ECDSA verify, aws-lc-rs on nixos2: 186.63 µs, 1.21× the fastest -P-384 ECDSA verify, ring on nixos: 560.90 µs, 4.63× the fastest -P-384 ECDSA verify, ring on desktop: 359.23 µs, 3.64× the fastest -P-384 ECDSA verify, ring on nixos2: 628.36 µs, 4.07× the fastest -P-384 ECDSA verify, RustCrypto + dalek on nixos: 670.20 µs, 5.54× the fastest -P-384 ECDSA verify, RustCrypto + dalek on desktop: 360.90 µs, 3.66× the fastest -P-384 ECDSA verify, RustCrypto + dalek on nixos2: 712.25 µs, 4.61× the fastest -P-384 ECDSA verify, graviola on nixos: 204.92 µs, 1.69× the fastest -P-384 ECDSA verify, graviola on desktop: 168.94 µs, 1.71× the fastest -P-384 ECDSA verify, graviola on nixos2: 244.84 µs, 1.59× the fastest -P-384 ECDSA verify, OpenSSL on nixos: 371.49 µs, 3.07× the fastest -P-384 ECDSA verify, OpenSSL on desktop: 215.87 µs, 2.19× the fastest -P-384 ECDSA verify, OpenSSL on nixos2: 409.95 µs, 2.65× the fastest +P-384 ECDSA verify, rind on nixos: 157.33 µs, 1.00× the fastest +P-384 ECDSA verify, rind on desktop: 98.87 µs, 1.00× the fastest +P-384 ECDSA verify, rind on nixos2: 141.44 µs, 1.00× the fastest +P-384 ECDSA verify, rind on ovh-iad: 261.01 µs, 1.00× the fastest +P-384 ECDSA verify, rind on ovh-sea: 253.92 µs, 1.00× the fastest +P-384 ECDSA verify, aws-lc-rs on nixos: 199.21 µs, 1.27× the fastest +P-384 ECDSA verify, aws-lc-rs on desktop: 116.66 µs, 1.18× the fastest +P-384 ECDSA verify, aws-lc-rs on nixos2: 175.92 µs, 1.24× the fastest +P-384 ECDSA verify, aws-lc-rs on ovh-iad: 315.77 µs, 1.21× the fastest +P-384 ECDSA verify, aws-lc-rs on ovh-sea: 297.22 µs, 1.17× the fastest +P-384 ECDSA verify, ring on nixos: 727.10 µs, 4.62× the fastest +P-384 ECDSA verify, ring on desktop: 360.29 µs, 3.64× the fastest +P-384 ECDSA verify, ring on nixos2: 622.90 µs, 4.40× the fastest +P-384 ECDSA verify, ring on ovh-iad: 1.05 ms, 4.02× the fastest +P-384 ECDSA verify, ring on ovh-sea: 957.13 µs, 3.77× the fastest +P-384 ECDSA verify, RustCrypto + dalek on nixos: 872.06 µs, 5.54× the fastest +P-384 ECDSA verify, RustCrypto + dalek on desktop: 360.21 µs, 3.64× the fastest +P-384 ECDSA verify, RustCrypto + dalek on nixos2: 695.04 µs, 4.91× the fastest +P-384 ECDSA verify, RustCrypto + dalek on ovh-iad: 1.08 ms, 4.16× the fastest +P-384 ECDSA verify, RustCrypto + dalek on ovh-sea: 1.05 ms, 4.14× the fastest +P-384 ECDSA verify, graviola on nixos: 315.99 µs, 2.01× the fastest +P-384 ECDSA verify, graviola on desktop: 167.40 µs, 1.69× the fastest +P-384 ECDSA verify, graviola on nixos2: 239.41 µs, 1.69× the fastest +P-384 ECDSA verify, OpenSSL on nixos: 551.89 µs, 3.51× the fastest +P-384 ECDSA verify, OpenSSL on desktop: 215.86 µs, 2.18× the fastest +P-384 ECDSA verify, OpenSSL on nixos2: 399.63 µs, 2.83× the fastest +P-384 ECDSA verify, OpenSSL on ovh-iad: 657.01 µs, 2.52× the fastest +P-384 ECDSA verify, OpenSSL on ovh-sea: 631.24 µs, 2.49× the fastest P-521 ECDH -P-521 ECDH, rind on nixos: 221.05 µs, 1.00× the fastest -P-521 ECDH, rind on desktop: 160.40 µs, 1.00× the fastest -P-521 ECDH, rind on nixos2: 225.21 µs, 1.00× the fastest -P-521 ECDH, aws-lc-rs on nixos: 235.94 µs, 1.07× the fastest -P-521 ECDH, aws-lc-rs on desktop: 171.49 µs, 1.07× the fastest -P-521 ECDH, aws-lc-rs on nixos2: 255.05 µs, 1.13× the fastest -P-521 ECDH, RustCrypto + dalek on nixos: 604.98 µs, 2.74× the fastest -P-521 ECDH, RustCrypto + dalek on desktop: 433.75 µs, 2.70× the fastest -P-521 ECDH, RustCrypto + dalek on nixos2: 822.79 µs, 3.65× the fastest -P-521 ECDH, OpenSSL on nixos: 390.71 µs, 1.77× the fastest -P-521 ECDH, OpenSSL on desktop: 274.16 µs, 1.71× the fastest -P-521 ECDH, OpenSSL on nixos2: 498.14 µs, 2.21× the fastest +P-521 ECDH, rind on nixos: 283.91 µs, 1.00× the fastest +P-521 ECDH, rind on desktop: 160.77 µs, 1.00× the fastest +P-521 ECDH, rind on nixos2: 233.76 µs, 1.00× the fastest +P-521 ECDH, rind on ovh-iad: 477.22 µs, 1.00× the fastest +P-521 ECDH, rind on ovh-sea: 453.02 µs, 1.00× the fastest +P-521 ECDH, aws-lc-rs on nixos: 288.17 µs, 1.01× the fastest +P-521 ECDH, aws-lc-rs on desktop: 170.98 µs, 1.06× the fastest +P-521 ECDH, aws-lc-rs on nixos2: 262.34 µs, 1.12× the fastest +P-521 ECDH, aws-lc-rs on ovh-iad: 502.59 µs, 1.05× the fastest +P-521 ECDH, aws-lc-rs on ovh-sea: 486.31 µs, 1.07× the fastest +P-521 ECDH, RustCrypto + dalek on nixos: 868.41 µs, 3.06× the fastest +P-521 ECDH, RustCrypto + dalek on desktop: 431.17 µs, 2.68× the fastest +P-521 ECDH, RustCrypto + dalek on nixos2: 841.50 µs, 3.60× the fastest +P-521 ECDH, RustCrypto + dalek on ovh-iad: 1.26 ms, 2.65× the fastest +P-521 ECDH, RustCrypto + dalek on ovh-sea: 1.21 ms, 2.66× the fastest +P-521 ECDH, OpenSSL on nixos: 505.62 µs, 1.78× the fastest +P-521 ECDH, OpenSSL on desktop: 276.21 µs, 1.72× the fastest +P-521 ECDH, OpenSSL on nixos2: 497.39 µs, 2.13× the fastest +P-521 ECDH, OpenSSL on ovh-iad: 751.84 µs, 1.58× the fastest +P-521 ECDH, OpenSSL on ovh-sea: 720.27 µs, 1.59× the fastest P-521 ECDSA sign -P-521 ECDSA sign, rind on nixos: 56.66 µs, 1.00× the fastest -P-521 ECDSA sign, rind on desktop: 43.70 µs, 1.00× the fastest -P-521 ECDSA sign, rind on nixos2: 65.70 µs, 1.00× the fastest -P-521 ECDSA sign, aws-lc-rs on nixos: 125.99 µs, 2.22× the fastest -P-521 ECDSA sign, aws-lc-rs on desktop: 88.46 µs, 2.02× the fastest -P-521 ECDSA sign, aws-lc-rs on nixos2: 160.14 µs, 2.44× the fastest -P-521 ECDSA sign, RustCrypto + dalek on nixos: 144.49 µs, 2.55× the fastest -P-521 ECDSA sign, RustCrypto + dalek on desktop: 94.28 µs, 2.16× the fastest -P-521 ECDSA sign, RustCrypto + dalek on nixos2: 192.13 µs, 2.92× the fastest -P-521 ECDSA sign, OpenSSL on nixos: 186.41 µs, 3.29× the fastest -P-521 ECDSA sign, OpenSSL on desktop: 127.75 µs, 2.92× the fastest -P-521 ECDSA sign, OpenSSL on nixos2: 224.59 µs, 3.42× the fastest +P-521 ECDSA sign, rind on nixos: 58.32 µs, 1.00× the fastest +P-521 ECDSA sign, rind on desktop: 40.56 µs, 1.00× the fastest +P-521 ECDSA sign, rind on nixos2: 64.26 µs, 1.00× the fastest +P-521 ECDSA sign, rind on ovh-iad: 122.73 µs, 1.00× the fastest +P-521 ECDSA sign, rind on ovh-sea: 115.63 µs, 1.00× the fastest +P-521 ECDSA sign, aws-lc-rs on nixos: 152.35 µs, 2.61× the fastest +P-521 ECDSA sign, aws-lc-rs on desktop: 89.64 µs, 2.21× the fastest +P-521 ECDSA sign, aws-lc-rs on nixos2: 158.67 µs, 2.47× the fastest +P-521 ECDSA sign, aws-lc-rs on ovh-iad: 260.74 µs, 2.12× the fastest +P-521 ECDSA sign, aws-lc-rs on ovh-sea: 251.35 µs, 2.17× the fastest +P-521 ECDSA sign, RustCrypto + dalek on nixos: 177.47 µs, 3.04× the fastest +P-521 ECDSA sign, RustCrypto + dalek on desktop: 95.29 µs, 2.35× the fastest +P-521 ECDSA sign, RustCrypto + dalek on nixos2: 185.93 µs, 2.89× the fastest +P-521 ECDSA sign, RustCrypto + dalek on ovh-iad: 289.27 µs, 2.36× the fastest +P-521 ECDSA sign, RustCrypto + dalek on ovh-sea: 288.95 µs, 2.50× the fastest +P-521 ECDSA sign, OpenSSL on nixos: 219.60 µs, 3.77× the fastest +P-521 ECDSA sign, OpenSSL on desktop: 129.20 µs, 3.19× the fastest +P-521 ECDSA sign, OpenSSL on nixos2: 221.00 µs, 3.44× the fastest +P-521 ECDSA sign, OpenSSL on ovh-iad: 378.85 µs, 3.09× the fastest +P-521 ECDSA sign, OpenSSL on ovh-sea: 343.62 µs, 2.97× the fastest P-521 ECDSA verify -P-521 ECDSA verify, rind on nixos: 191.80 µs, 1.00× the fastest -P-521 ECDSA verify, rind on desktop: 145.01 µs, 1.00× the fastest -P-521 ECDSA verify, rind on nixos2: 236.22 µs, 1.00× the fastest -P-521 ECDSA verify, aws-lc-rs on nixos: 257.70 µs, 1.34× the fastest -P-521 ECDSA verify, aws-lc-rs on desktop: 184.47 µs, 1.27× the fastest -P-521 ECDSA verify, aws-lc-rs on nixos2: 307.98 µs, 1.30× the fastest -P-521 ECDSA verify, RustCrypto + dalek on nixos: 481.75 µs, 2.51× the fastest -P-521 ECDSA verify, RustCrypto + dalek on desktop: 359.53 µs, 2.48× the fastest -P-521 ECDSA verify, RustCrypto + dalek on nixos2: 666.03 µs, 2.82× the fastest -P-521 ECDSA verify, OpenSSL on nixos: 379.62 µs, 1.98× the fastest -P-521 ECDSA verify, OpenSSL on desktop: 261.07 µs, 1.80× the fastest -P-521 ECDSA verify, OpenSSL on nixos2: 465.58 µs, 1.97× the fastest +P-521 ECDSA verify, rind on nixos: 222.28 µs, 1.00× the fastest +P-521 ECDSA verify, rind on desktop: 147.09 µs, 1.00× the fastest +P-521 ECDSA verify, rind on nixos2: 214.43 µs, 1.00× the fastest +P-521 ECDSA verify, rind on ovh-iad: 434.67 µs, 1.00× the fastest +P-521 ECDSA verify, rind on ovh-sea: 406.77 µs, 1.00× the fastest +P-521 ECDSA verify, aws-lc-rs on nixos: 327.35 µs, 1.47× the fastest +P-521 ECDSA verify, aws-lc-rs on desktop: 186.61 µs, 1.27× the fastest +P-521 ECDSA verify, aws-lc-rs on nixos2: 303.23 µs, 1.41× the fastest +P-521 ECDSA verify, aws-lc-rs on ovh-iad: 544.59 µs, 1.25× the fastest +P-521 ECDSA verify, aws-lc-rs on ovh-sea: 524.48 µs, 1.29× the fastest +P-521 ECDSA verify, RustCrypto + dalek on nixos: 610.17 µs, 2.75× the fastest +P-521 ECDSA verify, RustCrypto + dalek on desktop: 359.57 µs, 2.44× the fastest +P-521 ECDSA verify, RustCrypto + dalek on nixos2: 636.37 µs, 2.97× the fastest +P-521 ECDSA verify, RustCrypto + dalek on ovh-iad: 1.02 ms, 2.34× the fastest +P-521 ECDSA verify, RustCrypto + dalek on ovh-sea: 1.03 ms, 2.54× the fastest +P-521 ECDSA verify, OpenSSL on nixos: 473.66 µs, 2.13× the fastest +P-521 ECDSA verify, OpenSSL on desktop: 267.51 µs, 1.82× the fastest +P-521 ECDSA verify, OpenSSL on nixos2: 460.02 µs, 2.15× the fastest +P-521 ECDSA verify, OpenSSL on ovh-iad: 750.34 µs, 1.73× the fastest +P-521 ECDSA verify, OpenSSL on ovh-sea: 698.05 µs, 1.72× the fastest diff --git a/benchmarks/ovh-iad-dark.svg b/benchmarks/ovh-iad-dark.svg new file mode 100644 index 000000000..c9c536930 --- /dev/null +++ b/benchmarks/ovh-iad-dark.svg @@ -0,0 +1,716 @@ + +Times on ovh-iad, by operation and library + +fastest, or within 10% + +to 1.25× + +to 1.5× + +to 2× + +to 4× + +to 8× + +over 8× +✓ +verified code +ovh-iad: Intel Core Processor (Haswell, no TSX) +rind +aws-lc-rs +ring +RustCrypto ++ dalek +libcrux +OpenSSL +TLS 1.3 with rustls + +full handshake, X25519MLKEM768 +full handshake, X25519MLKEM768, rind: 676.16 µs, 1.00× the fastest +676.16 µs +full handshake, X25519MLKEM768, aws-lc-rs: 776.76 µs, 1.15× the fastest +776.76 µs +full handshake, X25519MLKEM768, OpenSSL: 1.48 ms, 2.18× the fastest +1.48 ms +full handshake, X25519 +full handshake, X25519, rind: 476.73 µs, 1.00× the fastest +476.73 µs +full handshake, X25519, aws-lc-rs: 540.28 µs, 1.13× the fastest +540.28 µs +full handshake, X25519, ring: 568.18 µs, 1.19× the fastest +568.18 µs +full handshake, X25519, OpenSSL: 1.14 ms, 2.38× the fastest +1.14 ms +full handshake, P-256 +full handshake, P-256, rind: 532.32 µs, 1.00× the fastest +532.32 µs +full handshake, P-256, aws-lc-rs: 614.10 µs, 1.15× the fastest +614.10 µs +full handshake, P-256, ring: 577.09 µs, 1.08× the fastest +577.09 µs +full handshake, P-256, OpenSSL: 1.35 ms, 2.53× the fastest +1.35 ms +full handshake, Ed25519 certificate +full handshake, Ed25519 certificate, rind: 395.96 µs, 1.00× the fastest +395.96 µs +full handshake, Ed25519 certificate, aws-lc-rs: 458.32 µs, 1.16× the fastest +458.32 µs +full handshake, Ed25519 certificate, ring: 505.59 µs, 1.28× the fastest +505.59 µs +full handshake, Ed25519 certificate, OpenSSL: 1.22 ms, 3.07× the fastest +1.22 ms +full handshake, RSA-2048 certificate +full handshake, RSA-2048 certificate, rind: 1.14 ms, 1.00× the fastest +1.14 ms +full handshake, RSA-2048 certificate, aws-lc-rs: 1.27 ms, 1.12× the fastest +1.27 ms +full handshake, RSA-2048 certificate, ring: 1.47 ms, 1.28× the fastest +1.47 ms +full handshake, RSA-2048 certificate, OpenSSL: 1.90 ms, 1.66× the fastest +1.90 ms +resumed handshake, X25519 +resumed handshake, X25519, rind: 207.86 µs, 1.00× the fastest +207.86 µs +resumed handshake, X25519, aws-lc-rs: 263.78 µs, 1.27× the fastest +263.78 µs +resumed handshake, X25519, ring: 274.24 µs, 1.32× the fastest +274.24 µs +resumed handshake, X25519, OpenSSL: 802.84 µs, 3.86× the fastest +802.84 µs +1 MB transfer, AES-128-GCM +1 MB transfer, AES-128-GCM, rind: 701.22 µs, 1.01× the fastest +701.22 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 694.46 µs, 1.00× the fastest +694.46 µs +1 MB transfer, AES-128-GCM, ring: 724.53 µs, 1.04× the fastest +724.53 µs +1 MB transfer, AES-128-GCM, OpenSSL: 783.32 µs, 1.13× the fastest +783.32 µs +1 MB transfer, AES-256-GCM +1 MB transfer, AES-256-GCM, rind: 869.86 µs, 1.02× the fastest +869.86 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 867.68 µs, 1.02× the fastest +867.68 µs +1 MB transfer, AES-256-GCM, ring: 854.61 µs, 1.00× the fastest +854.61 µs +1 MB transfer, AES-256-GCM, OpenSSL: 966.07 µs, 1.13× the fastest +966.07 µs +1 MB transfer, ChaCha20-Poly1305 +1 MB transfer, ChaCha20-Poly1305, rind: 1.58 ms, 1.01× the fastest +1.58 ms +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 1.56 ms, 1.00× the fastest +1.56 ms +1 MB transfer, ChaCha20-Poly1305, ring: 1.59 ms, 1.02× the fastest +1.59 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.77 ms, 1.13× the fastest +1.77 ms +AEADs + +AES-128-GCM seal, 32 B +AES-128-GCM seal, 32 B, rind: 69 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +69 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 138 ns, 2.01× the fastest +138 ns +AES-128-GCM seal, 32 B, ring: 111 ns, 1.61× the fastest +111 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 157 ns, 2.29× the fastest +157 ns +AES-128-GCM seal, 32 B, libcrux: 446 ns, 6.50× the fastest +446 ns +AES-128-GCM seal, 32 B, OpenSSL: 242 ns, 3.52× the fastest +242 ns +AES-128-GCM seal, 1350 B +AES-128-GCM seal, 1350 B, rind: 398 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +398 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 500 ns, 1.26× the fastest +500 ns +AES-128-GCM seal, 1350 B, ring: 463 ns, 1.17× the fastest +463 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 872 ns, 2.19× the fastest +872 ns +AES-128-GCM seal, 1350 B, libcrux: 5.56 µs, 13.98× the fastest +5.56 µs +AES-128-GCM seal, 1350 B, OpenSSL: 561 ns, 1.41× the fastest +561 ns +AES-128-GCM seal, 16 KB +AES-128-GCM seal, 16 KB, rind: 3.83 µs, 1.03× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.83 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 4.04 µs, 1.08× the fastest +4.04 µs +AES-128-GCM seal, 16 KB, ring: 3.72 µs, 1.00× the fastest +3.72 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 8.91 µs, 2.39× the fastest +8.91 µs +AES-128-GCM seal, 16 KB, libcrux: 62.33 µs, 16.74× the fastest +62.33 µs +AES-128-GCM seal, 16 KB, OpenSSL: 4.03 µs, 1.08× the fastest +4.03 µs +AES-128-GCM open, 32 B +AES-128-GCM open, 32 B, rind: 63 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +63 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 145 ns, 2.29× the fastest +145 ns +AES-128-GCM open, 32 B, ring: 131 ns, 2.07× the fastest +131 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 163 ns, 2.57× the fastest +163 ns +AES-128-GCM open, 32 B, libcrux: 467 ns, 7.39× the fastest +467 ns +AES-128-GCM open, 32 B, OpenSSL: 245 ns, 3.88× the fastest +245 ns +AES-128-GCM open, 1350 B +AES-128-GCM open, 1350 B, rind: 388 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +388 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 443 ns, 1.14× the fastest +443 ns +AES-128-GCM open, 1350 B, ring: 431 ns, 1.11× the fastest +431 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 899 ns, 2.32× the fastest +899 ns +AES-128-GCM open, 1350 B, libcrux: 5.59 µs, 14.43× the fastest +5.59 µs +AES-128-GCM open, 1350 B, OpenSSL: 590 ns, 1.52× the fastest +590 ns +AES-128-GCM open, 16 KB +AES-128-GCM open, 16 KB, rind: 3.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.94 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 4.08 µs, 1.04× the fastest +4.08 µs +AES-128-GCM open, 16 KB, ring: 4.03 µs, 1.02× the fastest +4.03 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 8.88 µs, 2.26× the fastest +8.88 µs +AES-128-GCM open, 16 KB, libcrux: 60.53 µs, 15.38× the fastest +60.53 µs +AES-128-GCM open, 16 KB, OpenSSL: 3.99 µs, 1.01× the fastest +3.99 µs +AES-256-GCM seal, 32 B +AES-256-GCM seal, 32 B, rind: 80 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +80 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 147 ns, 1.85× the fastest +147 ns +AES-256-GCM seal, 32 B, ring: 121 ns, 1.52× the fastest +121 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 169 ns, 2.12× the fastest +169 ns +AES-256-GCM seal, 32 B, libcrux: 558 ns, 7.00× the fastest +558 ns +AES-256-GCM seal, 32 B, OpenSSL: 288 ns, 3.61× the fastest +288 ns +AES-256-GCM seal, 1350 B +AES-256-GCM seal, 1350 B, rind: 514 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +514 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 577 ns, 1.12× the fastest +577 ns +AES-256-GCM seal, 1350 B, ring: 568 ns, 1.10× the fastest +568 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 965 ns, 1.88× the fastest +965 ns +AES-256-GCM seal, 1350 B, libcrux: 6.99 µs, 13.60× the fastest +6.99 µs +AES-256-GCM seal, 1350 B, OpenSSL: 678 ns, 1.32× the fastest +678 ns +AES-256-GCM seal, 16 KB +AES-256-GCM seal, 16 KB, rind: 5.27 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.27 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 5.32 µs, 1.01× the fastest +5.32 µs +AES-256-GCM seal, 16 KB, ring: 5.26 µs, 1.00× the fastest +5.26 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 10.07 µs, 1.91× the fastest +10.07 µs +AES-256-GCM seal, 16 KB, libcrux: 82.15 µs, 15.61× the fastest +82.15 µs +AES-256-GCM seal, 16 KB, OpenSSL: 5.43 µs, 1.03× the fastest +5.43 µs +AES-256-GCM open, 32 B +AES-256-GCM open, 32 B, rind: 70 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +70 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 156 ns, 2.22× the fastest +156 ns +AES-256-GCM open, 32 B, ring: 132 ns, 1.87× the fastest +132 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 179 ns, 2.54× the fastest +179 ns +AES-256-GCM open, 32 B, libcrux: 571 ns, 8.10× the fastest +571 ns +AES-256-GCM open, 32 B, OpenSSL: 266 ns, 3.78× the fastest +266 ns +AES-256-GCM open, 1350 B +AES-256-GCM open, 1350 B, rind: 488 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +488 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 593 ns, 1.22× the fastest +593 ns +AES-256-GCM open, 1350 B, ring: 581 ns, 1.19× the fastest +581 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 1.02 µs, 2.08× the fastest +1.02 µs +AES-256-GCM open, 1350 B, libcrux: 7.11 µs, 14.56× the fastest +7.11 µs +AES-256-GCM open, 1350 B, OpenSSL: 702 ns, 1.44× the fastest +702 ns +AES-256-GCM open, 16 KB +AES-256-GCM open, 16 KB, rind: 5.19 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.19 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 5.51 µs, 1.06× the fastest +5.51 µs +AES-256-GCM open, 16 KB, ring: 5.38 µs, 1.04× the fastest +5.38 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 10.28 µs, 1.98× the fastest +10.28 µs +AES-256-GCM open, 16 KB, libcrux: 80.09 µs, 15.44× the fastest +80.09 µs +AES-256-GCM open, 16 KB, OpenSSL: 5.46 µs, 1.05× the fastest +5.46 µs +ChaCha20-Poly1305 seal, 32 B +ChaCha20-Poly1305 seal, 32 B, rind: 192 ns, 1.00× the fastest +192 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 219 ns, 1.14× the fastest +219 ns +ChaCha20-Poly1305 seal, 32 B, ring: 196 ns, 1.02× the fastest +196 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.82 µs, 9.45× the fastest +1.82 µs +ChaCha20-Poly1305 seal, 32 B, libcrux: 462 ns, 2.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +462 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 496 ns, 2.58× the fastest +496 ns +ChaCha20-Poly1305 seal, 1350 B +ChaCha20-Poly1305 seal, 1350 B, rind: 1.08 µs, 1.01× the fastest +1.08 µs +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.07 µs, 1.01× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 1350 B, ring: 1.07 µs, 1.00× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.21 µs, 3.01× the fastest +3.21 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 4.80 µs, 4.50× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +4.80 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 1.61 µs, 1.51× the fastest +1.61 µs +ChaCha20-Poly1305 seal, 16 KB +ChaCha20-Poly1305 seal, 16 KB, rind: 9.95 µs, 1.00× the fastest +9.95 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 10.30 µs, 1.04× the fastest +10.30 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 10.07 µs, 1.01× the fastest +10.07 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.85 µs, 1.89× the fastest +18.85 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 56.11 µs, 5.64× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +56.11 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 11.14 µs, 1.12× the fastest +11.14 µs +XChaCha20-Poly1305 seal, 32 B +XChaCha20-Poly1305 seal, 32 B, rind: 402 ns, 1.00× the fastest +402 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 432 ns, 1.07× the fastest +432 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.98 µs, 4.93× the fastest +1.98 µs +XChaCha20-Poly1305 seal, 32 B, libcrux: 653 ns, 1.62× the fastest +653 ns +XChaCha20-Poly1305 seal, 1350 B +XChaCha20-Poly1305 seal, 1350 B, rind: 1.31 µs, 1.00× the fastest +1.31 µs +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.32 µs, 1.00× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.46 µs, 2.63× the fastest +3.46 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 5.11 µs, 3.89× the fastest +5.11 µs +XChaCha20-Poly1305 seal, 16 KB +XChaCha20-Poly1305 seal, 16 KB, rind: 9.99 µs, 1.00× the fastest +9.99 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 10.34 µs, 1.04× the fastest +10.34 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 19.22 µs, 1.92× the fastest +19.22 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 52.60 µs, 5.27× the fastest +52.60 µs +QUIC header protection + +AES-128 header protection +AES-128 header protection, rind: 7 ns, 1.00× the fastest +7 ns +AES-128 header protection, aws-lc-rs: 12 ns, 1.74× the fastest +12 ns +AES-128 header protection, ring: 12 ns, 1.74× the fastest +12 ns +AES-256 header protection +AES-256 header protection, rind: 10 ns, 1.00× the fastest +10 ns +AES-256 header protection, aws-lc-rs: 15 ns, 1.50× the fastest +15 ns +AES-256 header protection, ring: 15 ns, 1.49× the fastest +15 ns +ChaCha20 header protection +ChaCha20 header protection, rind: 128 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +128 ns ✓ +ChaCha20 header protection, aws-lc-rs: 157 ns, 1.22× the fastest +157 ns +ChaCha20 header protection, ring: 139 ns, 1.09× the fastest +139 ns +Key agreement + +X25519 +X25519, rind: 50.92 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +50.92 µs ✓ +X25519, aws-lc-rs: 53.04 µs, 1.04× the fastest +53.04 µs +X25519, ring: 80.26 µs, 1.58× the fastest +80.26 µs +X25519, RustCrypto + dalek: 90.44 µs, 1.78× the fastest +90.44 µs +X25519, libcrux: 114.24 µs, 2.24× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +114.24 µs ✓ +X25519, OpenSSL: 100.16 µs, 1.97× the fastest +100.16 µs +P-256 ECDH +P-256 ECDH, rind: 82.02 µs, 1.00× the fastest +82.02 µs +P-256 ECDH, aws-lc-rs: 88.08 µs, 1.07× the fastest +88.08 µs +P-256 ECDH, ring: 86.79 µs, 1.06× the fastest +86.79 µs +P-256 ECDH, RustCrypto + dalek: 393.87 µs, 4.80× the fastest +393.87 µs +P-256 ECDH, libcrux: 460.35 µs, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +460.35 µs ✓ +P-256 ECDH, OpenSSL: 144.87 µs, 1.77× the fastest +144.87 µs +Signatures + +Ed25519 sign +Ed25519 sign, rind: 11.89 µs, 1.00× the fastest +11.89 µs +Ed25519 sign, aws-lc-rs: 12.66 µs, 1.06× the fastest +12.66 µs +Ed25519 sign, ring: 29.88 µs, 2.51× the fastest +29.88 µs +Ed25519 sign, RustCrypto + dalek: 23.99 µs, 2.02× the fastest +23.99 µs +Ed25519 sign, libcrux: 74.31 µs, 6.25× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +74.31 µs ✓ +Ed25519 sign, OpenSSL: 42.70 µs, 3.59× the fastest +42.70 µs +Ed25519 verify +Ed25519 verify, rind: 59.90 µs, 1.25× the fastest +59.90 µs +Ed25519 verify, aws-lc-rs: 60.52 µs, 1.27× the fastest +60.52 µs +Ed25519 verify, ring: 62.83 µs, 1.32× the fastest +62.83 µs +Ed25519 verify, RustCrypto + dalek: 47.74 µs, 1.00× the fastest +47.74 µs +Ed25519 verify, libcrux: 97.20 µs, 2.04× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +97.20 µs ✓ +Ed25519 verify, OpenSSL: 140.19 µs, 2.94× the fastest +140.19 µs +P-256 ECDSA sign +P-256 ECDSA sign, rind: 23.25 µs, 1.00× the fastest +23.25 µs +P-256 ECDSA sign, aws-lc-rs: 25.45 µs, 1.09× the fastest +25.45 µs +P-256 ECDSA sign, ring: 26.75 µs, 1.15× the fastest +26.75 µs +P-256 ECDSA sign, RustCrypto + dalek: 114.03 µs, 4.91× the fastest +114.03 µs +P-256 ECDSA sign, libcrux: 161.25 µs, 6.94× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +161.25 µs ✓ +P-256 ECDSA sign, OpenSSL: 32.99 µs, 1.42× the fastest +32.99 µs +P-256 ECDSA verify +P-256 ECDSA verify, rind: 81.07 µs, 1.05× the fastest +81.07 µs +P-256 ECDSA verify, aws-lc-rs: 77.55 µs, 1.00× the fastest +77.55 µs +P-256 ECDSA verify, ring: 80.47 µs, 1.04× the fastest +80.47 µs +P-256 ECDSA verify, RustCrypto + dalek: 316.15 µs, 4.08× the fastest +316.15 µs +P-256 ECDSA verify, libcrux: 375.03 µs, 4.84× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +375.03 µs ✓ +P-256 ECDSA verify, OpenSSL: 124.52 µs, 1.61× the fastest +124.52 µs +Hashes and KDFs + +SHA-256, 64 B +SHA-256, 64 B, rind: 392 ns, 1.00× the fastest +392 ns +SHA-256, 64 B, aws-lc-rs: 501 ns, 1.28× the fastest +501 ns +SHA-256, 64 B, ring: 449 ns, 1.15× the fastest +449 ns +SHA-256, 64 B, RustCrypto + dalek: 739 ns, 1.89× the fastest +739 ns +SHA-256, 64 B, libcrux: 773 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +773 ns ✓ +SHA-256, 64 B, OpenSSL: 814 ns, 2.08× the fastest +814 ns +SHA-256, 1350 B +SHA-256, 1350 B, rind: 4.04 µs, 1.00× the fastest +4.04 µs +SHA-256, 1350 B, aws-lc-rs: 4.38 µs, 1.08× the fastest +4.38 µs +SHA-256, 1350 B, ring: 4.36 µs, 1.08× the fastest +4.36 µs +SHA-256, 1350 B, RustCrypto + dalek: 8.11 µs, 2.01× the fastest +8.11 µs +SHA-256, 1350 B, libcrux: 8.52 µs, 2.11× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +8.52 µs ✓ +SHA-256, 1350 B, OpenSSL: 4.48 µs, 1.11× the fastest +4.48 µs +SHA-256, 16 KB +SHA-256, 16 KB, rind: 44.12 µs, 1.00× the fastest +44.12 µs +SHA-256, 16 KB, aws-lc-rs: 51.22 µs, 1.16× the fastest +51.22 µs +SHA-256, 16 KB, ring: 55.38 µs, 1.26× the fastest +55.38 µs +SHA-256, 16 KB, RustCrypto + dalek: 93.62 µs, 2.12× the fastest +93.62 µs +SHA-256, 16 KB, libcrux: 97.65 µs, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +97.65 µs ✓ +SHA-256, 16 KB, OpenSSL: 45.31 µs, 1.03× the fastest +45.31 µs +SHA-512, 64 B +SHA-512, 64 B, rind: 312 ns, 1.00× the fastest +312 ns +SHA-512, 64 B, aws-lc-rs: 373 ns, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +373 ns ✓ +SHA-512, 64 B, ring: 328 ns, 1.05× the fastest +328 ns +SHA-512, 64 B, RustCrypto + dalek: 432 ns, 1.38× the fastest +432 ns +SHA-512, 64 B, libcrux: 489 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +489 ns ✓ +SHA-512, 64 B, OpenSSL: 771 ns, 2.47× the fastest +771 ns +SHA-512, 1350 B +SHA-512, 1350 B, rind: 2.70 µs, 1.00× the fastest +2.70 µs +SHA-512, 1350 B, aws-lc-rs: 3.11 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +3.11 µs ✓ +SHA-512, 1350 B, ring: 3.30 µs, 1.22× the fastest +3.30 µs +SHA-512, 1350 B, RustCrypto + dalek: 4.38 µs, 1.62× the fastest +4.38 µs +SHA-512, 1350 B, libcrux: 4.98 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +4.98 µs ✓ +SHA-512, 1350 B, OpenSSL: 3.06 µs, 1.13× the fastest +3.06 µs +SHA-512, 16 KB +SHA-512, 16 KB, rind: 30.70 µs, 1.00× the fastest +30.70 µs +SHA-512, 16 KB, aws-lc-rs: 35.44 µs, 1.16× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +35.44 µs ✓ +SHA-512, 16 KB, ring: 34.66 µs, 1.13× the fastest +34.66 µs +SHA-512, 16 KB, RustCrypto + dalek: 50.00 µs, 1.63× the fastest +50.00 µs +SHA-512, 16 KB, libcrux: 56.95 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +56.95 µs ✓ +SHA-512, 16 KB, OpenSSL: 30.66 µs, 1.00× the fastest +30.66 µs +HMAC-SHA256, 64 B +HMAC-SHA256, 64 B, rind: 1.01 µs, 1.00× the fastest +1.01 µs +HMAC-SHA256, 64 B, aws-lc-rs: 1.31 µs, 1.29× the fastest +1.31 µs +HMAC-SHA256, 64 B, ring: 1.11 µs, 1.10× the fastest +1.11 µs +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.94 µs, 1.92× the fastest +1.94 µs +HMAC-SHA256, 64 B, libcrux: 1.93 µs, 1.90× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.93 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 6.01 µs, 5.94× the fastest +6.01 µs +HMAC-SHA256, 1350 B +HMAC-SHA256, 1350 B, rind: 4.40 µs, 1.00× the fastest +4.40 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 5.15 µs, 1.17× the fastest +5.15 µs +HMAC-SHA256, 1350 B, ring: 5.00 µs, 1.14× the fastest +5.00 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 9.13 µs, 2.08× the fastest +9.13 µs +HMAC-SHA256, 1350 B, libcrux: 9.50 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +9.50 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 9.61 µs, 2.19× the fastest +9.61 µs +HKDF-SHA256 extract and expand +HKDF-SHA256 extract and expand, rind: 1.74 µs, 1.00× the fastest +1.74 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 2.15 µs, 1.24× the fastest +2.15 µs +HKDF-SHA256 extract and expand, ring: 1.98 µs, 1.14× the fastest +1.98 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 3.08 µs, 1.77× the fastest +3.08 µs +HKDF-SHA256 extract and expand, libcrux: 3.26 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +3.26 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 7.08 µs, 4.07× the fastest +7.08 µs +HKDF-SHA256 expand +HKDF-SHA256 expand, rind: 488 ns, 1.00× the fastest +488 ns +HKDF-SHA256 expand, aws-lc-rs: 1.00 µs, 2.05× the fastest +1.00 µs +HKDF-SHA256 expand, ring: 526 ns, 1.08× the fastest +526 ns +HKDF-SHA256 expand, RustCrypto + dalek: 792 ns, 1.62× the fastest +792 ns +HKDF-SHA256 expand, libcrux: 1.65 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.65 µs ✓ +HKDF-SHA256 expand, OpenSSL: 4.55 µs, 9.32× the fastest +4.55 µs +RSA + +RSA-2048 PKCS#1 sign +RSA-2048 PKCS#1 sign, rind: 805.45 µs, 1.00× the fastest +805.45 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 872.67 µs, 1.08× the fastest +872.67 µs +RSA-2048 PKCS#1 sign, ring: 1.19 ms, 1.47× the fastest +1.19 ms +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.97 ms, 2.45× the fastest +1.97 ms +RSA-2048 PKCS#1 sign, OpenSSL: 884.01 µs, 1.10× the fastest +884.01 µs +RSA-2048 PKCS#1 verify +RSA-2048 PKCS#1 verify, rind: 31.54 µs, 1.00× the fastest +31.54 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 36.27 µs, 1.15× the fastest +36.27 µs +RSA-2048 PKCS#1 verify, ring: 40.64 µs, 1.29× the fastest +40.64 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 94.92 µs, 3.01× the fastest +94.92 µs +RSA-2048 PKCS#1 verify, OpenSSL: 50.88 µs, 1.61× the fastest +50.88 µs +RSA-2048 PSS sign +RSA-2048 PSS sign, rind: 785.33 µs, 1.00× the fastest +785.33 µs +RSA-2048 PSS sign, aws-lc-rs: 842.38 µs, 1.07× the fastest +842.38 µs +RSA-2048 PSS sign, ring: 1.13 ms, 1.44× the fastest +1.13 ms +RSA-2048 PSS sign, RustCrypto + dalek: 1.90 ms, 2.42× the fastest +1.90 ms +RSA-2048 PSS sign, libcrux: 11.70 ms, 14.90× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +11.70 ms ✓ +RSA-2048 PSS sign, OpenSSL: 891.02 µs, 1.13× the fastest +891.02 µs +RSA-2048 PSS verify +RSA-2048 PSS verify, rind: 32.94 µs, 1.00× the fastest +32.94 µs +RSA-2048 PSS verify, aws-lc-rs: 37.98 µs, 1.15× the fastest +37.98 µs +RSA-2048 PSS verify, ring: 41.62 µs, 1.26× the fastest +41.62 µs +RSA-2048 PSS verify, RustCrypto + dalek: 111.34 µs, 3.38× the fastest +111.34 µs +RSA-2048 PSS verify, libcrux: 620.80 µs, 18.84× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +620.80 µs ✓ +RSA-2048 PSS verify, OpenSSL: 55.13 µs, 1.67× the fastest +55.13 µs +ML-KEM + +ML-KEM-768 key generation +ML-KEM-768 key generation, rind: 19.03 µs, 1.00× the fastest +19.03 µs +ML-KEM-768 key generation, aws-lc-rs: 24.20 µs, 1.27× the fastest +24.20 µs +ML-KEM-768 key generation, RustCrypto + dalek: 99.32 µs, 5.22× the fastest +99.32 µs +ML-KEM-768 key generation, libcrux: 36.70 µs, 1.93× the fastest +36.70 µs +ML-KEM-768 key generation, OpenSSL: 64.00 µs, 3.36× the fastest +64.00 µs +ML-KEM-768 encapsulate +ML-KEM-768 encapsulate, rind: 19.37 µs, 1.00× the fastest +19.37 µs +ML-KEM-768 encapsulate, aws-lc-rs: 25.59 µs, 1.32× the fastest +25.59 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 107.39 µs, 5.55× the fastest +107.39 µs +ML-KEM-768 encapsulate, libcrux: 32.08 µs, 1.66× the fastest +32.08 µs +ML-KEM-768 encapsulate, OpenSSL: 68.64 µs, 3.54× the fastest +68.64 µs +ML-KEM-768 decapsulate +ML-KEM-768 decapsulate, rind: 12.58 µs, 1.00× the fastest +12.58 µs +ML-KEM-768 decapsulate, aws-lc-rs: 28.87 µs, 2.29× the fastest +28.87 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 129.01 µs, 10.25× the fastest +129.01 µs +ML-KEM-768 decapsulate, libcrux: 34.10 µs, 2.71× the fastest +34.10 µs +ML-KEM-768 decapsulate, OpenSSL: 49.30 µs, 3.92× the fastest +49.30 µs +P-384 and P-521 + +P-384 ECDH +P-384 ECDH, rind: 276.11 µs, 1.00× the fastest +276.11 µs +P-384 ECDH, aws-lc-rs: 303.78 µs, 1.10× the fastest +303.78 µs +P-384 ECDH, ring: 1.05 ms, 3.81× the fastest +1.05 ms +P-384 ECDH, RustCrypto + dalek: 1.24 ms, 4.50× the fastest +1.24 ms +P-384 ECDH, OpenSSL: 794.72 µs, 2.88× the fastest +794.72 µs +P-384 ECDSA sign +P-384 ECDSA sign, rind: 70.24 µs, 1.00× the fastest +70.24 µs +P-384 ECDSA sign, aws-lc-rs: 131.24 µs, 1.87× the fastest +131.24 µs +P-384 ECDSA sign, ring: 547.60 µs, 7.80× the fastest +547.60 µs +P-384 ECDSA sign, RustCrypto + dalek: 268.01 µs, 3.82× the fastest +268.01 µs +P-384 ECDSA sign, OpenSSL: 268.60 µs, 3.82× the fastest +268.60 µs +P-384 ECDSA verify +P-384 ECDSA verify, rind: 261.01 µs, 1.00× the fastest +261.01 µs +P-384 ECDSA verify, aws-lc-rs: 315.77 µs, 1.21× the fastest +315.77 µs +P-384 ECDSA verify, ring: 1.05 ms, 4.02× the fastest +1.05 ms +P-384 ECDSA verify, RustCrypto + dalek: 1.08 ms, 4.16× the fastest +1.08 ms +P-384 ECDSA verify, OpenSSL: 657.01 µs, 2.52× the fastest +657.01 µs +P-521 ECDH +P-521 ECDH, rind: 477.22 µs, 1.00× the fastest +477.22 µs +P-521 ECDH, aws-lc-rs: 502.59 µs, 1.05× the fastest +502.59 µs +P-521 ECDH, RustCrypto + dalek: 1.26 ms, 2.65× the fastest +1.26 ms +P-521 ECDH, OpenSSL: 751.84 µs, 1.58× the fastest +751.84 µs +P-521 ECDSA sign +P-521 ECDSA sign, rind: 122.73 µs, 1.00× the fastest +122.73 µs +P-521 ECDSA sign, aws-lc-rs: 260.74 µs, 2.12× the fastest +260.74 µs +P-521 ECDSA sign, RustCrypto + dalek: 289.27 µs, 2.36× the fastest +289.27 µs +P-521 ECDSA sign, OpenSSL: 378.85 µs, 3.09× the fastest +378.85 µs +P-521 ECDSA verify +P-521 ECDSA verify, rind: 434.67 µs, 1.00× the fastest +434.67 µs +P-521 ECDSA verify, aws-lc-rs: 544.59 µs, 1.25× the fastest +544.59 µs +P-521 ECDSA verify, RustCrypto + dalek: 1.02 ms, 2.34× the fastest +1.02 ms +P-521 ECDSA verify, OpenSSL: 750.34 µs, 1.73× the fastest +750.34 µs + diff --git a/benchmarks/ovh-iad.svg b/benchmarks/ovh-iad.svg new file mode 100644 index 000000000..ff9fc0622 --- /dev/null +++ b/benchmarks/ovh-iad.svg @@ -0,0 +1,716 @@ + +Times on ovh-iad, by operation and library + +fastest, or within 10% + +to 1.25× + +to 1.5× + +to 2× + +to 4× + +to 8× + +over 8× +✓ +verified code +ovh-iad: Intel Core Processor (Haswell, no TSX) +rind +aws-lc-rs +ring +RustCrypto ++ dalek +libcrux +OpenSSL +TLS 1.3 with rustls + +full handshake, X25519MLKEM768 +full handshake, X25519MLKEM768, rind: 676.16 µs, 1.00× the fastest +676.16 µs +full handshake, X25519MLKEM768, aws-lc-rs: 776.76 µs, 1.15× the fastest +776.76 µs +full handshake, X25519MLKEM768, OpenSSL: 1.48 ms, 2.18× the fastest +1.48 ms +full handshake, X25519 +full handshake, X25519, rind: 476.73 µs, 1.00× the fastest +476.73 µs +full handshake, X25519, aws-lc-rs: 540.28 µs, 1.13× the fastest +540.28 µs +full handshake, X25519, ring: 568.18 µs, 1.19× the fastest +568.18 µs +full handshake, X25519, OpenSSL: 1.14 ms, 2.38× the fastest +1.14 ms +full handshake, P-256 +full handshake, P-256, rind: 532.32 µs, 1.00× the fastest +532.32 µs +full handshake, P-256, aws-lc-rs: 614.10 µs, 1.15× the fastest +614.10 µs +full handshake, P-256, ring: 577.09 µs, 1.08× the fastest +577.09 µs +full handshake, P-256, OpenSSL: 1.35 ms, 2.53× the fastest +1.35 ms +full handshake, Ed25519 certificate +full handshake, Ed25519 certificate, rind: 395.96 µs, 1.00× the fastest +395.96 µs +full handshake, Ed25519 certificate, aws-lc-rs: 458.32 µs, 1.16× the fastest +458.32 µs +full handshake, Ed25519 certificate, ring: 505.59 µs, 1.28× the fastest +505.59 µs +full handshake, Ed25519 certificate, OpenSSL: 1.22 ms, 3.07× the fastest +1.22 ms +full handshake, RSA-2048 certificate +full handshake, RSA-2048 certificate, rind: 1.14 ms, 1.00× the fastest +1.14 ms +full handshake, RSA-2048 certificate, aws-lc-rs: 1.27 ms, 1.12× the fastest +1.27 ms +full handshake, RSA-2048 certificate, ring: 1.47 ms, 1.28× the fastest +1.47 ms +full handshake, RSA-2048 certificate, OpenSSL: 1.90 ms, 1.66× the fastest +1.90 ms +resumed handshake, X25519 +resumed handshake, X25519, rind: 207.86 µs, 1.00× the fastest +207.86 µs +resumed handshake, X25519, aws-lc-rs: 263.78 µs, 1.27× the fastest +263.78 µs +resumed handshake, X25519, ring: 274.24 µs, 1.32× the fastest +274.24 µs +resumed handshake, X25519, OpenSSL: 802.84 µs, 3.86× the fastest +802.84 µs +1 MB transfer, AES-128-GCM +1 MB transfer, AES-128-GCM, rind: 701.22 µs, 1.01× the fastest +701.22 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 694.46 µs, 1.00× the fastest +694.46 µs +1 MB transfer, AES-128-GCM, ring: 724.53 µs, 1.04× the fastest +724.53 µs +1 MB transfer, AES-128-GCM, OpenSSL: 783.32 µs, 1.13× the fastest +783.32 µs +1 MB transfer, AES-256-GCM +1 MB transfer, AES-256-GCM, rind: 869.86 µs, 1.02× the fastest +869.86 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 867.68 µs, 1.02× the fastest +867.68 µs +1 MB transfer, AES-256-GCM, ring: 854.61 µs, 1.00× the fastest +854.61 µs +1 MB transfer, AES-256-GCM, OpenSSL: 966.07 µs, 1.13× the fastest +966.07 µs +1 MB transfer, ChaCha20-Poly1305 +1 MB transfer, ChaCha20-Poly1305, rind: 1.58 ms, 1.01× the fastest +1.58 ms +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 1.56 ms, 1.00× the fastest +1.56 ms +1 MB transfer, ChaCha20-Poly1305, ring: 1.59 ms, 1.02× the fastest +1.59 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.77 ms, 1.13× the fastest +1.77 ms +AEADs + +AES-128-GCM seal, 32 B +AES-128-GCM seal, 32 B, rind: 69 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +69 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 138 ns, 2.01× the fastest +138 ns +AES-128-GCM seal, 32 B, ring: 111 ns, 1.61× the fastest +111 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 157 ns, 2.29× the fastest +157 ns +AES-128-GCM seal, 32 B, libcrux: 446 ns, 6.50× the fastest +446 ns +AES-128-GCM seal, 32 B, OpenSSL: 242 ns, 3.52× the fastest +242 ns +AES-128-GCM seal, 1350 B +AES-128-GCM seal, 1350 B, rind: 398 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +398 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 500 ns, 1.26× the fastest +500 ns +AES-128-GCM seal, 1350 B, ring: 463 ns, 1.17× the fastest +463 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 872 ns, 2.19× the fastest +872 ns +AES-128-GCM seal, 1350 B, libcrux: 5.56 µs, 13.98× the fastest +5.56 µs +AES-128-GCM seal, 1350 B, OpenSSL: 561 ns, 1.41× the fastest +561 ns +AES-128-GCM seal, 16 KB +AES-128-GCM seal, 16 KB, rind: 3.83 µs, 1.03× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.83 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 4.04 µs, 1.08× the fastest +4.04 µs +AES-128-GCM seal, 16 KB, ring: 3.72 µs, 1.00× the fastest +3.72 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 8.91 µs, 2.39× the fastest +8.91 µs +AES-128-GCM seal, 16 KB, libcrux: 62.33 µs, 16.74× the fastest +62.33 µs +AES-128-GCM seal, 16 KB, OpenSSL: 4.03 µs, 1.08× the fastest +4.03 µs +AES-128-GCM open, 32 B +AES-128-GCM open, 32 B, rind: 63 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +63 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 145 ns, 2.29× the fastest +145 ns +AES-128-GCM open, 32 B, ring: 131 ns, 2.07× the fastest +131 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 163 ns, 2.57× the fastest +163 ns +AES-128-GCM open, 32 B, libcrux: 467 ns, 7.39× the fastest +467 ns +AES-128-GCM open, 32 B, OpenSSL: 245 ns, 3.88× the fastest +245 ns +AES-128-GCM open, 1350 B +AES-128-GCM open, 1350 B, rind: 388 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +388 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 443 ns, 1.14× the fastest +443 ns +AES-128-GCM open, 1350 B, ring: 431 ns, 1.11× the fastest +431 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 899 ns, 2.32× the fastest +899 ns +AES-128-GCM open, 1350 B, libcrux: 5.59 µs, 14.43× the fastest +5.59 µs +AES-128-GCM open, 1350 B, OpenSSL: 590 ns, 1.52× the fastest +590 ns +AES-128-GCM open, 16 KB +AES-128-GCM open, 16 KB, rind: 3.94 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.94 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 4.08 µs, 1.04× the fastest +4.08 µs +AES-128-GCM open, 16 KB, ring: 4.03 µs, 1.02× the fastest +4.03 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 8.88 µs, 2.26× the fastest +8.88 µs +AES-128-GCM open, 16 KB, libcrux: 60.53 µs, 15.38× the fastest +60.53 µs +AES-128-GCM open, 16 KB, OpenSSL: 3.99 µs, 1.01× the fastest +3.99 µs +AES-256-GCM seal, 32 B +AES-256-GCM seal, 32 B, rind: 80 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +80 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 147 ns, 1.85× the fastest +147 ns +AES-256-GCM seal, 32 B, ring: 121 ns, 1.52× the fastest +121 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 169 ns, 2.12× the fastest +169 ns +AES-256-GCM seal, 32 B, libcrux: 558 ns, 7.00× the fastest +558 ns +AES-256-GCM seal, 32 B, OpenSSL: 288 ns, 3.61× the fastest +288 ns +AES-256-GCM seal, 1350 B +AES-256-GCM seal, 1350 B, rind: 514 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +514 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 577 ns, 1.12× the fastest +577 ns +AES-256-GCM seal, 1350 B, ring: 568 ns, 1.10× the fastest +568 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 965 ns, 1.88× the fastest +965 ns +AES-256-GCM seal, 1350 B, libcrux: 6.99 µs, 13.60× the fastest +6.99 µs +AES-256-GCM seal, 1350 B, OpenSSL: 678 ns, 1.32× the fastest +678 ns +AES-256-GCM seal, 16 KB +AES-256-GCM seal, 16 KB, rind: 5.27 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.27 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 5.32 µs, 1.01× the fastest +5.32 µs +AES-256-GCM seal, 16 KB, ring: 5.26 µs, 1.00× the fastest +5.26 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 10.07 µs, 1.91× the fastest +10.07 µs +AES-256-GCM seal, 16 KB, libcrux: 82.15 µs, 15.61× the fastest +82.15 µs +AES-256-GCM seal, 16 KB, OpenSSL: 5.43 µs, 1.03× the fastest +5.43 µs +AES-256-GCM open, 32 B +AES-256-GCM open, 32 B, rind: 70 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +70 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 156 ns, 2.22× the fastest +156 ns +AES-256-GCM open, 32 B, ring: 132 ns, 1.87× the fastest +132 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 179 ns, 2.54× the fastest +179 ns +AES-256-GCM open, 32 B, libcrux: 571 ns, 8.10× the fastest +571 ns +AES-256-GCM open, 32 B, OpenSSL: 266 ns, 3.78× the fastest +266 ns +AES-256-GCM open, 1350 B +AES-256-GCM open, 1350 B, rind: 488 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +488 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 593 ns, 1.22× the fastest +593 ns +AES-256-GCM open, 1350 B, ring: 581 ns, 1.19× the fastest +581 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 1.02 µs, 2.08× the fastest +1.02 µs +AES-256-GCM open, 1350 B, libcrux: 7.11 µs, 14.56× the fastest +7.11 µs +AES-256-GCM open, 1350 B, OpenSSL: 702 ns, 1.44× the fastest +702 ns +AES-256-GCM open, 16 KB +AES-256-GCM open, 16 KB, rind: 5.19 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.19 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 5.51 µs, 1.06× the fastest +5.51 µs +AES-256-GCM open, 16 KB, ring: 5.38 µs, 1.04× the fastest +5.38 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 10.28 µs, 1.98× the fastest +10.28 µs +AES-256-GCM open, 16 KB, libcrux: 80.09 µs, 15.44× the fastest +80.09 µs +AES-256-GCM open, 16 KB, OpenSSL: 5.46 µs, 1.05× the fastest +5.46 µs +ChaCha20-Poly1305 seal, 32 B +ChaCha20-Poly1305 seal, 32 B, rind: 192 ns, 1.00× the fastest +192 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 219 ns, 1.14× the fastest +219 ns +ChaCha20-Poly1305 seal, 32 B, ring: 196 ns, 1.02× the fastest +196 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.82 µs, 9.45× the fastest +1.82 µs +ChaCha20-Poly1305 seal, 32 B, libcrux: 462 ns, 2.40× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +462 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 496 ns, 2.58× the fastest +496 ns +ChaCha20-Poly1305 seal, 1350 B +ChaCha20-Poly1305 seal, 1350 B, rind: 1.08 µs, 1.01× the fastest +1.08 µs +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.07 µs, 1.01× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 1350 B, ring: 1.07 µs, 1.00× the fastest +1.07 µs +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.21 µs, 3.01× the fastest +3.21 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 4.80 µs, 4.50× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +4.80 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 1.61 µs, 1.51× the fastest +1.61 µs +ChaCha20-Poly1305 seal, 16 KB +ChaCha20-Poly1305 seal, 16 KB, rind: 9.95 µs, 1.00× the fastest +9.95 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 10.30 µs, 1.04× the fastest +10.30 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 10.07 µs, 1.01× the fastest +10.07 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.85 µs, 1.89× the fastest +18.85 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 56.11 µs, 5.64× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +56.11 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 11.14 µs, 1.12× the fastest +11.14 µs +XChaCha20-Poly1305 seal, 32 B +XChaCha20-Poly1305 seal, 32 B, rind: 402 ns, 1.00× the fastest +402 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 432 ns, 1.07× the fastest +432 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.98 µs, 4.93× the fastest +1.98 µs +XChaCha20-Poly1305 seal, 32 B, libcrux: 653 ns, 1.62× the fastest +653 ns +XChaCha20-Poly1305 seal, 1350 B +XChaCha20-Poly1305 seal, 1350 B, rind: 1.31 µs, 1.00× the fastest +1.31 µs +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.32 µs, 1.00× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.46 µs, 2.63× the fastest +3.46 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 5.11 µs, 3.89× the fastest +5.11 µs +XChaCha20-Poly1305 seal, 16 KB +XChaCha20-Poly1305 seal, 16 KB, rind: 9.99 µs, 1.00× the fastest +9.99 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 10.34 µs, 1.04× the fastest +10.34 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 19.22 µs, 1.92× the fastest +19.22 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 52.60 µs, 5.27× the fastest +52.60 µs +QUIC header protection + +AES-128 header protection +AES-128 header protection, rind: 7 ns, 1.00× the fastest +7 ns +AES-128 header protection, aws-lc-rs: 12 ns, 1.74× the fastest +12 ns +AES-128 header protection, ring: 12 ns, 1.74× the fastest +12 ns +AES-256 header protection +AES-256 header protection, rind: 10 ns, 1.00× the fastest +10 ns +AES-256 header protection, aws-lc-rs: 15 ns, 1.50× the fastest +15 ns +AES-256 header protection, ring: 15 ns, 1.49× the fastest +15 ns +ChaCha20 header protection +ChaCha20 header protection, rind: 128 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +128 ns ✓ +ChaCha20 header protection, aws-lc-rs: 157 ns, 1.22× the fastest +157 ns +ChaCha20 header protection, ring: 139 ns, 1.09× the fastest +139 ns +Key agreement + +X25519 +X25519, rind: 50.92 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +50.92 µs ✓ +X25519, aws-lc-rs: 53.04 µs, 1.04× the fastest +53.04 µs +X25519, ring: 80.26 µs, 1.58× the fastest +80.26 µs +X25519, RustCrypto + dalek: 90.44 µs, 1.78× the fastest +90.44 µs +X25519, libcrux: 114.24 µs, 2.24× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +114.24 µs ✓ +X25519, OpenSSL: 100.16 µs, 1.97× the fastest +100.16 µs +P-256 ECDH +P-256 ECDH, rind: 82.02 µs, 1.00× the fastest +82.02 µs +P-256 ECDH, aws-lc-rs: 88.08 µs, 1.07× the fastest +88.08 µs +P-256 ECDH, ring: 86.79 µs, 1.06× the fastest +86.79 µs +P-256 ECDH, RustCrypto + dalek: 393.87 µs, 4.80× the fastest +393.87 µs +P-256 ECDH, libcrux: 460.35 µs, 5.61× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +460.35 µs ✓ +P-256 ECDH, OpenSSL: 144.87 µs, 1.77× the fastest +144.87 µs +Signatures + +Ed25519 sign +Ed25519 sign, rind: 11.89 µs, 1.00× the fastest +11.89 µs +Ed25519 sign, aws-lc-rs: 12.66 µs, 1.06× the fastest +12.66 µs +Ed25519 sign, ring: 29.88 µs, 2.51× the fastest +29.88 µs +Ed25519 sign, RustCrypto + dalek: 23.99 µs, 2.02× the fastest +23.99 µs +Ed25519 sign, libcrux: 74.31 µs, 6.25× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +74.31 µs ✓ +Ed25519 sign, OpenSSL: 42.70 µs, 3.59× the fastest +42.70 µs +Ed25519 verify +Ed25519 verify, rind: 59.90 µs, 1.25× the fastest +59.90 µs +Ed25519 verify, aws-lc-rs: 60.52 µs, 1.27× the fastest +60.52 µs +Ed25519 verify, ring: 62.83 µs, 1.32× the fastest +62.83 µs +Ed25519 verify, RustCrypto + dalek: 47.74 µs, 1.00× the fastest +47.74 µs +Ed25519 verify, libcrux: 97.20 µs, 2.04× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +97.20 µs ✓ +Ed25519 verify, OpenSSL: 140.19 µs, 2.94× the fastest +140.19 µs +P-256 ECDSA sign +P-256 ECDSA sign, rind: 23.25 µs, 1.00× the fastest +23.25 µs +P-256 ECDSA sign, aws-lc-rs: 25.45 µs, 1.09× the fastest +25.45 µs +P-256 ECDSA sign, ring: 26.75 µs, 1.15× the fastest +26.75 µs +P-256 ECDSA sign, RustCrypto + dalek: 114.03 µs, 4.91× the fastest +114.03 µs +P-256 ECDSA sign, libcrux: 161.25 µs, 6.94× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +161.25 µs ✓ +P-256 ECDSA sign, OpenSSL: 32.99 µs, 1.42× the fastest +32.99 µs +P-256 ECDSA verify +P-256 ECDSA verify, rind: 81.07 µs, 1.05× the fastest +81.07 µs +P-256 ECDSA verify, aws-lc-rs: 77.55 µs, 1.00× the fastest +77.55 µs +P-256 ECDSA verify, ring: 80.47 µs, 1.04× the fastest +80.47 µs +P-256 ECDSA verify, RustCrypto + dalek: 316.15 µs, 4.08× the fastest +316.15 µs +P-256 ECDSA verify, libcrux: 375.03 µs, 4.84× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +375.03 µs ✓ +P-256 ECDSA verify, OpenSSL: 124.52 µs, 1.61× the fastest +124.52 µs +Hashes and KDFs + +SHA-256, 64 B +SHA-256, 64 B, rind: 392 ns, 1.00× the fastest +392 ns +SHA-256, 64 B, aws-lc-rs: 501 ns, 1.28× the fastest +501 ns +SHA-256, 64 B, ring: 449 ns, 1.15× the fastest +449 ns +SHA-256, 64 B, RustCrypto + dalek: 739 ns, 1.89× the fastest +739 ns +SHA-256, 64 B, libcrux: 773 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +773 ns ✓ +SHA-256, 64 B, OpenSSL: 814 ns, 2.08× the fastest +814 ns +SHA-256, 1350 B +SHA-256, 1350 B, rind: 4.04 µs, 1.00× the fastest +4.04 µs +SHA-256, 1350 B, aws-lc-rs: 4.38 µs, 1.08× the fastest +4.38 µs +SHA-256, 1350 B, ring: 4.36 µs, 1.08× the fastest +4.36 µs +SHA-256, 1350 B, RustCrypto + dalek: 8.11 µs, 2.01× the fastest +8.11 µs +SHA-256, 1350 B, libcrux: 8.52 µs, 2.11× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +8.52 µs ✓ +SHA-256, 1350 B, OpenSSL: 4.48 µs, 1.11× the fastest +4.48 µs +SHA-256, 16 KB +SHA-256, 16 KB, rind: 44.12 µs, 1.00× the fastest +44.12 µs +SHA-256, 16 KB, aws-lc-rs: 51.22 µs, 1.16× the fastest +51.22 µs +SHA-256, 16 KB, ring: 55.38 µs, 1.26× the fastest +55.38 µs +SHA-256, 16 KB, RustCrypto + dalek: 93.62 µs, 2.12× the fastest +93.62 µs +SHA-256, 16 KB, libcrux: 97.65 µs, 2.21× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +97.65 µs ✓ +SHA-256, 16 KB, OpenSSL: 45.31 µs, 1.03× the fastest +45.31 µs +SHA-512, 64 B +SHA-512, 64 B, rind: 312 ns, 1.00× the fastest +312 ns +SHA-512, 64 B, aws-lc-rs: 373 ns, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +373 ns ✓ +SHA-512, 64 B, ring: 328 ns, 1.05× the fastest +328 ns +SHA-512, 64 B, RustCrypto + dalek: 432 ns, 1.38× the fastest +432 ns +SHA-512, 64 B, libcrux: 489 ns, 1.57× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +489 ns ✓ +SHA-512, 64 B, OpenSSL: 771 ns, 2.47× the fastest +771 ns +SHA-512, 1350 B +SHA-512, 1350 B, rind: 2.70 µs, 1.00× the fastest +2.70 µs +SHA-512, 1350 B, aws-lc-rs: 3.11 µs, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +3.11 µs ✓ +SHA-512, 1350 B, ring: 3.30 µs, 1.22× the fastest +3.30 µs +SHA-512, 1350 B, RustCrypto + dalek: 4.38 µs, 1.62× the fastest +4.38 µs +SHA-512, 1350 B, libcrux: 4.98 µs, 1.84× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +4.98 µs ✓ +SHA-512, 1350 B, OpenSSL: 3.06 µs, 1.13× the fastest +3.06 µs +SHA-512, 16 KB +SHA-512, 16 KB, rind: 30.70 µs, 1.00× the fastest +30.70 µs +SHA-512, 16 KB, aws-lc-rs: 35.44 µs, 1.16× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +35.44 µs ✓ +SHA-512, 16 KB, ring: 34.66 µs, 1.13× the fastest +34.66 µs +SHA-512, 16 KB, RustCrypto + dalek: 50.00 µs, 1.63× the fastest +50.00 µs +SHA-512, 16 KB, libcrux: 56.95 µs, 1.86× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +56.95 µs ✓ +SHA-512, 16 KB, OpenSSL: 30.66 µs, 1.00× the fastest +30.66 µs +HMAC-SHA256, 64 B +HMAC-SHA256, 64 B, rind: 1.01 µs, 1.00× the fastest +1.01 µs +HMAC-SHA256, 64 B, aws-lc-rs: 1.31 µs, 1.29× the fastest +1.31 µs +HMAC-SHA256, 64 B, ring: 1.11 µs, 1.10× the fastest +1.11 µs +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.94 µs, 1.92× the fastest +1.94 µs +HMAC-SHA256, 64 B, libcrux: 1.93 µs, 1.90× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.93 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 6.01 µs, 5.94× the fastest +6.01 µs +HMAC-SHA256, 1350 B +HMAC-SHA256, 1350 B, rind: 4.40 µs, 1.00× the fastest +4.40 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 5.15 µs, 1.17× the fastest +5.15 µs +HMAC-SHA256, 1350 B, ring: 5.00 µs, 1.14× the fastest +5.00 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 9.13 µs, 2.08× the fastest +9.13 µs +HMAC-SHA256, 1350 B, libcrux: 9.50 µs, 2.16× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +9.50 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 9.61 µs, 2.19× the fastest +9.61 µs +HKDF-SHA256 extract and expand +HKDF-SHA256 extract and expand, rind: 1.74 µs, 1.00× the fastest +1.74 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 2.15 µs, 1.24× the fastest +2.15 µs +HKDF-SHA256 extract and expand, ring: 1.98 µs, 1.14× the fastest +1.98 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 3.08 µs, 1.77× the fastest +3.08 µs +HKDF-SHA256 extract and expand, libcrux: 3.26 µs, 1.87× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +3.26 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 7.08 µs, 4.07× the fastest +7.08 µs +HKDF-SHA256 expand +HKDF-SHA256 expand, rind: 488 ns, 1.00× the fastest +488 ns +HKDF-SHA256 expand, aws-lc-rs: 1.00 µs, 2.05× the fastest +1.00 µs +HKDF-SHA256 expand, ring: 526 ns, 1.08× the fastest +526 ns +HKDF-SHA256 expand, RustCrypto + dalek: 792 ns, 1.62× the fastest +792 ns +HKDF-SHA256 expand, libcrux: 1.65 µs, 3.37× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.65 µs ✓ +HKDF-SHA256 expand, OpenSSL: 4.55 µs, 9.32× the fastest +4.55 µs +RSA + +RSA-2048 PKCS#1 sign +RSA-2048 PKCS#1 sign, rind: 805.45 µs, 1.00× the fastest +805.45 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 872.67 µs, 1.08× the fastest +872.67 µs +RSA-2048 PKCS#1 sign, ring: 1.19 ms, 1.47× the fastest +1.19 ms +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.97 ms, 2.45× the fastest +1.97 ms +RSA-2048 PKCS#1 sign, OpenSSL: 884.01 µs, 1.10× the fastest +884.01 µs +RSA-2048 PKCS#1 verify +RSA-2048 PKCS#1 verify, rind: 31.54 µs, 1.00× the fastest +31.54 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 36.27 µs, 1.15× the fastest +36.27 µs +RSA-2048 PKCS#1 verify, ring: 40.64 µs, 1.29× the fastest +40.64 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 94.92 µs, 3.01× the fastest +94.92 µs +RSA-2048 PKCS#1 verify, OpenSSL: 50.88 µs, 1.61× the fastest +50.88 µs +RSA-2048 PSS sign +RSA-2048 PSS sign, rind: 785.33 µs, 1.00× the fastest +785.33 µs +RSA-2048 PSS sign, aws-lc-rs: 842.38 µs, 1.07× the fastest +842.38 µs +RSA-2048 PSS sign, ring: 1.13 ms, 1.44× the fastest +1.13 ms +RSA-2048 PSS sign, RustCrypto + dalek: 1.90 ms, 2.42× the fastest +1.90 ms +RSA-2048 PSS sign, libcrux: 11.70 ms, 14.90× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +11.70 ms ✓ +RSA-2048 PSS sign, OpenSSL: 891.02 µs, 1.13× the fastest +891.02 µs +RSA-2048 PSS verify +RSA-2048 PSS verify, rind: 32.94 µs, 1.00× the fastest +32.94 µs +RSA-2048 PSS verify, aws-lc-rs: 37.98 µs, 1.15× the fastest +37.98 µs +RSA-2048 PSS verify, ring: 41.62 µs, 1.26× the fastest +41.62 µs +RSA-2048 PSS verify, RustCrypto + dalek: 111.34 µs, 3.38× the fastest +111.34 µs +RSA-2048 PSS verify, libcrux: 620.80 µs, 18.84× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +620.80 µs ✓ +RSA-2048 PSS verify, OpenSSL: 55.13 µs, 1.67× the fastest +55.13 µs +ML-KEM + +ML-KEM-768 key generation +ML-KEM-768 key generation, rind: 19.03 µs, 1.00× the fastest +19.03 µs +ML-KEM-768 key generation, aws-lc-rs: 24.20 µs, 1.27× the fastest +24.20 µs +ML-KEM-768 key generation, RustCrypto + dalek: 99.32 µs, 5.22× the fastest +99.32 µs +ML-KEM-768 key generation, libcrux: 36.70 µs, 1.93× the fastest +36.70 µs +ML-KEM-768 key generation, OpenSSL: 64.00 µs, 3.36× the fastest +64.00 µs +ML-KEM-768 encapsulate +ML-KEM-768 encapsulate, rind: 19.37 µs, 1.00× the fastest +19.37 µs +ML-KEM-768 encapsulate, aws-lc-rs: 25.59 µs, 1.32× the fastest +25.59 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 107.39 µs, 5.55× the fastest +107.39 µs +ML-KEM-768 encapsulate, libcrux: 32.08 µs, 1.66× the fastest +32.08 µs +ML-KEM-768 encapsulate, OpenSSL: 68.64 µs, 3.54× the fastest +68.64 µs +ML-KEM-768 decapsulate +ML-KEM-768 decapsulate, rind: 12.58 µs, 1.00× the fastest +12.58 µs +ML-KEM-768 decapsulate, aws-lc-rs: 28.87 µs, 2.29× the fastest +28.87 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 129.01 µs, 10.25× the fastest +129.01 µs +ML-KEM-768 decapsulate, libcrux: 34.10 µs, 2.71× the fastest +34.10 µs +ML-KEM-768 decapsulate, OpenSSL: 49.30 µs, 3.92× the fastest +49.30 µs +P-384 and P-521 + +P-384 ECDH +P-384 ECDH, rind: 276.11 µs, 1.00× the fastest +276.11 µs +P-384 ECDH, aws-lc-rs: 303.78 µs, 1.10× the fastest +303.78 µs +P-384 ECDH, ring: 1.05 ms, 3.81× the fastest +1.05 ms +P-384 ECDH, RustCrypto + dalek: 1.24 ms, 4.50× the fastest +1.24 ms +P-384 ECDH, OpenSSL: 794.72 µs, 2.88× the fastest +794.72 µs +P-384 ECDSA sign +P-384 ECDSA sign, rind: 70.24 µs, 1.00× the fastest +70.24 µs +P-384 ECDSA sign, aws-lc-rs: 131.24 µs, 1.87× the fastest +131.24 µs +P-384 ECDSA sign, ring: 547.60 µs, 7.80× the fastest +547.60 µs +P-384 ECDSA sign, RustCrypto + dalek: 268.01 µs, 3.82× the fastest +268.01 µs +P-384 ECDSA sign, OpenSSL: 268.60 µs, 3.82× the fastest +268.60 µs +P-384 ECDSA verify +P-384 ECDSA verify, rind: 261.01 µs, 1.00× the fastest +261.01 µs +P-384 ECDSA verify, aws-lc-rs: 315.77 µs, 1.21× the fastest +315.77 µs +P-384 ECDSA verify, ring: 1.05 ms, 4.02× the fastest +1.05 ms +P-384 ECDSA verify, RustCrypto + dalek: 1.08 ms, 4.16× the fastest +1.08 ms +P-384 ECDSA verify, OpenSSL: 657.01 µs, 2.52× the fastest +657.01 µs +P-521 ECDH +P-521 ECDH, rind: 477.22 µs, 1.00× the fastest +477.22 µs +P-521 ECDH, aws-lc-rs: 502.59 µs, 1.05× the fastest +502.59 µs +P-521 ECDH, RustCrypto + dalek: 1.26 ms, 2.65× the fastest +1.26 ms +P-521 ECDH, OpenSSL: 751.84 µs, 1.58× the fastest +751.84 µs +P-521 ECDSA sign +P-521 ECDSA sign, rind: 122.73 µs, 1.00× the fastest +122.73 µs +P-521 ECDSA sign, aws-lc-rs: 260.74 µs, 2.12× the fastest +260.74 µs +P-521 ECDSA sign, RustCrypto + dalek: 289.27 µs, 2.36× the fastest +289.27 µs +P-521 ECDSA sign, OpenSSL: 378.85 µs, 3.09× the fastest +378.85 µs +P-521 ECDSA verify +P-521 ECDSA verify, rind: 434.67 µs, 1.00× the fastest +434.67 µs +P-521 ECDSA verify, aws-lc-rs: 544.59 µs, 1.25× the fastest +544.59 µs +P-521 ECDSA verify, RustCrypto + dalek: 1.02 ms, 2.34× the fastest +1.02 ms +P-521 ECDSA verify, OpenSSL: 750.34 µs, 1.73× the fastest +750.34 µs + diff --git a/benchmarks/ovh-sea-dark.svg b/benchmarks/ovh-sea-dark.svg new file mode 100644 index 000000000..c66edb8b9 --- /dev/null +++ b/benchmarks/ovh-sea-dark.svg @@ -0,0 +1,716 @@ + +Times on ovh-sea, by operation and library + +fastest, or within 10% + +to 1.25× + +to 1.5× + +to 2× + +to 4× + +to 8× + +over 8× +✓ +verified code +ovh-sea: Intel Core Processor (Haswell, no TSX) +rind +aws-lc-rs +ring +RustCrypto ++ dalek +libcrux +OpenSSL +TLS 1.3 with rustls + +full handshake, X25519MLKEM768 +full handshake, X25519MLKEM768, rind: 585.86 µs, 1.00× the fastest +585.86 µs +full handshake, X25519MLKEM768, aws-lc-rs: 682.34 µs, 1.16× the fastest +682.34 µs +full handshake, X25519MLKEM768, OpenSSL: 1.32 ms, 2.25× the fastest +1.32 ms +full handshake, X25519 +full handshake, X25519, rind: 454.19 µs, 1.00× the fastest +454.19 µs +full handshake, X25519, aws-lc-rs: 510.37 µs, 1.12× the fastest +510.37 µs +full handshake, X25519, ring: 526.42 µs, 1.16× the fastest +526.42 µs +full handshake, X25519, OpenSSL: 1.08 ms, 2.38× the fastest +1.08 ms +full handshake, P-256 +full handshake, P-256, rind: 511.71 µs, 1.00× the fastest +511.71 µs +full handshake, P-256, aws-lc-rs: 582.16 µs, 1.14× the fastest +582.16 µs +full handshake, P-256, ring: 541.36 µs, 1.06× the fastest +541.36 µs +full handshake, P-256, OpenSSL: 1.18 ms, 2.30× the fastest +1.18 ms +full handshake, Ed25519 certificate +full handshake, Ed25519 certificate, rind: 378.30 µs, 1.00× the fastest +378.30 µs +full handshake, Ed25519 certificate, aws-lc-rs: 436.82 µs, 1.15× the fastest +436.82 µs +full handshake, Ed25519 certificate, ring: 473.04 µs, 1.25× the fastest +473.04 µs +full handshake, Ed25519 certificate, OpenSSL: 1.18 ms, 3.13× the fastest +1.18 ms +full handshake, RSA-2048 certificate +full handshake, RSA-2048 certificate, rind: 1.09 ms, 1.00× the fastest +1.09 ms +full handshake, RSA-2048 certificate, aws-lc-rs: 1.20 ms, 1.10× the fastest +1.20 ms +full handshake, RSA-2048 certificate, ring: 1.40 ms, 1.28× the fastest +1.40 ms +full handshake, RSA-2048 certificate, OpenSSL: 1.76 ms, 1.62× the fastest +1.76 ms +resumed handshake, X25519 +resumed handshake, X25519, rind: 195.20 µs, 1.00× the fastest +195.20 µs +resumed handshake, X25519, aws-lc-rs: 258.21 µs, 1.32× the fastest +258.21 µs +resumed handshake, X25519, ring: 262.51 µs, 1.34× the fastest +262.51 µs +resumed handshake, X25519, OpenSSL: 723.47 µs, 3.71× the fastest +723.47 µs +1 MB transfer, AES-128-GCM +1 MB transfer, AES-128-GCM, rind: 678.24 µs, 1.02× the fastest +678.24 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 689.64 µs, 1.03× the fastest +689.64 µs +1 MB transfer, AES-128-GCM, ring: 668.04 µs, 1.00× the fastest +668.04 µs +1 MB transfer, AES-128-GCM, OpenSSL: 747.12 µs, 1.12× the fastest +747.12 µs +1 MB transfer, AES-256-GCM +1 MB transfer, AES-256-GCM, rind: 849.60 µs, 1.00× the fastest +849.60 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 845.52 µs, 1.00× the fastest +845.52 µs +1 MB transfer, AES-256-GCM, ring: 849.22 µs, 1.00× the fastest +849.22 µs +1 MB transfer, AES-256-GCM, OpenSSL: 933.35 µs, 1.10× the fastest +933.35 µs +1 MB transfer, ChaCha20-Poly1305 +1 MB transfer, ChaCha20-Poly1305, rind: 1.44 ms, 1.01× the fastest +1.44 ms +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 1.43 ms, 1.00× the fastest +1.43 ms +1 MB transfer, ChaCha20-Poly1305, ring: 1.44 ms, 1.01× the fastest +1.44 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.71 ms, 1.20× the fastest +1.71 ms +AEADs + +AES-128-GCM seal, 32 B +AES-128-GCM seal, 32 B, rind: 66 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +66 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 136 ns, 2.05× the fastest +136 ns +AES-128-GCM seal, 32 B, ring: 111 ns, 1.68× the fastest +111 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 155 ns, 2.35× the fastest +155 ns +AES-128-GCM seal, 32 B, libcrux: 435 ns, 6.59× the fastest +435 ns +AES-128-GCM seal, 32 B, OpenSSL: 233 ns, 3.53× the fastest +233 ns +AES-128-GCM seal, 1350 B +AES-128-GCM seal, 1350 B, rind: 387 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +387 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 445 ns, 1.15× the fastest +445 ns +AES-128-GCM seal, 1350 B, ring: 427 ns, 1.10× the fastest +427 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 854 ns, 2.21× the fastest +854 ns +AES-128-GCM seal, 1350 B, libcrux: 5.44 µs, 14.06× the fastest +5.44 µs +AES-128-GCM seal, 1350 B, OpenSSL: 550 ns, 1.42× the fastest +550 ns +AES-128-GCM seal, 16 KB +AES-128-GCM seal, 16 KB, rind: 3.70 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.70 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 3.70 µs, 1.01× the fastest +3.70 µs +AES-128-GCM seal, 16 KB, ring: 3.67 µs, 1.00× the fastest +3.67 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 8.67 µs, 2.36× the fastest +8.67 µs +AES-128-GCM seal, 16 KB, libcrux: 60.39 µs, 16.47× the fastest +60.39 µs +AES-128-GCM seal, 16 KB, OpenSSL: 3.81 µs, 1.04× the fastest +3.81 µs +AES-128-GCM open, 32 B +AES-128-GCM open, 32 B, rind: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +61 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 138 ns, 2.28× the fastest +138 ns +AES-128-GCM open, 32 B, ring: 124 ns, 2.04× the fastest +124 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 162 ns, 2.66× the fastest +162 ns +AES-128-GCM open, 32 B, libcrux: 465 ns, 7.65× the fastest +465 ns +AES-128-GCM open, 32 B, OpenSSL: 242 ns, 3.99× the fastest +242 ns +AES-128-GCM open, 1350 B +AES-128-GCM open, 1350 B, rind: 373 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +373 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 444 ns, 1.19× the fastest +444 ns +AES-128-GCM open, 1350 B, ring: 440 ns, 1.18× the fastest +440 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 881 ns, 2.37× the fastest +881 ns +AES-128-GCM open, 1350 B, libcrux: 5.33 µs, 14.31× the fastest +5.33 µs +AES-128-GCM open, 1350 B, OpenSSL: 552 ns, 1.48× the fastest +552 ns +AES-128-GCM open, 16 KB +AES-128-GCM open, 16 KB, rind: 3.78 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.78 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 3.90 µs, 1.03× the fastest +3.90 µs +AES-128-GCM open, 16 KB, ring: 3.77 µs, 1.00× the fastest +3.77 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 8.84 µs, 2.34× the fastest +8.84 µs +AES-128-GCM open, 16 KB, libcrux: 60.11 µs, 15.93× the fastest +60.11 µs +AES-128-GCM open, 16 KB, OpenSSL: 4.03 µs, 1.07× the fastest +4.03 µs +AES-256-GCM seal, 32 B +AES-256-GCM seal, 32 B, rind: 74 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +74 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 146 ns, 1.96× the fastest +146 ns +AES-256-GCM seal, 32 B, ring: 117 ns, 1.57× the fastest +117 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 166 ns, 2.23× the fastest +166 ns +AES-256-GCM seal, 32 B, libcrux: 531 ns, 7.14× the fastest +531 ns +AES-256-GCM seal, 32 B, OpenSSL: 250 ns, 3.36× the fastest +250 ns +AES-256-GCM seal, 1350 B +AES-256-GCM seal, 1350 B, rind: 495 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +495 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 559 ns, 1.13× the fastest +559 ns +AES-256-GCM seal, 1350 B, ring: 538 ns, 1.09× the fastest +538 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 963 ns, 1.95× the fastest +963 ns +AES-256-GCM seal, 1350 B, libcrux: 6.89 µs, 13.93× the fastest +6.89 µs +AES-256-GCM seal, 1350 B, OpenSSL: 651 ns, 1.32× the fastest +651 ns +AES-256-GCM seal, 16 KB +AES-256-GCM seal, 16 KB, rind: 5.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.00 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 5.10 µs, 1.02× the fastest +5.10 µs +AES-256-GCM seal, 16 KB, ring: 5.02 µs, 1.00× the fastest +5.02 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 9.97 µs, 2.00× the fastest +9.97 µs +AES-256-GCM seal, 16 KB, libcrux: 78.65 µs, 15.74× the fastest +78.65 µs +AES-256-GCM seal, 16 KB, OpenSSL: 5.12 µs, 1.02× the fastest +5.12 µs +AES-256-GCM open, 32 B +AES-256-GCM open, 32 B, rind: 68 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +68 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 146 ns, 2.14× the fastest +146 ns +AES-256-GCM open, 32 B, ring: 127 ns, 1.86× the fastest +127 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 173 ns, 2.54× the fastest +173 ns +AES-256-GCM open, 32 B, libcrux: 562 ns, 8.27× the fastest +562 ns +AES-256-GCM open, 32 B, OpenSSL: 248 ns, 3.65× the fastest +248 ns +AES-256-GCM open, 1350 B +AES-256-GCM open, 1350 B, rind: 480 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +480 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 560 ns, 1.17× the fastest +560 ns +AES-256-GCM open, 1350 B, ring: 537 ns, 1.12× the fastest +537 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 991 ns, 2.06× the fastest +991 ns +AES-256-GCM open, 1350 B, libcrux: 6.87 µs, 14.32× the fastest +6.87 µs +AES-256-GCM open, 1350 B, OpenSSL: 649 ns, 1.35× the fastest +649 ns +AES-256-GCM open, 16 KB +AES-256-GCM open, 16 KB, rind: 5.15 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.15 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 5.23 µs, 1.02× the fastest +5.23 µs +AES-256-GCM open, 16 KB, ring: 5.22 µs, 1.02× the fastest +5.22 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 10.13 µs, 1.97× the fastest +10.13 µs +AES-256-GCM open, 16 KB, libcrux: 78.52 µs, 15.26× the fastest +78.52 µs +AES-256-GCM open, 16 KB, OpenSSL: 5.38 µs, 1.05× the fastest +5.38 µs +ChaCha20-Poly1305 seal, 32 B +ChaCha20-Poly1305 seal, 32 B, rind: 187 ns, 1.00× the fastest +187 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 210 ns, 1.12× the fastest +210 ns +ChaCha20-Poly1305 seal, 32 B, ring: 189 ns, 1.01× the fastest +189 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.74 µs, 9.32× the fastest +1.74 µs +ChaCha20-Poly1305 seal, 32 B, libcrux: 429 ns, 2.29× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +429 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 495 ns, 2.64× the fastest +495 ns +ChaCha20-Poly1305 seal, 1350 B +ChaCha20-Poly1305 seal, 1350 B, rind: 1.03 µs, 1.00× the fastest +1.03 µs +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.06 µs, 1.03× the fastest +1.06 µs +ChaCha20-Poly1305 seal, 1350 B, ring: 1.04 µs, 1.01× the fastest +1.04 µs +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.16 µs, 3.07× the fastest +3.16 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 4.62 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +4.62 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 1.57 µs, 1.52× the fastest +1.57 µs +ChaCha20-Poly1305 seal, 16 KB +ChaCha20-Poly1305 seal, 16 KB, rind: 9.66 µs, 1.01× the fastest +9.66 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 9.60 µs, 1.00× the fastest +9.60 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 9.59 µs, 1.00× the fastest +9.59 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.38 µs, 1.92× the fastest +18.38 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 52.14 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +52.14 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 10.99 µs, 1.15× the fastest +10.99 µs +XChaCha20-Poly1305 seal, 32 B +XChaCha20-Poly1305 seal, 32 B, rind: 402 ns, 1.00× the fastest +402 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 433 ns, 1.08× the fastest +433 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.98 µs, 4.92× the fastest +1.98 µs +XChaCha20-Poly1305 seal, 32 B, libcrux: 631 ns, 1.57× the fastest +631 ns +XChaCha20-Poly1305 seal, 1350 B +XChaCha20-Poly1305 seal, 1350 B, rind: 1.25 µs, 1.00× the fastest +1.25 µs +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.32 µs, 1.05× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.36 µs, 2.68× the fastest +3.36 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 4.83 µs, 3.86× the fastest +4.83 µs +XChaCha20-Poly1305 seal, 16 KB +XChaCha20-Poly1305 seal, 16 KB, rind: 9.89 µs, 1.00× the fastest +9.89 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 9.93 µs, 1.00× the fastest +9.93 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.67 µs, 1.89× the fastest +18.67 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 51.64 µs, 5.22× the fastest +51.64 µs +QUIC header protection + +AES-128 header protection +AES-128 header protection, rind: 7 ns, 1.00× the fastest +7 ns +AES-128 header protection, aws-lc-rs: 12 ns, 1.64× the fastest +12 ns +AES-128 header protection, ring: 12 ns, 1.72× the fastest +12 ns +AES-256 header protection +AES-256 header protection, rind: 9 ns, 1.00× the fastest +9 ns +AES-256 header protection, aws-lc-rs: 15 ns, 1.57× the fastest +15 ns +AES-256 header protection, ring: 15 ns, 1.56× the fastest +15 ns +ChaCha20 header protection +ChaCha20 header protection, rind: 123 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +123 ns ✓ +ChaCha20 header protection, aws-lc-rs: 151 ns, 1.23× the fastest +151 ns +ChaCha20 header protection, ring: 136 ns, 1.11× the fastest +136 ns +Key agreement + +X25519 +X25519, rind: 49.74 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +49.74 µs ✓ +X25519, aws-lc-rs: 50.78 µs, 1.02× the fastest +50.78 µs +X25519, ring: 75.97 µs, 1.53× the fastest +75.97 µs +X25519, RustCrypto + dalek: 89.48 µs, 1.80× the fastest +89.48 µs +X25519, libcrux: 111.77 µs, 2.25× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +111.77 µs ✓ +X25519, OpenSSL: 96.94 µs, 1.95× the fastest +96.94 µs +P-256 ECDH +P-256 ECDH, rind: 79.73 µs, 1.00× the fastest +79.73 µs +P-256 ECDH, aws-lc-rs: 84.92 µs, 1.07× the fastest +84.92 µs +P-256 ECDH, ring: 83.88 µs, 1.05× the fastest +83.88 µs +P-256 ECDH, RustCrypto + dalek: 361.66 µs, 4.54× the fastest +361.66 µs +P-256 ECDH, libcrux: 435.47 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +435.47 µs ✓ +P-256 ECDH, OpenSSL: 135.67 µs, 1.70× the fastest +135.67 µs +Signatures + +Ed25519 sign +Ed25519 sign, rind: 11.76 µs, 1.00× the fastest +11.76 µs +Ed25519 sign, aws-lc-rs: 12.44 µs, 1.06× the fastest +12.44 µs +Ed25519 sign, ring: 28.85 µs, 2.45× the fastest +28.85 µs +Ed25519 sign, RustCrypto + dalek: 23.39 µs, 1.99× the fastest +23.39 µs +Ed25519 sign, libcrux: 74.60 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +74.60 µs ✓ +Ed25519 sign, OpenSSL: 41.54 µs, 3.53× the fastest +41.54 µs +Ed25519 verify +Ed25519 verify, rind: 58.82 µs, 1.28× the fastest +58.82 µs +Ed25519 verify, aws-lc-rs: 57.65 µs, 1.26× the fastest +57.65 µs +Ed25519 verify, ring: 60.53 µs, 1.32× the fastest +60.53 µs +Ed25519 verify, RustCrypto + dalek: 45.94 µs, 1.00× the fastest +45.94 µs +Ed25519 verify, libcrux: 94.85 µs, 2.06× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +94.85 µs ✓ +Ed25519 verify, OpenSSL: 136.82 µs, 2.98× the fastest +136.82 µs +P-256 ECDSA sign +P-256 ECDSA sign, rind: 21.44 µs, 1.00× the fastest +21.44 µs +P-256 ECDSA sign, aws-lc-rs: 23.66 µs, 1.10× the fastest +23.66 µs +P-256 ECDSA sign, ring: 25.02 µs, 1.17× the fastest +25.02 µs +P-256 ECDSA sign, RustCrypto + dalek: 105.57 µs, 4.92× the fastest +105.57 µs +P-256 ECDSA sign, libcrux: 155.91 µs, 7.27× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +155.91 µs ✓ +P-256 ECDSA sign, OpenSSL: 31.72 µs, 1.48× the fastest +31.72 µs +P-256 ECDSA verify +P-256 ECDSA verify, rind: 78.07 µs, 1.03× the fastest +78.07 µs +P-256 ECDSA verify, aws-lc-rs: 76.02 µs, 1.00× the fastest +76.02 µs +P-256 ECDSA verify, ring: 77.17 µs, 1.02× the fastest +77.17 µs +P-256 ECDSA verify, RustCrypto + dalek: 304.06 µs, 4.00× the fastest +304.06 µs +P-256 ECDSA verify, libcrux: 365.46 µs, 4.81× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +365.46 µs ✓ +P-256 ECDSA verify, OpenSSL: 112.54 µs, 1.48× the fastest +112.54 µs +Hashes and KDFs + +SHA-256, 64 B +SHA-256, 64 B, rind: 381 ns, 1.00× the fastest +381 ns +SHA-256, 64 B, aws-lc-rs: 479 ns, 1.26× the fastest +479 ns +SHA-256, 64 B, ring: 425 ns, 1.11× the fastest +425 ns +SHA-256, 64 B, RustCrypto + dalek: 734 ns, 1.92× the fastest +734 ns +SHA-256, 64 B, libcrux: 751 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +751 ns ✓ +SHA-256, 64 B, OpenSSL: 792 ns, 2.08× the fastest +792 ns +SHA-256, 1350 B +SHA-256, 1350 B, rind: 3.82 µs, 1.00× the fastest +3.82 µs +SHA-256, 1350 B, aws-lc-rs: 4.30 µs, 1.13× the fastest +4.30 µs +SHA-256, 1350 B, ring: 4.27 µs, 1.12× the fastest +4.27 µs +SHA-256, 1350 B, RustCrypto + dalek: 7.80 µs, 2.04× the fastest +7.80 µs +SHA-256, 1350 B, libcrux: 8.29 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +8.29 µs ✓ +SHA-256, 1350 B, OpenSSL: 4.16 µs, 1.09× the fastest +4.16 µs +SHA-256, 16 KB +SHA-256, 16 KB, rind: 43.31 µs, 1.00× the fastest +43.31 µs +SHA-256, 16 KB, aws-lc-rs: 48.32 µs, 1.12× the fastest +48.32 µs +SHA-256, 16 KB, ring: 48.73 µs, 1.13× the fastest +48.73 µs +SHA-256, 16 KB, RustCrypto + dalek: 89.76 µs, 2.07× the fastest +89.76 µs +SHA-256, 16 KB, libcrux: 94.03 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +94.03 µs ✓ +SHA-256, 16 KB, OpenSSL: 43.45 µs, 1.00× the fastest +43.45 µs +SHA-512, 64 B +SHA-512, 64 B, rind: 310 ns, 1.00× the fastest +310 ns +SHA-512, 64 B, aws-lc-rs: 357 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +357 ns ✓ +SHA-512, 64 B, ring: 312 ns, 1.01× the fastest +312 ns +SHA-512, 64 B, RustCrypto + dalek: 418 ns, 1.35× the fastest +418 ns +SHA-512, 64 B, libcrux: 448 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +448 ns ✓ +SHA-512, 64 B, OpenSSL: 671 ns, 2.16× the fastest +671 ns +SHA-512, 1350 B +SHA-512, 1350 B, rind: 2.61 µs, 1.00× the fastest +2.61 µs +SHA-512, 1350 B, aws-lc-rs: 2.99 µs, 1.14× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +2.99 µs ✓ +SHA-512, 1350 B, ring: 2.93 µs, 1.12× the fastest +2.93 µs +SHA-512, 1350 B, RustCrypto + dalek: 4.17 µs, 1.60× the fastest +4.17 µs +SHA-512, 1350 B, libcrux: 4.74 µs, 1.82× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +4.74 µs ✓ +SHA-512, 1350 B, OpenSSL: 2.96 µs, 1.13× the fastest +2.96 µs +SHA-512, 16 KB +SHA-512, 16 KB, rind: 28.35 µs, 1.00× the fastest +28.35 µs +SHA-512, 16 KB, aws-lc-rs: 33.98 µs, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +33.98 µs ✓ +SHA-512, 16 KB, ring: 33.85 µs, 1.19× the fastest +33.85 µs +SHA-512, 16 KB, RustCrypto + dalek: 47.68 µs, 1.68× the fastest +47.68 µs +SHA-512, 16 KB, libcrux: 55.08 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +55.08 µs ✓ +SHA-512, 16 KB, OpenSSL: 29.86 µs, 1.05× the fastest +29.86 µs +HMAC-SHA256, 64 B +HMAC-SHA256, 64 B, rind: 964 ns, 1.00× the fastest +964 ns +HMAC-SHA256, 64 B, aws-lc-rs: 1.25 µs, 1.30× the fastest +1.25 µs +HMAC-SHA256, 64 B, ring: 1.11 µs, 1.15× the fastest +1.11 µs +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.84 µs, 1.91× the fastest +1.84 µs +HMAC-SHA256, 64 B, libcrux: 1.85 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.85 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 5.65 µs, 5.86× the fastest +5.65 µs +HMAC-SHA256, 1350 B +HMAC-SHA256, 1350 B, rind: 4.33 µs, 1.00× the fastest +4.33 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 5.01 µs, 1.16× the fastest +5.01 µs +HMAC-SHA256, 1350 B, ring: 4.88 µs, 1.13× the fastest +4.88 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 8.93 µs, 2.06× the fastest +8.93 µs +HMAC-SHA256, 1350 B, libcrux: 9.26 µs, 2.14× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +9.26 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 9.20 µs, 2.13× the fastest +9.20 µs +HKDF-SHA256 extract and expand +HKDF-SHA256 extract and expand, rind: 1.71 µs, 1.00× the fastest +1.71 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 2.07 µs, 1.21× the fastest +2.07 µs +HKDF-SHA256 extract and expand, ring: 1.84 µs, 1.07× the fastest +1.84 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 3.02 µs, 1.76× the fastest +3.02 µs +HKDF-SHA256 extract and expand, libcrux: 3.05 µs, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +3.05 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 6.74 µs, 3.93× the fastest +6.74 µs +HKDF-SHA256 expand +HKDF-SHA256 expand, rind: 462 ns, 1.00× the fastest +462 ns +HKDF-SHA256 expand, aws-lc-rs: 988 ns, 2.14× the fastest +988 ns +HKDF-SHA256 expand, ring: 509 ns, 1.10× the fastest +509 ns +HKDF-SHA256 expand, RustCrypto + dalek: 771 ns, 1.67× the fastest +771 ns +HKDF-SHA256 expand, libcrux: 1.58 µs, 3.42× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.58 µs ✓ +HKDF-SHA256 expand, OpenSSL: 4.47 µs, 9.67× the fastest +4.47 µs +RSA + +RSA-2048 PKCS#1 sign +RSA-2048 PKCS#1 sign, rind: 744.79 µs, 1.00× the fastest +744.79 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 767.91 µs, 1.03× the fastest +767.91 µs +RSA-2048 PKCS#1 sign, ring: 1.00 ms, 1.34× the fastest +1.00 ms +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.77 ms, 2.38× the fastest +1.77 ms +RSA-2048 PKCS#1 sign, OpenSSL: 786.07 µs, 1.06× the fastest +786.07 µs +RSA-2048 PKCS#1 verify +RSA-2048 PKCS#1 verify, rind: 30.16 µs, 1.00× the fastest +30.16 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 34.24 µs, 1.14× the fastest +34.24 µs +RSA-2048 PKCS#1 verify, ring: 37.78 µs, 1.25× the fastest +37.78 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 87.58 µs, 2.90× the fastest +87.58 µs +RSA-2048 PKCS#1 verify, OpenSSL: 47.33 µs, 1.57× the fastest +47.33 µs +RSA-2048 PSS sign +RSA-2048 PSS sign, rind: 743.83 µs, 1.00× the fastest +743.83 µs +RSA-2048 PSS sign, aws-lc-rs: 772.63 µs, 1.04× the fastest +772.63 µs +RSA-2048 PSS sign, ring: 993.35 µs, 1.34× the fastest +993.35 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.77 ms, 2.37× the fastest +1.77 ms +RSA-2048 PSS sign, libcrux: 10.71 ms, 14.40× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +10.71 ms ✓ +RSA-2048 PSS sign, OpenSSL: 784.77 µs, 1.06× the fastest +784.77 µs +RSA-2048 PSS verify +RSA-2048 PSS verify, rind: 32.49 µs, 1.00× the fastest +32.49 µs +RSA-2048 PSS verify, aws-lc-rs: 35.56 µs, 1.09× the fastest +35.56 µs +RSA-2048 PSS verify, ring: 39.91 µs, 1.23× the fastest +39.91 µs +RSA-2048 PSS verify, RustCrypto + dalek: 107.72 µs, 3.32× the fastest +107.72 µs +RSA-2048 PSS verify, libcrux: 582.63 µs, 17.93× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +582.63 µs ✓ +RSA-2048 PSS verify, OpenSSL: 51.25 µs, 1.58× the fastest +51.25 µs +ML-KEM + +ML-KEM-768 key generation +ML-KEM-768 key generation, rind: 17.40 µs, 1.00× the fastest +17.40 µs +ML-KEM-768 key generation, aws-lc-rs: 23.24 µs, 1.34× the fastest +23.24 µs +ML-KEM-768 key generation, RustCrypto + dalek: 92.15 µs, 5.30× the fastest +92.15 µs +ML-KEM-768 key generation, libcrux: 34.82 µs, 2.00× the fastest +34.82 µs +ML-KEM-768 key generation, OpenSSL: 62.15 µs, 3.57× the fastest +62.15 µs +ML-KEM-768 encapsulate +ML-KEM-768 encapsulate, rind: 18.55 µs, 1.00× the fastest +18.55 µs +ML-KEM-768 encapsulate, aws-lc-rs: 23.54 µs, 1.27× the fastest +23.54 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 101.25 µs, 5.46× the fastest +101.25 µs +ML-KEM-768 encapsulate, libcrux: 31.43 µs, 1.69× the fastest +31.43 µs +ML-KEM-768 encapsulate, OpenSSL: 63.30 µs, 3.41× the fastest +63.30 µs +ML-KEM-768 decapsulate +ML-KEM-768 decapsulate, rind: 12.10 µs, 1.00× the fastest +12.10 µs +ML-KEM-768 decapsulate, aws-lc-rs: 27.41 µs, 2.27× the fastest +27.41 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 127.16 µs, 10.51× the fastest +127.16 µs +ML-KEM-768 decapsulate, libcrux: 32.99 µs, 2.73× the fastest +32.99 µs +ML-KEM-768 decapsulate, OpenSSL: 48.46 µs, 4.01× the fastest +48.46 µs +P-384 and P-521 + +P-384 ECDH +P-384 ECDH, rind: 265.15 µs, 1.00× the fastest +265.15 µs +P-384 ECDH, aws-lc-rs: 293.83 µs, 1.11× the fastest +293.83 µs +P-384 ECDH, ring: 986.79 µs, 3.72× the fastest +986.79 µs +P-384 ECDH, RustCrypto + dalek: 1.17 ms, 4.42× the fastest +1.17 ms +P-384 ECDH, OpenSSL: 744.13 µs, 2.81× the fastest +744.13 µs +P-384 ECDSA sign +P-384 ECDSA sign, rind: 67.30 µs, 1.00× the fastest +67.30 µs +P-384 ECDSA sign, aws-lc-rs: 126.70 µs, 1.88× the fastest +126.70 µs +P-384 ECDSA sign, ring: 546.26 µs, 8.12× the fastest +546.26 µs +P-384 ECDSA sign, RustCrypto + dalek: 263.32 µs, 3.91× the fastest +263.32 µs +P-384 ECDSA sign, OpenSSL: 253.09 µs, 3.76× the fastest +253.09 µs +P-384 ECDSA verify +P-384 ECDSA verify, rind: 253.92 µs, 1.00× the fastest +253.92 µs +P-384 ECDSA verify, aws-lc-rs: 297.22 µs, 1.17× the fastest +297.22 µs +P-384 ECDSA verify, ring: 957.13 µs, 3.77× the fastest +957.13 µs +P-384 ECDSA verify, RustCrypto + dalek: 1.05 ms, 4.14× the fastest +1.05 ms +P-384 ECDSA verify, OpenSSL: 631.24 µs, 2.49× the fastest +631.24 µs +P-521 ECDH +P-521 ECDH, rind: 453.02 µs, 1.00× the fastest +453.02 µs +P-521 ECDH, aws-lc-rs: 486.31 µs, 1.07× the fastest +486.31 µs +P-521 ECDH, RustCrypto + dalek: 1.21 ms, 2.66× the fastest +1.21 ms +P-521 ECDH, OpenSSL: 720.27 µs, 1.59× the fastest +720.27 µs +P-521 ECDSA sign +P-521 ECDSA sign, rind: 115.63 µs, 1.00× the fastest +115.63 µs +P-521 ECDSA sign, aws-lc-rs: 251.35 µs, 2.17× the fastest +251.35 µs +P-521 ECDSA sign, RustCrypto + dalek: 288.95 µs, 2.50× the fastest +288.95 µs +P-521 ECDSA sign, OpenSSL: 343.62 µs, 2.97× the fastest +343.62 µs +P-521 ECDSA verify +P-521 ECDSA verify, rind: 406.77 µs, 1.00× the fastest +406.77 µs +P-521 ECDSA verify, aws-lc-rs: 524.48 µs, 1.29× the fastest +524.48 µs +P-521 ECDSA verify, RustCrypto + dalek: 1.03 ms, 2.54× the fastest +1.03 ms +P-521 ECDSA verify, OpenSSL: 698.05 µs, 1.72× the fastest +698.05 µs + diff --git a/benchmarks/ovh-sea.svg b/benchmarks/ovh-sea.svg new file mode 100644 index 000000000..994ebfe5d --- /dev/null +++ b/benchmarks/ovh-sea.svg @@ -0,0 +1,716 @@ + +Times on ovh-sea, by operation and library + +fastest, or within 10% + +to 1.25× + +to 1.5× + +to 2× + +to 4× + +to 8× + +over 8× +✓ +verified code +ovh-sea: Intel Core Processor (Haswell, no TSX) +rind +aws-lc-rs +ring +RustCrypto ++ dalek +libcrux +OpenSSL +TLS 1.3 with rustls + +full handshake, X25519MLKEM768 +full handshake, X25519MLKEM768, rind: 585.86 µs, 1.00× the fastest +585.86 µs +full handshake, X25519MLKEM768, aws-lc-rs: 682.34 µs, 1.16× the fastest +682.34 µs +full handshake, X25519MLKEM768, OpenSSL: 1.32 ms, 2.25× the fastest +1.32 ms +full handshake, X25519 +full handshake, X25519, rind: 454.19 µs, 1.00× the fastest +454.19 µs +full handshake, X25519, aws-lc-rs: 510.37 µs, 1.12× the fastest +510.37 µs +full handshake, X25519, ring: 526.42 µs, 1.16× the fastest +526.42 µs +full handshake, X25519, OpenSSL: 1.08 ms, 2.38× the fastest +1.08 ms +full handshake, P-256 +full handshake, P-256, rind: 511.71 µs, 1.00× the fastest +511.71 µs +full handshake, P-256, aws-lc-rs: 582.16 µs, 1.14× the fastest +582.16 µs +full handshake, P-256, ring: 541.36 µs, 1.06× the fastest +541.36 µs +full handshake, P-256, OpenSSL: 1.18 ms, 2.30× the fastest +1.18 ms +full handshake, Ed25519 certificate +full handshake, Ed25519 certificate, rind: 378.30 µs, 1.00× the fastest +378.30 µs +full handshake, Ed25519 certificate, aws-lc-rs: 436.82 µs, 1.15× the fastest +436.82 µs +full handshake, Ed25519 certificate, ring: 473.04 µs, 1.25× the fastest +473.04 µs +full handshake, Ed25519 certificate, OpenSSL: 1.18 ms, 3.13× the fastest +1.18 ms +full handshake, RSA-2048 certificate +full handshake, RSA-2048 certificate, rind: 1.09 ms, 1.00× the fastest +1.09 ms +full handshake, RSA-2048 certificate, aws-lc-rs: 1.20 ms, 1.10× the fastest +1.20 ms +full handshake, RSA-2048 certificate, ring: 1.40 ms, 1.28× the fastest +1.40 ms +full handshake, RSA-2048 certificate, OpenSSL: 1.76 ms, 1.62× the fastest +1.76 ms +resumed handshake, X25519 +resumed handshake, X25519, rind: 195.20 µs, 1.00× the fastest +195.20 µs +resumed handshake, X25519, aws-lc-rs: 258.21 µs, 1.32× the fastest +258.21 µs +resumed handshake, X25519, ring: 262.51 µs, 1.34× the fastest +262.51 µs +resumed handshake, X25519, OpenSSL: 723.47 µs, 3.71× the fastest +723.47 µs +1 MB transfer, AES-128-GCM +1 MB transfer, AES-128-GCM, rind: 678.24 µs, 1.02× the fastest +678.24 µs +1 MB transfer, AES-128-GCM, aws-lc-rs: 689.64 µs, 1.03× the fastest +689.64 µs +1 MB transfer, AES-128-GCM, ring: 668.04 µs, 1.00× the fastest +668.04 µs +1 MB transfer, AES-128-GCM, OpenSSL: 747.12 µs, 1.12× the fastest +747.12 µs +1 MB transfer, AES-256-GCM +1 MB transfer, AES-256-GCM, rind: 849.60 µs, 1.00× the fastest +849.60 µs +1 MB transfer, AES-256-GCM, aws-lc-rs: 845.52 µs, 1.00× the fastest +845.52 µs +1 MB transfer, AES-256-GCM, ring: 849.22 µs, 1.00× the fastest +849.22 µs +1 MB transfer, AES-256-GCM, OpenSSL: 933.35 µs, 1.10× the fastest +933.35 µs +1 MB transfer, ChaCha20-Poly1305 +1 MB transfer, ChaCha20-Poly1305, rind: 1.44 ms, 1.01× the fastest +1.44 ms +1 MB transfer, ChaCha20-Poly1305, aws-lc-rs: 1.43 ms, 1.00× the fastest +1.43 ms +1 MB transfer, ChaCha20-Poly1305, ring: 1.44 ms, 1.01× the fastest +1.44 ms +1 MB transfer, ChaCha20-Poly1305, OpenSSL: 1.71 ms, 1.20× the fastest +1.71 ms +AEADs + +AES-128-GCM seal, 32 B +AES-128-GCM seal, 32 B, rind: 66 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +66 ns ✓ +AES-128-GCM seal, 32 B, aws-lc-rs: 136 ns, 2.05× the fastest +136 ns +AES-128-GCM seal, 32 B, ring: 111 ns, 1.68× the fastest +111 ns +AES-128-GCM seal, 32 B, RustCrypto + dalek: 155 ns, 2.35× the fastest +155 ns +AES-128-GCM seal, 32 B, libcrux: 435 ns, 6.59× the fastest +435 ns +AES-128-GCM seal, 32 B, OpenSSL: 233 ns, 3.53× the fastest +233 ns +AES-128-GCM seal, 1350 B +AES-128-GCM seal, 1350 B, rind: 387 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +387 ns ✓ +AES-128-GCM seal, 1350 B, aws-lc-rs: 445 ns, 1.15× the fastest +445 ns +AES-128-GCM seal, 1350 B, ring: 427 ns, 1.10× the fastest +427 ns +AES-128-GCM seal, 1350 B, RustCrypto + dalek: 854 ns, 2.21× the fastest +854 ns +AES-128-GCM seal, 1350 B, libcrux: 5.44 µs, 14.06× the fastest +5.44 µs +AES-128-GCM seal, 1350 B, OpenSSL: 550 ns, 1.42× the fastest +550 ns +AES-128-GCM seal, 16 KB +AES-128-GCM seal, 16 KB, rind: 3.70 µs, 1.01× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.70 µs ✓ +AES-128-GCM seal, 16 KB, aws-lc-rs: 3.70 µs, 1.01× the fastest +3.70 µs +AES-128-GCM seal, 16 KB, ring: 3.67 µs, 1.00× the fastest +3.67 µs +AES-128-GCM seal, 16 KB, RustCrypto + dalek: 8.67 µs, 2.36× the fastest +8.67 µs +AES-128-GCM seal, 16 KB, libcrux: 60.39 µs, 16.47× the fastest +60.39 µs +AES-128-GCM seal, 16 KB, OpenSSL: 3.81 µs, 1.04× the fastest +3.81 µs +AES-128-GCM open, 32 B +AES-128-GCM open, 32 B, rind: 61 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +61 ns ✓ +AES-128-GCM open, 32 B, aws-lc-rs: 138 ns, 2.28× the fastest +138 ns +AES-128-GCM open, 32 B, ring: 124 ns, 2.04× the fastest +124 ns +AES-128-GCM open, 32 B, RustCrypto + dalek: 162 ns, 2.66× the fastest +162 ns +AES-128-GCM open, 32 B, libcrux: 465 ns, 7.65× the fastest +465 ns +AES-128-GCM open, 32 B, OpenSSL: 242 ns, 3.99× the fastest +242 ns +AES-128-GCM open, 1350 B +AES-128-GCM open, 1350 B, rind: 373 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +373 ns ✓ +AES-128-GCM open, 1350 B, aws-lc-rs: 444 ns, 1.19× the fastest +444 ns +AES-128-GCM open, 1350 B, ring: 440 ns, 1.18× the fastest +440 ns +AES-128-GCM open, 1350 B, RustCrypto + dalek: 881 ns, 2.37× the fastest +881 ns +AES-128-GCM open, 1350 B, libcrux: 5.33 µs, 14.31× the fastest +5.33 µs +AES-128-GCM open, 1350 B, OpenSSL: 552 ns, 1.48× the fastest +552 ns +AES-128-GCM open, 16 KB +AES-128-GCM open, 16 KB, rind: 3.78 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +3.78 µs ✓ +AES-128-GCM open, 16 KB, aws-lc-rs: 3.90 µs, 1.03× the fastest +3.90 µs +AES-128-GCM open, 16 KB, ring: 3.77 µs, 1.00× the fastest +3.77 µs +AES-128-GCM open, 16 KB, RustCrypto + dalek: 8.84 µs, 2.34× the fastest +8.84 µs +AES-128-GCM open, 16 KB, libcrux: 60.11 µs, 15.93× the fastest +60.11 µs +AES-128-GCM open, 16 KB, OpenSSL: 4.03 µs, 1.07× the fastest +4.03 µs +AES-256-GCM seal, 32 B +AES-256-GCM seal, 32 B, rind: 74 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +74 ns ✓ +AES-256-GCM seal, 32 B, aws-lc-rs: 146 ns, 1.96× the fastest +146 ns +AES-256-GCM seal, 32 B, ring: 117 ns, 1.57× the fastest +117 ns +AES-256-GCM seal, 32 B, RustCrypto + dalek: 166 ns, 2.23× the fastest +166 ns +AES-256-GCM seal, 32 B, libcrux: 531 ns, 7.14× the fastest +531 ns +AES-256-GCM seal, 32 B, OpenSSL: 250 ns, 3.36× the fastest +250 ns +AES-256-GCM seal, 1350 B +AES-256-GCM seal, 1350 B, rind: 495 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +495 ns ✓ +AES-256-GCM seal, 1350 B, aws-lc-rs: 559 ns, 1.13× the fastest +559 ns +AES-256-GCM seal, 1350 B, ring: 538 ns, 1.09× the fastest +538 ns +AES-256-GCM seal, 1350 B, RustCrypto + dalek: 963 ns, 1.95× the fastest +963 ns +AES-256-GCM seal, 1350 B, libcrux: 6.89 µs, 13.93× the fastest +6.89 µs +AES-256-GCM seal, 1350 B, OpenSSL: 651 ns, 1.32× the fastest +651 ns +AES-256-GCM seal, 16 KB +AES-256-GCM seal, 16 KB, rind: 5.00 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.00 µs ✓ +AES-256-GCM seal, 16 KB, aws-lc-rs: 5.10 µs, 1.02× the fastest +5.10 µs +AES-256-GCM seal, 16 KB, ring: 5.02 µs, 1.00× the fastest +5.02 µs +AES-256-GCM seal, 16 KB, RustCrypto + dalek: 9.97 µs, 2.00× the fastest +9.97 µs +AES-256-GCM seal, 16 KB, libcrux: 78.65 µs, 15.74× the fastest +78.65 µs +AES-256-GCM seal, 16 KB, OpenSSL: 5.12 µs, 1.02× the fastest +5.12 µs +AES-256-GCM open, 32 B +AES-256-GCM open, 32 B, rind: 68 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +68 ns ✓ +AES-256-GCM open, 32 B, aws-lc-rs: 146 ns, 2.14× the fastest +146 ns +AES-256-GCM open, 32 B, ring: 127 ns, 1.86× the fastest +127 ns +AES-256-GCM open, 32 B, RustCrypto + dalek: 173 ns, 2.54× the fastest +173 ns +AES-256-GCM open, 32 B, libcrux: 562 ns, 8.27× the fastest +562 ns +AES-256-GCM open, 32 B, OpenSSL: 248 ns, 3.65× the fastest +248 ns +AES-256-GCM open, 1350 B +AES-256-GCM open, 1350 B, rind: 480 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +480 ns ✓ +AES-256-GCM open, 1350 B, aws-lc-rs: 560 ns, 1.17× the fastest +560 ns +AES-256-GCM open, 1350 B, ring: 537 ns, 1.12× the fastest +537 ns +AES-256-GCM open, 1350 B, RustCrypto + dalek: 991 ns, 2.06× the fastest +991 ns +AES-256-GCM open, 1350 B, libcrux: 6.87 µs, 14.32× the fastest +6.87 µs +AES-256-GCM open, 1350 B, OpenSSL: 649 ns, 1.35× the fastest +649 ns +AES-256-GCM open, 16 KB +AES-256-GCM open, 16 KB, rind: 5.15 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and hand models of the function-pointer dispatch, of the AES-NI key expansion and block cipher's raw-pointer loads, and of the SIMD intrinsics as Intel's manual defines them, of its AEAD API's AES-GCM key setup, seal, and open, for AAD and messages under 2^32 bytes, down to HACL*'s Vale AES-GCM routines, composed with Vale's F* proofs of Gcm_blocks_stdcall, Gcm_blocks_decrypt_stdcall, and Compute_iv_stdcall, of the code Vale prints at HACL* f557259007db, which rind imports +5.15 µs ✓ +AES-256-GCM open, 16 KB, aws-lc-rs: 5.23 µs, 1.02× the fastest +5.23 µs +AES-256-GCM open, 16 KB, ring: 5.22 µs, 1.02× the fastest +5.22 µs +AES-256-GCM open, 16 KB, RustCrypto + dalek: 10.13 µs, 1.97× the fastest +10.13 µs +AES-256-GCM open, 16 KB, libcrux: 78.52 µs, 15.26× the fastest +78.52 µs +AES-256-GCM open, 16 KB, OpenSSL: 5.38 µs, 1.05× the fastest +5.38 µs +ChaCha20-Poly1305 seal, 32 B +ChaCha20-Poly1305 seal, 32 B, rind: 187 ns, 1.00× the fastest +187 ns +ChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 210 ns, 1.12× the fastest +210 ns +ChaCha20-Poly1305 seal, 32 B, ring: 189 ns, 1.01× the fastest +189 ns +ChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.74 µs, 9.32× the fastest +1.74 µs +ChaCha20-Poly1305 seal, 32 B, libcrux: 429 ns, 2.29× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +429 ns ✓ +ChaCha20-Poly1305 seal, 32 B, OpenSSL: 495 ns, 2.64× the fastest +495 ns +ChaCha20-Poly1305 seal, 1350 B +ChaCha20-Poly1305 seal, 1350 B, rind: 1.03 µs, 1.00× the fastest +1.03 µs +ChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.06 µs, 1.03× the fastest +1.06 µs +ChaCha20-Poly1305 seal, 1350 B, ring: 1.04 µs, 1.01× the fastest +1.04 µs +ChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.16 µs, 3.07× the fastest +3.16 µs +ChaCha20-Poly1305 seal, 1350 B, libcrux: 4.62 µs, 4.49× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +4.62 µs ✓ +ChaCha20-Poly1305 seal, 1350 B, OpenSSL: 1.57 µs, 1.52× the fastest +1.57 µs +ChaCha20-Poly1305 seal, 16 KB +ChaCha20-Poly1305 seal, 16 KB, rind: 9.66 µs, 1.01× the fastest +9.66 µs +ChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 9.60 µs, 1.00× the fastest +9.60 µs +ChaCha20-Poly1305 seal, 16 KB, ring: 9.59 µs, 1.00× the fastest +9.59 µs +ChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.38 µs, 1.92× the fastest +18.38 µs +ChaCha20-Poly1305 seal, 16 KB, libcrux: 52.14 µs, 5.44× the fastest; verified: HACL*'s F* proof of Hacl.Chacha20Poly1305_32, compiled to Rust by an unverified step +52.14 µs ✓ +ChaCha20-Poly1305 seal, 16 KB, OpenSSL: 10.99 µs, 1.15× the fastest +10.99 µs +XChaCha20-Poly1305 seal, 32 B +XChaCha20-Poly1305 seal, 32 B, rind: 402 ns, 1.00× the fastest +402 ns +XChaCha20-Poly1305 seal, 32 B, aws-lc-rs: 433 ns, 1.08× the fastest +433 ns +XChaCha20-Poly1305 seal, 32 B, RustCrypto + dalek: 1.98 µs, 4.92× the fastest +1.98 µs +XChaCha20-Poly1305 seal, 32 B, libcrux: 631 ns, 1.57× the fastest +631 ns +XChaCha20-Poly1305 seal, 1350 B +XChaCha20-Poly1305 seal, 1350 B, rind: 1.25 µs, 1.00× the fastest +1.25 µs +XChaCha20-Poly1305 seal, 1350 B, aws-lc-rs: 1.32 µs, 1.05× the fastest +1.32 µs +XChaCha20-Poly1305 seal, 1350 B, RustCrypto + dalek: 3.36 µs, 2.68× the fastest +3.36 µs +XChaCha20-Poly1305 seal, 1350 B, libcrux: 4.83 µs, 3.86× the fastest +4.83 µs +XChaCha20-Poly1305 seal, 16 KB +XChaCha20-Poly1305 seal, 16 KB, rind: 9.89 µs, 1.00× the fastest +9.89 µs +XChaCha20-Poly1305 seal, 16 KB, aws-lc-rs: 9.93 µs, 1.00× the fastest +9.93 µs +XChaCha20-Poly1305 seal, 16 KB, RustCrypto + dalek: 18.67 µs, 1.89× the fastest +18.67 µs +XChaCha20-Poly1305 seal, 16 KB, libcrux: 51.64 µs, 5.22× the fastest +51.64 µs +QUIC header protection + +AES-128 header protection +AES-128 header protection, rind: 7 ns, 1.00× the fastest +7 ns +AES-128 header protection, aws-lc-rs: 12 ns, 1.64× the fastest +12 ns +AES-128 header protection, ring: 12 ns, 1.72× the fastest +12 ns +AES-256 header protection +AES-256 header protection, rind: 9 ns, 1.00× the fastest +9 ns +AES-256 header protection, aws-lc-rs: 15 ns, 1.57× the fastest +15 ns +AES-256 header protection, ring: 15 ns, 1.56× the fastest +15 ns +ChaCha20 header protection +ChaCha20 header protection, rind: 123 ns, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's mask is its own cipher's, the only one rind builds, of its header-protection API's ChaCha20 against RFC 9001 and RFC 8439, HACL*'s rounds included +123 ns ✓ +ChaCha20 header protection, aws-lc-rs: 151 ns, 1.23× the fastest +151 ns +ChaCha20 header protection, ring: 136 ns, 1.11× the fastest +136 ns +Key agreement + +X25519 +X25519, rind: 49.74 µs, 1.00× the fastest; verified: rind's Lean proof, through Aeneas and a hand model of the function-pointer dispatch Aeneas cannot translate, which assumes each key's dispatch table holds its own curve's functions, the only table rind builds, of its agreement API's X25519 down to s2n-bignum's routines, composed with s2n-bignum's HOL Light proofs of curve25519_x25519, curve25519_x25519base, their _alt forms without BMI2 and ADX, and bignum_eq, of s2n-bignum's own object code, which rind transliterates +49.74 µs ✓ +X25519, aws-lc-rs: 50.78 µs, 1.02× the fastest +50.78 µs +X25519, ring: 75.97 µs, 1.53× the fastest +75.97 µs +X25519, RustCrypto + dalek: 89.48 µs, 1.80× the fastest +89.48 µs +X25519, libcrux: 111.77 µs, 2.25× the fastest; verified: HACL*'s F* proof of Hacl.Curve25519_51's secret_to_public and ecdh, compiled to Rust by an unverified step +111.77 µs ✓ +X25519, OpenSSL: 96.94 µs, 1.95× the fastest +96.94 µs +P-256 ECDH +P-256 ECDH, rind: 79.73 µs, 1.00× the fastest +79.73 µs +P-256 ECDH, aws-lc-rs: 84.92 µs, 1.07× the fastest +84.92 µs +P-256 ECDH, ring: 83.88 µs, 1.05× the fastest +83.88 µs +P-256 ECDH, RustCrypto + dalek: 361.66 µs, 4.54× the fastest +361.66 µs +P-256 ECDH, libcrux: 435.47 µs, 5.46× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +435.47 µs ✓ +P-256 ECDH, OpenSSL: 135.67 µs, 1.70× the fastest +135.67 µs +Signatures + +Ed25519 sign +Ed25519 sign, rind: 11.76 µs, 1.00× the fastest +11.76 µs +Ed25519 sign, aws-lc-rs: 12.44 µs, 1.06× the fastest +12.44 µs +Ed25519 sign, ring: 28.85 µs, 2.45× the fastest +28.85 µs +Ed25519 sign, RustCrypto + dalek: 23.39 µs, 1.99× the fastest +23.39 µs +Ed25519 sign, libcrux: 74.60 µs, 6.34× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +74.60 µs ✓ +Ed25519 sign, OpenSSL: 41.54 µs, 3.53× the fastest +41.54 µs +Ed25519 verify +Ed25519 verify, rind: 58.82 µs, 1.28× the fastest +58.82 µs +Ed25519 verify, aws-lc-rs: 57.65 µs, 1.26× the fastest +57.65 µs +Ed25519 verify, ring: 60.53 µs, 1.32× the fastest +60.53 µs +Ed25519 verify, RustCrypto + dalek: 45.94 µs, 1.00× the fastest +45.94 µs +Ed25519 verify, libcrux: 94.85 µs, 2.06× the fastest; verified: HACL*'s F* proof of Hacl.Ed25519's sign and verify, compiled to Rust by an unverified step +94.85 µs ✓ +Ed25519 verify, OpenSSL: 136.82 µs, 2.98× the fastest +136.82 µs +P-256 ECDSA sign +P-256 ECDSA sign, rind: 21.44 µs, 1.00× the fastest +21.44 µs +P-256 ECDSA sign, aws-lc-rs: 23.66 µs, 1.10× the fastest +23.66 µs +P-256 ECDSA sign, ring: 25.02 µs, 1.17× the fastest +25.02 µs +P-256 ECDSA sign, RustCrypto + dalek: 105.57 µs, 4.92× the fastest +105.57 µs +P-256 ECDSA sign, libcrux: 155.91 µs, 7.27× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +155.91 µs ✓ +P-256 ECDSA sign, OpenSSL: 31.72 µs, 1.48× the fastest +31.72 µs +P-256 ECDSA verify +P-256 ECDSA verify, rind: 78.07 µs, 1.03× the fastest +78.07 µs +P-256 ECDSA verify, aws-lc-rs: 76.02 µs, 1.00× the fastest +76.02 µs +P-256 ECDSA verify, ring: 77.17 µs, 1.02× the fastest +77.17 µs +P-256 ECDSA verify, RustCrypto + dalek: 304.06 µs, 4.00× the fastest +304.06 µs +P-256 ECDSA verify, libcrux: 365.46 µs, 4.81× the fastest; verified: HACL*'s F* proof of Hacl.P256's dh_initiator, dh_responder, ecdsa_sign_p256_sha2, and ecdsa_verif_p256_sha2, compiled to Rust by an unverified step +365.46 µs ✓ +P-256 ECDSA verify, OpenSSL: 112.54 µs, 1.48× the fastest +112.54 µs +Hashes and KDFs + +SHA-256, 64 B +SHA-256, 64 B, rind: 381 ns, 1.00× the fastest +381 ns +SHA-256, 64 B, aws-lc-rs: 479 ns, 1.26× the fastest +479 ns +SHA-256, 64 B, ring: 425 ns, 1.11× the fastest +425 ns +SHA-256, 64 B, RustCrypto + dalek: 734 ns, 1.92× the fastest +734 ns +SHA-256, 64 B, libcrux: 751 ns, 1.97× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +751 ns ✓ +SHA-256, 64 B, OpenSSL: 792 ns, 2.08× the fastest +792 ns +SHA-256, 1350 B +SHA-256, 1350 B, rind: 3.82 µs, 1.00× the fastest +3.82 µs +SHA-256, 1350 B, aws-lc-rs: 4.30 µs, 1.13× the fastest +4.30 µs +SHA-256, 1350 B, ring: 4.27 µs, 1.12× the fastest +4.27 µs +SHA-256, 1350 B, RustCrypto + dalek: 7.80 µs, 2.04× the fastest +7.80 µs +SHA-256, 1350 B, libcrux: 8.29 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +8.29 µs ✓ +SHA-256, 1350 B, OpenSSL: 4.16 µs, 1.09× the fastest +4.16 µs +SHA-256, 16 KB +SHA-256, 16 KB, rind: 43.31 µs, 1.00× the fastest +43.31 µs +SHA-256, 16 KB, aws-lc-rs: 48.32 µs, 1.12× the fastest +48.32 µs +SHA-256, 16 KB, ring: 48.73 µs, 1.13× the fastest +48.73 µs +SHA-256, 16 KB, RustCrypto + dalek: 89.76 µs, 2.07× the fastest +89.76 µs +SHA-256, 16 KB, libcrux: 94.03 µs, 2.17× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +94.03 µs ✓ +SHA-256, 16 KB, OpenSSL: 43.45 µs, 1.00× the fastest +43.45 µs +SHA-512, 64 B +SHA-512, 64 B, rind: 310 ns, 1.00× the fastest +310 ns +SHA-512, 64 B, aws-lc-rs: 357 ns, 1.15× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +357 ns ✓ +SHA-512, 64 B, ring: 312 ns, 1.01× the fastest +312 ns +SHA-512, 64 B, RustCrypto + dalek: 418 ns, 1.35× the fastest +418 ns +SHA-512, 64 B, libcrux: 448 ns, 1.45× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +448 ns ✓ +SHA-512, 64 B, OpenSSL: 671 ns, 2.16× the fastest +671 ns +SHA-512, 1350 B +SHA-512, 1350 B, rind: 2.61 µs, 1.00× the fastest +2.61 µs +SHA-512, 1350 B, aws-lc-rs: 2.99 µs, 1.14× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +2.99 µs ✓ +SHA-512, 1350 B, ring: 2.93 µs, 1.12× the fastest +2.93 µs +SHA-512, 1350 B, RustCrypto + dalek: 4.17 µs, 1.60× the fastest +4.17 µs +SHA-512, 1350 B, libcrux: 4.74 µs, 1.82× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +4.74 µs ✓ +SHA-512, 1350 B, OpenSSL: 2.96 µs, 1.13× the fastest +2.96 µs +SHA-512, 16 KB +SHA-512, 16 KB, rind: 28.35 µs, 1.00× the fastest +28.35 µs +SHA-512, 16 KB, aws-lc-rs: 33.98 µs, 1.20× the fastest; verified: aws-lc-verification's SAW proof of SHA-512 through EVP_Digest, padding included, over sha512_block_data_order_avx, which aws-lc runs only on Intel; of aws-lc c21d40da, whose SHA-512 code 5.12.0 keeps +33.98 µs ✓ +SHA-512, 16 KB, ring: 33.85 µs, 1.19× the fastest +33.85 µs +SHA-512, 16 KB, RustCrypto + dalek: 47.68 µs, 1.68× the fastest +47.68 µs +SHA-512, 16 KB, libcrux: 55.08 µs, 1.94× the fastest; verified: HACL*'s F* proof of Hacl.Streaming.SHA2's hash_256 and hash_512, compiled to Rust by an unverified step +55.08 µs ✓ +SHA-512, 16 KB, OpenSSL: 29.86 µs, 1.05× the fastest +29.86 µs +HMAC-SHA256, 64 B +HMAC-SHA256, 64 B, rind: 964 ns, 1.00× the fastest +964 ns +HMAC-SHA256, 64 B, aws-lc-rs: 1.25 µs, 1.30× the fastest +1.25 µs +HMAC-SHA256, 64 B, ring: 1.11 µs, 1.15× the fastest +1.11 µs +HMAC-SHA256, 64 B, RustCrypto + dalek: 1.84 µs, 1.91× the fastest +1.84 µs +HMAC-SHA256, 64 B, libcrux: 1.85 µs, 1.91× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +1.85 µs ✓ +HMAC-SHA256, 64 B, OpenSSL: 5.65 µs, 5.86× the fastest +5.65 µs +HMAC-SHA256, 1350 B +HMAC-SHA256, 1350 B, rind: 4.33 µs, 1.00× the fastest +4.33 µs +HMAC-SHA256, 1350 B, aws-lc-rs: 5.01 µs, 1.16× the fastest +5.01 µs +HMAC-SHA256, 1350 B, ring: 4.88 µs, 1.13× the fastest +4.88 µs +HMAC-SHA256, 1350 B, RustCrypto + dalek: 8.93 µs, 2.06× the fastest +8.93 µs +HMAC-SHA256, 1350 B, libcrux: 9.26 µs, 2.14× the fastest; verified: HACL*'s F* proof of Hacl.HMAC's compute_sha2_256, compiled to Rust by an unverified step +9.26 µs ✓ +HMAC-SHA256, 1350 B, OpenSSL: 9.20 µs, 2.13× the fastest +9.20 µs +HKDF-SHA256 extract and expand +HKDF-SHA256 extract and expand, rind: 1.71 µs, 1.00× the fastest +1.71 µs +HKDF-SHA256 extract and expand, aws-lc-rs: 2.07 µs, 1.21× the fastest +2.07 µs +HKDF-SHA256 extract and expand, ring: 1.84 µs, 1.07× the fastest +1.84 µs +HKDF-SHA256 extract and expand, RustCrypto + dalek: 3.02 µs, 1.76× the fastest +3.02 µs +HKDF-SHA256 extract and expand, libcrux: 3.05 µs, 1.78× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +3.05 µs ✓ +HKDF-SHA256 extract and expand, OpenSSL: 6.74 µs, 3.93× the fastest +6.74 µs +HKDF-SHA256 expand +HKDF-SHA256 expand, rind: 462 ns, 1.00× the fastest +462 ns +HKDF-SHA256 expand, aws-lc-rs: 988 ns, 2.14× the fastest +988 ns +HKDF-SHA256 expand, ring: 509 ns, 1.10× the fastest +509 ns +HKDF-SHA256 expand, RustCrypto + dalek: 771 ns, 1.67× the fastest +771 ns +HKDF-SHA256 expand, libcrux: 1.58 µs, 3.42× the fastest; verified: HACL*'s F* proof of Hacl.HKDF's extract_sha2_256 and expand_sha2_256, compiled to Rust by an unverified step +1.58 µs ✓ +HKDF-SHA256 expand, OpenSSL: 4.47 µs, 9.67× the fastest +4.47 µs +RSA + +RSA-2048 PKCS#1 sign +RSA-2048 PKCS#1 sign, rind: 744.79 µs, 1.00× the fastest +744.79 µs +RSA-2048 PKCS#1 sign, aws-lc-rs: 767.91 µs, 1.03× the fastest +767.91 µs +RSA-2048 PKCS#1 sign, ring: 1.00 ms, 1.34× the fastest +1.00 ms +RSA-2048 PKCS#1 sign, RustCrypto + dalek: 1.77 ms, 2.38× the fastest +1.77 ms +RSA-2048 PKCS#1 sign, OpenSSL: 786.07 µs, 1.06× the fastest +786.07 µs +RSA-2048 PKCS#1 verify +RSA-2048 PKCS#1 verify, rind: 30.16 µs, 1.00× the fastest +30.16 µs +RSA-2048 PKCS#1 verify, aws-lc-rs: 34.24 µs, 1.14× the fastest +34.24 µs +RSA-2048 PKCS#1 verify, ring: 37.78 µs, 1.25× the fastest +37.78 µs +RSA-2048 PKCS#1 verify, RustCrypto + dalek: 87.58 µs, 2.90× the fastest +87.58 µs +RSA-2048 PKCS#1 verify, OpenSSL: 47.33 µs, 1.57× the fastest +47.33 µs +RSA-2048 PSS sign +RSA-2048 PSS sign, rind: 743.83 µs, 1.00× the fastest +743.83 µs +RSA-2048 PSS sign, aws-lc-rs: 772.63 µs, 1.04× the fastest +772.63 µs +RSA-2048 PSS sign, ring: 993.35 µs, 1.34× the fastest +993.35 µs +RSA-2048 PSS sign, RustCrypto + dalek: 1.77 ms, 2.37× the fastest +1.77 ms +RSA-2048 PSS sign, libcrux: 10.71 ms, 14.40× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +10.71 ms ✓ +RSA-2048 PSS sign, OpenSSL: 784.77 µs, 1.06× the fastest +784.77 µs +RSA-2048 PSS verify +RSA-2048 PSS verify, rind: 32.49 µs, 1.00× the fastest +32.49 µs +RSA-2048 PSS verify, aws-lc-rs: 35.56 µs, 1.09× the fastest +35.56 µs +RSA-2048 PSS verify, ring: 39.91 µs, 1.23× the fastest +39.91 µs +RSA-2048 PSS verify, RustCrypto + dalek: 107.72 µs, 3.32× the fastest +107.72 µs +RSA-2048 PSS verify, libcrux: 582.63 µs, 17.93× the fastest; verified: HACL*'s F* proof of Hacl.RSAPSS's rsapss_skey_sign and rsapss_pkey_verify, signing without the CRT, compiled to Rust by an unverified step +582.63 µs ✓ +RSA-2048 PSS verify, OpenSSL: 51.25 µs, 1.58× the fastest +51.25 µs +ML-KEM + +ML-KEM-768 key generation +ML-KEM-768 key generation, rind: 17.40 µs, 1.00× the fastest +17.40 µs +ML-KEM-768 key generation, aws-lc-rs: 23.24 µs, 1.34× the fastest +23.24 µs +ML-KEM-768 key generation, RustCrypto + dalek: 92.15 µs, 5.30× the fastest +92.15 µs +ML-KEM-768 key generation, libcrux: 34.82 µs, 2.00× the fastest +34.82 µs +ML-KEM-768 key generation, OpenSSL: 62.15 µs, 3.57× the fastest +62.15 µs +ML-KEM-768 encapsulate +ML-KEM-768 encapsulate, rind: 18.55 µs, 1.00× the fastest +18.55 µs +ML-KEM-768 encapsulate, aws-lc-rs: 23.54 µs, 1.27× the fastest +23.54 µs +ML-KEM-768 encapsulate, RustCrypto + dalek: 101.25 µs, 5.46× the fastest +101.25 µs +ML-KEM-768 encapsulate, libcrux: 31.43 µs, 1.69× the fastest +31.43 µs +ML-KEM-768 encapsulate, OpenSSL: 63.30 µs, 3.41× the fastest +63.30 µs +ML-KEM-768 decapsulate +ML-KEM-768 decapsulate, rind: 12.10 µs, 1.00× the fastest +12.10 µs +ML-KEM-768 decapsulate, aws-lc-rs: 27.41 µs, 2.27× the fastest +27.41 µs +ML-KEM-768 decapsulate, RustCrypto + dalek: 127.16 µs, 10.51× the fastest +127.16 µs +ML-KEM-768 decapsulate, libcrux: 32.99 µs, 2.73× the fastest +32.99 µs +ML-KEM-768 decapsulate, OpenSSL: 48.46 µs, 4.01× the fastest +48.46 µs +P-384 and P-521 + +P-384 ECDH +P-384 ECDH, rind: 265.15 µs, 1.00× the fastest +265.15 µs +P-384 ECDH, aws-lc-rs: 293.83 µs, 1.11× the fastest +293.83 µs +P-384 ECDH, ring: 986.79 µs, 3.72× the fastest +986.79 µs +P-384 ECDH, RustCrypto + dalek: 1.17 ms, 4.42× the fastest +1.17 ms +P-384 ECDH, OpenSSL: 744.13 µs, 2.81× the fastest +744.13 µs +P-384 ECDSA sign +P-384 ECDSA sign, rind: 67.30 µs, 1.00× the fastest +67.30 µs +P-384 ECDSA sign, aws-lc-rs: 126.70 µs, 1.88× the fastest +126.70 µs +P-384 ECDSA sign, ring: 546.26 µs, 8.12× the fastest +546.26 µs +P-384 ECDSA sign, RustCrypto + dalek: 263.32 µs, 3.91× the fastest +263.32 µs +P-384 ECDSA sign, OpenSSL: 253.09 µs, 3.76× the fastest +253.09 µs +P-384 ECDSA verify +P-384 ECDSA verify, rind: 253.92 µs, 1.00× the fastest +253.92 µs +P-384 ECDSA verify, aws-lc-rs: 297.22 µs, 1.17× the fastest +297.22 µs +P-384 ECDSA verify, ring: 957.13 µs, 3.77× the fastest +957.13 µs +P-384 ECDSA verify, RustCrypto + dalek: 1.05 ms, 4.14× the fastest +1.05 ms +P-384 ECDSA verify, OpenSSL: 631.24 µs, 2.49× the fastest +631.24 µs +P-521 ECDH +P-521 ECDH, rind: 453.02 µs, 1.00× the fastest +453.02 µs +P-521 ECDH, aws-lc-rs: 486.31 µs, 1.07× the fastest +486.31 µs +P-521 ECDH, RustCrypto + dalek: 1.21 ms, 2.66× the fastest +1.21 ms +P-521 ECDH, OpenSSL: 720.27 µs, 1.59× the fastest +720.27 µs +P-521 ECDSA sign +P-521 ECDSA sign, rind: 115.63 µs, 1.00× the fastest +115.63 µs +P-521 ECDSA sign, aws-lc-rs: 251.35 µs, 2.17× the fastest +251.35 µs +P-521 ECDSA sign, RustCrypto + dalek: 288.95 µs, 2.50× the fastest +288.95 µs +P-521 ECDSA sign, OpenSSL: 343.62 µs, 2.97× the fastest +343.62 µs +P-521 ECDSA verify +P-521 ECDSA verify, rind: 406.77 µs, 1.00× the fastest +406.77 µs +P-521 ECDSA verify, aws-lc-rs: 524.48 µs, 1.29× the fastest +524.48 µs +P-521 ECDSA verify, RustCrypto + dalek: 1.03 ms, 2.54× the fastest +1.03 ms +P-521 ECDSA verify, OpenSSL: 698.05 µs, 1.72× the fastest +698.05 µs + From 29192ccbe942511eef4c99e0f837c8417c40accd Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 10:51:16 -0800 Subject: [PATCH 08/12] fix(bench-report): hold a host's lease in the script that measures it A separate lease session could drop while the run went on, letting another collector in, whose work the cleanup would then delete. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 105 +++++++++++++++++----------------------- admin/bench-report-test | 37 +++++++++----- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/admin/bench-report b/admin/bench-report index c2b6d36ea..814195e6a 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -499,7 +499,7 @@ def is_local(host): def ssh(host): # ServerAlive ends a session whose link died, which would otherwise hang - # collect, or keep a lease it no longer holds looking held. + # collect. options = ["BatchMode=yes", "ConnectTimeout=10", "ServerAliveInterval=15", "ServerAliveCountMax=4"] return ["ssh", *(arg for o in options for arg in ("-o", o)), HOSTS[host].get("ssh", host)] @@ -511,32 +511,36 @@ def on_host(host, script, **kwargs): return subprocess.run(ssh(host) + [script], **kwargs) -# The exit status of a lease that another run holds. +# The host script's exit status when another run holds the host's lease, and +# when it could not copy the commit. LEASE_HELD = 73 +COPY_FAILED = 74 -def take_lease(host): - """An ssh session holding the host's lease until its stdin closes, or the - reason it couldn't take it.""" - lock = shlex.quote(HOSTS[host]["lease"]) - lease = subprocess.Popen( - ssh(host) + [f"exec 9>{lock} && {{ flock -n 9 || exit {LEASE_HELD}; }} && echo held && exec cat >/dev/null"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - text=True, +def host_script(host, work, cmd): + """The shell script that copies the commit from stdin into `work`, runs + `cmd` there with its output on stderr, and prints the result. On a leased + host it holds the lease throughout, and removes `work` before letting go, + so that no other run can take the host while any of it runs.""" + q = shlex.quote + w = q(work) + script = ( + f"rm -rf {w}/src {w}/result.json && mkdir -p {w}/src && tar -x -C {w}/src || exit {COPY_FAILED}\n" + f"cd {w}/src && {{ {cmd}; }} &2\n" + "cat ../result.json\n" ) - if lease.stdout.readline().strip() == "held": - return lease, None - lease.communicate() - if lease.returncode == LEASE_HELD: - return None, "another run holds its lease" - return None, f"could not take its lease, ssh exit {lease.returncode}" + if "lease" not in HOSTS[host]: + return script + # The descriptor holding the lock passes to every process the script + # starts, so the lease outlives whichever of them ends last. + lock = f"exec 9>{q(HOSTS[host]['lease'])} && {{ flock -n 9 || exit {LEASE_HELD}; }}\n" + # From home, since `work` may be relative to it and the script moves. + return lock + f"trap 'cd && rm -rf {w}' EXIT\n" + script def collect_host(host, commit, out_dir): out = os.path.join(out_dir, f"{host}.json") work = os.path.join(ROOT, ".tmp", "bench-report", "host") if is_local(host) else REMOTE_DIR - leased = "lease" in HOSTS[host] q = shlex.quote def record(status, reason): @@ -550,48 +554,29 @@ def collect_host(host, commit, out_dir): return record("unreachable", probe.stderr.strip()) darwin = probe.stdout.strip() == "Darwin" - def measure(): - # A fresh copy of the commit; the build directory stays between runs - # unless the host is leased. - archive = subprocess.run(["git", "-C", ROOT, "archive", "--format=tar", commit], capture_output=True, check=True) - copy = on_host( - host, - f"rm -rf {q(work)}/src && mkdir -p {q(work)}/src && tar -x -C {q(work)}/src", - input=archive.stdout, - ) - if copy.returncode != 0: - return record("failed", "could not copy the commit") - - cmd = ( - f"python3 admin/bench-report run --host {q(host)} --commit {q(commit)} " - f"--jobs {HOSTS[host]['jobs']} --target-dir ../target --out ../result.json" - ) - if not darwin: - cmd = f'nix develop "path:$PWD" --command {cmd}' - if leased: - # Crate downloads too, so that removing the work directory leaves nothing. - cmd = f'CARGO_HOME="$PWD/../cargo" {cmd}' - on_host(host, f"rm -f {q(work)}/result.json && cd {q(work)}/src && {cmd}") - fetched = on_host(host, f"cat {q(work)}/result.json", capture_output=True) - if fetched.returncode != 0: - return record("failed", "the run wrote no result; see its output above") - with open(out, "wb") as f: - f.write(fetched.stdout) - status = json.loads(fetched.stdout)["status"] - print(f"bench-report: {host}: {status}", file=sys.stderr) - - if not leased: - return measure() - lease, reason = take_lease(host) - if lease is None: - return record("busy", reason) - try: - measure() - if lease.poll() is not None: - record("failed", "lost its lease during the run") - finally: - on_host(host, f"rm -rf {q(work)}") - lease.communicate(timeout=60) + # A fresh copy of the commit; the build directory stays between runs + # unless the host is leased. + archive = subprocess.run(["git", "-C", ROOT, "archive", "--format=tar", commit], capture_output=True, check=True) + cmd = ( + f"python3 admin/bench-report run --host {q(host)} --commit {q(commit)} " + f"--jobs {HOSTS[host]['jobs']} --target-dir ../target --out ../result.json" + ) + if not darwin: + cmd = f'nix develop "path:$PWD" --command {cmd}' + if "lease" in HOSTS[host]: + # Crate downloads too, so that removing the work directory leaves nothing. + cmd = f'CARGO_HOME="$PWD/../cargo" {cmd}' + ran = on_host(host, host_script(host, work, cmd), input=archive.stdout, stdout=subprocess.PIPE) + if ran.returncode == LEASE_HELD: + return record("busy", "another run holds its lease") + if ran.returncode == COPY_FAILED: + return record("failed", "could not copy the commit") + if ran.returncode != 0: + return record("failed", "the run wrote no result; see its output above") + with open(out, "wb") as f: + f.write(ran.stdout) + status = json.loads(ran.stdout)["status"] + print(f"bench-report: {host}: {status}", file=sys.stderr) def collect(args): diff --git a/admin/bench-report-test b/admin/bench-report-test index 6cc560c4b..31a273f55 100755 --- a/admin/bench-report-test +++ b/admin/bench-report-test @@ -7,10 +7,13 @@ Usage: admin/bench-report-test import fcntl import importlib.machinery import importlib.util +import io import json import os import re +import subprocess import sys +import tarfile import tempfile import unittest @@ -345,26 +348,38 @@ class Gaps(unittest.TestCase): class Lease(unittest.TestCase): - def test_skips_a_held_lease_and_takes_a_free_one(self): + def run_script(self, cmd): + """The host script's exit status and output on a leased host here.""" + archive = io.BytesIO() + with tarfile.open(fileobj=archive, mode="w") as tar: + tar.addfile(tarfile.TarInfo("file"), io.BytesIO()) + ran = subprocess.run( + ["sh", "-c", br.host_script("vps", self.work, cmd)], input=archive.getvalue(), capture_output=True + ) + return ran.returncode, ran.stdout + + def test_holds_the_lease_through_the_run_and_its_cleanup(self): with tempfile.TemporaryDirectory() as d: + self.work = os.path.join(d, "work") lock = os.path.join(d, "lock") - hosts, ssh = br.HOSTS, br.ssh + hosts = br.HOSTS br.HOSTS = {"vps": {"jobs": 1, "lease": lock}} - br.ssh = lambda host: ["sh", "-c"] try: + # Another run's lease: its work stays. + os.makedirs(os.path.join(self.work, "src")) with open(lock, "w") as held: fcntl.flock(held, fcntl.LOCK_EX) - self.assertEqual(br.take_lease("vps"), (None, "another run holds its lease")) - lease, reason = br.take_lease("vps") - self.assertIsNone(reason) + self.assertEqual(self.run_script("true"), (br.LEASE_HELD, b"")) + self.assertTrue(os.path.isdir(os.path.join(self.work, "src"))) + # Ours: the run sees the lease held and its copy, and nothing + # is left once it lets go. + status, out = self.run_script(f"flock -n {lock} true; echo $? $(ls) > ../result.json") + self.assertEqual((status, out), (0, b"1 file\n")) + self.assertFalse(os.path.exists(self.work)) with open(lock) as other: - with self.assertRaises(BlockingIOError): - fcntl.flock(other, fcntl.LOCK_EX | fcntl.LOCK_NB) - lease.communicate(timeout=10) - self.assertEqual(lease.returncode, 0) fcntl.flock(other, fcntl.LOCK_EX | fcntl.LOCK_NB) finally: - br.HOSTS, br.ssh = hosts, ssh + br.HOSTS = hosts if __name__ == "__main__": From 2f9e481019091f4877960b6362a60cc48f8eb090 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:46:51 -0800 Subject: [PATCH 09/12] fix(bench-report): give the lease test flock(1), and fail loud without it The test runs the leased host's script, which calls flock(1), but the dev shell lacked it and the queue runner's PATH has none, so the free-lease case exited 73. A missing flock also read as another run's lease, which hid the failure in the held case and would record a host as busy forever. The dev shell gains nixpkgs' cross-platform flock, which macOS lacks too, and only a held lock (-E) maps to the busy status. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 2 +- flake.nix | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/admin/bench-report b/admin/bench-report index 9e4536c9e..1026a5245 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -531,7 +531,7 @@ def host_script(host, work, cmd): # The script's processes inherit the descriptor holding the lock. Python # closes it in its own children, but subprocess.run kills its child when # Python fails, so no child outlives the lease. - lock = f"exec 9>{q(HOSTS[host]['lease'])} && {{ flock -n 9 || exit {LEASE_HELD}; }}\n" + lock = f"exec 9>{q(HOSTS[host]['lease'])} && {{ flock -n -E {LEASE_HELD} 9 || exit; }}\n" return lock + f"trap 'rm -rf {w}' EXIT\n" + script diff --git a/flake.nix b/flake.nix index 0f2993951..b648dd3b0 100644 --- a/flake.nix +++ b/flake.nix @@ -258,6 +258,9 @@ nixfmt # admin/ scripts. python3 + # admin/bench-report-test runs the script that holds a + # leased host. + flock cargo-modules quest-cli # rind-instant-acme's end-to-end test issues a certificate from it. From 9004d801a843c165710bccc2ed189e0d839f1026 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:46:58 -0800 Subject: [PATCH 10/12] fix(bench-report): refuse graviola on the features it asserts, per architecture Graviola 0.4 asserts BMI1, not BMI2, on x86_64, and NEON, AES, PMULL, and SHA2 on aarch64, where rind needs only NEON. The table now matches its verify_cpu_features and rind-bench's rustls bench on both. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 16 ++++++++++------ admin/bench-report-test | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/admin/bench-report b/admin/bench-report index 1026a5245..b579699a9 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -183,10 +183,14 @@ LIBRARIES = { "openssl": "openssl", } -# The x86_64 CPU features, as rind-cpuid names them, without which a library -# panics on first use rather than run a slower path. Its BMI1 requirement -# comes with BMI2. -REQUIRED_X86 = {"graviola": ["aes", "pclmulqdq", "bmi2", "adx", "avx", "avx2"]} +# The CPU features by architecture, as rind-cpuid names them, without which a +# library panics on first use rather than run a slower path. +REQUIRED = { + "graviola": { + "x86_64": ["aes", "pclmulqdq", "bmi1", "adx", "avx", "avx2"], + "aarch64": ["neon", "aes", "pmull", "sha2"], + } +} # The crates whose versions a result records, by library. CRATES = { @@ -403,8 +407,8 @@ def run(args): cpuid = result["rind_cpu"]["cpuid"] result["refused"] = { lib: missing - for lib, features in REQUIRED_X86.items() - if platform.machine() == "x86_64" and (missing := [f for f in features if not cpuid[f]]) + for lib, features in REQUIRED.items() + if (missing := [f for f in features.get(host_arch(result), []) if not cpuid[f]]) } try: diff --git a/admin/bench-report-test b/admin/bench-report-test index 3a5c4a356..aac3215ca 100755 --- a/admin/bench-report-test +++ b/admin/bench-report-test @@ -207,9 +207,9 @@ class Render(unittest.TestCase): for row in ["x25519-ecdh/graviola", "aes128-gcm/graviola/32B", "x25519-ecdh/rind/extra"]: self.assertFalse(regex.match(row), row) everyone = hosts() - everyone["nixos2"]["refused"] = {"graviola": ["bmi2", "adx"]} + everyone["nixos2"]["refused"] = {"graviola": ["bmi1", "adx"]} md = br.report(everyone, None, VERIFIED, [])[br.REPORT] - self.assertIn("graviola isn't timed on `nixos2`: it requires BMI2 and ADX, which this CPU lacks.", md) + self.assertIn("graviola isn't timed on `nixos2`: it requires BMI1 and ADX, which this CPU lacks.", md) def test_headline_is_the_mean_over_hosts_and_says_what_is_missing(self): everyone = hosts() From 8759c783d0992ae0867e68615b591ab96f48fed7 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:46:58 -0800 Subject: [PATCH 11/12] fix(bench-report): leave guest time out of the busy CPU sample /proc/stat counts guest time in user and nice, and again in its guest fields, so summing every field counted a busy guest twice. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 3 ++- admin/build-cost | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/admin/bench-report b/admin/bench-report index b579699a9..bb101ce52 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -288,8 +288,9 @@ def cpu_times(): fail("host_statistics failed") user, system, idle, nice = ticks return user + system + nice, user + system + idle + nice + # The first eight fields, since user and nice already count guest time. with open("/proc/stat") as f: - fields = [int(x) for x in f.readline().split()[1:]] + fields = [int(x) for x in f.readline().split()[1:9]] idle = fields[3] + fields[4] return sum(fields) - idle, sum(fields) diff --git a/admin/build-cost b/admin/build-cost index 4b29929e1..7f0b7a8e1 100755 --- a/admin/build-cost +++ b/admin/build-cost @@ -101,8 +101,9 @@ def busy_cpus(): return os.getloadavg()[0] def times(): + # The first eight fields, since user and nice already count guest time. with open("/proc/stat") as f: - fields = [int(x) for x in f.readline().split()[1:]] + fields = [int(x) for x in f.readline().split()[1:9]] return sum(fields) - fields[3] - fields[4], sum(fields) busy0, total0 = times() From 7bf0ae93ef111d2272983649bf6644933c344e1c Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:51:02 -0800 Subject: [PATCH 12/12] fix(bench-report): gate leased hosts too, with the lease on top #399 holds every host with quest gate --host. The merge held a leased host with its lease alone; it now takes both, so gated work on a VPS waits too. Co-Authored-By: Claude Opus 5.5 --- admin/bench-report | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/admin/bench-report b/admin/bench-report index bb101ce52..5a7144661 100755 --- a/admin/bench-report +++ b/admin/bench-report @@ -7,8 +7,8 @@ Usage: admin/bench-report render [--from DIR] [--check] admin/bench-report summary DIR -`collect` copies one commit to each host in turn, holds the host with its -lease or `quest gate --host`, builds rind-bench there in the commit's Nix dev shell with +`collect` copies one commit to each host in turn, holds the host with +`quest gate --host` and any lease it has, builds rind-bench there in the commit's Nix dev shell with its pinned toolchain, and times every operation in OPERATIONS for every library that offers it, then measures each library's build cost with admin/build-cost. It runs here for the host this is, and over ssh for the @@ -563,18 +563,16 @@ def collect_host(host, commit, out_dir): f"--host {q(host)} --commit {q(commit)} --jobs {HOSTS[host]['jobs']} " f"--target-dir ../target --out result.json" ) + # Holding the host keeps every other gated command, such as another + # collection's run, off it until the benchmarks and build costs finish. + # The gate is this checkout's quest, so a commit pinning an older one + # still runs, in its own dev shell. + with open(os.path.join(ROOT, "flake.lock")) as f: + quest = json.load(f)["nodes"]["quest"]["locked"] + cmd = f"nix shell github:{quest['owner']}/{quest['repo']}/{quest['rev']} --command quest gate --host {cmd}" if "lease" in HOSTS[host]: # Crate downloads too, so that removing the work directory leaves nothing. cmd = f'CARGO_HOME="$PWD/../cargo" {cmd}' - else: - # Holding the host keeps every other gated command, such as another - # collection's run, off it until the benchmarks and build costs - # finish; a lease does that on a leased host. The gate is this - # checkout's quest, so a commit pinning an older one still runs, in - # its own dev shell. - with open(os.path.join(ROOT, "flake.lock")) as f: - quest = json.load(f)["nodes"]["quest"]["locked"] - cmd = f"nix shell github:{quest['owner']}/{quest['repo']}/{quest['rev']} --command quest gate --host {cmd}" # A macOS ssh session runs no login shell, which is what puts Nix on PATH. cmd = f'export PATH="$PATH:/nix/var/nix/profiles/default/bin" && {cmd}' ran = on_host(host, host_script(host, work, cmd), input=archive.stdout, stdout=subprocess.PIPE)