mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Add generic message authentication interface
Add generic interface for generating and verifying MACs (message authentication codes). Replace multiple HMAC implementation with a generic one.
This commit is contained in:
44
lib/sha512.h
44
lib/sha512.h
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* BIRD Library -- SHA-512 and SHA-384 Hash Functions,
|
||||
* HMAC-SHA-512 and HMAC-SHA-384 Functions
|
||||
* BIRD Library -- SHA-512 and SHA-384 Hash Functions
|
||||
*
|
||||
* (c) 2015 CZ.NIC z.s.p.o.
|
||||
*
|
||||
@@ -25,8 +24,10 @@
|
||||
#define SHA512_BLOCK_SIZE 128
|
||||
|
||||
|
||||
struct hash_context;
|
||||
|
||||
struct sha512_context {
|
||||
u64 h0, h1, h2, h3, h4, h5, h6, h7;
|
||||
u64 h0, h1, h2, h3, h4, h5, h6, h7;
|
||||
byte buf[SHA512_BLOCK_SIZE];
|
||||
uint nblocks;
|
||||
uint count;
|
||||
@@ -35,39 +36,14 @@ struct sha512_context {
|
||||
#define sha384_context sha512_context
|
||||
|
||||
|
||||
void sha512_init(struct sha512_context *ctx);
|
||||
void sha384_init(struct sha384_context *ctx);
|
||||
void sha512_init(struct hash_context *ctx);
|
||||
void sha384_init(struct hash_context *ctx);
|
||||
|
||||
void sha512_update(struct sha512_context *ctx, const byte *buf, size_t len);
|
||||
static inline void sha384_update(struct sha384_context *ctx, const byte *buf, size_t len)
|
||||
{ sha512_update(ctx, buf, len); }
|
||||
void sha512_update(struct hash_context *ctx, const byte *buf, uint len);
|
||||
#define sha384_update sha512_update
|
||||
|
||||
byte *sha512_final(struct sha512_context *ctx);
|
||||
static inline byte *sha384_final(struct sha384_context *ctx)
|
||||
{ return sha512_final(ctx); }
|
||||
|
||||
|
||||
/*
|
||||
* HMAC-SHA512, HMAC-SHA384
|
||||
*/
|
||||
|
||||
struct sha512_hmac_context
|
||||
{
|
||||
struct sha512_context ictx;
|
||||
struct sha512_context octx;
|
||||
};
|
||||
|
||||
#define sha384_hmac_context sha512_hmac_context
|
||||
|
||||
|
||||
void sha512_hmac_init(struct sha512_hmac_context *ctx, const byte *key, size_t keylen);
|
||||
void sha384_hmac_init(struct sha384_hmac_context *ctx, const byte *key, size_t keylen);
|
||||
|
||||
void sha512_hmac_update(struct sha512_hmac_context *ctx, const byte *buf, size_t buflen);
|
||||
void sha384_hmac_update(struct sha384_hmac_context *ctx, const byte *buf, size_t buflen);
|
||||
|
||||
byte *sha512_hmac_final(struct sha512_hmac_context *ctx);
|
||||
byte *sha384_hmac_final(struct sha384_hmac_context *ctx);
|
||||
byte *sha512_final(struct hash_context *ctx);
|
||||
#define sha384_final sha512_final
|
||||
|
||||
|
||||
#endif /* _BIRD_SHA512_H_ */
|
||||
|
Reference in New Issue
Block a user