[PATCH v4 07/16] keytoc: make key name hint optional
Sascha Hauer
s.hauer at pengutronix.de
Fri Sep 13 00:59:15 PDT 2024
The key name hint is used in barebox to find a key without iterating
over all keys, but it's not required. Make the key name hint optional
to keytoc.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
scripts/keytoc.c | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/scripts/keytoc.c b/scripts/keytoc.c
index ecb33cbe47..85a7cd7319 100644
--- a/scripts/keytoc.c
+++ b/scripts/keytoc.c
@@ -9,6 +9,7 @@
*
*/
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <time.h>
@@ -602,9 +603,9 @@ static int gen_key(const char *keyname, const char *path)
int main(int argc, char *argv[])
{
- char *path, *keyname;
int i, opt, ret;
char *outfile = NULL;
+ int keynum = 1;
outfilep = stdout;
@@ -652,21 +653,33 @@ int main(int argc, char *argv[])
}
for (i = optind; i < argc; i++) {
- keyname = argv[i];
+ char *keyspec = argv[i];
+ char *keyname = NULL;
+ char *path, *freep = NULL;
- path = strchr(keyname, ':');
- if (!path) {
- fprintf(stderr,
- "keys must be given as <key_name_hint>:<crt>\n");
- exit(1);
+ if (!strncmp(keyspec, "pkcs11:", 7)) {
+ path = keyspec;
+ } else {
+ path = strchr(keyspec, ':');
+ if (path) {
+ *path = 0;
+ path++;
+ keyname = keyspec;
+ } else {
+ path = keyspec;
+ }
}
- *path = 0;
- path++;
+ if (!keyname) {
+ asprintf(&freep, "key_%d", keynum++);
+ keyname = freep;
+ }
ret = gen_key(keyname, path);
if (ret)
exit(1);
+
+ free(freep);
}
if (dts) {
--
2.39.2
More information about the barebox
mailing list