diff --git a/ChangeLog b/ChangeLog
index 8b65b2fabba4189265a3e80549fe1e23ec844274..62314bad413a4ccd82e1dc00f8a4d0cbf0874e03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-08-16  Niels Möller  <nisse@lysator.liu.se>
+
+	* examples/io.c (write_data): Renamed, and use const void * for
+	the input data. Updated all callers.
+	(write_string): ... old name.
+	(write_file): Use const void * for the input data.
+
 2016-08-05  Niels Möller  <nisse@lysator.liu.se>
 
 	* examples/hogweed-benchmark.c: Use uint8_t for curve25519 values.
diff --git a/examples/base16dec.c b/examples/base16dec.c
index 8ab73740d024d3e56aea4f96fc454abaf048bceb..7071456713ab368b0cc2596f0575cc2ee5cc4b14 100644
--- a/examples/base16dec.c
+++ b/examples/base16dec.c
@@ -93,7 +93,7 @@ main(int argc UNUSED, char **argv UNUSED)
 	  return EXIT_FAILURE;
 	}
 
-      if (!write_string (stdout, decoded_bytes, result))
+      if (!write_data (stdout, decoded_bytes, result))
 	{
 	  werror ("Error writing file: %s\n", strerror(errno));
 	  return EXIT_FAILURE;
diff --git a/examples/base16enc.c b/examples/base16enc.c
index 3752df9e548cf34c979bf0c01b03cff3c762bfd9..02e4f2808fa82573be2f8a2c2140ec6cd085f995 100644
--- a/examples/base16enc.c
+++ b/examples/base16enc.c
@@ -88,7 +88,7 @@ main(int argc UNUSED, char **argv UNUSED)
 	      werror ("Error reading file: %s\n", strerror(errno));
 	      return EXIT_FAILURE;
 	    }
-	  if (!write_string (stdout, encoded_bytes, result)
+	  if (!write_data (stdout, encoded_bytes, result)
 	      || fflush (stdout) != 0)
 	    {
 	      werror ("Error writing file: %s\n", strerror(errno));
@@ -97,7 +97,7 @@ main(int argc UNUSED, char **argv UNUSED)
 	  return EXIT_SUCCESS;
 	}
       /* The result vector is printed */
-      if (!write_string(stdout,encoded_bytes, result))
+      if (!write_data(stdout, encoded_bytes, result))
 	{
 	  werror ("Error writing file: %s\n", strerror(errno));
 	  return EXIT_FAILURE;
diff --git a/examples/base64dec.c b/examples/base64dec.c
index 1d339a16e47c0096324b360a1c2662edbccef9e1..624de628f89b78a7146727f20ab764efc6367561 100644
--- a/examples/base64dec.c
+++ b/examples/base64dec.c
@@ -93,7 +93,7 @@ main(int argc UNUSED, char **argv UNUSED)
 	  return EXIT_FAILURE;
 	}
 
-      if (!write_string (stdout, decoded_bytes, result))
+      if (!write_data (stdout, decoded_bytes, result))
 	{
 	  werror ("Error writing file: %s\n", strerror(errno));
 	  return EXIT_FAILURE;
diff --git a/examples/base64enc.c b/examples/base64enc.c
index 6be5ad45e1f1a5d00b58d4726b3e9630cdf7000a..f8ba829bb772f2c38b1d33224aced8ea7b01a3a1 100644
--- a/examples/base64enc.c
+++ b/examples/base64enc.c
@@ -90,7 +90,7 @@ main(int argc UNUSED, char **argv UNUSED)
 	  encoded_bytes += base64_encode_final(&b64_ctx,result + encoded_bytes);
 
 	  result[encoded_bytes++] = '\n';
-	  if (!write_string (stdout, encoded_bytes, result)
+	  if (!write_data (stdout, encoded_bytes, result)
 	      || fflush (stdout) != 0)
 	    {
 	      werror ("Error writing file: %s\n", strerror(errno));
@@ -101,7 +101,7 @@ main(int argc UNUSED, char **argv UNUSED)
 
       /* The result vector is written */
       result[encoded_bytes++] = '\n';
-      if (!write_string (stdout, encoded_bytes, result))
+      if (!write_data (stdout, encoded_bytes, result))
 	{
 	  werror ("Error writing file: %s\n", strerror(errno));
 	  return EXIT_FAILURE;
diff --git a/examples/io.c b/examples/io.c
index 7651cedc8eedf0d6ec4e311bb55d5b0c72259e16..408869e1713271db62929b4a27cfbbd6b265ffd7 100644
--- a/examples/io.c
+++ b/examples/io.c
@@ -143,7 +143,7 @@ read_file(const char *name, size_t max_size, uint8_t **contents)
 }
 
 int
-write_string(FILE *f, unsigned size, const char *buffer)
+write_data(FILE *f, size_t size, const void *buffer)
 {
   size_t res = fwrite(buffer, 1, size, f);
 
@@ -151,7 +151,7 @@ write_string(FILE *f, unsigned size, const char *buffer)
 }
 
 int
-write_file(const char *name, unsigned size, const char *buffer)
+write_file(const char *name, size_t size, const void *buffer)
 {
   FILE *f = fopen(name, "wb");
   int res;
@@ -159,7 +159,7 @@ write_file(const char *name, unsigned size, const char *buffer)
   if (!f)
     return 0;
 
-  res = write_string(f, size, buffer);
+  res = write_data(f, size, buffer);
   return fclose(f) == 0 && res;
 }
 
diff --git a/examples/io.h b/examples/io.h
index e4bb1cf73b77f8bdc807bf2ef9b708fc761c7baa..426cb30c87373e1c1f992a142140de81bcc7210b 100644
--- a/examples/io.h
+++ b/examples/io.h
@@ -56,10 +56,10 @@ size_t
 read_file(const char *name, size_t size, uint8_t **buffer);
 
 int
-write_file(const char *name, unsigned size, const char *buffer);
+write_file(const char *name, size_t size, const void *data);
 
 int
-write_string(FILE *f, unsigned size, const char *buffer);
+write_data(FILE *f, size_t size, const void *data);
 
 int
 simple_random(struct yarrow256_ctx *ctx, const char *name);
diff --git a/examples/rsa-decrypt.c b/examples/rsa-decrypt.c
index 8a14161a7dd21748b74979b927767fe37c6ef33c..01688218f5a61ddd611cd3eff2d970bdf0cc1bfa 100644
--- a/examples/rsa-decrypt.c
+++ b/examples/rsa-decrypt.c
@@ -159,7 +159,7 @@ process_file(struct rsa_session *ctx,
 	{
 	  CBC_DECRYPT(&ctx->aes, aes_decrypt, size, buffer, buffer);
 	  hmac_sha1_update(&ctx->hmac, size, buffer);
-	  if (!write_string(out, size, buffer))
+	  if (!write_data(out, size, buffer))
 	    {
 	      werror("Writing output failed: %s\n", strerror(errno));
 	      return 0;
@@ -182,7 +182,7 @@ process_file(struct rsa_session *ctx,
     {
       unsigned leftover = AES_BLOCK_SIZE - padding;
       hmac_sha1_update(&ctx->hmac, leftover, buffer);
-      if (!write_string(out, leftover, buffer))
+      if (!write_data(out, leftover, buffer))
 	{
 	  werror("Writing output failed: %s\n", strerror(errno));
 	  return 0;
diff --git a/examples/rsa-encrypt.c b/examples/rsa-encrypt.c
index 665a7676b233db29cbeb77a3b30d2bfc4fbb7b62..910612554861cb80f1d5c12996b172ad02ad4c27 100644
--- a/examples/rsa-encrypt.c
+++ b/examples/rsa-encrypt.c
@@ -74,7 +74,7 @@ write_uint32(FILE *f, uint32_t n)
   uint8_t buffer[4];
   WRITE_UINT32(buffer, n);
 
-  return write_string(f, sizeof(buffer), buffer);
+  return write_data(f, sizeof(buffer), buffer);
 }
 
 static int
@@ -96,7 +96,7 @@ write_bignum(FILE *f, mpz_t x)
   p = xalloc(size);
   nettle_mpz_get_str_256(size, p, x);
 
-  res = write_string(f, size, p);
+  res = write_data(f, size, p);
   free(p);
   return res;
 }
@@ -143,7 +143,7 @@ process_file(struct rsa_session *ctx,
 	  hmac_sha1_digest(&ctx->hmac, SHA1_DIGEST_SIZE, buffer + size);
 	  size += SHA1_DIGEST_SIZE;
 
-	  if (!write_string(out, size, buffer))
+	  if (!write_data(out, size, buffer))
 	    {
 	      werror("Writing output failed: %s\n", strerror(errno));
 	      return 0;
@@ -152,7 +152,7 @@ process_file(struct rsa_session *ctx,
 	}
 
       CBC_ENCRYPT(&ctx->aes, aes_encrypt, size, buffer, buffer);
-      if (!write_string(out, size, buffer))
+      if (!write_data(out, size, buffer))
 	{
 	  werror("Writing output failed: %s\n", strerror(errno));
 	  return 0;