diff --git a/macros.h b/macros.h
index 7aa85d183c65e96e2f727298fae722107b6f9784..6b3d1b63e2f06805f48ec975f3b38ae4cc236385 100644
--- a/macros.h
+++ b/macros.h
@@ -55,5 +55,11 @@ do {						\
   (p)[0] = (i) & 0xff;				\
 } while(0)
 
+/* Macro to make it easier to loop over several blocks. */
+#define FOR_BLOCKS(length, dst, src, blocksize)	\
+  assert( !((length) % (blocksize)));           \
+  for (; (length); ((length) -= (blocksize),	\
+		  (dst) += (blocksize),		\
+		  (src) += (blocksize)) )
 
 #endif /* NETTLE_MACROS_H_INCLUDED */