Attempt to account for differences in libmd on different platforms

This commit is contained in:
Nathan Fisher 2023-07-22 23:34:32 -04:00
parent 632f93e084
commit a762f3555e

View file

@ -30,9 +30,20 @@
* other than his own.
*/
#include <md5.h>
#if defined (__FreeBSD__) || defined (__DragonFly__)
#include <sys/types.h>
#include <sha.h>
#include <sha256.h>
#elif defined (__NetBSD__) || defined (__OpenBSD__)
#include <sys/types.h>
#include <sha1.h>
#include <sha2.h>
#elif defined (__linux__)
#include <sha1.h>
#include <sha2.h>
#endif /* if defined (__FreeBSD__) */
#include <md5.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
@ -144,9 +155,21 @@ int validate_md5(struct haggis_file *file) {
return 0;
}
#if defined (__FreeBSD__) || defined (__DragonFly__)
int validate_sha1(struct haggis_file *file) {
SHA1_CTX ctx;
u8 digest[SHA1_DIGEST_LENGTH];
u8 digest[20];
SHA1_Init(&ctx);
SHA1_Update(&ctx, *file->data, (size_t)file->len.val);
SHA1_Final(digest, &ctx);
if (memcmp(file->cksum->sum->sha1, digest, sizeof(digest)))
return 2;
return 0;
}
#elif defined (__linux__) || defined (__NetBSD__) || defined (__OpenBSD__)
int validate_sha1(struct haggis_file *file) {
SHA1_CTX ctx;
u8 digest[20];
SHA1Init(&ctx);
SHA1Update(&ctx, *file->data, (size_t)file->len.val);
SHA1Final(digest, &ctx);
@ -154,7 +177,20 @@ int validate_sha1(struct haggis_file *file) {
return 2;
return 0;
}
#endif /* if defined (__FreeBSD__) */
#if defined (__FreeBSD__) || defined (__DragonFly) || defined (__NetBSD__)
int validate_sha256(struct haggis_file *file) {
SHA256_CTX ctx;
u8 digest[SHA256_DIGEST_LENGTH];
SHA256_Init(&ctx);
SHA256_Update(&ctx, *file->data, (size_t)file->len.val);
SHA256_Final(digest, &ctx);
if (memcmp(file->cksum->sum->sha256, digest, sizeof(digest)))
return 2;
return 0;
}
#elif defined (__linux__) || defined (__OpenBSD__)
int validate_sha256(struct haggis_file *file) {
SHA2_CTX ctx;
u8 digest[SHA256_DIGEST_LENGTH];
@ -165,6 +201,7 @@ int validate_sha256(struct haggis_file *file) {
return 2;
return 0;
}
#endif /* if defined (__FreeBSD__) */
int haggis_validate_cksum(struct haggis_file *file) {
switch (file->cksum->tag) {