]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Implement scaffolding to verify checksums
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Jul 2021 17:10:28 +0000 (17:10 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Jul 2021 17:10:28 +0000 (17:10 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index f0e04a0b7e96e95604121145c76614603ef4a387..50b93a9fba251a8e73da769391bc050630d687e1 100644 (file)
@@ -1210,12 +1210,25 @@ static int pakfire_archive_load_checksums_legacy(struct pakfire_archive* archive
 }
 
 static int pakfire_archive_load_checksums(struct pakfire_archive* archive) {
+       DEBUG(archive->pakfire, "Loading checksums from archive %p\n", archive);
+
        if (archive->format >= 6)
                return pakfire_archive_load_checksums_mtree(archive);
        else
                return pakfire_archive_load_checksums_legacy(archive);
 }
 
+static int pakfire_archive_verify_checksums(struct pakfire_archive* archive) {
+       int r;
+
+       // Read checksums from archive
+       r = pakfire_archive_load_checksums(archive);
+       if (r)
+               return r;
+
+       return 0;
+}
+
 /*
        This function is called to examine whether we have a signature and if so verify it
 */
@@ -1361,10 +1374,15 @@ PAKFIRE_EXPORT int pakfire_archive_verify(struct pakfire_archive* archive,
 
        // Return previous result if this has already been called
        if (archive->verify == PAKFIRE_ARCHIVE_VERIFY_UNKNOWN) {
-               // Verify all sigantures
+               // Verify all signatures
                int r = pakfire_archive_verify_signatures(archive);
                if (r)
                        return r;
+
+               // Verify checksums
+               r = pakfire_archive_verify_checksums(archive);
+               if (r)
+                       return r;
        }
 
        // Store result