X-Git-Url: http://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fchacha-poly1305%2Fpoly1305.h;fp=src%2Fchacha-poly1305%2Fpoly1305.h;h=624a19a99308fe4778ae4fae5e13cc6ac380885c;hb=63df2139835bb532125562c73ec3efbc437a3634;hp=4ece415c20892aa5a22d5efcbd19adccafbbfd03;hpb=9ce00234190baec0eaa608a5093bb3823487ef0c;p=tinc diff --git a/src/chacha-poly1305/poly1305.h b/src/chacha-poly1305/poly1305.h index 4ece415c..624a19a9 100644 --- a/src/chacha-poly1305/poly1305.h +++ b/src/chacha-poly1305/poly1305.h @@ -1,16 +1,32 @@ -/* $OpenBSD: poly1305.h,v 1.2 2013/12/19 22:57:13 djm Exp $ */ - -/* - * Public Domain poly1305 from Andrew Moon - * poly1305-donna-unrolled.c from https://github.com/floodyberry/poly1305-donna - */ - #ifndef POLY1305_H #define POLY1305_H -#define POLY1305_KEYLEN 32 -#define POLY1305_TAGLEN 16 +#include +#include +#include + +#define POLY1305_KEYLEN 32 +#define POLY1305_TAGLEN 16 +#define POLY1305_BLOCK_SIZE 16 + +/* use memcpy() to copy blocks of memory (typically faster) */ +#define USE_MEMCPY 1 +/* use unaligned little-endian load/store (can be faster) */ +#define USE_UNALIGNED 0 + +struct poly1305_context { + uint32_t r[5]; + uint32_t h[5]; + uint32_t pad[4]; + size_t leftover; + unsigned char buffer[POLY1305_BLOCK_SIZE]; + unsigned char final; +}; + +void poly1305_init(struct poly1305_context *ctx, const unsigned char key[32]); +void poly1305_update(struct poly1305_context *ctx, const unsigned char *m, size_t bytes); +void poly1305_finish(struct poly1305_context *ctx, unsigned char mac[16]); +void poly1305_auth(unsigned char mac[16], const unsigned char *m, size_t bytes, const unsigned char key[32]); -void poly1305_auth(uint8_t out[POLY1305_TAGLEN], const uint8_t *m, size_t inlen, const uint8_t key[POLY1305_KEYLEN]); +#endif /* POLY1305_H */ -#endif /* POLY1305_H */