From: Michael Tremer Date: Wed, 24 Aug 2022 10:03:28 +0000 (+0000) Subject: digests: Split off into a new set of files X-Git-Tag: 0.9.28~379 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c52e0148739102b76faef96062fa8b59d56355d7;p=pakfire.git digests: Split off into a new set of files Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 2182053fc..ac558803a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -225,6 +225,7 @@ libpakfire_la_SOURCES = \ src/libpakfire/config.c \ src/libpakfire/db.c \ src/libpakfire/dependencies.c \ + src/libpakfire/digest.c \ src/libpakfire/dist.c \ src/libpakfire/downloader.c \ src/libpakfire/file.c \ @@ -264,6 +265,7 @@ pkginclude_HEADERS += \ src/libpakfire/include/pakfire/constants.h \ src/libpakfire/include/pakfire/db.h \ src/libpakfire/include/pakfire/dependencies.h \ + src/libpakfire/include/pakfire/digest.h \ src/libpakfire/include/pakfire/dist.h \ src/libpakfire/include/pakfire/downloader.h \ src/libpakfire/include/pakfire/file.h \ diff --git a/src/_pakfire/file.c b/src/_pakfire/file.c index 339cdeed3..fff20d8ee 100644 --- a/src/_pakfire/file.c +++ b/src/_pakfire/file.c @@ -21,6 +21,7 @@ #include #include +#include #include #include "file.h" @@ -227,7 +228,7 @@ static int File_set_mtime(FileObject* self, PyObject* value) { return 0; } -static PyObject* _File_digest(FileObject* self, enum pakfire_digests type) { +static PyObject* _File_digest(FileObject* self, enum pakfire_digest_types type) { size_t length = 0; // Fetch the digest @@ -247,7 +248,7 @@ static PyObject* File_digest(FileObject* self, PyObject* args) { return _File_digest(self, type); } -static PyObject* _File_hexdigest(FileObject* self, enum pakfire_digests type) { +static PyObject* _File_hexdigest(FileObject* self, enum pakfire_digest_types type) { char* hexdigest = pakfire_file_get_hexdigest(self->file, type); if (!hexdigest) Py_RETURN_NONE; diff --git a/src/_pakfire/package.c b/src/_pakfire/package.c index dcb039dbd..45211a878 100644 --- a/src/_pakfire/package.c +++ b/src/_pakfire/package.c @@ -20,6 +20,7 @@ #include +#include #include #include #include @@ -193,8 +194,8 @@ static void Package_set_uuid(PackageObject* self, PyObject* value) { pakfire_package_set_uuid(self->package, uuid); } -static PyObject* Package_get_hexdigest(PackageObject* self, enum pakfire_digests type) { - enum pakfire_digests digest = 0; +static PyObject* Package_get_hexdigest(PackageObject* self, enum pakfire_digest_types type) { + enum pakfire_digest_types digest = 0; const char* hexdigest = pakfire_package_get_hexdigest(self->package, &digest); if (!hexdigest) @@ -216,7 +217,7 @@ static PyObject* Package_get_hexdigest_sha512(PackageObject* self) { } static int Package_set_hexdigest(PackageObject* self, - enum pakfire_digests type, PyObject* value) { + enum pakfire_digest_types type, PyObject* value) { const char* hexdigest = PyUnicode_FromValue(value); return pakfire_package_set_hexdigest(self->package, type, hexdigest); diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index c92a71cd0..d7c19e0e6 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -846,7 +847,7 @@ PAKFIRE_EXPORT ssize_t pakfire_archive_get_size(struct pakfire_archive* archive) } int pakfire_archive_digest(struct pakfire_archive* archive, - enum pakfire_digests type, unsigned char* digest, size_t* length) { + enum pakfire_digest_types type, unsigned char* digest, size_t* length) { int r = 1; const EVP_MD* md = NULL; diff --git a/src/libpakfire/db.c b/src/libpakfire/db.c index d7c0f8424..0596f9fa7 100644 --- a/src/libpakfire/db.c +++ b/src/libpakfire/db.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -832,7 +833,7 @@ static void pakfire_db_add_userinstalled(struct pakfire* pakfire, const char* na } static const struct pakfire_digest { - enum pakfire_digests type; + enum pakfire_digest_types type; const char* prefix; } pakfire_digests[] = { { PAKFIRE_DIGEST_SHA512, "sha512:" }, @@ -840,7 +841,7 @@ static const struct pakfire_digest { { 0, NULL }, }; -static char* pakfire_db_pack_digest(enum pakfire_digests type, const char* hexdigest) { +static char* pakfire_db_pack_digest(enum pakfire_digest_types type, const char* hexdigest) { char* s = NULL; int r; @@ -857,7 +858,7 @@ static char* pakfire_db_pack_digest(enum pakfire_digests type, const char* hexdi return NULL; } -static const char* pakfire_db_unpack_digest(const char* hexdigest, enum pakfire_digests* type) { +static const char* pakfire_db_unpack_digest(const char* hexdigest, enum pakfire_digest_types* type) { *type = 0; // Don't do anything for empty input @@ -1377,7 +1378,7 @@ int pakfire_db_add_package(struct pakfire_db* db, goto ERROR; } - enum pakfire_digests digest_type = 0; + enum pakfire_digest_types digest_type = 0; const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest_type); if (hexdigest) { @@ -1758,7 +1759,7 @@ static int pakfire_db_load_package(struct pakfire_db* db, struct pakfire_repo* r // Digest const char* digest = (const char*)sqlite3_column_text(stmt, 8); if (digest) { - enum pakfire_digests digest_type = 0; + enum pakfire_digest_types digest_type = 0; // Unpack digest const char* hexdigest = pakfire_db_unpack_digest(digest, &digest_type); @@ -2022,7 +2023,7 @@ ERROR: } static int pakfire_db_load_file_digest(struct pakfire_db* db, struct pakfire_file* file, - sqlite3_stmt* stmt, const enum pakfire_digests type, const int field) { + sqlite3_stmt* stmt, const enum pakfire_digest_types type, const int field) { // Fetch digest const unsigned char* digest = sqlite3_column_blob(stmt, field); diff --git a/src/libpakfire/digest.c b/src/libpakfire/digest.c new file mode 100644 index 000000000..e69e9afa9 --- /dev/null +++ b/src/libpakfire/digest.c @@ -0,0 +1,19 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2022 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index 626a66c0b..2fead72b0 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -265,7 +266,7 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags) { @@ -413,7 +414,7 @@ int pakfire_downloader_add_transfer( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags) { @@ -897,7 +898,7 @@ int pakfire_downloader_retrieve( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags) { diff --git a/src/libpakfire/file.c b/src/libpakfire/file.c index eb9c0d36f..4aee3cc80 100644 --- a/src/libpakfire/file.c +++ b/src/libpakfire/file.c @@ -30,9 +30,9 @@ #include #include #include -#include #include +#include #include #include #include @@ -75,13 +75,7 @@ struct pakfire_file { char symlink[PATH_MAX]; // Digests - struct pakfire_file_digests { - // SHA-512 - unsigned char sha512[SHA512_DIGEST_LENGTH]; - - // SHA-256 - unsigned char sha256[SHA256_DIGEST_LENGTH]; - } digests; + struct pakfire_digests digests; // Verification Status int verify_status; @@ -476,7 +470,7 @@ PAKFIRE_EXPORT void pakfire_file_set_mtime(struct pakfire_file* file, time_t tim } PAKFIRE_EXPORT const unsigned char* pakfire_file_get_digest( - struct pakfire_file* file, const enum pakfire_digests type, size_t* length) { + struct pakfire_file* file, const enum pakfire_digest_types type, size_t* length) { switch (type) { case PAKFIRE_DIGEST_SHA512: @@ -502,7 +496,7 @@ PAKFIRE_EXPORT const unsigned char* pakfire_file_get_digest( } PAKFIRE_EXPORT int pakfire_file_set_digest(struct pakfire_file* file, - const enum pakfire_digests type, const unsigned char* digest, const size_t length) { + const enum pakfire_digest_types type, const unsigned char* digest, const size_t length) { if (!digest) { errno = EINVAL; return 1; @@ -530,7 +524,7 @@ PAKFIRE_EXPORT int pakfire_file_set_digest(struct pakfire_file* file, } PAKFIRE_EXPORT char* pakfire_file_get_hexdigest( - struct pakfire_file* file, const enum pakfire_digests type) { + struct pakfire_file* file, const enum pakfire_digest_types type) { const unsigned char* digest = NULL; size_t length = 0; @@ -739,7 +733,7 @@ static int pakfire_file_verify_payload(struct pakfire_file* file, const struct s EVP_MD_CTX* sha512_ctx = NULL; EVP_MD_CTX* sha256_ctx = NULL; - struct pakfire_file_digests computed_digests; + struct pakfire_digests computed_digests; // Nothing to do for anything that isn't a regular file if (!S_ISREG(st->st_mode)) diff --git a/src/libpakfire/include/pakfire/archive.h b/src/libpakfire/include/pakfire/archive.h index e23a2dea0..0c1d3a028 100644 --- a/src/libpakfire/include/pakfire/archive.h +++ b/src/libpakfire/include/pakfire/archive.h @@ -25,6 +25,7 @@ struct pakfire_archive; +#include #include #include #include @@ -59,7 +60,7 @@ int pakfire_archive_make_package(struct pakfire_archive* archive, int pakfire_archive_copy(struct pakfire_archive* archive, const char* path); int pakfire_archive_digest(struct pakfire_archive* archive, - enum pakfire_digests type, unsigned char* digest, size_t* length); + enum pakfire_digest_types type, unsigned char* digest, size_t* length); struct pakfire_scriptlet* pakfire_archive_get_scriptlet( struct pakfire_archive* archive, const char* type); diff --git a/src/libpakfire/include/pakfire/digest.h b/src/libpakfire/include/pakfire/digest.h new file mode 100644 index 000000000..887148e24 --- /dev/null +++ b/src/libpakfire/include/pakfire/digest.h @@ -0,0 +1,45 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2022 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ + +#ifndef PAKFIRE_DIGEST_H +#define PAKFIRE_DIGEST_H + +// Pakfire knows these digests +enum pakfire_digest_types { + PAKFIRE_DIGEST_SHA256 = 1, + PAKFIRE_DIGEST_SHA512 = 2, +}; + +#ifdef PAKFIRE_PRIVATE + +#include + +// Digests +struct pakfire_digests { + // SHA-512 + unsigned char sha512[SHA512_DIGEST_LENGTH]; + + // SHA-256 + unsigned char sha256[SHA256_DIGEST_LENGTH]; +}; + +#endif + +#endif /* PAKFIRE_DIGEST_H */ diff --git a/src/libpakfire/include/pakfire/downloader.h b/src/libpakfire/include/pakfire/downloader.h index e4b386597..f275355c8 100644 --- a/src/libpakfire/include/pakfire/downloader.h +++ b/src/libpakfire/include/pakfire/downloader.h @@ -26,6 +26,7 @@ struct pakfire_downloader; struct pakfire_mirrorlist; +#include #include enum pakfire_transfer_flags { @@ -46,7 +47,7 @@ int pakfire_downloader_retrieve( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags); @@ -57,7 +58,7 @@ int pakfire_downloader_add_transfer( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags); diff --git a/src/libpakfire/include/pakfire/file.h b/src/libpakfire/include/pakfire/file.h index fa91e8c9a..1b7a89a94 100644 --- a/src/libpakfire/include/pakfire/file.h +++ b/src/libpakfire/include/pakfire/file.h @@ -27,6 +27,7 @@ struct pakfire_file; +#include #include int pakfire_file_create(struct pakfire_file** file, struct pakfire* pakfire); @@ -70,11 +71,11 @@ time_t pakfire_file_get_mtime(struct pakfire_file* file); void pakfire_file_set_mtime(struct pakfire_file* file, time_t time); const unsigned char* pakfire_file_get_digest(struct pakfire_file* file, - const enum pakfire_digests type, size_t* length); + const enum pakfire_digest_types type, size_t* length); char* pakfire_file_get_hexdigest(struct pakfire_file* file, - const enum pakfire_digests type); + const enum pakfire_digest_types type); int pakfire_file_set_digest(struct pakfire_file* file, - const enum pakfire_digests type, const unsigned char* digest, const size_t length); + const enum pakfire_digest_types type, const unsigned char* digest, const size_t length); struct pakfire_file* pakfire_file_parse_from_file(const char* list, unsigned int format); diff --git a/src/libpakfire/include/pakfire/package.h b/src/libpakfire/include/pakfire/package.h index 728e7e7bb..3ca6cda78 100644 --- a/src/libpakfire/include/pakfire/package.h +++ b/src/libpakfire/include/pakfire/package.h @@ -25,6 +25,7 @@ struct pakfire_package; +#include #include #include #include @@ -52,13 +53,13 @@ void pakfire_package_set_arch(struct pakfire_package* pkg, const char* arch); const char* pakfire_package_get_uuid(struct pakfire_package* pkg); void pakfire_package_set_uuid(struct pakfire_package* pkg, const char* uuid); const unsigned char* pakfire_package_get_digest(struct pakfire_package* pkg, - enum pakfire_digests* type); + enum pakfire_digest_types* type); const char* pakfire_package_get_hexdigest(struct pakfire_package* pkg, - enum pakfire_digests* type); + enum pakfire_digest_types* type); int pakfire_package_set_digest(struct pakfire_package* pkg, - enum pakfire_digests type, const unsigned char* digest); + enum pakfire_digest_types type, const unsigned char* digest); int pakfire_package_set_hexdigest(struct pakfire_package* pkg, - enum pakfire_digests type, const char* hexdigest); + enum pakfire_digest_types type, const char* hexdigest); const char* pakfire_package_get_summary(struct pakfire_package* pkg); void pakfire_package_set_summary(struct pakfire_package* pkg, const char* summary); const char* pakfire_package_get_description(struct pakfire_package* pkg); diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index b08782871..5fdd850da 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -29,11 +29,6 @@ struct pakfire; -enum pakfire_digests { - PAKFIRE_DIGEST_SHA256 = 1, - PAKFIRE_DIGEST_SHA512 = 2, -}; - #include #include #include diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index b9d947ed8..e7080dbb7 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -28,6 +28,7 @@ #include +#include #include char* pakfire_unquote_in_place(char* s); @@ -74,7 +75,7 @@ int pakfire_tty_is_noninteractive(void); // Digests -size_t pakfire_digest_length(enum pakfire_digests digest); +size_t pakfire_digest_length(enum pakfire_digest_types digest); // Archive Stuff diff --git a/src/libpakfire/package.c b/src/libpakfire/package.c index 735ca0f9f..85eb978e8 100644 --- a/src/libpakfire/package.c +++ b/src/libpakfire/package.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -395,7 +396,7 @@ PAKFIRE_EXPORT void pakfire_package_set_uuid(struct pakfire_package* pkg, const pakfire_package_set_string(pkg, SOLVABLE_PKGID, uuid); } -static enum pakfire_digests pakfire_package_id2digest(Id id) { +static enum pakfire_digest_types pakfire_package_id2digest(Id id) { switch (id) { case REPOKEY_TYPE_SHA512: return PAKFIRE_DIGEST_SHA512; @@ -408,7 +409,7 @@ static enum pakfire_digests pakfire_package_id2digest(Id id) { } PAKFIRE_EXPORT const unsigned char* pakfire_package_get_digest( - struct pakfire_package* pkg, enum pakfire_digests* type) { + struct pakfire_package* pkg, enum pakfire_digest_types* type) { Solvable* s = get_solvable(pkg); Id id; @@ -425,7 +426,7 @@ PAKFIRE_EXPORT const unsigned char* pakfire_package_get_digest( } PAKFIRE_EXPORT const char* pakfire_package_get_hexdigest( - struct pakfire_package* pkg, enum pakfire_digests* type) { + struct pakfire_package* pkg, enum pakfire_digest_types* type) { Solvable* s = get_solvable(pkg); Id id; @@ -442,7 +443,7 @@ PAKFIRE_EXPORT const char* pakfire_package_get_hexdigest( } PAKFIRE_EXPORT int pakfire_package_set_digest(struct pakfire_package* pkg, - enum pakfire_digests type, const unsigned char* digest) { + enum pakfire_digest_types type, const unsigned char* digest) { Solvable* s = get_solvable(pkg); Pool* pool = s->repo->pool; Id id; @@ -480,7 +481,7 @@ ERROR: } PAKFIRE_EXPORT int pakfire_package_set_hexdigest(struct pakfire_package* pkg, - enum pakfire_digests type, const char* hexdigest) { + enum pakfire_digest_types type, const char* hexdigest) { const size_t digest_length = pakfire_digest_length(type); if (!digest_length) { @@ -586,7 +587,7 @@ PAKFIRE_EXPORT void pakfire_package_set_maintainer(struct pakfire_package* pkg, static int pakfire_package_make_cache_path(struct pakfire_package* pkg) { const char* filename = pakfire_package_get_filename(pkg); - enum pakfire_digests digest; + enum pakfire_digest_types digest; const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest); if (hexdigest && strlen(hexdigest) >= 3) @@ -1135,7 +1136,7 @@ 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_digests digest = 0; + enum pakfire_digest_types digest = 0; // Digest const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest); diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 17c19fca2..822f97ccc 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -102,7 +102,7 @@ static int pakfire_repo_retrieve( const char* title, const char* url, const char* path, - enum pakfire_digests md, + enum pakfire_digest_types md, const unsigned char* expected_digest, const size_t expected_digest_length, enum pakfire_transfer_flags flags) { diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 7d551e283..f2f1fbce0 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -691,7 +692,7 @@ static int pakfire_transaction_verify(struct pakfire_transaction* transaction, return 0; } - enum pakfire_digests digest_type = 0; + enum pakfire_digest_types digest_type = 0; // Fetch digest from package const unsigned char* expected_digest = pakfire_package_get_digest(pkg, &digest_type); @@ -1169,7 +1170,7 @@ static int pakfire_transaction_download_package(struct pakfire_transaction* tran goto ERROR; } - enum pakfire_digests digest_type = 0; + enum pakfire_digest_types digest_type = 0; // Retrieve package digest const unsigned char* digest = pakfire_package_get_digest(pkg, &digest_type); diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index 49fbe2fec..a6ed6226f 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -472,7 +472,7 @@ int pakfire_rmtree(const char* path, int flags) { // Digests -size_t pakfire_digest_length(enum pakfire_digests digest) { +size_t pakfire_digest_length(enum pakfire_digest_types digest) { switch (digest) { case PAKFIRE_DIGEST_SHA512: return 64;