summaryrefslogtreecommitdiff
path: root/md-internal.h
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2022-10-31 19:04:23 +0100
committerNiels Möller <nisse@lysator.liu.se>2022-10-31 19:04:23 +0100
commitbb9c0a1ed4e6b3be4c5a259d3a6192960bc0c432 (patch)
tree3faef03673acc892d9643e9dc4d61b61a3c2fc61 /md-internal.h
parentf9c2e9bb6cff5d14f4e6fcee806eeb59837116cc (diff)
downloadnettle-bb9c0a1ed4e6b3be4c5a259d3a6192960bc0c432.tar.gz
New function _nettle_poly1305_update.
Diffstat (limited to 'md-internal.h')
-rw-r--r--md-internal.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/md-internal.h b/md-internal.h
index fe520c63..a97b7b90 100644
--- a/md-internal.h
+++ b/md-internal.h
@@ -32,6 +32,8 @@
#ifndef NETTLE_MD_INTERNAL_H_INCLUDED
#define NETTLE_MD_INTERNAL_H_INCLUDED
+#include <string.h>
+
/* Internal helper macros for Merkle-Damgård hash functions. Assumes the context
structs includes the following fields:
@@ -51,7 +53,18 @@
memcpy((ctx)->block + (ctx)->index, (data), __md_left); \
(data) += __md_left; \
(length) -= __md_left; \
- (ctx)->index = 0; \
} while(0)
+#define MD_FILL_OR_RETURN_INDEX(block_size, block, index, length, data) \
+ do { \
+ unsigned __md_left = (block_size) - (index); \
+ if ((length) < __md_left) \
+ { \
+ memcpy(block + (index), (data), (length)); \
+ return (index) + (length); \
+ } \
+ memcpy((block) + (index), (data), __md_left); \
+ (data) += __md_left; \
+ (length) -= __md_left; \
+ } while(0)
#endif /* NETTLE_MD_INTERNAL_H_INCLUDED */