Check RSA2 SigVer* files. The FAX files include extra junk, so we need to strip them out of the file. Change-Id: Ib5762a20696a0ca6a847dcc56afa6ea27b02a5cc Reviewed-on: https://boringssl-review.googlesource.com/15828 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/fipsoracle/run_cavp.go b/fipsoracle/run_cavp.go index 00d319d..df48b56 100644 --- a/fipsoracle/run_cavp.go +++ b/fipsoracle/run_cavp.go
@@ -37,7 +37,10 @@ directory string // binary is the name of the binary that can process these tests. binary string - tests []test + // faxScanFunc, if not nil, is the function to use instead of + // (*bufio.Scanner).Scan. This can be used to skip lines. + faxScanFunc func(*bufio.Scanner) bool + tests []test } func (t *testSuite) getDirectory() string { @@ -47,6 +50,7 @@ var aesGCMTests = testSuite{ "AES_GCM", "cavp_aes_gcm_test", + nil, []test{ {"gcmDecrypt128", []string{"dec", "aes-128-gcm"}, false}, {"gcmDecrypt256", []string{"dec", "aes-256-gcm"}, false}, @@ -58,6 +62,7 @@ var aesTests = testSuite{ "AES", "cavp_aes_test", + nil, []test{ {"CBCGFSbox128", []string{"kat", "aes-128-cbc"}, false}, {"CBCGFSbox192", []string{"kat", "aes-192-cbc"}, false}, @@ -102,18 +107,21 @@ var ecdsa2KeyPairTests = testSuite{ "ECDSA2", "cavp_ecdsa2_keypair_test", + nil, []test{{"KeyPair", nil, true}}, } var ecdsa2PKVTests = testSuite{ "ECDSA2", "cavp_ecdsa2_pkv_test", + nil, []test{{"PKV", nil, false}}, } var ecdsa2SigGenTests = testSuite{ "ECDSA2", "cavp_ecdsa2_siggen_test", + nil, []test{ {"SigGen", []string{"SigGen"}, true}, {"SigGenComponent", []string{"SigGenComponent"}, true}, @@ -123,12 +131,14 @@ var ecdsa2SigVerTests = testSuite{ "ECDSA2", "cavp_ecdsa2_sigver_test", + nil, []test{{"SigVer", nil, false}}, } var rsa2SigGenTests = testSuite{ "RSA2", "cavp_rsa2_siggen_test", + nil, []test{ {"SigGen15_186-3", []string{"pkcs15"}, true}, {"SigGenPSS_186-3", []string{"pss"}, true}, @@ -138,21 +148,46 @@ var rsa2SigVerTests = testSuite{ "RSA2", "cavp_rsa2_sigver_test", + func(s *bufio.Scanner) bool { + for { + if !s.Scan() { + return false + } + + line := s.Text() + if strings.HasPrefix(line, "p = ") || strings.HasPrefix(line, "d = ") || strings.HasPrefix(line, "SaltVal = ") || strings.HasPrefix(line, "EM with ") { + continue + } + if strings.HasPrefix(line, "q = ") { + // Skip the "q = " line and an additional blank line. + if !s.Scan() { + return false + } + if len(strings.TrimSpace(s.Text())) > 0 { + return false + } + continue + } + return true + } + }, []test{ - {"SigVer15_186-3", []string{"pkcs15"}, true}, - {"SigVerPSS_186-3", []string{"pss"}, true}, + {"SigVer15_186-3", []string{"pkcs15"}, false}, + {"SigVerPSS_186-3", []string{"pss"}, false}, }, } var hmacTests = testSuite{ "HMAC", "cavp_hmac_test", + nil, []test{{"HMAC", nil, false}}, } var shaTests = testSuite{ "SHA", "cavp_sha_test", + nil, []test{ {"SHA1LongMsg", []string{"SHA1"}, false}, {"SHA1ShortMsg", []string{"SHA1"}, false}, @@ -170,6 +205,7 @@ var shaMonteTests = testSuite{ "SHA", "cavp_sha_monte_test", + nil, []test{ {"SHA1Monte", []string{"SHA1"}, false}, {"SHA224Monte", []string{"SHA224"}, false}, @@ -182,12 +218,14 @@ var ctrDRBGTests = testSuite{ "DRBG800-90A", "cavp_ctr_drbg_test", + nil, []test{{"CTR_DRBG", nil, false}}, } var tdesTests = testSuite{ "TDES", "cavp_tdes_test", + nil, []test{ // {"TCBCMMT2", []string{"mmt"}, false}, // {"TCBCMMT3", []string{"mmt"}, false}, @@ -287,6 +325,11 @@ } func compareFAX(suite *testSuite, test test) error { + faxScanFunc := suite.faxScanFunc + if faxScanFunc == nil { + faxScanFunc = (*bufio.Scanner).Scan + } + respPath := filepath.Join(suite.getDirectory(), "resp", test.inFile+".resp") respFile, err := os.Open(respPath) if err != nil { @@ -320,7 +363,7 @@ haveFaxLine := false if inHeader { - for faxScanner.Scan() { + for faxScanFunc(faxScanner) { faxLine = faxScanner.Text() if len(faxLine) != 0 && faxLine[0] != '#' { haveFaxLine = true @@ -330,7 +373,7 @@ inHeader = false } else { - if faxScanner.Scan() { + if faxScanFunc(faxScanner) { faxLine = faxScanner.Text() haveFaxLine = true } @@ -358,7 +401,7 @@ return fmt.Errorf("resp and fax differ at line %d for %q %q: %q vs %q", lineNo, suite.getDirectory(), test.inFile, respLine, faxLine) } - if faxScanner.Scan() { + if faxScanFunc(faxScanner) { return fmt.Errorf("fax file is longer than resp for %q %q", suite.getDirectory(), test.inFile) }