#include <pakfire/pakfire.h>
#include <pakfire/private.h>
+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;
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);
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,
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,