summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorFiras Sammoura <fsammoura@google.com>2023-03-14 00:38:00 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-03-14 23:36:30 +0000
commitac84e9c5518e1f6586537c6241c0d2995c39e0f6 (patch)
treee10519624aa0a49f486a8050eb93223373000e22 /util
parente3d157a403388f9446b07b95a4689e1a8b329aff (diff)
downloadchrome-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.cc33
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;
}