Always pad fingerprints to 16 characters master
authorMatthias Schiffer <mschiffer@universe-factory.net>
Sat, 16 May 2020 15:29:00 +0000 (17:29 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Sat, 23 May 2020 11:33:37 +0000 (13:33 +0200)
Fingerprints were not padded with zeros. This led to a ucert failure
when the first byte of the fingerprint is 00, as it expects the
fingerprint to have a constant length (and this expectation seems
reasonable to me).

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Acked-by: Jo-Philipp Wich <jo@mein.io>
main.c

diff --git a/main.c b/main.c
index ef47b282a7ccec7f02d8d42f927f2239fffae467..ebfdfb0809c4d8394b2254625d47649975d72000 100644 (file)
--- a/main.c
+++ b/main.c
@@ -149,7 +149,7 @@ static void write_file(const char *name, const uint8_t *fingerprint,
        if (comment)
                fputs(comment, f);
        else
-               fprintf(f, "%s %"PRIx64, prefix,
+               fprintf(f, "%s %016"PRIx64, prefix,
                        fingerprint_u64(fingerprint));
        fprintf(f, "\n%s\n", buf);
        fclose(f);
@@ -177,7 +177,7 @@ static int verify(const char *msgfile)
        }
 
        if (!pubkeyfile) {
-               snprintf(buf, sizeof(buf), "%s/%"PRIx64, pubkeydir,
+               snprintf(buf, sizeof(buf), "%s/%016"PRIx64, pubkeydir,
                         fingerprint_u64(sig.fingerprint));
                pubkeyfile = buf;
        }
@@ -276,7 +276,7 @@ static int fingerprint(void)
        else
                return 1;
 
-       fprintf(stdout, "%"PRIx64"\n", fingerprint_u64(fp));
+       fprintf(stdout, "%016"PRIx64"\n", fingerprint_u64(fp));
        return 0;
 }