aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Babic <sbabic@denx.de>2023-05-25 10:18:05 +0200
committerTom Rini <trini@konsulko.com>2023-06-20 16:08:13 -0400
commit50195a23468e3a8a32cba8534d76627b5d189551 (patch)
tree5f955ab78e9e7d2ec9f907bfafa3c19250431720
parent5f024d10bbae9e52396191b8dadf0e8ddb059c85 (diff)
downloadu-boot-50195a23468e3a8a32cba8534d76627b5d189551.zip
u-boot-50195a23468e3a8a32cba8534d76627b5d189551.tar.gz
u-boot-50195a23468e3a8a32cba8534d76627b5d189551.tar.bz2
mkimage: ecdsa: password for signing from environment
Use a variable (MKIMAGE_SIGN_PASSWORD) like already done for RSA to allow the signing process to run in batch. Signed-off-by: Stefano Babic <sbabic@denx.de>
-rw-r--r--lib/ecdsa/ecdsa-libcrypto.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/ecdsa/ecdsa-libcrypto.c b/lib/ecdsa/ecdsa-libcrypto.c
index d5939af..5fa9be1 100644
--- a/lib/ecdsa/ecdsa-libcrypto.c
+++ b/lib/ecdsa/ecdsa-libcrypto.c
@@ -111,16 +111,30 @@ static size_t ecdsa_key_size_bytes(const EC_KEY *key)
return EC_GROUP_order_bits(group) / 8;
}
+static int default_password(char *buf, int size, int rwflag, void *u)
+{
+ strncpy(buf, (char *)u, size);
+ buf[size - 1] = '\0';
+ return strlen(buf);
+}
+
static int read_key(struct signer *ctx, const char *key_name)
{
FILE *f = fopen(key_name, "r");
+ const char *key_pass;
if (!f) {
fprintf(stderr, "Can not get key file '%s'\n", key_name);
return -ENOENT;
}
- ctx->evp_key = PEM_read_PrivateKey(f, NULL, NULL, NULL);
+ key_pass = getenv("MKIMAGE_SIGN_PASSWORD");
+ if (key_pass) {
+ ctx->evp_key = PEM_read_PrivateKey(f, NULL, default_password, (void *)key_pass);
+
+ } else {
+ ctx->evp_key = PEM_read_PrivateKey(f, NULL, NULL, NULL);
+ }
fclose(f);
if (!ctx->evp_key) {
fprintf(stderr, "Can not read key from '%s'\n", key_name);