lockstitch 0.5.2

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:   [160.53 ns 160.69 ns 160.85 ns]
                        thrpt:  [94.864 MiB/s 94.957 MiB/s 95.051 MiB/s]
hash/256B               time:   [169.63 ns 169.73 ns 169.87 ns]
                        thrpt:  [1.4036 GiB/s 1.4047 GiB/s 1.4055 GiB/s]
hash/1KiB               time:   [205.64 ns 205.71 ns 205.80 ns]
                        thrpt:  [4.6339 GiB/s 4.6360 GiB/s 4.6376 GiB/s]
hash/16KiB              time:   [930.46 ns 931.33 ns 932.30 ns]
                        thrpt:  [16.367 GiB/s 16.384 GiB/s 16.399 GiB/s]
hash/1MiB               time:   [50.064 µs 50.143 µs 50.239 µs]
                        thrpt:  [19.438 GiB/s 19.475 GiB/s 19.506 GiB/s]

prf/16B                 time:   [160.44 ns 160.52 ns 160.61 ns]
                        thrpt:  [95.004 MiB/s 95.057 MiB/s 95.106 MiB/s]
prf/256B                time:   [175.13 ns 175.23 ns 175.34 ns]
                        thrpt:  [1.3597 GiB/s 1.3606 GiB/s 1.3614 GiB/s]
prf/1KiB                time:   [222.54 ns 222.65 ns 222.76 ns]
                        thrpt:  [4.2812 GiB/s 4.2834 GiB/s 4.2853 GiB/s]
prf/16KiB               time:   [1.2183 µs 1.2261 µs 1.2361 µs]
                        thrpt:  [12.344 GiB/s 12.445 GiB/s 12.524 GiB/s]
prf/1MiB                time:   [67.525 µs 67.581 µs 67.651 µs]
                        thrpt:  [14.435 GiB/s 14.450 GiB/s 14.462 GiB/s]

stream/16B              time:   [191.41 ns 191.47 ns 191.55 ns]
                        thrpt:  [79.660 MiB/s 79.691 MiB/s 79.717 MiB/s]
stream/256B             time:   [205.38 ns 205.48 ns 205.61 ns]
                        thrpt:  [1.1596 GiB/s 1.1603 GiB/s 1.1609 GiB/s]
stream/1KiB             time:   [258.22 ns 258.37 ns 258.53 ns]
                        thrpt:  [3.6889 GiB/s 3.6911 GiB/s 3.6932 GiB/s]
stream/16KiB            time:   [1.3130 µs 1.3139 µs 1.3150 µs]
                        thrpt:  [11.604 GiB/s 11.613 GiB/s 11.622 GiB/s]
stream/1MiB             time:   [72.299 µs 72.383 µs 72.474 µs]
                        thrpt:  [13.475 GiB/s 13.492 GiB/s 13.507 GiB/s]

aead/16B                time:   [207.03 ns 207.11 ns 207.21 ns]
                        thrpt:  [73.641 MiB/s 73.674 MiB/s 73.704 MiB/s]
aead/256B               time:   [221.22 ns 221.32 ns 221.43 ns]
                        thrpt:  [1.0767 GiB/s 1.0772 GiB/s 1.0777 GiB/s]
aead/1KiB               time:   [272.69 ns 272.84 ns 273.02 ns]
                        thrpt:  [3.4930 GiB/s 3.4953 GiB/s 3.4973 GiB/s]
aead/16KiB              time:   [1.3269 µs 1.3282 µs 1.3302 µs]
                        thrpt:  [11.471 GiB/s 11.488 GiB/s 11.500 GiB/s]
aead/1MiB               time:   [72.426 µs 72.518 µs 72.617 µs]
                        thrpt:  [13.448 GiB/s 13.466 GiB/s 13.484 GiB/s]
```

## `aarch64` (Apple M1 Air 2020)

```text
hash/16B                time:   [176.11 ns 176.24 ns 176.41 ns]
                        thrpt:  [86.495 MiB/s 86.579 MiB/s 86.646 MiB/s]
hash/256B               time:   [193.92 ns 194.84 ns 196.06 ns]
                        thrpt:  [1.2160 GiB/s 1.2236 GiB/s 1.2295 GiB/s]
hash/1KiB               time:   [234.71 ns 235.16 ns 235.68 ns]
                        thrpt:  [4.0465 GiB/s 4.0554 GiB/s 4.0632 GiB/s]
hash/16KiB              time:   [1.1511 µs 1.1528 µs 1.1547 µs]
                        thrpt:  [13.215 GiB/s 13.236 GiB/s 13.256 GiB/s]
hash/1MiB               time:   [65.420 µs 65.544 µs 65.696 µs]
                        thrpt:  [14.865 GiB/s 14.899 GiB/s 14.928 GiB/s]

prf/16B                 time:   [182.64 ns 182.85 ns 183.09 ns]
                        thrpt:  [83.339 MiB/s 83.448 MiB/s 83.548 MiB/s]
prf/256B                time:   [206.42 ns 206.68 ns 206.92 ns]
                        thrpt:  [1.1522 GiB/s 1.1536 GiB/s 1.1550 GiB/s]
prf/1KiB                time:   [259.99 ns 260.54 ns 261.18 ns]
                        thrpt:  [3.6513 GiB/s 3.6603 GiB/s 3.6682 GiB/s]
prf/16KiB               time:   [1.3050 µs 1.3060 µs 1.3075 µs]
                        thrpt:  [11.671 GiB/s 11.683 GiB/s 11.692 GiB/s]
prf/1MiB                time:   [76.011 µs 76.042 µs 76.078 µs]
                        thrpt:  [12.836 GiB/s 12.842 GiB/s 12.848 GiB/s]

stream/16B              time:   [228.80 ns 228.97 ns 229.15 ns]
                        thrpt:  [66.587 MiB/s 66.642 MiB/s 66.690 MiB/s]
stream/256B             time:   [246.99 ns 247.17 ns 247.39 ns]
                        thrpt:  [986.85 MiB/s 987.74 MiB/s 988.44 MiB/s]
stream/1KiB             time:   [310.98 ns 311.09 ns 311.26 ns]
                        thrpt:  [3.0639 GiB/s 3.0655 GiB/s 3.0667 GiB/s]
stream/16KiB            time:   [1.5968 µs 1.5980 µs 1.5995 µs]
                        thrpt:  [9.5395 GiB/s 9.5486 GiB/s 9.5559 GiB/s]
stream/1MiB             time:   [92.409 µs 92.474 µs 92.554 µs]
                        thrpt:  [10.551 GiB/s 10.560 GiB/s 10.568 GiB/s]

aead/16B                time:   [239.08 ns 239.41 ns 239.88 ns]
                        thrpt:  [63.609 MiB/s 63.735 MiB/s 63.823 MiB/s]
aead/256B               time:   [254.98 ns 255.04 ns 255.14 ns]
                        thrpt:  [956.88 MiB/s 957.25 MiB/s 957.49 MiB/s]
aead/1KiB               time:   [319.24 ns 319.70 ns 320.37 ns]
                        thrpt:  [2.9768 GiB/s 2.9831 GiB/s 2.9873 GiB/s]
aead/16KiB              time:   [1.6060 µs 1.6071 µs 1.6086 µs]
                        thrpt:  [9.4855 GiB/s 9.4946 GiB/s 9.5014 GiB/s]
aead/1MiB               time:   [92.377 µs 92.547 µs 92.857 µs]
                        thrpt:  [10.517 GiB/s 10.552 GiB/s 10.571 GiB/s]
```