acvptool: Fix error reporting if dk or c are empty
err could be nil when bound to %s.
Change-Id: I96d26517fb7ee6ca4ca65d9a3056bc5e31715a91
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/83767
Reviewed-by: Adam Langley <agl@google.com>
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/acvp/acvptool/subprocess/mlkem.go b/util/fipstools/acvp/acvptool/subprocess/mlkem.go
index e01cb2e..a112ed8 100644
--- a/util/fipstools/acvp/acvptool/subprocess/mlkem.go
+++ b/util/fipstools/acvp/acvptool/subprocess/mlkem.go
@@ -3,6 +3,7 @@
import (
"encoding/hex"
"encoding/json"
+ "errors"
"fmt"
"strings"
)
@@ -80,6 +81,17 @@
K string `json:"k,omitempty"`
}
+func decodeNonEmptyHex(in string) ([]byte, error) {
+ ret, err := hex.DecodeString(in)
+ if err != nil {
+ return nil, err
+ }
+ if len(ret) == 0 {
+ return nil, errors.New("empty string")
+ }
+ return ret, nil
+}
+
type mlkem struct{}
func (m *mlkem) Process(vectorSet []byte, t Transactable) (any, error) {
@@ -202,14 +214,14 @@
cmdName := group.ParameterSet + "/decap"
for _, test := range group.Tests {
- dk, err := hex.DecodeString(test.DK)
- if err != nil || len(dk) == 0 {
+ dk, err := decodeNonEmptyHex(test.DK)
+ if err != nil {
return nil, fmt.Errorf("failed to decode dk in test case %d/%d: %s",
group.ID, test.ID, err)
}
- c, err := hex.DecodeString(test.C)
- if err != nil || len(c) == 0 {
+ c, err := decodeNonEmptyHex(test.C)
+ if err != nil {
return nil, fmt.Errorf("failed to decode c in test case %d/%d: %s",
group.ID, test.ID, err)
}