commit | 44a6062868251b249d52ec1c39797568f724bdca | [log] [tgz] |
---|---|---|
author | Filippo Valsorda <filippo@golang.org> | Wed Nov 06 18:01:18 2019 -0500 |
committer | Filippo Valsorda <filippo@golang.org> | Wed Apr 22 19:42:13 2020 +0000 |
tree | c5a5f9bfa1a2b2b9d4eb042e145656e6b39f2835 | |
parent | 3c4aac89819a5fdc28d906456729d3423fd46969 [diff] |
poly1305: add (*MAC).Verify API and use it in chacha20poly1305 Also, make sure New inlines so it does not cause an allocation. With this, we have a zero allocation poly1305 flow and a zero allocation generic chacha20poly1305 composition! \o/ While at it, remove some redundant code, and prepare to drop some complexity once the last assembly implementation of sum is dropped. Benchstat with "-tags purego" on amd64 name old time/op new time/op delta Open-64-8 461ns ± 2% 415ns ± 1% -9.93% (p=0.000 n=10+8) Seal-64-8 450ns ± 3% 412ns ± 3% -8.41% (p=0.000 n=10+10) Open-64-X-8 603ns ± 2% 544ns ± 2% -9.84% (p=0.000 n=10+10) Seal-64-X-8 580ns ± 3% 553ns ± 1% -4.56% (p=0.000 n=9+8) Open-1350-8 3.98µs ± 2% 3.65µs ± 2% -8.28% (p=0.000 n=9+10) Seal-1350-8 3.95µs ± 2% 3.64µs ± 1% -7.93% (p=0.000 n=9+10) Open-1350-X-8 4.06µs ± 1% 3.68µs ± 3% -9.31% (p=0.000 n=9+10) Seal-1350-X-8 4.08µs ± 4% 3.64µs ± 1% -10.71% (p=0.000 n=9+10) Open-8192-8 21.7µs ± 3% 18.9µs ± 2% -13.10% (p=0.000 n=9+10) Seal-8192-8 21.5µs ± 3% 18.8µs ± 1% -12.51% (p=0.000 n=9+9) Open-8192-X-8 21.4µs ± 1% 19.1µs ± 2% -10.88% (p=0.000 n=10+10) Seal-8192-X-8 21.3µs ± 2% 19.0µs ± 3% -10.92% (p=0.000 n=10+10) name old speed new speed delta Open-64-8 139MB/s ± 2% 154MB/s ± 2% +11.05% (p=0.000 n=10+8) Seal-64-8 142MB/s ± 3% 155MB/s ± 3% +9.11% (p=0.000 n=10+10) Open-64-X-8 106MB/s ± 2% 118MB/s ± 2% +10.93% (p=0.000 n=10+10) Seal-64-X-8 110MB/s ± 3% 116MB/s ± 1% +4.75% (p=0.000 n=9+8) Open-1350-8 339MB/s ± 2% 370MB/s ± 2% +9.04% (p=0.000 n=9+10) Seal-1350-8 342MB/s ± 2% 371MB/s ± 1% +8.60% (p=0.000 n=9+10) Open-1350-X-8 333MB/s ± 1% 367MB/s ± 3% +10.30% (p=0.000 n=9+10) Seal-1350-X-8 331MB/s ± 4% 371MB/s ± 2% +11.96% (p=0.000 n=9+10) Open-8192-8 377MB/s ± 3% 434MB/s ± 2% +15.07% (p=0.000 n=9+10) Seal-8192-8 381MB/s ± 3% 436MB/s ± 1% +14.29% (p=0.000 n=9+9) Open-8192-X-8 383MB/s ± 1% 429MB/s ± 2% +12.21% (p=0.000 n=10+10) Seal-8192-X-8 385MB/s ± 2% 432MB/s ± 3% +12.26% (p=0.000 n=10+10) name old alloc/op new alloc/op delta Open-64-8 96.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10) Seal-64-8 96.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10) Open-64-X-8 96.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10) Seal-64-X-8 96.0B ± 0% 0.0B -100.00% (p=0.000 n=10+10) Open-1350-8 1.41kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Seal-1350-8 1.41kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Open-1350-X-8 1.41kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Seal-1350-X-8 1.41kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Open-8192-8 9.47kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Seal-8192-8 9.47kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Open-8192-X-8 9.47kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) Seal-8192-X-8 9.47kB ± 0% 0.00kB -100.00% (p=0.000 n=10+10) name old allocs/op new allocs/op delta Open-64-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-64-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Open-64-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-64-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Open-1350-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-1350-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Open-1350-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-1350-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Open-8192-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-8192-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Open-8192-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Seal-8192-X-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Change-Id: I2c30ddc960a889b49c8ee8ff8073ffc4e75f43af Reviewed-on: https://go-review.googlesource.com/c/crypto/+/206977 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Katie Hockman <katie@golang.org>
This repository holds supplementary Go cryptography libraries.
The easiest way to install is to run go get -u golang.org/x/crypto/...
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/crypto
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the crypto repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/crypto:” in the subject line, so it is easy to find.
Note that contributions to the cryptography package receive additional scrutiny due to their sensitive nature. Patches may take longer than normal to receive feedback.