]> git.ipfire.org Git - pakfire.git/commitdiff
packages: Use binary digest function in dump
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Oct 2022 11:13:36 +0000 (11:13 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Oct 2022 11:19:34 +0000 (11:19 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/package.c

index 6b2335b51acd41c8e714941123fea681ea1c250e..25016a5c3470dd0bfa6852827dbae22f9fbddcd6 100644 (file)
@@ -1024,6 +1024,16 @@ static void pakfire_package_dump_add_line_date(char** str, const char* key, time
        pakfire_package_dump_add_line(str, key, buffer);
 }
 
+static void pakfire_package_dump_add_line_hex(char** str,
+               const char* key, const unsigned char* buffer, const size_t length) {
+       char* hex = __pakfire_hexlify(buffer, length);
+       if (!hex)
+               return;
+
+       pakfire_package_dump_add_line(str, key, hex);
+       free(hex);
+}
+
 static void pakfire_package_dump_add_line_size(char** str, const char* key, size_t size) {
        char buffer[128];
 
@@ -1133,25 +1143,31 @@ PAKFIRE_EXPORT char* pakfire_package_dump(struct pakfire_package* pkg, int flags
                if (build_id)
                        pakfire_package_dump_add_line(&string, _("Build ID"), build_id);
 
-               enum pakfire_digest_types digest = 0;
+               enum pakfire_digest_types digest_type = PAKFIRE_DIGEST_UNDEFINED;
+               size_t digest_length = 0;
 
                // Digest
-               const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest);
-               switch (digest) {
-                       case PAKFIRE_DIGEST_SHA2_512:
-                               pakfire_package_dump_add_line(&string, _("SHA512 Digest"), hexdigest);
-                               break;
-
-                       case PAKFIRE_DIGEST_SHA2_256:
-                               pakfire_package_dump_add_line(&string, _("SHA256 Digest"), hexdigest);
-                               break;
-
-                       case PAKFIRE_DIGEST_SHA3_512:
-                       case PAKFIRE_DIGEST_SHA3_256:
-                       case PAKFIRE_DIGEST_BLAKE2B512:
-                       case PAKFIRE_DIGEST_BLAKE2S256:
-                       case PAKFIRE_DIGEST_UNDEFINED:
-                               break;
+               const unsigned char* digest = pakfire_package_get_digest(pkg,
+                       &digest_type, &digest_length);
+               if (digest) {
+                       switch (digest_type) {
+                               case PAKFIRE_DIGEST_SHA2_512:
+                                       pakfire_package_dump_add_line_hex(&string,
+                                               _("SHA2-512 Digest"), digest, digest_length);
+                                       break;
+
+                               case PAKFIRE_DIGEST_SHA2_256:
+                                       pakfire_package_dump_add_line_hex(&string,
+                                               _("SHA2-256 Digest"), digest, digest_length);
+                                       break;
+
+                               case PAKFIRE_DIGEST_SHA3_512:
+                               case PAKFIRE_DIGEST_SHA3_256:
+                               case PAKFIRE_DIGEST_BLAKE2B512:
+                               case PAKFIRE_DIGEST_BLAKE2S256:
+                               case PAKFIRE_DIGEST_UNDEFINED:
+                                       break;
+                       }
                }
 
                // Source package