+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
POLY1305_SET_NONCE(ctx, nonce);
}
-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)
#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);
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
#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);
+}
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"
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
{
#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);
#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]; \