acvp: allow passing custom subprocess I/O.
Change-Id: Ic87cdc84b7684c344af7aa2ef8673264d402c492
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37164
Reviewed-by: Adam Langley <alangley@gmail.com>
diff --git a/util/fipstools/acvp/acvptool/subprocess/subprocess.go b/util/fipstools/acvp/acvptool/subprocess/subprocess.go
index 404569f..3550b4d 100644
--- a/util/fipstools/acvp/acvptool/subprocess/subprocess.go
+++ b/util/fipstools/acvp/acvptool/subprocess/subprocess.go
@@ -36,10 +36,16 @@
return nil, err
}
+ return NewWithIO(cmd, stdin, stdout), nil
+}
+
+// NewWithIO returns a new Subprocess middle layer with the given ReadCloser and
+// WriteCloser. The returned Subprocess will call Wait on the Cmd when closed.
+func NewWithIO(cmd *exec.Cmd, in io.WriteCloser, out io.ReadCloser) *Subprocess {
m := &Subprocess{
- cmd: cmd,
- stdin: stdin,
- stdout: stdout,
+ cmd: cmd,
+ stdin: in,
+ stdout: out,
}
m.primitives = map[string]primitive{
@@ -52,7 +58,7 @@
"ACVP-AES-CBC": &blockCipher{"AES-CBC", 16, true, m},
}
- return m, nil
+ return m
}
// Close signals the child process to exit and waits for it to complete.