summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Sukhomlinov <sukhomlinov@google.com>2021-09-02 09:38:48 -0700
committerCommit Bot <commit-bot@chromium.org>2021-09-08 22:16:51 +0000
commit77d80437e4fc4c8a49f330471fb32a6e78749922 (patch)
tree6dd72723ee85651b69dbc5e9619aba4aa827cb1f
parent2cb1847d5c0b53abe4aaa346ddc12ffe17e16006 (diff)
downloadchrome-ec-77d80437e4fc4c8a49f330471fb32a6e78749922.tar.gz
cr50: reduce default set of CCD test commands with CRYPTO_TEST=1
During FIPS refactoring many additional test commands were added to CRYPTO_TEST=1 image for unit testing. However, this lead to very small space left in image. Adding local switches to several CCD commands to activate it only once working on related parts. This free around 6.5K. BUG=none TEST=make BOARD=cr50 CRYPTO_TEST=1 Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> Change-Id: I8f11988d2994c6c4b25748d3c0c07096ba00c392 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3139977 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Tested-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Auto-Submit: Vadim Sukhomlinov <sukhomlinov@chromium.org> Commit-Queue: Vadim Bendebury <vbendeb@chromium.org> Commit-Queue: Vadim Sukhomlinov <sukhomlinov@chromium.org>
-rw-r--r--board/cr50/build.mk24
-rw-r--r--board/cr50/dcrypto/app_cipher.c6
-rw-r--r--board/cr50/dcrypto/dcrypto_bn.c6
-rw-r--r--board/cr50/dcrypto/dcrypto_runtime.c15
-rw-r--r--board/cr50/dcrypto/hmac_drbg.c6
-rw-r--r--board/cr50/dcrypto/trng.c9
-rw-r--r--board/cr50/fips_rand.c6
-rw-r--r--board/cr50/u2f.c7
8 files changed, 73 insertions, 6 deletions
diff --git a/board/cr50/build.mk b/board/cr50/build.mk
index b75d867421..f9401b9527 100644
--- a/board/cr50/build.mk
+++ b/board/cr50/build.mk
@@ -18,10 +18,32 @@ ifeq ($(BOARD_MK_INCLUDED_ONCE),)
# List of variables which can be defined in the environment or set in the make
# command line.
-ENV_VARS := CR50_DEV CRYPTO_TEST H1_RED_BOARD
+ENV_VARS := CR50_DEV CRYPTO_TEST H1_RED_BOARD U2F_TEST RND_TEST DRBG_TEST\
+ ECDSA_TEST DCRYPTO_TEST
ifneq ($(CRYPTO_TEST),)
CPPFLAGS += -DCRYPTO_TEST_SETUP
+
+ifneq ($(U2F_TEST),)
+CPPFLAGS += -DCRYPTO_TEST_CMD_U2F_TEST=1
+endif
+
+ifneq ($(RND_TEST),)
+CPPFLAGS += -DCRYPTO_TEST_CMD_RAND=1
+endif
+
+ifneq ($(DRBG_TEST),)
+CPPFLAGS += -DCRYPTO_TEST_CMD_HMAC_DRBG=1
+endif
+
+ifneq ($(ECDSA_TEST),)
+CPPFLAGS += -DCRYPTO_TEST_CMD_DCRYPTO_ECDSA=1
+endif
+
+ifneq ($(DCRYPTO_TEST),)
+CPPFLAGS += -DCRYPTO_TEST_CMD_DCRYPTO_TEST=1
+endif
+
endif
diff --git a/board/cr50/dcrypto/app_cipher.c b/board/cr50/dcrypto/app_cipher.c
index 9b7961f209..099e837b7c 100644
--- a/board/cr50/dcrypto/app_cipher.c
+++ b/board/cr50/dcrypto/app_cipher.c
@@ -169,7 +169,11 @@ int DCRYPTO_app_cipher(enum dcrypto_appid appid, const void *salt,
return 1;
}
-#ifdef CRYPTO_TEST_SETUP
+#ifndef CRYPTO_TEST_CIPHER
+#define CRYPTO_TEST_CIPHER 0
+#endif
+
+#if defined(CRYPTO_TEST_SETUP) && CRYPTO_TEST_CIPHER
#include "common.h"
#include "console.h"
diff --git a/board/cr50/dcrypto/dcrypto_bn.c b/board/cr50/dcrypto/dcrypto_bn.c
index b8f8fef4f4..5e60e2aea3 100644
--- a/board/cr50/dcrypto/dcrypto_bn.c
+++ b/board/cr50/dcrypto/dcrypto_bn.c
@@ -1410,7 +1410,11 @@ int dcrypto_modexp_word(struct LITE_BIGNUM *output,
return result == 0;
}
-#ifdef CRYPTO_TEST_SETUP
+#ifndef CRYPTO_TEST_CMD_GENP
+#define CRYPTO_TEST_CMD_GENP 0
+#endif
+
+#if defined(CRYPTO_TEST_SETUP) && CRYPTO_TEST_CMD_GENP
#include "console.h"
#include "shared_mem.h"
#include "timer.h"
diff --git a/board/cr50/dcrypto/dcrypto_runtime.c b/board/cr50/dcrypto/dcrypto_runtime.c
index db0ab292d7..618d355362 100644
--- a/board/cr50/dcrypto/dcrypto_runtime.c
+++ b/board/cr50/dcrypto/dcrypto_runtime.c
@@ -181,6 +181,15 @@ uint32_t dcrypto_dmem_load(size_t offset, const void *words, size_t n_words)
return diff;
}
+
+#ifndef CRYPTO_TEST_CMD_DCRYPTO_ECDSA
+#define CRYPTO_TEST_CMD_DCRYPTO_ECDSA 0
+#endif
+
+#ifndef CRYPTO_TEST_CMD_DCRYPTO_TEST
+#define CRYPTO_TEST_CMD_DCRYPTO_TEST 0
+#endif
+
#ifdef CRYPTO_TEST_SETUP
#include "console.h"
@@ -190,6 +199,7 @@ uint32_t dcrypto_dmem_load(size_t offset, const void *words, size_t n_words)
#include "system.h"
#include "watchdog.h"
+#if CRYPTO_TEST_CMD_DCRYPTO_TEST
/* AUTO-GENERATED. DO NOT MODIFY. */
/* clang-format off */
static const uint32_t IMEM_test_hang[] = {
@@ -340,6 +350,10 @@ static int command_dcrypto_test(int argc, char *argv[])
DECLARE_SAFE_CONSOLE_COMMAND(dcrypto_test, command_dcrypto_test, "",
"dcrypto test");
+#endif /* CR50_DEV_CMD_DCRYPTO_TEST */
+
+
+#if CRYPTO_TEST_CMD_DCRYPTO_ECDSA
#define ECDSA_TEST_ITERATIONS 1000
#define ECDSA_TEST_SLEEP_DELAY_IN_US 1000000
@@ -475,5 +489,6 @@ static int command_dcrypto_ecdsa_test(int argc, char *argv[])
}
DECLARE_SAFE_CONSOLE_COMMAND(dcrypto_ecdsa, command_dcrypto_ecdsa_test, "",
"dcrypto ecdsa test");
+#endif /* CR50_DEV_CMD_DCRYPTO_ECDSA */
#endif
diff --git a/board/cr50/dcrypto/hmac_drbg.c b/board/cr50/dcrypto/hmac_drbg.c
index ff5ec14a57..d27890360a 100644
--- a/board/cr50/dcrypto/hmac_drbg.c
+++ b/board/cr50/dcrypto/hmac_drbg.c
@@ -142,7 +142,11 @@ void drbg_exit(struct drbg_ctx *ctx)
always_memset(ctx->v, 0x00, sizeof(ctx->v));
}
-#ifdef CRYPTO_TEST_SETUP
+#ifndef CRYPTO_TEST_CMD_HMAC_DRBG
+#define CRYPTO_TEST_CMD_HMAC_DRBG 0
+#endif
+
+#if defined(CRYPTO_TEST_SETUP) && CRYPTO_TEST_CMD_HMAC_DRBG
/*
* from the RFC 6979 A.2.5 example:
diff --git a/board/cr50/dcrypto/trng.c b/board/cr50/dcrypto/trng.c
index 03a9f756c2..604e6585c4 100644
--- a/board/cr50/dcrypto/trng.c
+++ b/board/cr50/dcrypto/trng.c
@@ -175,7 +175,14 @@ void rand_bytes(void *buffer, size_t len)
}
}
+/* Local switch to test command. Enable when work on it. */
+#ifndef CRYPTO_TEST_CMD_RAND
+#define CRYPTO_TEST_CMD_RAND 0
+#endif
+
#if !defined(SECTION_IS_RO) && defined(CRYPTO_TEST_SETUP)
+
+#if CRYPTO_TEST_CMD_RAND
#include "console.h"
#include "watchdog.h"
@@ -266,4 +273,6 @@ static int command_rand(int argc, char **argv)
}
DECLARE_SAFE_CONSOLE_COMMAND(rand, command_rand, NULL, NULL);
+#endif /* CRYPTO_TEST_CMD_RAND */
+
#endif /* CRYPTO_TEST_SETUP */
diff --git a/board/cr50/fips_rand.c b/board/cr50/fips_rand.c
index 2b3eae1b65..926af66f96 100644
--- a/board/cr50/fips_rand.c
+++ b/board/cr50/fips_rand.c
@@ -335,7 +335,11 @@ int fips_p256_ecdsa_sign(const p256_int *key, const p256_int *message,
return dcrypto_p256_ecdsa_sign(&fips_drbg, key, message, r, s);
}
-#ifdef CRYPTO_TEST_SETUP
+#ifndef CRYPTO_TEST_CMD_RAND_PERF
+#define CRYPTO_TEST_CMD_RAND_PERF 0
+#endif
+
+#if defined(CRYPTO_TEST_SETUP) && CRYPTO_TEST_CMD_RAND_PERF
#include "endian.h"
#include "extension.h"
#include "trng.h"
diff --git a/board/cr50/u2f.c b/board/cr50/u2f.c
index 04a0ab7963..9f987fbd64 100644
--- a/board/cr50/u2f.c
+++ b/board/cr50/u2f.c
@@ -504,7 +504,12 @@ enum ec_error_list u2f_attest(const struct u2f_state *state,
return result;
}
-#ifdef CRYPTO_TEST_SETUP
+#ifndef CRYPTO_TEST_CMD_U2F_TEST
+#define CRYPTO_TEST_CMD_U2F_TEST 0
+#endif
+
+#if defined(CRYPTO_TEST_SETUP) && CRYPTO_TEST_CMD_U2F_TEST
+
static const char *expect_bool(enum ec_error_list value,
enum ec_error_list expect)
{