lockstitch 0.9.1

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, `+aes,+ssse3`)

```text
hash/16B                time:   [104.71 ns 104.78 ns 104.86 ns]
                        thrpt:  [145.52 MiB/s 145.63 MiB/s 145.72 MiB/s]
hash/256B               time:   [303.17 ns 303.38 ns 303.65 ns]
                        thrpt:  [804.01 MiB/s 804.74 MiB/s 805.29 MiB/s]
hash/1KiB               time:   [894.86 ns 895.14 ns 895.45 ns]
                        thrpt:  [1.0650 GiB/s 1.0654 GiB/s 1.0657 GiB/s]
hash/16KiB              time:   [12.732 µs 12.737 µs 12.745 µs]
                        thrpt:  [1.1972 GiB/s 1.1980 GiB/s 1.1985 GiB/s]
hash/1MiB               time:   [897.08 µs 900.25 µs 903.44 µs]
                        thrpt:  [1.0809 GiB/s 1.0848 GiB/s 1.0886 GiB/s]

prf/16B                 time:   [99.767 ns 99.805 ns 99.865 ns]
                        thrpt:  [152.79 MiB/s 152.89 MiB/s 152.94 MiB/s]
prf/256B                time:   [117.53 ns 117.60 ns 117.71 ns]
                        thrpt:  [2.0255 GiB/s 2.0274 GiB/s 2.0285 GiB/s]
prf/1KiB                time:   [174.06 ns 174.18 ns 174.34 ns]
                        thrpt:  [5.4702 GiB/s 5.4752 GiB/s 5.4790 GiB/s]
prf/16KiB               time:   [1.3070 µs 1.3074 µs 1.3078 µs]
                        thrpt:  [11.668 GiB/s 11.671 GiB/s 11.675 GiB/s]
prf/1MiB                time:   [73.733 µs 73.757 µs 73.785 µs]
                        thrpt:  [13.235 GiB/s 13.240 GiB/s 13.245 GiB/s]

stream/16B              time:   [183.39 ns 183.51 ns 183.69 ns]
                        thrpt:  [83.067 MiB/s 83.151 MiB/s 83.205 MiB/s]
stream/256B             time:   [201.34 ns 201.38 ns 201.44 ns]
                        thrpt:  [1.1836 GiB/s 1.1839 GiB/s 1.1842 GiB/s]
stream/1KiB             time:   [264.55 ns 264.60 ns 264.67 ns]
                        thrpt:  [3.6033 GiB/s 3.6042 GiB/s 3.6049 GiB/s]
stream/16KiB            time:   [1.5775 µs 1.5782 µs 1.5791 µs]
                        thrpt:  [9.6630 GiB/s 9.6684 GiB/s 9.6730 GiB/s]
stream/1MiB             time:   [97.085 µs 97.303 µs 97.557 µs]
                        thrpt:  [10.010 GiB/s 10.036 GiB/s 10.059 GiB/s]

aead/16B                time:   [222.69 ns 222.84 ns 223.05 ns]
                        thrpt:  [68.411 MiB/s 68.475 MiB/s 68.521 MiB/s]
aead/256B               time:   [239.74 ns 239.88 ns 240.06 ns]
                        thrpt:  [1017.0 MiB/s 1017.8 MiB/s 1018.3 MiB/s]
aead/1KiB               time:   [303.35 ns 303.54 ns 303.78 ns]
                        thrpt:  [3.1393 GiB/s 3.1419 GiB/s 3.1438 GiB/s]
aead/16KiB              time:   [1.6182 µs 1.6200 µs 1.6223 µs]
                        thrpt:  [9.4055 GiB/s 9.4190 GiB/s 9.4295 GiB/s]
aead/1MiB               time:   [96.532 µs 96.677 µs 96.811 µs]
                        thrpt:  [10.087 GiB/s 10.101 GiB/s 10.116 GiB/s]
```

## `aarch64` (Apple M2 Air 2022)

```text
hash/16B                time:   [67.332 ns 67.395 ns 67.471 ns]
                        thrpt:  [226.15 MiB/s 226.41 MiB/s 226.62 MiB/s]
hash/256B               time:   [176.69 ns 176.83 ns 177.02 ns]
                        thrpt:  [1.3469 GiB/s 1.3483 GiB/s 1.3494 GiB/s]
hash/1KiB               time:   [511.81 ns 513.63 ns 515.40 ns]
                        thrpt:  [1.8504 GiB/s 1.8568 GiB/s 1.8633 GiB/s]
hash/16KiB              time:   [7.1573 µs 7.1924 µs 7.2455 µs]
                        thrpt:  [2.1060 GiB/s 2.1215 GiB/s 2.1319 GiB/s]
hash/1MiB               time:   [452.41 µs 452.91 µs 453.54 µs]
                        thrpt:  [2.1532 GiB/s 2.1562 GiB/s 2.1586 GiB/s]

prf/16B                 time:   [66.148 ns 66.327 ns 66.529 ns]
                        thrpt:  [229.36 MiB/s 230.05 MiB/s 230.68 MiB/s]
prf/256B                time:   [83.620 ns 83.785 ns 83.942 ns]
                        thrpt:  [2.8403 GiB/s 2.8456 GiB/s 2.8512 GiB/s]
prf/1KiB                time:   [132.14 ns 132.23 ns 132.33 ns]
                        thrpt:  [7.2066 GiB/s 7.2122 GiB/s 7.2173 GiB/s]
prf/16KiB               time:   [1.1916 µs 1.1922 µs 1.1928 µs]
                        thrpt:  [12.792 GiB/s 12.799 GiB/s 12.805 GiB/s]
prf/1MiB                time:   [75.012 µs 75.099 µs 75.198 µs]
                        thrpt:  [12.986 GiB/s 13.004 GiB/s 13.019 GiB/s]

stream/16B              time:   [113.01 ns 113.29 ns 113.74 ns]
                        thrpt:  [134.16 MiB/s 134.69 MiB/s 135.02 MiB/s]
stream/256B             time:   [132.40 ns 132.49 ns 132.57 ns]
                        thrpt:  [1.7984 GiB/s 1.7996 GiB/s 1.8007 GiB/s]
stream/1KiB             time:   [195.89 ns 195.99 ns 196.10 ns]
                        thrpt:  [4.8632 GiB/s 4.8661 GiB/s 4.8685 GiB/s]
stream/16KiB            time:   [1.4566 µs 1.4575 µs 1.4585 µs]
                        thrpt:  [10.462 GiB/s 10.469 GiB/s 10.475 GiB/s]
stream/1MiB             time:   [89.545 µs 89.608 µs 89.678 µs]
                        thrpt:  [10.890 GiB/s 10.898 GiB/s 10.906 GiB/s]

aead/16B                time:   [114.71 ns 114.80 ns 114.90 ns]
                        thrpt:  [132.80 MiB/s 132.92 MiB/s 133.02 MiB/s]
aead/256B               time:   [131.95 ns 132.04 ns 132.14 ns]
                        thrpt:  [1.8043 GiB/s 1.8057 GiB/s 1.8068 GiB/s]
aead/1KiB               time:   [196.01 ns 196.13 ns 196.29 ns]
                        thrpt:  [4.8584 GiB/s 4.8624 GiB/s 4.8654 GiB/s]
aead/16KiB              time:   [1.4600 µs 1.4609 µs 1.4620 µs]
                        thrpt:  [10.437 GiB/s 10.445 GiB/s 10.451 GiB/s]
aead/1MiB               time:   [89.898 µs 89.979 µs 90.070 µs]
                        thrpt:  [10.842 GiB/s 10.853 GiB/s 10.863 GiB/s]
```