Source File
cast.go
Belonging Package
crypto/internal/fips140
// Copyright 2024 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.package fips140import (_ // for go:linkname)// fatal is [runtime.fatal], pushed via linkname.////go:linkname fatal crypto/internal/fips140.fatalfunc fatal(string)// failfipscast is a GODEBUG key allowing simulation of a CAST or PCT failure,// as required during FIPS 140-3 functional testing. The value is the whole name// of the target CAST or PCT.var failfipscast = godebug.Value("#failfipscast")// CAST runs the named Cryptographic Algorithm Self-Test (if operated in FIPS// mode) and aborts the program (stopping the module input/output and entering// the "error state") if the self-test fails.//// CASTs are mandatory self-checks that must be performed by FIPS 140-3 modules// before the algorithm is used. See Implementation Guidance 10.3.A.//// The name must not contain commas, colons, hashes, or equal signs.//// If a package p calls CAST from its init function, an import of p should also// be added to crypto/internal/fips140test. If a package p calls CAST on the first// use of the algorithm, an invocation of that algorithm should be added to// fipstest.TestConditionals.func ( string, func() error) {if strings.ContainsAny(, ",#=:") {panic("fips: invalid self-test name: " + )}if !Enabled {return}:= ()if == failfipscast {= errors.New("simulated CAST failure")}if != nil {fatal("FIPS 140-3 self-test failed: " + + ": " + .Error())panic("unreachable")}if debug {println("FIPS 140-3 self-test passed:", )}}// PCT runs the named Pairwise Consistency Test (if operated in FIPS mode) and// returns any errors. If an error is returned, the key must not be used.//// PCTs are mandatory for every key pair that is generated/imported, including// ephemeral keys (which effectively doubles the cost of key establishment). See// Implementation Guidance 10.3.A Additional Comment 1.//// The name must not contain commas, colons, hashes, or equal signs.//// If a package p calls PCT during key generation, an invocation of that// function should be added to fipstest.TestConditionals.func ( string, func() error) error {if strings.ContainsAny(, ",#=:") {panic("fips: invalid self-test name: " + )}if !Enabled {return nil}:= ()if == failfipscast {= errors.New("simulated PCT failure")}return}
![]() |
The pages are generated with Golds v0.7.9-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |