|
| 1 | +diff --git a/src/crypto/internal/backend/openssl.go b/src/crypto/internal/backend/openssl.go |
| 2 | +index 3d3a9a36ee..b7a65a1f6e 100644 |
| 3 | +--- a/src/crypto/internal/backend/openssl.go |
| 4 | ++++ b/src/crypto/internal/backend/openssl.go |
| 5 | +@@ -25,6 +25,21 @@ var enabled bool |
| 6 | + var knownVersions = [...]string{"3", "1.1", "11", "111", "1.0.2", "1.0.0", "10"} |
| 7 | + |
| 8 | + func init() { |
| 9 | ++ // 0: FIPS opt-out: abort the process if it is enabled and can't be disabled. |
| 10 | ++ // 1: FIPS required: abort the process if it is not enabled and can't be enabled. |
| 11 | ++ // other values: do not override OpenSSL configured FIPS mode. |
| 12 | ++ var fips string |
| 13 | ++ if v, ok := syscall.Getenv("GOLANG_FIPS"); ok { |
| 14 | ++ fips = v |
| 15 | ++ } else if hostFIPSModeEnabled() { |
| 16 | ++ // System configuration can only force FIPS mode. |
| 17 | ++ fips = "1" |
| 18 | ++ } |
| 19 | ++ |
| 20 | ++ if fips != "1" { |
| 21 | ++ return |
| 22 | ++ } |
| 23 | ++ |
| 24 | + version, _ := syscall.Getenv("GO_OPENSSL_VERSION_OVERRIDE") |
| 25 | + if version == "" { |
| 26 | + var fallbackVersion string |
| 27 | +@@ -49,16 +64,6 @@ func init() { |
| 28 | + if err := openssl.Init(version); err != nil { |
| 29 | + panic("opensslcrypto: can't initialize OpenSSL " + version + ": " + err.Error()) |
| 30 | + } |
| 31 | +- // 0: FIPS opt-out: abort the process if it is enabled and can't be disabled. |
| 32 | +- // 1: FIPS required: abort the process if it is not enabled and can't be enabled. |
| 33 | +- // other values: do not override OpenSSL configured FIPS mode. |
| 34 | +- var fips string |
| 35 | +- if v, ok := syscall.Getenv("GOLANG_FIPS"); ok { |
| 36 | +- fips = v |
| 37 | +- } else if hostFIPSModeEnabled() { |
| 38 | +- // System configuration can only force FIPS mode. |
| 39 | +- fips = "1" |
| 40 | +- } |
| 41 | + switch fips { |
| 42 | + case "0": |
| 43 | + if openssl.FIPS() { |
0 commit comments