From 55fbe36e16e9a0eaabb9ffc4105ea4ec10fda950 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 9 Apr 2017 15:07:52 +0200
Subject: [PATCH] New function nettle_get_hashes.

---
 ChangeLog             |  9 +++++++++
 nettle-meta-ciphers.c |  8 +++++++-
 nettle-meta.h         | 10 +++++++++-
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 788d5133..02141f5b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2017-04-09  Niels Möller  <nisse@lysator.liu.se>
+
+	* nettle-meta.h (nettle_ciphers): New macro, analogous to below
+	change to nettle_hashes.
+
+	* nettle-meta-ciphers.c (_nettle_ciphers): Renamed array, from...
+	(nettle_ciphers: ... old name.
+	(nettle_get_ciphers): New function.
+
 2017-01-12  Niels Möller  <nisse@lysator.liu.se>
 
 	* tools/nettle-hash.c (find_algorithm): Deleted function.
diff --git a/nettle-meta-ciphers.c b/nettle-meta-ciphers.c
index 802fa141..49cb47a7 100644
--- a/nettle-meta-ciphers.c
+++ b/nettle-meta-ciphers.c
@@ -36,7 +36,7 @@
 #include <stddef.h>
 #include "nettle-meta.h"
 
-const struct nettle_cipher * const nettle_ciphers[] = {
+const struct nettle_cipher * const _nettle_ciphers[] = {
   &nettle_aes128,
   &nettle_aes192,
   &nettle_aes256,
@@ -56,3 +56,9 @@ const struct nettle_cipher * const nettle_ciphers[] = {
   &nettle_arctwo_gutmann128,
   NULL
 };
+
+const struct nettle_cipher * const *
+nettle_get_ciphers (void)
+{
+  return _nettle_ciphers;
+}
diff --git a/nettle-meta.h b/nettle-meta.h
index fd166717..b645fb1b 100644
--- a/nettle-meta.h
+++ b/nettle-meta.h
@@ -61,7 +61,15 @@ struct nettle_cipher
 };
 
 /* null-terminated list of ciphers implemented by this version of nettle */
-extern const struct nettle_cipher * const nettle_ciphers[];
+extern const struct nettle_cipher * const _nettle_ciphers[];
+
+const struct nettle_cipher * const *
+#ifdef __GNUC__
+__attribute__((pure))
+#endif
+nettle_get_ciphers (void);
+
+#define nettle_ciphers (nettle_get_ciphers())
 
 extern const struct nettle_cipher nettle_aes128;
 extern const struct nettle_cipher nettle_aes192;
-- 
GitLab