summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2013-12-19 13:07:18 +0100
committerNiels Möller <nisse@lysator.liu.se>2013-12-19 13:07:18 +0100
commit2667d597ab530f3a6b50bb1d7690839fd2fd0d32 (patch)
tree2b2391b2d55d1c1d3706dc8256060a0fa01e398f
parent2cd7a85468fc3202c8a1e18f64712a0f00fd5636 (diff)
downloadnettle-2667d597ab530f3a6b50bb1d7690839fd2fd0d32.tar.gz
New function poly1305_update.
-rw-r--r--ChangeLog12
-rw-r--r--poly1305-aes.c7
-rw-r--r--poly1305-aes.h6
-rw-r--r--poly1305.c8
-rw-r--r--poly1305.h17
5 files changed, 26 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 08156bd3..e1e4b018 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/poly1305.c b/poly1305.c
index 37445316..eacb4841 100644
--- a/poly1305.c
+++ b/poly1305.c
@@ -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);
+}
diff --git a/poly1305.h b/poly1305.h
index 3f71d8b1..13b2d6c8 100644
--- a/poly1305.h
+++ b/poly1305.h
@@ -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]; \