diff options
author | Niels Möller <nisse@lysator.liu.se> | 2013-12-19 13:07:18 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2013-12-19 13:07:18 +0100 |
commit | 2667d597ab530f3a6b50bb1d7690839fd2fd0d32 (patch) | |
tree | 2b2391b2d55d1c1d3706dc8256060a0fa01e398f | |
parent | 2cd7a85468fc3202c8a1e18f64712a0f00fd5636 (diff) | |
download | nettle-2667d597ab530f3a6b50bb1d7690839fd2fd0d32.tar.gz |
New function poly1305_update.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | poly1305-aes.c | 7 | ||||
-rw-r--r-- | poly1305-aes.h | 6 | ||||
-rw-r--r-- | poly1305.c | 8 | ||||
-rw-r--r-- | poly1305.h | 17 |
5 files changed, 26 insertions, 24 deletions
@@ -1,3 +1,15 @@ +2013-12-19 Niels Möller <nisse@lysator.liu.se> + + * poly1305-aes.h (poly1305_aes_update): Define as an alias for + poly1305_update, using preprocessor and a type cast. + + * poly1305-aes.c (poly1305_aes_update): Deleted function. + + * poly1305.h (poly1305_update): Declare. + (_POLY1305_BLOCK, POLY1305_UPDATE): Deleted macros. + + * poly1305.c (poly1305_update): New function. + 2013-11-21 Niels Möller <nisse@lysator.liu.se> * x86_64/poly1305-internal.asm: New file. Almost a factor of two diff --git a/poly1305-aes.c b/poly1305-aes.c index d3846a4f..26c26859 100644 --- a/poly1305-aes.c +++ b/poly1305-aes.c @@ -41,13 +41,6 @@ poly1305_aes_set_nonce (struct poly1305_aes_ctx *ctx, } void -poly1305_aes_update (struct poly1305_aes_ctx *ctx, - size_t length, const uint8_t * data) -{ - POLY1305_UPDATE(ctx, length, data); -} - -void poly1305_aes_digest (struct poly1305_aes_ctx *ctx, size_t length, uint8_t * digest) { diff --git a/poly1305-aes.h b/poly1305-aes.h index fe19ee24..f2d28fbc 100644 --- a/poly1305-aes.h +++ b/poly1305-aes.h @@ -39,7 +39,6 @@ extern "C" { #define poly1305_aes_set_key nettle_poly1305_aes_set_key #define poly1305_aes_set_nonce nettle_poly1305_aes_set_nonce -#define poly1305_aes_update nettle_poly1305_aes_update #define poly1305_aes_digest nettle_poly1305_aes_digest struct poly1305_aes_ctx POLY1305_CTX(struct aes_ctx); @@ -53,9 +52,8 @@ void poly1305_aes_set_nonce (struct poly1305_aes_ctx *ctx, const uint8_t *nonce); -void -poly1305_aes_update (struct poly1305_aes_ctx *ctx, - size_t length, const uint8_t *data); +#define poly1305_aes_update \ + (*(void(*)(struct poly1305_aes_ctx *, size_t, const uint8_t *))&poly1305_update) /* The _digest functions increment the nonce */ void @@ -26,8 +26,16 @@ #include "poly1305.h" +#include "macros.h" + void poly1305_set_nonce (struct poly1305_ctx *ctx, const uint8_t * nonce) { memcpy (ctx->nonce, nonce, 16); } + +void +poly1305_update (struct poly1305_ctx *ctx, size_t length, const uint8_t *data) +{ + MD_UPDATE (ctx, length, data, poly1305_block, (void) 0); +} @@ -30,9 +30,7 @@ extern "C" { #endif -/* Low level functions/macros for the poly1305 construction. - * For the macros to be useful include macros.h - */ +/* Low level functions/macros for the poly1305 construction. */ #include "nettle-types.h" @@ -46,7 +44,7 @@ struct poly1305_ctx { uint32_t s32[3]; /* State, represented as words of 26, 32 or 64 bits, depending on implementation. */ - /* High bits, first to maintain alignment. */ + /* High bits first, to maintain alignment. */ uint32_t hh; union { @@ -65,13 +63,14 @@ struct poly1305_ctx { #define poly1305_set_key nettle_poly1305_set_key #define poly1305_set_nonce nettle_poly1305_set_nonce +#define poly1305_update nettle_poly1305_update #define poly1305_block nettle_poly1305_block #define poly1305_digest nettle_poly1305_digest void poly1305_set_key(struct poly1305_ctx *ctx, const uint8_t key[16]); void poly1305_set_nonce (struct poly1305_ctx *ctx, const uint8_t * nonce); void poly1305_block (struct poly1305_ctx *ctx, const uint8_t m[16]); - +void poly1305_update (struct poly1305_ctx *ctx, size_t size, const uint8_t *data); void poly1305_digest (struct poly1305_ctx *ctx, size_t length, uint8_t *digest, const uint8_t *s); @@ -85,14 +84,6 @@ void poly1305_digest (struct poly1305_ctx *ctx, #define POLY1305_SET_NONCE(ctx, data) \ poly1305_set_nonce(&(ctx)->pctx, (data)) -#define _POLY1305_BLOCK(ctx, block) do { \ - poly1305_block(ctx, block); \ - } while (0) - - -#define POLY1305_UPDATE(ctx, length, data) \ - MD_UPDATE (&(ctx)->pctx, (length), (data), _POLY1305_BLOCK, (void) 0) - #define POLY1305_DIGEST(ctx, encrypt, length, digest) \ do { \ uint8_t _ts[16]; \ |