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 <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/acvp/acvptool/acvp.go b/util/fipstools/acvp/acvptool/acvp.go
index 3522473..df627cc 100644
--- a/util/fipstools/acvp/acvptool/acvp.go
+++ b/util/fipstools/acvp/acvptool/acvp.go
@@ -260,6 +260,45 @@
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 @@
}
}
- 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")