]> git.ipfire.org Git - pakfire.git/commitdiff
packager: Only package selected digests
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 26 Aug 2022 10:44:08 +0000 (10:44 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 26 Aug 2022 10:44:08 +0000 (10:44 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/file.c
src/libpakfire/include/pakfire/file.h
src/libpakfire/include/pakfire/packager.h
src/libpakfire/packager.c
src/libpakfire/snapshot.c

index 23d1ddc073d18411314cadc768ad03dd91f54a8b..9470af7044aa74ad6714a752b729fcbea08ff182 100644 (file)
@@ -298,32 +298,38 @@ struct archive_entry* pakfire_file_archive_entry(struct pakfire_file* file) {
        // Copy digests
 
        // SHA-3-512
-       if (pakfire_digest_set(file->digests.sha3_512))
+       if ((digest_types && PAKFIRE_DIGEST_SHA3_512)
+                       && pakfire_digest_set(file->digests.sha3_512))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha3_512",
                        file->digests.sha3_512, sizeof(file->digests.sha3_512));
 
        // SHA-3-256
-       if (pakfire_digest_set(file->digests.sha3_256))
+       if ((digest_types && PAKFIRE_DIGEST_SHA3_256) &&
+                       pakfire_digest_set(file->digests.sha3_256))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha3_256",
                        file->digests.sha3_256, sizeof(file->digests.sha3_256));
 
        // BLAKE2b512
-       if (pakfire_digest_set(file->digests.blake2b512))
+       if ((digest_types && PAKFIRE_DIGEST_BLAKE2B512) &&
+                       pakfire_digest_set(file->digests.blake2b512))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.blake2b512",
                        file->digests.blake2b512, sizeof(file->digests.blake2b512));
 
        // BLAKE2s256
-       if (pakfire_digest_set(file->digests.blake2s256))
+       if ((digest_types && PAKFIRE_DIGEST_BLAKE2S256) &&
+                       pakfire_digest_set(file->digests.blake2s256))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.blake2s256",
                        file->digests.blake2s256, sizeof(file->digests.blake2s256));
 
        // SHA-2-512
-       if (pakfire_digest_set(file->digests.sha2_512))
+       if ((digest_types && PAKFIRE_DIGEST_SHA2_512) &&
+                       pakfire_digest_set(file->digests.sha2_512))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha2_512",
                        file->digests.sha2_512, sizeof(file->digests.sha2_512));
 
        // SHA-2-256
-       if (pakfire_digest_set(file->digests.sha2_256))
+       if ((digest_types && PAKFIRE_DIGEST_SHA2_512) &&
+                       pakfire_digest_set(file->digests.sha2_256))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha2_256",
                        file->digests.sha2_256, sizeof(file->digests.sha2_256));
 
index 5b41bebfa2f399ebc9ff4dcea9b69ebda8842158..8ce073812aa6675ce582f419ab6469f411ea17a6 100644 (file)
@@ -87,7 +87,7 @@ int pakfire_file_create_from_path(struct pakfire_file** file,
        struct pakfire* pakfire, const char* path);
 int pakfire_file_create_from_archive_entry(struct pakfire_file** file, struct pakfire* pakfire,
        struct archive_entry* entry);
-struct archive_entry* pakfire_file_archive_entry(struct pakfire_file* file);
+struct archive_entry* pakfire_file_archive_entry(struct pakfire_file* file, int digest_types);
 
 const char* pakfire_file_get_abspath(struct pakfire_file* file);
 int pakfire_file_set_abspath(struct pakfire_file* file, const char* path);
index f54dc217d1b020f038cff0373833186eabdfbddb..3209d2a8fbdb49866bfcdf89848329478056c931 100644 (file)
 
 #ifdef PAKFIRE_PRIVATE
 
+#include <pakfire/digest.h>
 #include <pakfire/file.h>
 #include <pakfire/filelist.h>
 #include <pakfire/package.h>
 #include <pakfire/scriptlet.h>
 
+#define PAKFIRE_PACKAGER_DIGESTS (PAKFIRE_DIGEST_SHA3_512|PAKFIRE_DIGEST_BLAKE2B512)
+
 struct pakfire_packager;
 
 int pakfire_packager_create(struct pakfire_packager** packager,
index 029769359e22934b2b3fe5991f54bb737f3a70ae..cbcb515ec24a0c1d35bc97fd5ebc447eeab18068 100644 (file)
@@ -695,14 +695,14 @@ int pakfire_packager_add_file(struct pakfire_packager* packager, struct pakfire_
                goto ERROR;
 
        // Add digests for regular files
-       r = pakfire_file_compute_digests(file, PAKFIRE_DIGESTS_ALL);
+       r = pakfire_file_compute_digests(file, PAKFIRE_PACKAGER_DIGESTS);
        if (r) {
                ERROR(packager->pakfire, "Could not compute digests: %m\n");
                goto ERROR;
        }
 
        // Generate file metadata into an archive entry
-       entry = pakfire_file_archive_entry(file);
+       entry = pakfire_file_archive_entry(file, PAKFIRE_PACKAGER_DIGESTS);
        if (!entry)
                goto ERROR;
 
index 7da82d5dad31d38d08f8c2a85792070c4624f099..0b1d0319446f3f8c74effeb1bbb9451be6084bbd 100644 (file)
@@ -133,7 +133,7 @@ int pakfire_snapshot_create(struct pakfire* pakfire, const char* path) {
                FILE* f = NULL;
 
                // Make archive entry
-               struct archive_entry* entry = pakfire_file_archive_entry(file);
+               struct archive_entry* entry = pakfire_file_archive_entry(file, PAKFIRE_DIGEST_UNDEFINED);
                if (!entry) {
                        ERROR(pakfire, "Could not make archive entry from file: %m\n");
                        r = 1;