mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.boringcrypto] all: add boringcrypto build tags
A plain make.bash in this tree will produce a working, standard Go toolchain, not a BoringCrypto-enabled one. The BoringCrypto-enabled one will be created with: GOEXPERIMENT=boringcrypto ./make.bash For #51940. Change-Id: Ia9102ed993242eb1cb7f9b93eca97e81986a27b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/395881 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
1f0547c4ec
commit
f4c0f42f99
37 changed files with 153 additions and 43 deletions
|
|
@ -1,6 +1,5 @@
|
||||||
pkg archive/zip, method (*ReadCloser) Open(string) (fs.File, error)
|
pkg archive/zip, method (*ReadCloser) Open(string) (fs.File, error)
|
||||||
pkg archive/zip, method (*Reader) Open(string) (fs.File, error)
|
pkg archive/zip, method (*Reader) Open(string) (fs.File, error)
|
||||||
pkg crypto/boring, func Enabled() bool
|
|
||||||
pkg crypto/x509, method (SystemRootsError) Unwrap() error
|
pkg crypto/x509, method (SystemRootsError) Unwrap() error
|
||||||
pkg debug/elf, const DT_ADDRRNGHI = 1879047935
|
pkg debug/elf, const DT_ADDRRNGHI = 1879047935
|
||||||
pkg debug/elf, const DT_ADDRRNGHI DynTag
|
pkg debug/elf, const DT_ADDRRNGHI DynTag
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ git fetch
|
||||||
git worktree add --track -b "$BRANCH" "$WORKTREE" origin/dev.boringcrypto
|
git worktree add --track -b "$BRANCH" "$WORKTREE" origin/dev.boringcrypto
|
||||||
|
|
||||||
cd "$WORKTREE/src"
|
cd "$WORKTREE/src"
|
||||||
./make.bash
|
GOEXPERIMENT=boringcrypto ./make.bash
|
||||||
|
|
||||||
cd ../misc/boring
|
cd ../misc/boring
|
||||||
for branch in "$@"; do
|
for branch in "$@"; do
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ func runWithEnv(t *testing.T, msg string, env []string, args ...string) {
|
||||||
func goCmd(t *testing.T, args ...string) string {
|
func goCmd(t *testing.T, args ...string) string {
|
||||||
newargs := []string{args[0]}
|
newargs := []string{args[0]}
|
||||||
if *testX && args[0] != "env" {
|
if *testX && args[0] != "env" {
|
||||||
newargs = append(newargs, "-x")
|
newargs = append(newargs, "-x", "-ldflags=-v")
|
||||||
}
|
}
|
||||||
newargs = append(newargs, args[1:]...)
|
newargs = append(newargs, args[1:]...)
|
||||||
c := exec.Command("go", newargs...)
|
c := exec.Command("go", newargs...)
|
||||||
|
|
|
||||||
17
src/cmd/api/goapi_boring_test.go
Normal file
17
src/cmd/api/goapi_boring_test.go
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
fmt.Printf("SKIP with boringcrypto enabled\n")
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package main_test
|
package main_test
|
||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
|
||||||
|
|
@ -1060,6 +1060,7 @@ var hostobj []Hostobj
|
||||||
// Others trigger external mode.
|
// Others trigger external mode.
|
||||||
var internalpkg = []string{
|
var internalpkg = []string{
|
||||||
"crypto/internal/boring",
|
"crypto/internal/boring",
|
||||||
|
"crypto/internal/boring/syso",
|
||||||
"crypto/x509",
|
"crypto/x509",
|
||||||
"net",
|
"net",
|
||||||
"os/user",
|
"os/user",
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
// Package boring exposes functions that are only available when building with
|
// Package boring exposes functions that are only available when building with
|
||||||
// Go+BoringCrypto. This package is available on all targets as long as the
|
// Go+BoringCrypto. This package is available on all targets as long as the
|
||||||
// Go+BoringCrypto toolchain is used. Use the Enabled function to determine
|
// Go+BoringCrypto toolchain is used. Use the Enabled function to determine
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package boring_test
|
package boring_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build !boringcrypto
|
//go:build (goexperiment.boringcrypto && !boringcrypto) || (!goexperiment.boringcrypto && boringcrypto)
|
||||||
// +build !boringcrypto
|
// +build goexperiment.boringcrypto,!boringcrypto !goexperiment.boringcrypto,boringcrypto
|
||||||
|
|
||||||
package boring_test
|
package boring_test
|
||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
func TestNotBoring(t *testing.T) {
|
func TestNotBoring(t *testing.T) {
|
||||||
t.Error("a file tagged !boringcrypto should not build under Go+BoringCrypto")
|
t.Error("goexperiment.boringcrypto and boringcrypto should be equivalent build tags")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package ecdsa
|
package ecdsa
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
16
src/crypto/ecdsa/notboring.go
Normal file
16
src/crypto/ecdsa/notboring.go
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !boringcrypto
|
||||||
|
|
||||||
|
package ecdsa
|
||||||
|
|
||||||
|
import "crypto/internal/boring"
|
||||||
|
|
||||||
|
func boringPublicKey(*PublicKey) (*boring.PublicKeyECDSA, error) {
|
||||||
|
panic("boringcrypto: not available")
|
||||||
|
}
|
||||||
|
func boringPrivateKey(*PrivateKey) (*boring.PrivateKeyECDSA, error) {
|
||||||
|
panic("boringcrypto: not available")
|
||||||
|
}
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
#
|
#
|
||||||
# $ podman build -t goboring:140sp3678 .
|
# $ podman build -t goboring:140sp3678 .
|
||||||
# $ podman run -it --name goboring-140sp3678 goboring:140sp3678
|
# $ podman run -it --name goboring-140sp3678 goboring:140sp3678
|
||||||
# $ podman cp goboring-140sp3678:/boring/godriver/goboringcrypto_linux_amd64.syso .
|
# $ podman cp goboring-140sp3678:/boring/godriver/goboringcrypto_linux_amd64.syso syso
|
||||||
# $ sha256sum goboringcrypto_linux_amd64.syso # compare to docker output
|
# $ sha256sum syso/goboringcrypto_linux_amd64.syso # compare to docker output
|
||||||
#
|
#
|
||||||
# The podman commands may need to run under sudo to work around a subuid/subgid bug.
|
# The podman commands may need to run under sudo to work around a subuid/subgid bug.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
The Go source code and supporting files in this directory
|
The Go source code and supporting files in this directory
|
||||||
are covered by the usual Go license (see ../../../../LICENSE).
|
are covered by the usual Go license (see ../../../../LICENSE).
|
||||||
|
|
||||||
|
When building with GOEXPERIMENT=boringcrypto, the following applies.
|
||||||
|
|
||||||
The goboringcrypto_linux_amd64.syso object file is built
|
The goboringcrypto_linux_amd64.syso object file is built
|
||||||
from BoringSSL source code by build/build.sh and is covered
|
from BoringSSL source code by build/build.sh and is covered
|
||||||
by the BoringSSL license reproduced below and also at
|
by the BoringSSL license reproduced below and also at
|
||||||
|
|
@ -40,7 +42,7 @@ record keeping.)
|
||||||
* are met:
|
* are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
|
@ -95,21 +97,21 @@ record keeping.)
|
||||||
* This package is an SSL implementation written
|
* This package is an SSL implementation written
|
||||||
* by Eric Young (eay@cryptsoft.com).
|
* by Eric Young (eay@cryptsoft.com).
|
||||||
* The implementation was written so as to conform with Netscapes SSL.
|
* The implementation was written so as to conform with Netscapes SSL.
|
||||||
*
|
*
|
||||||
* This library is free for commercial and non-commercial use as long as
|
* This library is free for commercial and non-commercial use as long as
|
||||||
* the following conditions are aheared to. The following conditions
|
* the following conditions are aheared to. The following conditions
|
||||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||||
* included with this distribution is covered by the same copyright terms
|
* included with this distribution is covered by the same copyright terms
|
||||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||||
*
|
*
|
||||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||||
* the code are not to be removed.
|
* the code are not to be removed.
|
||||||
* If this package is used in a product, Eric Young should be given attribution
|
* If this package is used in a product, Eric Young should be given attribution
|
||||||
* as the author of the parts of the library used.
|
* as the author of the parts of the library used.
|
||||||
* This can be in the form of a textual message at program startup or
|
* This can be in the form of a textual message at program startup or
|
||||||
* in documentation (online or textual) provided with the package.
|
* in documentation (online or textual) provided with the package.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
* are met:
|
* are met:
|
||||||
|
|
@ -124,10 +126,10 @@ record keeping.)
|
||||||
* Eric Young (eay@cryptsoft.com)"
|
* Eric Young (eay@cryptsoft.com)"
|
||||||
* The word 'cryptographic' can be left out if the rouines from the library
|
* The word 'cryptographic' can be left out if the rouines from the library
|
||||||
* being used are not cryptographic related :-).
|
* being used are not cryptographic related :-).
|
||||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||||
* the apps directory (application code) you must include an acknowledgement:
|
* the apps directory (application code) you must include an acknowledgement:
|
||||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
|
@ -139,7 +141,7 @@ record keeping.)
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* The licence and distribution terms for any publically available version or
|
* The licence and distribution terms for any publically available version or
|
||||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||||
* copied and put under another distribution licence
|
* copied and put under another distribution licence
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
@ -16,6 +16,7 @@ package boring
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"crypto/internal/boring/sig"
|
"crypto/internal/boring/sig"
|
||||||
|
_ "crypto/internal/boring/syso"
|
||||||
"math/big"
|
"math/big"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
// runtime_arg0 is declared in tls.go without a body.
|
// runtime_arg0 is declared in tls.go without a body.
|
||||||
// It's provided by package runtime,
|
// It's provided by package runtime,
|
||||||
// but the go command doesn't know that.
|
// but the go command doesn't know that.
|
||||||
|
|
@ -2,8 +2,11 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
// Package fipstls allows control over whether crypto/tls requires FIPS-approved settings.
|
// Package fipstls allows control over whether crypto/tls requires FIPS-approved settings.
|
||||||
// This package's effects are independent of the use of the BoringCrypto implementation.
|
// This package only exists with GOEXPERIMENT=boringcrypto, but the effects are independent
|
||||||
|
// of the use of BoringCrypto.
|
||||||
package fipstls
|
package fipstls
|
||||||
|
|
||||||
import "sync/atomic"
|
import "sync/atomic"
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build !linux || !amd64 || !cgo || android || cmd_go_bootstrap || msan
|
//go:build !boringcrypto || !linux || !amd64 || !cgo || android || cmd_go_bootstrap || msan
|
||||||
// +build !linux !amd64 !cgo android cmd_go_bootstrap msan
|
// +build !boringcrypto !linux !amd64 !cgo android cmd_go_bootstrap msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
//go:build boringcrypto && linux && amd64 && !android && !cmd_go_bootstrap && !msan
|
||||||
// +build linux,amd64,!android,!cmd_go_bootstrap,!msan
|
// +build boringcrypto,linux,amd64,!android,!cmd_go_bootstrap,!msan
|
||||||
|
|
||||||
package boring
|
package boring
|
||||||
|
|
||||||
|
|
|
||||||
9
src/crypto/internal/boring/syso/syso.go
Normal file
9
src/crypto/internal/boring/syso/syso.go
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
|
// This package only exists with GOEXPERIMENT=boringcrypto.
|
||||||
|
// It provides the actual syso file.
|
||||||
|
package syso
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package rsa
|
package rsa
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
// Note: Can run these tests against the non-BoringCrypto
|
// Note: Can run these tests against the non-BoringCrypto
|
||||||
// version of the code by using "CGO_ENABLED=0 go test".
|
// version of the code by using "CGO_ENABLED=0 go test".
|
||||||
|
|
||||||
|
|
|
||||||
16
src/crypto/rsa/notboring.go
Normal file
16
src/crypto/rsa/notboring.go
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !boringcrypto
|
||||||
|
|
||||||
|
package rsa
|
||||||
|
|
||||||
|
import "crypto/internal/boring"
|
||||||
|
|
||||||
|
func boringPublicKey(*PublicKey) (*boring.PublicKeyRSA, error) {
|
||||||
|
panic("boringcrypto: not available")
|
||||||
|
}
|
||||||
|
func boringPrivateKey(*PrivateKey) (*boring.PrivateKeyRSA, error) {
|
||||||
|
panic("boringcrypto: not available")
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package tls
|
package tls
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -124,5 +126,3 @@ func supportedSignatureAlgorithms() []SignatureScheme {
|
||||||
}
|
}
|
||||||
return fipsSupportedSignatureAlgorithms
|
return fipsSupportedSignatureAlgorithms
|
||||||
}
|
}
|
||||||
|
|
||||||
var testingOnlyForceClientHelloSignatureAlgorithms []SignatureScheme
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package tls
|
package tls
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,15 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
// Package fipsonly restricts all TLS configuration to FIPS-approved settings.
|
// Package fipsonly restricts all TLS configuration to FIPS-approved settings.
|
||||||
//
|
//
|
||||||
// The effect is triggered by importing the package anywhere in a program, as in:
|
// The effect is triggered by importing the package anywhere in a program, as in:
|
||||||
//
|
//
|
||||||
// import _ "crypto/tls/fipsonly"
|
// import _ "crypto/tls/fipsonly"
|
||||||
//
|
//
|
||||||
// This package only exists in the dev.boringcrypto branch of Go.
|
// This package only exists when using Go compiled with GOEXPERIMENT=boringcrypto.
|
||||||
package fipsonly
|
package fipsonly
|
||||||
|
|
||||||
// This functionality is provided as a side effect of an import to make
|
// This functionality is provided as a side effect of an import to make
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build boringcrypto
|
||||||
|
|
||||||
package fipsonly
|
package fipsonly
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@ type clientHandshakeState struct {
|
||||||
session *ClientSessionState
|
session *ClientSessionState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var testingOnlyForceClientHelloSignatureAlgorithms []SignatureScheme
|
||||||
|
|
||||||
func (c *Conn) makeClientHello() (*clientHelloMsg, ecdheParameters, error) {
|
func (c *Conn) makeClientHello() (*clientHelloMsg, ecdheParameters, error) {
|
||||||
config := c.config
|
config := c.config
|
||||||
if len(config.ServerName) == 0 && !config.InsecureSkipVerify {
|
if len(config.ServerName) == 0 && !config.InsecureSkipVerify {
|
||||||
|
|
@ -859,13 +861,14 @@ func (c *Conn) verifyServerCertificate(certificates [][]byte) error {
|
||||||
|
|
||||||
if !c.config.InsecureSkipVerify {
|
if !c.config.InsecureSkipVerify {
|
||||||
opts := x509.VerifyOptions{
|
opts := x509.VerifyOptions{
|
||||||
IsBoring: isBoringCertificate,
|
|
||||||
|
|
||||||
Roots: c.config.RootCAs,
|
Roots: c.config.RootCAs,
|
||||||
CurrentTime: c.config.time(),
|
CurrentTime: c.config.time(),
|
||||||
DNSName: c.config.ServerName,
|
DNSName: c.config.ServerName,
|
||||||
Intermediates: x509.NewCertPool(),
|
Intermediates: x509.NewCertPool(),
|
||||||
}
|
}
|
||||||
|
if needFIPS() {
|
||||||
|
opts.IsBoring = isBoringCertificate
|
||||||
|
}
|
||||||
for _, cert := range certs[1:] {
|
for _, cert := range certs[1:] {
|
||||||
opts.Intermediates.AddCert(cert)
|
opts.Intermediates.AddCert(cert)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -812,13 +812,14 @@ func (c *Conn) processCertsFromClient(certificate Certificate) error {
|
||||||
|
|
||||||
if c.config.ClientAuth >= VerifyClientCertIfGiven && len(certs) > 0 {
|
if c.config.ClientAuth >= VerifyClientCertIfGiven && len(certs) > 0 {
|
||||||
opts := x509.VerifyOptions{
|
opts := x509.VerifyOptions{
|
||||||
IsBoring: isBoringCertificate,
|
|
||||||
|
|
||||||
Roots: c.config.ClientCAs,
|
Roots: c.config.ClientCAs,
|
||||||
CurrentTime: c.config.time(),
|
CurrentTime: c.config.time(),
|
||||||
Intermediates: x509.NewCertPool(),
|
Intermediates: x509.NewCertPool(),
|
||||||
KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth},
|
KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth},
|
||||||
}
|
}
|
||||||
|
if needFIPS() {
|
||||||
|
opts.IsBoring = isBoringCertificate
|
||||||
|
}
|
||||||
|
|
||||||
for _, cert := range certs[1:] {
|
for _, cert := range certs[1:] {
|
||||||
opts.Intermediates.AddCert(cert)
|
opts.Intermediates.AddCert(cert)
|
||||||
|
|
|
||||||
23
src/crypto/tls/notboring.go
Normal file
23
src/crypto/tls/notboring.go
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !boringcrypto
|
||||||
|
|
||||||
|
package tls
|
||||||
|
|
||||||
|
import "crypto/x509"
|
||||||
|
|
||||||
|
func needFIPS() bool { return false }
|
||||||
|
|
||||||
|
func supportedSignatureAlgorithms() []SignatureScheme {
|
||||||
|
return defaultSupportedSignatureAlgorithms
|
||||||
|
}
|
||||||
|
|
||||||
|
func fipsMinVersion(c *Config) uint16 { panic("fipsMinVersion") }
|
||||||
|
func fipsMaxVersion(c *Config) uint16 { panic("fipsMaxVersion") }
|
||||||
|
func fipsCurvePreferences(c *Config) []CurveID { panic("fipsCurvePreferences") }
|
||||||
|
func fipsCipherSuites(c *Config) []uint16 { panic("fipsCipherSuites") }
|
||||||
|
func isBoringCertificate(c *x509.Certificate) bool { panic("isBoringCertificate") }
|
||||||
|
|
||||||
|
var fipsSupportedSignatureAlgorithms []SignatureScheme
|
||||||
|
|
@ -1907,9 +1907,8 @@ func (ctxt *Context) matchTag(name string, allTags map[string]bool) bool {
|
||||||
if name == "unix" && unixOS[ctxt.GOOS] {
|
if name == "unix" && unixOS[ctxt.GOOS] {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// Let applications know that the Go+BoringCrypto toolchain is in use.
|
|
||||||
if name == "boringcrypto" {
|
if name == "boringcrypto" {
|
||||||
return true
|
name = "goexperiment.boringcrypto" // boringcrypto is an old name for goexperiment.boringcrypto
|
||||||
}
|
}
|
||||||
|
|
||||||
// other tags
|
// other tags
|
||||||
|
|
|
||||||
|
|
@ -397,12 +397,12 @@ var depsRules = `
|
||||||
NET, log
|
NET, log
|
||||||
< net/mail;
|
< net/mail;
|
||||||
|
|
||||||
NONE < crypto/internal/boring/sig;
|
NONE < crypto/internal/boring/sig, crypto/internal/boring/syso;
|
||||||
sync/atomic < crypto/internal/boring/fipstls;
|
sync/atomic < crypto/internal/boring/fipstls;
|
||||||
|
|
||||||
encoding/binary, golang.org/x/sys/cpu, hash,
|
encoding/binary, golang.org/x/sys/cpu, hash,
|
||||||
FMT, math/big, embed,
|
FMT, math/big, embed,
|
||||||
CGO, crypto/internal/boring/sig, crypto/internal/boring/fipstls
|
CGO, crypto/internal/boring/sig, crypto/internal/boring/fipstls, crypto/internal/boring/syso
|
||||||
< crypto
|
< crypto
|
||||||
< crypto/subtle
|
< crypto/subtle
|
||||||
< crypto/internal/subtle
|
< crypto/internal/subtle
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue