Filippo Valsorda
cc0e4fc1d4
hkdf: forward Extract to the standard library
...
Change-Id: I82406eb153c53e7cbf167360e472724a6a6a6964
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/769720
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net >
Reviewed-by: Roland Shoemaker <roland@golang.org >
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Carlos Amedee <carlos@golang.org >
Auto-Submit: Filippo Valsorda <filippo@golang.org >
2026-04-23 08:20:08 -07:00
Filippo Valsorda
a6a393ffd6
all: bump go.mod version and drop compatibility shims
...
Also, remove the legacy import annotations.
Fixes golang/go#68147
Change-Id: Ibfcc9322f27224c0ba92ea42cd56912a7d8783fd
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/594256
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com >
Auto-Submit: Filippo Valsorda <filippo@golang.org >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Roland Shoemaker <roland@golang.org >
2024-06-26 15:12:35 +00:00
Eric Lagergren
74c2ba9521
crypto/hkdf: remove useless call to Reset
...
HKDF is commonly used to read keys that are the the same length (or
smaller) than the size of the hash digest, which means the loop inside
Read only runs once.
In that case, calling Reset is unnecesssary overhead.
name old time/op new time/op delta
16ByteMD5Single-8 1.39µs ± 1% 1.22µs ± 0% -11.95% (p=0.000 n=10+9)
20ByteSHA1Single-8 826ns ± 0% 746ns ± 0% -9.70% (p=0.000 n=9+10)
32ByteSHA256Single-8 838ns ± 1% 744ns ± 0% -11.29% (p=0.000 n=10+10)
64ByteSHA512Single-8 5.12µs ± 0% 4.57µs ± 0% -10.78% (p=0.000 n=8+10)
8ByteMD5Stream-8 137ns ± 0% 138ns ± 0% +0.27% (p=0.009 n=9+6)
16ByteMD5Stream-8 264ns ± 0% 265ns ± 0% +0.29% (p=0.000 n=10+10)
8ByteSHA1Stream-8 64.1ns ± 0% 64.4ns ± 0% +0.60% (p=0.000 n=9+9)
20ByteSHA1Stream-8 145ns ± 0% 146ns ± 1% +0.69% (p=0.000 n=9+10)
8ByteSHA256Stream-8 42.9ns ± 1% 43.1ns ± 0% +0.48% (p=0.005 n=10+10)
32ByteSHA256Stream-8 151ns ± 0% 152ns ± 0% +0.35% (p=0.006 n=10+8)
8ByteSHA512Stream-8 139ns ± 0% 139ns ± 0% +0.08% (p=0.035 n=9+10)
64ByteSHA512Stream-8 1.07µs ± 0% 1.07µs ± 0% +0.33% (p=0.000 n=9+10)
name old speed new speed delta
16ByteMD5Single-8 11.6MB/s ± 0% 13.1MB/s ± 0% +13.50% (p=0.000 n=9+9)
20ByteSHA1Single-8 24.2MB/s ± 0% 26.8MB/s ± 0% +10.75% (p=0.000 n=9+10)
32ByteSHA256Single-8 38.2MB/s ± 1% 43.0MB/s ± 0% +12.72% (p=0.000 n=10+10)
64ByteSHA512Single-8 12.5MB/s ± 0% 14.0MB/s ± 0% +12.06% (p=0.000 n=8+10)
8ByteMD5Stream-8 58.2MB/s ± 0% 58.1MB/s ± 0% -0.27% (p=0.004 n=9+9)
16ByteMD5Stream-8 60.6MB/s ± 0% 60.5MB/s ± 0% -0.27% (p=0.000 n=9+10)
8ByteSHA1Stream-8 125MB/s ± 0% 124MB/s ± 0% -0.59% (p=0.000 n=9+9)
20ByteSHA1Stream-8 138MB/s ± 0% 137MB/s ± 1% -0.69% (p=0.000 n=9+10)
8ByteSHA256Stream-8 186MB/s ± 1% 185MB/s ± 0% -0.47% (p=0.005 n=10+10)
32ByteSHA256Stream-8 211MB/s ± 0% 211MB/s ± 0% -0.37% (p=0.003 n=10+8)
8ByteSHA512Stream-8 57.4MB/s ± 1% 57.4MB/s ± 0% ~ (p=0.137 n=10+10)
64ByteSHA512Stream-8 59.9MB/s ± 0% 59.7MB/s ± 0% -0.33% (p=0.000 n=9+10)
name old alloc/op new alloc/op delta
16ByteMD5Single-8 1.17kB ± 0% 0.98kB ± 0% -16.42% (p=0.000 n=10+10)
20ByteSHA1Single-8 1.25kB ± 0% 1.06kB ± 0% -15.37% (p=0.000 n=10+10)
32ByteSHA256Single-8 1.36kB ± 0% 1.14kB ± 0% -16.46% (p=0.000 n=10+10)
64ByteSHA512Single-8 2.26kB ± 0% 1.84kB ± 0% -18.43% (p=0.000 n=10+10)
8ByteMD5Stream-8 2.00B ± 0% 2.00B ± 0% ~ (all equal)
16ByteMD5Stream-8 5.00B ± 0% 5.00B ± 0% ~ (all equal)
8ByteSHA1Stream-8 2.00B ± 0% 2.00B ± 0% ~ (all equal)
20ByteSHA1Stream-8 5.00B ± 0% 5.00B ± 0% ~ (all equal)
8ByteSHA256Stream-8 1.00B ± 0% 1.00B ± 0% ~ (all equal)
32ByteSHA256Stream-8 6.00B ± 0% 6.00B ± 0% ~ (all equal)
8ByteSHA512Stream-8 1.00B ± 0% 1.00B ± 0% ~ (all equal)
64ByteSHA512Stream-8 9.00B ± 0% 9.00B ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
16ByteMD5Single-8 16.0 ± 0% 14.0 ± 0% -12.50% (p=0.000 n=10+10)
20ByteSHA1Single-8 16.0 ± 0% 14.0 ± 0% -12.50% (p=0.000 n=10+10)
32ByteSHA256Single-8 16.0 ± 0% 14.0 ± 0% -12.50% (p=0.000 n=10+10)
64ByteSHA512Single-8 16.0 ± 0% 14.0 ± 0% -12.50% (p=0.000 n=10+10)
8ByteMD5Stream-8 0.00 0.00 ~ (all equal)
16ByteMD5Stream-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
8ByteSHA1Stream-8 0.00 0.00 ~ (all equal)
20ByteSHA1Stream-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
8ByteSHA256Stream-8 0.00 0.00 ~ (all equal)
32ByteSHA256Stream-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
8ByteSHA512Stream-8 0.00 0.00 ~ (all equal)
64ByteSHA512Stream-8 1.00 ± 0% 1.00 ± 0% ~ (all equal)
Change-Id: I08e5deb7045ce9aa63428e0ac7ae6140226414b4
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/423414
Reviewed-by: Roland Shoemaker <roland@golang.org >
TryBot-Result: Gopher Robot <gobot@golang.org >
Run-TryBot: Roland Shoemaker <roland@golang.org >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Tatiana Bradley <tatianabradley@google.com >
2023-10-30 15:29:48 +00:00
Filippo Valsorda
e84da03127
hkdf: add Extract and Expand
...
RFC 5869, Section 3.3 suggests it might be sometimes appropriate to use
Expand without Extract, and it is reasonable to reuse (secret, salt)
with different info values, in which case the Extract can be performed
once as an optimization.
TLS 1.3 also needs direct access to both Extract and Expand.
pseudorandomKey is ugly to look at, but that's intentional, as it
signals that this should have non-obvious properties to the user. The
docs will make it clear it's not the thing you should use in most cases.
Fixes golang/go#28237
Change-Id: Ib43ae8cdde0663aa4752172c39aadfb0e1c35f10
Reviewed-on: https://go-review.googlesource.com/c/144398
Reviewed-by: Adam Langley <agl@golang.org >
2018-10-25 21:37:31 +00:00
David Symonds
1fbbd62cfe
crypto: add import comments.
...
Change-Id: I33240faf1b8620d0cd600de661928d8e422ebdbc
Reviewed-on: https://go-review.googlesource.com/1235
Reviewed-by: Andrew Gerrand <adg@golang.org >
2014-12-09 23:26:36 +00:00
Dmitry Chestnykh
ce1cf546ac
go.crypto/hkdf: get rid of appends
...
LGTM=agl
R=golang-codereviews, bradfitz, agl
CC=golang-codereviews
https://golang.org/cl/95370044
2014-05-25 13:56:25 -07:00
Péter Szilágyi
f82d56354e
go.crypto/hkdf: implement hash-based, key derivation.
...
Detailed description in RFC 5869.
LGTM=agl
R=agl, minux.ma
CC=golang-codereviews
https://golang.org/cl/7474049
2014-02-12 14:08:25 -05:00