allow setting FIPS mode at runtime and build against frozen go/crypto #37
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes internal-backlog number 34
Special notes for your reviewer:
A short explanation of how FIPS in Go 1.24 works in general (from here https://go.dev/doc/security/fips140):
Passing the
GOFIPS140=v1.0.0
flag togo build
ensures that a frozen version of the Go crypto lib from early 2025 is linked into the binary. This is important as this version is currently being certified for FIPS. Furthermore, theGODEBUG=fips140=only
setting ensures that the program is going to panic or return an error if a fips incompliant crypto lib function is being called (e.g.crypto/sha1.Sum
). Without it the program would just continue running.Things that need to be discussed where we have some leeway:
Currently my implementation follows the motto: FIPS first, no FIPS possible
Update Apr 15th: Was decided to keep as proposed
Release note: