From: Michael Tremer Date: Mon, 12 Jul 2021 17:10:28 +0000 (+0000) Subject: archive: Implement scaffolding to verify checksums X-Git-Tag: 0.9.28~1042 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f05171a45d88dfc184eac16ed365c54ec18328e5;p=pakfire.git archive: Implement scaffolding to verify checksums Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index f0e04a0b7..50b93a9fb 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -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