]> git.ipfire.org Git - pakfire.git/commitdiff
digest: Add function to check whether a digest is set
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 24 Aug 2022 16:16:11 +0000 (16:16 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 24 Aug 2022 16:16:11 +0000 (16:16 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/digest.c
src/libpakfire/file.c
src/libpakfire/include/pakfire/digest.h

index de99f6db69852acca95361fdc55723050e65ce4b..0e628f87f18bbb66a69ae36be061233c45f40d08 100644 (file)
@@ -44,6 +44,18 @@ size_t pakfire_digest_length(const enum pakfire_digest_types digest) {
        return 0;
 }
 
+/*
+       Returns one if the digest is not all zeros.
+*/
+int __pakfire_digest_set(const unsigned char* digest, const size_t length) {
+       for (unsigned int i = 0; i < length; i++) {
+               if (digest[i])
+                       return 1;
+       }
+
+       return 0;
+}
+
 static int pakfire_digests_check_length(struct pakfire* pakfire,
                const enum pakfire_digest_types type, const size_t length) {
        const size_t l = pakfire_digest_length(type);
index eafa22c243783150e1965f72c2dd33f91a9c7119..6a5410de97a58780374c4af774b99264ab8b1c75 100644 (file)
@@ -85,20 +85,6 @@ struct pakfire_file {
        //int is_datafile;
 };
 
-/*
-       Returns one if the digest is not all zeros.
-*/
-#define pakfire_file_has_digest(digest) __pakfire_file_has_digest(digest, sizeof(digest))
-
-static int __pakfire_file_has_digest(const unsigned char* digest, const size_t length) {
-       for (unsigned int i = 0; i < length; i++) {
-               if (digest[i])
-                       return 1;
-       }
-
-       return 0;
-}
-
 static int pakfire_file_from_archive_entry(struct pakfire_file* file, struct archive_entry* entry) {
        const char* attr = NULL;
        const void* value = NULL;
@@ -288,12 +274,12 @@ struct archive_entry* pakfire_file_archive_entry(struct pakfire_file* file) {
        // Copy digests
 
        // SHA-512
-       if (pakfire_file_has_digest(file->digests.sha512))
+       if (pakfire_digest_set(file->digests.sha512))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha512",
                        file->digests.sha512, sizeof(file->digests.sha512));
 
        // SHA-256
-       if (pakfire_file_has_digest(file->digests.sha256))
+       if (pakfire_digest_set(file->digests.sha256))
                archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha256",
                        file->digests.sha256, sizeof(file->digests.sha256));
 
@@ -473,7 +459,7 @@ PAKFIRE_EXPORT const unsigned char* pakfire_file_get_digest(
 
        switch (type) {
                case PAKFIRE_DIGEST_SHA512:
-                       if (!pakfire_file_has_digest(file->digests.sha512))
+                       if (!pakfire_digest_set(file->digests.sha512))
                                return NULL;
 
                        if (length)
@@ -482,7 +468,7 @@ PAKFIRE_EXPORT const unsigned char* pakfire_file_get_digest(
                        return file->digests.sha512;
 
                case PAKFIRE_DIGEST_SHA256:
-                       if (!pakfire_file_has_digest(file->digests.sha256))
+                       if (!pakfire_digest_set(file->digests.sha256))
                                return NULL;
 
                        if (length)
@@ -749,10 +735,10 @@ static int pakfire_file_verify_payload(struct pakfire_file* file, const struct s
        }
 
        // Check if this file has any digests at all
-       if (pakfire_file_has_digest(file->digests.sha512))
+       if (pakfire_digest_set(file->digests.sha512))
                digest_types |= PAKFIRE_DIGEST_SHA512;
 
-       if (pakfire_file_has_digest(file->digests.sha256))
+       if (pakfire_digest_set(file->digests.sha256))
                digest_types |= PAKFIRE_DIGEST_SHA256;
 
        if (!digest_types) {
index 63fcfa8d898e6d01ea4bb92bb61fac0b71a66787..2af4451544f69a693c638f10d0f9631ca0facb7c 100644 (file)
@@ -50,6 +50,9 @@ struct pakfire_digests {
 
 size_t pakfire_digest_length(const enum pakfire_digest_types digest);
 
+#define pakfire_digest_set(digest) __pakfire_digest_set(digest, sizeof(digest))
+int __pakfire_digest_set(const unsigned char* digest, const size_t length);
+
 int pakfire_digests_compute_from_file(struct pakfire* pakfire,
        struct pakfire_digests* digests, int flags, FILE* f);