From 1d2f0661b3ec27b4d1dba21fa7c5c5305a761b5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Thu, 10 Jul 2014 13:53:05 +0000 Subject: [PATCH] Clean up namespace macros and provide algorithm definitions. --- include/cryb/digest.h | 60 ++++++++++++++++--------------------------- include/cryb/md5.h | 13 +++++++--- include/cryb/sha1.h | 15 ++++++++--- lib/digest/md5.c | 10 ++++++++ lib/digest/sha1.c | 11 ++++++++ 5 files changed, 63 insertions(+), 46 deletions(-) diff --git a/include/cryb/digest.h b/include/cryb/digest.h index a9899a7..e197604 100644 --- a/include/cryb/digest.h +++ b/include/cryb/digest.h @@ -36,50 +36,34 @@ #ifndef CRYB_DIGEST_H_INCLUDED #define CRYB_DIGEST_H_INCLUDED +#define digest_init_func cryb_digest_init_func +#define digest_update_func cryb_digest_update_func +#define digest_final_func cryb_digest_final_func +#define digest_complete_func cryb_digest_complete_func +#define digest_algorithm cryb_digest_algorithm +#define digest_init cryb_digest_init +#define digest_update cryb_digest_update +#define digest_final cryb_digest_final +#define digest_complete cryb_digest_complete + typedef void *(*digest_init_func)(void); typedef void (*digest_update_func)(void *, const void *, size_t); typedef void (*digest_final_func)(void *, void *); typedef int (*digest_complete_func)(const void *, size_t, void *); -struct digest_algorithm { +typedef struct digest_algorithm { const char *name; /* algorithm name */ - size_t ctxsize; /* size of context structure */ - size_t resultlen; /* length of the result */ - digest_init_func init; - digest_update_func update; - digest_final_func final; - digest_complete_func complete; -}; + size_t contextlen; /* size of context structure */ + size_t digestlen; /* length of the digest */ + digest_init_func init; /* initialization method */ + digest_update_func update; /* update method */ + digest_final_func final; /* finalization method */ + digest_complete_func complete; /* one-shot method */ +} digest_algorithm; -const struct digest_algorithm *cryb_digest_algorithm(const char *); - -void *cryb_digest_init(const char *); -void cryb_digest_update(void *, const void *, size_t); -void cryb_digest_final(void *, void *); -int cryb_digest_complete(const char *, const void *, size_t, void *); - -static inline void * -digest_init(const char *alg) -{ - return (cryb_digest_init(alg)); -} - -static inline void -digest_update(void *ctx, const void *msg, size_t msglen) -{ - cryb_digest_update(ctx, msg, msglen); -} - -static inline void -digest_final(void *ctx, void *md) -{ - cryb_digest_final(ctx, md); -} - -static inline int -digest_complete(const char *alg, const void *msg, size_t msglen, void *md) -{ - return (cryb_digest_complete(alg, msg, msglen, md)); -} +void *digest_init(const char *); +void digest_update(void *, const void *, size_t); +void digest_final(void *, void *); +int digest_complete(const char *, const void *, size_t, void *); #endif diff --git a/include/cryb/md5.h b/include/cryb/md5.h index 5353c94..7f9ec92 100644 --- a/include/cryb/md5.h +++ b/include/cryb/md5.h @@ -38,6 +38,15 @@ #define MD5_DIGEST_LEN 16 +#define md5_algorithm cryb_md5_algorithm +#define md5_ctx cryb_md5_ctx +#define md5_init cryb_md5_init +#define md5_update cryb_md5_update +#define md5_final cryb_md5_final +#define md5_complete cryb_md5_complete + +extern struct digest_algorithm md5_algorithm; + typedef struct md5_ctx { uint8_t block[64]; size_t blocklen; @@ -45,10 +54,6 @@ typedef struct md5_ctx { uint32_t h[4]; } md5_ctx; -#define md5_init cryb_md5_init -#define md5_update cryb_md5_update -#define md5_final cryb_md5_final -#define md5_complete cryb_md5_complete void md5_init(md5_ctx *); void md5_update(md5_ctx *, const void *, size_t); void md5_final(md5_ctx *, void *); diff --git a/include/cryb/sha1.h b/include/cryb/sha1.h index 074c076..8e76c69 100644 --- a/include/cryb/sha1.h +++ b/include/cryb/sha1.h @@ -38,6 +38,15 @@ #define SHA1_DIGEST_LEN 20 +#define sha1_algorithm cryb_sha1_algorithm +#define sha1_ctx cryb_sha1_ctx +#define sha1_init cryb_sha1_init +#define sha1_update cryb_sha1_update +#define sha1_final cryb_sha1_final +#define sha1_complete cryb_sha1_complete + +extern struct digest_algorithm sha1_algorithm; + typedef struct sha1_ctx { uint8_t block[64]; size_t blocklen; @@ -45,10 +54,8 @@ typedef struct sha1_ctx { uint32_t h[5], k[4]; } sha1_ctx; -#define sha1_init cryb_sha1_init -#define sha1_update cryb_sha1_update -#define sha1_final cryb_sha1_final -#define sha1_complete cryb_sha1_complete +extern struct digest_algorithm sha1_algorithm; + void sha1_init(sha1_ctx *); void sha1_update(sha1_ctx *, const void *, size_t); void sha1_final(sha1_ctx *, void *); diff --git a/lib/digest/md5.c b/lib/digest/md5.c index 4fcda2c..9ad93ea 100644 --- a/lib/digest/md5.c +++ b/lib/digest/md5.c @@ -259,3 +259,13 @@ md5_complete(const void *buf, size_t len, void *digest) md5_update(&ctx, buf, len); md5_final(&ctx, digest); } + +struct digest_algorithm md5_digest = { + .name = "md5", + .contextlen = sizeof md5_digest, + .digestlen = MD5_DIGEST_LEN, + .init = (digest_init_func)md5_init, + .update = (digest_update_func)md5_update, + .final = (digest_final_func)md5_final, + .complete = (digest_complete_func)md5_complete, +}; diff --git a/lib/digest/sha1.c b/lib/digest/sha1.c index fe05de1..c33a08a 100644 --- a/lib/digest/sha1.c +++ b/lib/digest/sha1.c @@ -51,6 +51,7 @@ #include #include +#include #include static uint32_t sha1_h[5] = { @@ -171,3 +172,13 @@ sha1_complete(const void *buf, size_t len, void *digest) sha1_update(&ctx, buf, len); sha1_final(&ctx, digest); } + +struct digest_algorithm sha1_digest = { + .name = "sha1", + .contextlen = sizeof sha1_digest, + .digestlen = SHA1_DIGEST_LEN, + .init = (digest_init_func)sha1_init, + .update = (digest_update_func)sha1_update, + .final = (digest_final_func)sha1_final, + .complete = (digest_complete_func)sha1_complete, +};