From: Michael Tremer Date: Wed, 24 Aug 2022 16:01:03 +0000 (+0000) Subject: digests: Move pakfire_digest_length() from util X-Git-Tag: 0.9.28~376 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a9725624f3a06e8c0f6bebc67d985327a3ad7ee;p=pakfire.git digests: Move pakfire_digest_length() from util Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/digest.c b/src/libpakfire/digest.c index 02cee06e9..2eb12818f 100644 --- a/src/libpakfire/digest.c +++ b/src/libpakfire/digest.c @@ -29,6 +29,36 @@ #include #include +size_t pakfire_digest_length(const enum pakfire_digest_types digest) { + switch (digest) { + case PAKFIRE_DIGEST_SHA512: + return 64; + + case PAKFIRE_DIGEST_SHA256: + return 32; + + case PAKFIRE_DIGEST_UNDEFINED: + return 0; + } + + 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); + + // Return if length matches + if (length == l) + return 0; + + // Otherwise set an error + ERROR(pakfire, "Digest is of an unexpected length\n"); + errno = ENOMSG; + + return 1; +} + static EVP_MD_CTX* __pakfire_digest_setup(struct pakfire* pakfire, const EVP_MD* md) { EVP_MD_CTX* ctx = NULL; int r; diff --git a/src/libpakfire/include/pakfire/digest.h b/src/libpakfire/include/pakfire/digest.h index df6a3b446..1baee3be6 100644 --- a/src/libpakfire/include/pakfire/digest.h +++ b/src/libpakfire/include/pakfire/digest.h @@ -45,6 +45,8 @@ struct pakfire_digests { unsigned char sha256[SHA256_DIGEST_LENGTH]; }; +size_t pakfire_digest_length(const enum pakfire_digest_types digest); + int pakfire_digests_compute_from_file(struct pakfire* pakfire, struct pakfire_digests* digests, int flags, FILE* f); diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index e7080dbb7..97d514ed2 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -73,10 +73,6 @@ char* pakfire_generate_uuid(void); int pakfire_tty_is_noninteractive(void); -// Digests - -size_t pakfire_digest_length(enum pakfire_digest_types digest); - // Archive Stuff int pakfire_archive_copy_data(struct pakfire* pakfire, diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index 569de67cc..640e02725 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -470,23 +470,6 @@ int pakfire_rmtree(const char* path, int flags) { return r; } -// Digests - -size_t pakfire_digest_length(enum pakfire_digest_types digest) { - switch (digest) { - case PAKFIRE_DIGEST_SHA512: - return 64; - - case PAKFIRE_DIGEST_SHA256: - return 32; - - case PAKFIRE_DIGEST_UNDEFINED: - return 0; - } - - return 0; -} - // Archive Stuff int pakfire_archive_copy_data(struct pakfire* pakfire,