mirror of
https://github.com/cryb-to/cryb-to.git
synced 2024-11-21 13:15:45 +00:00
Clean up namespace macros and provide algorithm definitions.
This commit is contained in:
parent
2f3ecfa7ba
commit
1d2f0661b3
5 changed files with 63 additions and 46 deletions
|
@ -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
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#include <cryb/digest.h>
|
||||
#include <cryb/bitwise.h>
|
||||
|
||||
#include <cryb/digest.h>
|
||||
#include <cryb/sha1.h>
|
||||
|
||||
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,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue