@@ -43,8 +43,8 @@ Subject: [PATCH] Use crypto backends
43
43
src/crypto/internal/fips140test/check_test.go | 8 +-
44
44
src/crypto/md5/md5.go | 10 +
45
45
src/crypto/md5/md5_test.go | 16 ++
46
- src/crypto/pbkdf2/pbkdf2.go | 4 +
47
- src/crypto/pbkdf2/pbkdf2_test.go | 2 +-
46
+ src/crypto/pbkdf2/pbkdf2.go | 7 +
47
+ src/crypto/pbkdf2/pbkdf2_test.go | 6 +-
48
48
src/crypto/purego_test.go | 2 +-
49
49
src/crypto/rand/rand.go | 2 +-
50
50
src/crypto/rc4/rc4.go | 18 ++
@@ -85,7 +85,7 @@ Subject: [PATCH] Use crypto backends
85
85
src/net/smtp/smtp_test.go | 72 ++++---
86
86
src/os/exec/exec_test.go | 9 +
87
87
src/runtime/pprof/vminfo_darwin_test.go | 6 +
88
- 81 files changed, 1131 insertions(+), 112 deletions(-)
88
+ 81 files changed, 1138 insertions(+), 112 deletions(-)
89
89
create mode 100644 src/crypto/dsa/boring.go
90
90
create mode 100644 src/crypto/dsa/notboring.go
91
91
create mode 100644 src/crypto/ecdsa/badlinkname.go
@@ -135,10 +135,10 @@ index 1f467647f56143..4d770d7fc239e2 100644
135
135
// No need to enable PGO for toolchain2.
136
136
goInstall(toolenv(), goBootstrap, append([]string{"-pgo=off"}, toolchain...)...)
137
137
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
138
- index 0c992118f4287b..d224514552fd63 100644
138
+ index 005e1da86a1dc2..7536a83a124740 100644
139
139
--- a/src/cmd/dist/test.go
140
140
+++ b/src/cmd/dist/test.go
141
- @@ -714 ,7 +714 ,7 @@ func (t *tester) registerTests() {
141
+ @@ -710 ,7 +710 ,7 @@ func (t *tester) registerTests() {
142
142
})
143
143
144
144
// Check that all crypto packages compile (and test correctly, in longmode) with fips.
@@ -147,7 +147,7 @@ index 0c992118f4287b..d224514552fd63 100644
147
147
// Test standard crypto packages with fips140=on.
148
148
t.registerTest("GODEBUG=fips140=on go test crypto/...", &goTest{
149
149
variant: "gofips140",
150
- @@ -1161 ,6 +1161 ,11 @@ func (t *tester) internalLink() bool {
150
+ @@ -1165 ,6 +1165 ,11 @@ func (t *tester) internalLink() bool {
151
151
if goos == "windows" && goarch == "arm64" {
152
152
return false
153
153
}
@@ -159,7 +159,7 @@ index 0c992118f4287b..d224514552fd63 100644
159
159
// Internally linking cgo is incomplete on some architectures.
160
160
// https://golang.org/issue/10373
161
161
// https://golang.org/issue/14449
162
- @@ -1324 ,12 +1329 ,11 @@ func (t *tester) registerCgoTests(heading string) {
162
+ @@ -1328 ,12 +1333 ,11 @@ func (t *tester) registerCgoTests(heading string) {
163
163
// a C linker warning on Linux.
164
164
// in function `bio_ip_and_port_to_socket_and_addr':
165
165
// warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
@@ -284,7 +284,7 @@ index 2d8f964f3594c6..a587e1abde57c9 100644
284
284
"crypto/internal/boring/syso",
285
285
"crypto/x509",
286
286
diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go
287
- index 7614b6d194facf..f0f53ab2bab047 100644
287
+ index 377dcd6c856fa6..1744ff2ca38973 100644
288
288
--- a/src/cmd/link/internal/ld/main.go
289
289
+++ b/src/cmd/link/internal/ld/main.go
290
290
@@ -44,6 +44,7 @@ import (
@@ -295,7 +295,7 @@ index 7614b6d194facf..f0f53ab2bab047 100644
295
295
"strconv"
296
296
"strings"
297
297
)
298
- @@ -185 ,7 +186 ,16 @@ func Main(arch *sys.Arch, theArch Arch) {
298
+ @@ -186 ,7 +187 ,16 @@ func Main(arch *sys.Arch, theArch Arch) {
299
299
300
300
buildVersion := buildcfg.Version
301
301
if goexperiment := buildcfg.Experiment.String(); goexperiment != "" {
@@ -314,7 +314,7 @@ index 7614b6d194facf..f0f53ab2bab047 100644
314
314
addstrdata1(ctxt, "runtime.buildVersion="+buildVersion)
315
315
316
316
diff --git a/src/crypto/aes/aes.go b/src/crypto/aes/aes.go
317
- index 5bc2d13d673e0a..b803c77be62a66 100644
317
+ index 22ea8819ed239a..1e2cba08c1c760 100644
318
318
--- a/src/crypto/aes/aes.go
319
319
+++ b/src/crypto/aes/aes.go
320
320
@@ -15,7 +15,7 @@ package aes
@@ -730,7 +730,7 @@ index acef8298943c2b..ca6171cf775117 100644
730
730
"errors"
731
731
diff --git a/src/crypto/ecdsa/badlinkname.go b/src/crypto/ecdsa/badlinkname.go
732
732
new file mode 100644
733
- index 00000000000000..1dc05d09b2062d
733
+ index 00000000000000..168efdb820c85b
734
734
--- /dev/null
735
735
+++ b/src/crypto/ecdsa/badlinkname.go
736
736
@@ -0,0 +1,19 @@
@@ -1146,7 +1146,7 @@ index 6b02522866d57f..37e67ec184af5d 100644
1146
1146
}
1147
1147
1148
1148
diff --git a/src/crypto/hkdf/hkdf_test.go b/src/crypto/hkdf/hkdf_test.go
1149
- index 201b440289bb2d..4ed4960ff35b66 100644
1149
+ index 57d90f88e93e75..4069ab057a2525 100644
1150
1150
--- a/src/crypto/hkdf/hkdf_test.go
1151
1151
+++ b/src/crypto/hkdf/hkdf_test.go
1152
1152
@@ -6,7 +6,7 @@ package hkdf
@@ -1337,7 +1337,7 @@ index 437d9b9d4c0e0d..50728df60ea7ec 100644
1337
1337
continue
1338
1338
}
1339
1339
diff --git a/src/crypto/pbkdf2/pbkdf2.go b/src/crypto/pbkdf2/pbkdf2.go
1340
- index 271d2b03312ef0..ff76299fbe4782 100644
1340
+ index dd5fc33f2120c3..7ce0da53887a40 100644
1341
1341
--- a/src/crypto/pbkdf2/pbkdf2.go
1342
1342
+++ b/src/crypto/pbkdf2/pbkdf2.go
1343
1343
@@ -11,6 +11,7 @@
@@ -1348,20 +1348,23 @@ index 271d2b03312ef0..ff76299fbe4782 100644
1348
1348
"crypto/internal/fips140/pbkdf2"
1349
1349
"crypto/internal/fips140hash"
1350
1350
"crypto/internal/fips140only"
1351
- @@ -47 ,5 +48,8 @@ func Key[Hash hash.Hash](h func() Hash, password string, salt []byte, iter, keyL
1351
+ @@ -50 ,5 +51,11 @@ func Key[Hash hash.Hash](h func() Hash, password string, salt []byte, iter, keyL
1352
1352
return nil, errors.New("crypto/pbkdf2: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode")
1353
1353
}
1354
1354
}
1355
1355
+ if boring.Enabled && boring.SupportsPBKDF2() {
1356
+ + if keyLength <= 0 {
1357
+ + return nil, errors.New("pkbdf2: keyLength must be larger than 0")
1358
+ + }
1356
1359
+ return boring.PBKDF2([]byte(password), salt, iter, keyLength, fh)
1357
1360
+ }
1358
1361
return pbkdf2.Key(fh, password, salt, iter, keyLength)
1359
1362
}
1360
1363
diff --git a/src/crypto/pbkdf2/pbkdf2_test.go b/src/crypto/pbkdf2/pbkdf2_test.go
1361
- index 03980c7e54d3be..4968a666fad4e5 100644
1364
+ index eb0ed14e243c6b..cd7223c89eeae5 100644
1362
1365
--- a/src/crypto/pbkdf2/pbkdf2_test.go
1363
1366
+++ b/src/crypto/pbkdf2/pbkdf2_test.go
1364
- @@ -6,7 +6,7 @@ package pbkdf2_test
1367
+ @@ -6,12 +6,13 @@ package pbkdf2_test
1365
1368
1366
1369
import (
1367
1370
"bytes"
@@ -1370,6 +1373,22 @@ index 03980c7e54d3be..4968a666fad4e5 100644
1370
1373
"crypto/internal/fips140"
1371
1374
"crypto/pbkdf2"
1372
1375
"crypto/sha1"
1376
+ "crypto/sha256"
1377
+ "hash"
1378
+ + "internal/goexperiment"
1379
+ "testing"
1380
+ )
1381
+
1382
+ @@ -223,6 +224,9 @@ func TestPBKDF2ServiceIndicator(t *testing.T) {
1383
+ }
1384
+
1385
+ func TestMaxKeyLength(t *testing.T) {
1386
+ + if goexperiment.SystemCrypto {
1387
+ + t.Skip("Some backends don't support keys longer than 32 bytes")
1388
+ + }
1389
+ // This error cannot be triggered on platforms where int is 31 bits (i.e.
1390
+ // 32-bit platforms), since the max value for keyLength is 1<<31-1 and
1391
+ // 1<<31-1 * hLen will always be less than 1<<32-1 * hLen.
1373
1392
diff --git a/src/crypto/purego_test.go b/src/crypto/purego_test.go
1374
1393
index 62be347e0c6822..d284b5cf7814a6 100644
1375
1394
--- a/src/crypto/purego_test.go
@@ -2200,7 +2219,7 @@ index 7c75977ad3ffb2..b9db95ca7b9d5a 100644
2200
2219
2201
2220
if err := hs.processClientHello(); err != nil {
2202
2221
diff --git a/src/crypto/tls/handshake_server_tls13.go b/src/crypto/tls/handshake_server_tls13.go
2203
- index 76fff6974e7403..3ef8b56e5c7898 100644
2222
+ index b6d455cd397e31..c8f1c4ad43fdc3 100644
2204
2223
--- a/src/crypto/tls/handshake_server_tls13.go
2205
2224
+++ b/src/crypto/tls/handshake_server_tls13.go
2206
2225
@@ -8,13 +8,14 @@ import (
@@ -2295,7 +2314,7 @@ index 24d78d60cf5b64..0b87185683ab8b 100644
2295
2314
}
2296
2315
diff --git a/src/crypto/tls/internal/tls13/doc.go b/src/crypto/tls/internal/tls13/doc.go
2297
2316
new file mode 100644
2298
- index 00000000000000..1adf3098356307
2317
+ index 00000000000000..acfa551001af9c
2299
2318
--- /dev/null
2300
2319
+++ b/src/crypto/tls/internal/tls13/doc.go
2301
2320
@@ -0,0 +1,18 @@
@@ -2588,10 +2607,10 @@ index e7369542a73270..ff52175e4ac636 100644
2588
2607
}
2589
2608
}
2590
2609
diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
2591
- index e4e07843c8ce55..87e92a5d6d1ee9 100644
2610
+ index f9c403aba45f5c..c956d394776ea0 100644
2592
2611
--- a/src/go/build/deps_test.go
2593
2612
+++ b/src/go/build/deps_test.go
2594
- @@ -510 ,7 +510 ,7 @@ var depsRules = `
2613
+ @@ -520 ,7 +520 ,7 @@ var depsRules = `
2595
2614
< crypto/internal/backend/internal/opensslsetup
2596
2615
< crypto/internal/backend/fips140;
2597
2616
@@ -2600,15 +2619,15 @@ index e4e07843c8ce55..87e92a5d6d1ee9 100644
2600
2619
2601
2620
crypto, hash !< FIPS;
2602
2621
2603
- @@ -551 ,6 +551 ,7 @@ var depsRules = `
2622
+ @@ -565 ,6 +565 ,7 @@ var depsRules = `
2604
2623
crypto/pbkdf2,
2605
2624
crypto/ecdh,
2606
2625
crypto/mlkem
2607
2626
+ < crypto/tls/internal/tls13
2608
2627
< CRYPTO;
2609
2628
2610
2629
CGO, fmt, net !< CRYPTO;
2611
- @@ -576 ,7 +577 ,7 @@ var depsRules = `
2630
+ @@ -594 ,7 +595 ,7 @@ var depsRules = `
2612
2631
2613
2632
# TLS, Prince of Dependencies.
2614
2633
0 commit comments