diff --git a/src/capwap/capwap_crypto.h b/src/capwap/capwap_crypto.h new file mode 100644 index 00000000..8f02f925 --- /dev/null +++ b/src/capwap/capwap_crypto.h @@ -0,0 +1,11 @@ +#ifndef __CAPWAP_CRYPTO_H +#define __CAPWAP_CRYPTO_H + +#include + +#define CW_MD5_DIGEST_SIZE MD5_DIGEST_SIZE + +int cw_fgetmd5sum(uint8_t *digest, FILE *infile); + + +#endif diff --git a/src/capwap/md5sum.c b/src/capwap/md5sum.c new file mode 100644 index 00000000..ecc5db7f --- /dev/null +++ b/src/capwap/md5sum.c @@ -0,0 +1,30 @@ + +#include +#include + +#include + +#include "capwap_crypto.h" + + +#define BLOCK_SIZE 4096 + + +int cw_fgetmd5sum(uint8_t *digest, FILE *infile) +{ + struct md5_ctx ctx; + uint8_t buffer[BLOCK_SIZE]; + md5_init(&ctx); + + while (!feof(infile)){ + int bytes = fread(buffer,1,sizeof(buffer),infile); + md5_update(&ctx,bytes,buffer); + } + + if (ferror(infile)) + return errno; + + md5_digest(&ctx, MD5_DIGEST_SIZE, digest); + return 0; +} +