internal/system/fips.go (20 lines of code) (raw):
package system
import (
"errors"
"os"
"strconv"
"strings"
)
// Returns whether FIPS module is both installed an enabled on the system
//
// ipsInstalled, fipsEnabled, err := getFipsInfo()
func GetFipsInfo() (bool, bool, error) {
fipsEnabledBytes, err := os.ReadFile("/proc/sys/crypto/fips_enabled")
if errors.Is(err, os.ErrNotExist) {
return false, false, nil
} else if err != nil {
return false, false, err
}
fipsEnabledInt, err := strconv.Atoi(strings.Trim(string(fipsEnabledBytes), " \n\t"))
if err != nil {
return true, false, err
}
return true, fipsEnabledInt == 1, nil
}