diff options
author | Firas Sammoura <fsammoura@google.com> | 2023-03-14 00:38:00 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-03-14 23:36:30 +0000 |
commit | ac84e9c5518e1f6586537c6241c0d2995c39e0f6 (patch) | |
tree | e10519624aa0a49f486a8050eb93223373000e22 /util | |
parent | e3d157a403388f9446b07b95a4689e1a8b329aff (diff) | |
download | chrome-ec-ac84e9c5518e1f6586537c6241c0d2995c39e0f6.tar.gz |
util: Use libec for RAND_NUM
BRANCH=none
BUG=b:144959033
TEST=rm -rf build && make BOARD=host utils
Change-Id: I02110dbdd9068e71e564cc37b2e78f9d055673fe
Signed-off-by: Firas Sammoura <fsammoura@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4336838
Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/ectool.cc | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/util/ectool.cc b/util/ectool.cc index 0f632413d2..57b37f6fd4 100644 --- a/util/ectool.cc +++ b/util/ectool.cc @@ -38,6 +38,7 @@ #include <libec/add_entropy_command.h> #include <libec/ec_panicinfo.h> +#include <libec/rand_num_command.h> /* Maximum flash size (16 MB, conservative) */ #define MAX_FLASH_SIZE 0x1000000 @@ -1553,9 +1554,6 @@ int cmd_flash_info(int argc, char *argv[]) int cmd_rand(int argc, char *argv[]) { - struct ec_params_rand_num p; - struct ec_response_rand_num *r; - size_t r_size; int64_t num_bytes; int64_t i; char *e; @@ -1572,24 +1570,23 @@ int cmd_rand(int argc, char *argv[]) return -1; } - r = (struct ec_response_rand_num *)(ec_inbuf); - for (i = 0; i < num_bytes; i += ec_max_insize) { - p.num_rand_bytes = ec_max_insize; - if (num_bytes - i < p.num_rand_bytes) - p.num_rand_bytes = num_bytes - i; - - r_size = p.num_rand_bytes; - - rv = ec_command(EC_CMD_RAND_NUM, EC_VER_RAND_NUM, &p, sizeof(p), - r, r_size); - if (rv < 0) { - fprintf(stderr, "Random number command failed\n"); - return -1; + uint16_t num_rand_bytes = ec_max_insize; + if (num_bytes - i < num_rand_bytes) + num_rand_bytes = num_bytes - i; + + ec::RandNumCommand rand_num_command(num_rand_bytes); + if (!rand_num_command.Run(comm_get_fd())) { + int rv = -EECRESULT - rand_num_command.Result(); + fprintf(stderr, "Rand Num returned with errors: %d\n", + rv); + return rv; } - rv = write(STDOUT_FILENO, r->rand, r_size); - if (rv != r_size) { + rv = write(STDOUT_FILENO, + rand_num_command.GetRandNumData().data(), + num_rand_bytes); + if (rv != num_rand_bytes) { fprintf(stderr, "Failed to write stdout\n"); return -1; } |