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 <[email protected]>
---
 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


Reply via email to