lockstitch 0.15.0

Lockstitch is an incremental, stateful cryptographic primitive for symmetric-key cryptographic operations in complex protocols.
Documentation
# Performance

## `x86_64` (GCP `n2-standard-4`, Intel Ice Lake, rustc 1.73)

```text
benchmarks     fastest       │ slowest       │ median        │ mean          │ samples │ iters
├─ aead                      │               │               │               │         │
│  ├─ 16       584.3 ns      │ 77.57 µs      │ 606.6 ns      │ 613.9 ns      │ 1376738 │ 1376738
│  │           26.11 MiB/s   │ 201.4 KiB/s   │ 25.15 MiB/s   │ 24.85 MiB/s   │         │
│  ├─ 256      751.2 ns      │ 73.55 µs      │ 771.2 ns      │ 781.2 ns      │ 1087568 │ 1087568
│  │           324.9 MiB/s   │ 3.319 MiB/s   │ 316.5 MiB/s   │ 312.4 MiB/s   │         │
│  ├─ 1024     1.414 µs      │ 42.97 µs      │ 1.462 µs      │ 1.471 µs      │ 612739  │ 612739
│  │           690.4 MiB/s   │ 22.72 MiB/s   │ 667.9 MiB/s   │ 663.5 MiB/s   │         │
│  ├─ 16384    14.94 µs      │ 58.07 µs      │ 15.16 µs      │ 15.23 µs      │ 64710   │ 64710
│  │           1.021 GiB/s   │ 269 MiB/s     │ 1.006 GiB/s   │ 1.001 GiB/s   │         │
│  ╰─ 1048576  926.8 µs      │ 1.7 ms        │ 950.7 µs      │ 961.7 µs      │ 1022    │ 1022
│              1.053 GiB/s   │ 588.1 MiB/s   │ 1.027 GiB/s   │ 1.015 GiB/s   │         │
├─ hash                      │               │               │               │         │
│  ├─ 16       249.3 ns      │ 11.61 µs      │ 259.5 ns      │ 261.3 ns      │ 814673  │ 3258692
│  │           61.2 MiB/s    │ 1.313 MiB/s   │ 58.8 MiB/s    │ 58.37 MiB/s   │         │
│  ├─ 256      459.6 ns      │ 35.77 µs      │ 469.6 ns      │ 473.6 ns      │ 1618517 │ 1618517
│  │           531 MiB/s     │ 6.824 MiB/s   │ 519.7 MiB/s   │ 515.4 MiB/s   │         │
│  ├─ 1024     1.015 µs      │ 65.07 µs      │ 1.045 µs      │ 1.053 µs      │ 835964  │ 835964
│  │           962 MiB/s     │ 15 MiB/s      │ 934.4 MiB/s   │ 927.2 MiB/s   │         │
│  ├─ 16384    12.6 µs       │ 82.78 µs      │ 12.77 µs      │ 12.86 µs      │ 76537   │ 76537
│  │           1.21 GiB/s    │ 188.7 MiB/s   │ 1.193 GiB/s   │ 1.186 GiB/s   │         │
│  ╰─ 1048576  800.3 µs      │ 1.52 ms       │ 809 µs        │ 812.7 µs      │ 1205    │ 1205
│              1.22 GiB/s    │ 657.6 MiB/s   │ 1.207 GiB/s   │ 1.201 GiB/s   │         │
├─ prf                       │               │               │               │         │
│  ├─ 16       235.6 ns      │ 15.55 µs      │ 244.1 ns      │ 246.6 ns      │ 861216  │ 3444864
│  │           64.75 MiB/s   │ 1004 KiB/s    │ 62.5 MiB/s    │ 61.86 MiB/s   │         │
│  ├─ 256      266.8 ns      │ 9.067 µs      │ 278.7 ns      │ 281.2 ns      │ 726197  │ 2904788
│  │           915 MiB/s     │ 26.92 MiB/s   │ 875.8 MiB/s   │ 868 MiB/s     │         │
│  ├─ 1024     375.8 ns      │ 29.67 µs      │ 388.1 ns      │ 394 ns        │ 1008828 │ 2017656
│  │           2.537 GiB/s   │ 32.91 MiB/s   │ 2.456 GiB/s   │ 2.42 GiB/s    │         │
│  ├─ 16384    2.402 µs      │ 58.98 µs      │ 2.493 µs      │ 2.514 µs      │ 368430  │ 368430
│  │           6.35 GiB/s    │ 264.8 MiB/s   │ 6.119 GiB/s   │ 6.068 GiB/s   │         │
│  ╰─ 1048576  150.3 µs      │ 228 µs        │ 154.2 µs      │ 154.6 µs      │ 5830    │ 5830
│              6.494 GiB/s   │ 4.281 GiB/s   │ 6.329 GiB/s   │ 6.313 GiB/s   │         │
╰─ stream                    │               │               │               │         │
   ├─ 16       289.6 ns      │ 9.689 µs      │ 299.1 ns      │ 301.2 ns      │ 375176  │ 3001408
   │           52.67 MiB/s   │ 1.574 MiB/s   │ 51.01 MiB/s   │ 50.65 MiB/s   │         │
   ├─ 256      515.4 ns      │ 23.56 µs      │ 529.3 ns      │ 533.4 ns      │ 799196  │ 1598392
   │           473.6 MiB/s   │ 10.36 MiB/s   │ 461.2 MiB/s   │ 457.6 MiB/s   │         │
   ├─ 1024     1.183 µs      │ 84.15 µs      │ 1.222 µs      │ 1.232 µs      │ 724322  │ 724322
   │           825.1 MiB/s   │ 11.6 MiB/s    │ 799.1 MiB/s   │ 792.3 MiB/s   │         │
   ├─ 16384    14.73 µs      │ 80.55 µs      │ 14.95 µs      │ 15.04 µs      │ 65594   │ 65594
   │           1.035 GiB/s   │ 193.9 MiB/s   │ 1.02 GiB/s    │ 1.014 GiB/s   │         │
   ╰─ 1048576  926.8 µs      │ 1.361 ms      │ 947.9 µs      │ 955.3 µs      │ 1029    │ 1029
               1.053 GiB/s   │ 734.6 MiB/s   │ 1.03 GiB/s    │ 1.022 GiB/s   │         │
```

## `aarch64` (Apple M2 Air 2022, rustc 1.73, `RUSTFLAGS="--cfg aes_armv8"`)

```text
benchmarks     fastest       │ slowest       │ median        │ mean          │ samples │ iters
├─ aead                      │               │               │               │         │
│  ├─ 16       478.8 ns      │ 7.515 µs      │ 499.6 ns      │ 505.6 ns      │ 226181  │ 1809448
│  │           31.86 MiB/s   │ 2.03 MiB/s    │ 30.53 MiB/s   │ 30.17 MiB/s   │         │
│  ├─ 256      577.7 ns      │ 7.609 µs      │ 598.5 ns      │ 600.6 ns      │ 192982  │ 1543856
│  │           422.5 MiB/s   │ 32.08 MiB/s   │ 407.8 MiB/s   │ 406.4 MiB/s   │         │
│  ├─ 1024     937.1 ns      │ 10.13 µs      │ 978.8 ns      │ 987.2 ns      │ 240384  │ 961536
│  │           1.017 GiB/s   │ 96.35 MiB/s   │ 997.7 MiB/s   │ 989.1 MiB/s   │         │
│  ├─ 16384    8.499 µs      │ 49.79 µs      │ 8.582 µs      │ 8.66 µs       │ 112799  │ 112799
│  │           1.795 GiB/s   │ 313.8 MiB/s   │ 1.777 GiB/s   │ 1.761 GiB/s   │         │
│  ╰─ 1048576  520.7 µs      │ 607.4 µs      │ 521.2 µs      │ 525.4 µs      │ 1881    │ 1881
│              1.875 GiB/s   │ 1.607 GiB/s   │ 1.873 GiB/s   │ 1.858 GiB/s   │         │
├─ hash                      │               │               │               │         │
│  ├─ 16       224.8 ns      │ 1.296 µs      │ 234 ns        │ 234.5 ns      │ 112340  │ 3594880
│  │           67.84 MiB/s   │ 11.76 MiB/s   │ 65.2 MiB/s    │ 65.04 MiB/s   │         │
│  ├─ 256      322.5 ns      │ 3.4 µs        │ 335.5 ns      │ 336.7 ns      │ 164077  │ 2625232
│  │           756.8 MiB/s   │ 71.79 MiB/s   │ 727.5 MiB/s   │ 725 MiB/s     │         │
│  ├─ 1024     635 ns        │ 5.442 µs      │ 655.8 ns      │ 659.3 ns      │ 176315  │ 1410520
│  │           1.501 GiB/s   │ 179.4 MiB/s   │ 1.454 GiB/s   │ 1.446 GiB/s   │         │
│  ├─ 16384    6.916 µs      │ 47.16 µs      │ 7.041 µs      │ 7.061 µs      │ 137798  │ 137798
│  │           2.206 GiB/s   │ 331.2 MiB/s   │ 2.167 GiB/s   │ 2.16 GiB/s    │         │
│  ╰─ 1048576  435 µs        │ 559.1 µs      │ 435.1 µs      │ 437.2 µs      │ 2256    │ 2256
│              2.244 GiB/s   │ 1.746 GiB/s   │ 2.244 GiB/s   │ 2.233 GiB/s   │         │
├─ prf                       │               │               │               │         │
│  ├─ 16       205.3 ns      │ 2.918 µs      │ 220.9 ns      │ 223.4 ns      │ 234007  │ 3744112
│  │           74.3 MiB/s    │ 5.227 MiB/s   │ 69.04 MiB/s   │ 68.28 MiB/s   │         │
│  ├─ 256      228.8 ns      │ 3.411 µs      │ 247 ns        │ 247.3 ns      │ 214431  │ 3430896
│  │           1.042 GiB/s   │ 71.57 MiB/s   │ 988.2 MiB/s   │ 986.9 MiB/s   │         │
│  ├─ 1024     296.5 ns      │ 2.791 µs      │ 312.1 ns      │ 313.5 ns      │ 172170  │ 2754720
│  │           3.216 GiB/s   │ 349.8 MiB/s   │ 3.055 GiB/s   │ 3.041 GiB/s   │         │
│  ├─ 16384    1.645 µs      │ 19.45 µs      │ 1.707 µs      │ 1.728 µs      │ 259413  │ 518826
│  │           9.273 GiB/s   │ 803 MiB/s     │ 8.933 GiB/s   │ 8.829 GiB/s   │         │
│  ╰─ 1048576  91.58 µs      │ 139.3 µs      │ 94.79 µs      │ 94.91 µs      │ 9883    │ 9883
│              10.66 GiB/s   │ 7.008 GiB/s   │ 10.3 GiB/s    │ 10.28 GiB/s   │         │
╰─ stream                    │               │               │               │         │
   ├─ 16       241.8 ns      │ 3.004 µs      │ 252.2 ns      │ 253.5 ns      │ 210147  │ 3362352
   │           63.09 MiB/s   │ 5.078 MiB/s   │ 60.49 MiB/s   │ 60.18 MiB/s   │         │
   ├─ 256      343.3 ns      │ 7.301 µs      │ 364.2 ns      │ 365 ns        │ 301128  │ 2409024
   │           710.9 MiB/s   │ 33.43 MiB/s   │ 670.3 MiB/s   │ 668.7 MiB/s   │         │
   ├─ 1024     707.9 ns      │ 9.937 µs      │ 739.2 ns      │ 748.2 ns      │ 312592  │ 1250368
   │           1.347 GiB/s   │ 98.27 MiB/s   │ 1.29 GiB/s    │ 1.274 GiB/s   │         │
   ├─ 16384    8.249 µs      │ 42.99 µs      │ 8.374 µs      │ 8.418 µs      │ 116039  │ 116039
   │           1.849 GiB/s   │ 363.3 MiB/s   │ 1.822 GiB/s   │ 1.812 GiB/s   │         │
   ╰─ 1048576  520.4 µs      │ 650.5 µs      │ 520.5 µs      │ 528 µs        │ 1872    │ 1872
               1.876 GiB/s   │ 1.501 GiB/s   │ 1.875 GiB/s   │ 1.849 GiB/s   │         │
```