From f75464d65e935a7216cbd3db5753716a9cd6e546 Mon Sep 17 00:00:00 2001 From: Yurii Shutkin Date: Mon, 9 Oct 2023 15:25:29 +0200 Subject: [PATCH] acvp: handle flush commond in modulewrapper as stated in BoringSSL. Change-Id: Ife655f0764851cf2d9677abd507daec3f531031e Bug: 287626912 Test: ACVP test --- trusty/utils/acvp/trusty_modulewrapper.cpp | 35 +++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/trusty/utils/acvp/trusty_modulewrapper.cpp b/trusty/utils/acvp/trusty_modulewrapper.cpp index 70ffb52ec19c..85b7159d3ced 100644 --- a/trusty/utils/acvp/trusty_modulewrapper.cpp +++ b/trusty/utils/acvp/trusty_modulewrapper.cpp @@ -21,15 +21,16 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include -#include #include "acvp_ipc.h" @@ -208,6 +209,11 @@ Result ModuleWrapper::ForwardResponse() { return {}; } +static bool EqString(bssl::Span cmd, const char *str) { + return cmd.size() == strlen(str) && + memcmp(str, cmd.data(), cmd.size()) == 0; +} + int main() { for (;;) { auto buffer = bssl::acvp::RequestBuffer::New(); @@ -217,17 +223,24 @@ int main() { return EXIT_FAILURE; } - ModuleWrapper wrapper; - auto res = wrapper.SendMessage(args); - if (!res.ok()) { - std::cerr << res.error() << std::endl; - return EXIT_FAILURE; - } + if (EqString(args[0], "flush")) { + if (!bssl::acvp::FlushBuffer(STDOUT_FILENO)) { + ALOGE("Could not flush the buffer to stdout\n"); + return EXIT_FAILURE; + } + } else { + ModuleWrapper wrapper; + auto res = wrapper.SendMessage(args); + if (!res.ok()) { + std::cerr << res.error() << std::endl; + return EXIT_FAILURE; + } - res = wrapper.ForwardResponse(); - if (!res.ok()) { - std::cerr << res.error() << std::endl; - return EXIT_FAILURE; + res = wrapper.ForwardResponse(); + if (!res.ok()) { + std::cerr << res.error() << std::endl; + return EXIT_FAILURE; + } } }