From 86854828e01aee1319bca371454c71d06c1322eb Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Thu, 17 Dec 2020 14:02:41 -0800 Subject: [PATCH] acvp: load config later. The config file is only needed if interacting with an ACVP server. Invocations that just want to process input from a file don't need it. By moving this chunk of code down, the config isn't loaded until after handling JSON inputs and just can be ignore if not needed. Change-Id: Ibce334f63ddf8df34cf2917b923db20b3aaa735f Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/44744 Commit-Queue: David Benjamin Reviewed-by: David Benjamin --- util/fipstools/acvp/acvptool/acvp.go | 77 ++++++++++++++-------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/util/fipstools/acvp/acvptool/acvp.go b/util/fipstools/acvp/acvptool/acvp.go index 352247372..df627cc74 100644 --- a/util/fipstools/acvp/acvptool/acvp.go +++ b/util/fipstools/acvp/acvptool/acvp.go @@ -260,6 +260,45 @@ func processFile(filename string, supportedAlgos []map[string]interface{}, middl func main() { flag.Parse() + var err error + var middle Middle + middle, err = subprocess.New(*wrapperPath) + if err != nil { + log.Fatalf("failed to initialise middle: %s", err) + } + defer middle.Close() + + configBytes, err := middle.Config() + if err != nil { + log.Fatalf("failed to get config from middle: %s", err) + } + + var supportedAlgos []map[string]interface{} + if err := json.Unmarshal(configBytes, &supportedAlgos); err != nil { + log.Fatalf("failed to parse configuration from Middle: %s", err) + } + + if *dumpRegcap { + regcap := []map[string]interface{}{ + map[string]interface{}{"acvVersion": "1.0"}, + map[string]interface{}{"algorithms": supportedAlgos}, + } + regcapBytes, err := json.MarshalIndent(regcap, "", " ") + if err != nil { + log.Fatalf("failed to marshal regcap: %s", err) + } + os.Stdout.Write(regcapBytes) + os.Stdout.WriteString("\n") + os.Exit(0) + } + + if len(*jsonInputFile) > 0 { + if err := processFile(*jsonInputFile, supportedAlgos, middle); err != nil { + log.Fatalf("failed to process input file: %s", err) + } + os.Exit(0) + } + var config Config if err := jsonFromFile(&config, *configFilename); err != nil { log.Fatalf("Failed to load config file: %s", err) @@ -314,44 +353,6 @@ func main() { } } - var middle Middle - middle, err = subprocess.New(*wrapperPath) - if err != nil { - log.Fatalf("failed to initialise middle: %s", err) - } - defer middle.Close() - - configBytes, err := middle.Config() - if err != nil { - log.Fatalf("failed to get config from middle: %s", err) - } - - var supportedAlgos []map[string]interface{} - if err := json.Unmarshal(configBytes, &supportedAlgos); err != nil { - log.Fatalf("failed to parse configuration from Middle: %s", err) - } - - if *dumpRegcap { - regcap := []map[string]interface{}{ - map[string]interface{}{"acvVersion": "1.0"}, - map[string]interface{}{"algorithms": supportedAlgos}, - } - regcapBytes, err := json.MarshalIndent(regcap, "", " ") - if err != nil { - log.Fatalf("failed to marshal regcap: %s", err) - } - os.Stdout.Write(regcapBytes) - os.Stdout.WriteString("\n") - os.Exit(0) - } - - if len(*jsonInputFile) > 0 { - if err := processFile(*jsonInputFile, supportedAlgos, middle); err != nil { - log.Fatalf("failed to process input file: %s", err) - } - os.Exit(0) - } - var requestedAlgosFlag string if len(*runFlag) > 0 && len(*fetchFlag) > 0 { log.Fatalf("cannot specify both -run and -fetch")