From: Daiki Ueno <[email protected]>
Signed-off-by: Daiki Ueno <[email protected]>
---
Makefile.in | 1 +
cmac-aes128-meta.c | 43 +++++++++++++++++++++++++++++++++++++++++++
cmac-aes256-meta.c | 43 +++++++++++++++++++++++++++++++++++++++++++
nettle-meta.h | 15 +++++++++++++++
testsuite/cmac-test.c | 24 ------------------------
5 files changed, 102 insertions(+), 24 deletions(-)
create mode 100644 cmac-aes128-meta.c
create mode 100644 cmac-aes256-meta.c
diff --git a/Makefile.in b/Makefile.in
index b54e64b0..6a425e16 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -103,6 +103,7 @@ nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.c \
gcm-camellia128.c gcm-camellia128-meta.c \
gcm-camellia256.c gcm-camellia256-meta.c \
cmac.c cmac-aes128.c cmac-aes256.c \
+ cmac-aes128-meta.c cmac-aes256-meta.c \
gosthash94.c gosthash94-meta.c \
hmac.c hmac-md5.c hmac-ripemd160.c hmac-sha1.c \
hmac-sha224.c hmac-sha256.c hmac-sha384.c hmac-sha512.c \
diff --git a/cmac-aes128-meta.c b/cmac-aes128-meta.c
new file mode 100644
index 00000000..6239984b
--- /dev/null
+++ b/cmac-aes128-meta.c
@@ -0,0 +1,43 @@
+/* cmac-aes128-meta.c
+
+ Copyright (C) 2013, 2014 Niels Möller
+
+ This file is part of GNU Nettle.
+
+ GNU Nettle is free software: you can redistribute it and/or
+ modify it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ or both in parallel, as here.
+
+ GNU Nettle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see http://www.gnu.org/licenses/.
+*/
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <assert.h>
+
+#include "nettle-meta.h"
+
+#include "cmac.h"
+
+const struct nettle_mac nettle_cmac_aes128
+= _NETTLE_CMAC(cmac_aes128, AES128);
diff --git a/cmac-aes256-meta.c b/cmac-aes256-meta.c
new file mode 100644
index 00000000..8f50f0d8
--- /dev/null
+++ b/cmac-aes256-meta.c
@@ -0,0 +1,43 @@
+/* cmac-aes256-meta.c
+
+ Copyright (C) 2013, 2014 Niels Möller
+
+ This file is part of GNU Nettle.
+
+ GNU Nettle is free software: you can redistribute it and/or
+ modify it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ or both in parallel, as here.
+
+ GNU Nettle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see http://www.gnu.org/licenses/.
+*/
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <assert.h>
+
+#include "nettle-meta.h"
+
+#include "cmac.h"
+
+const struct nettle_mac nettle_cmac_aes256
+= _NETTLE_CMAC(cmac_aes256, AES256);
diff --git a/nettle-meta.h b/nettle-meta.h
index b03da208..783d80ce 100644
--- a/nettle-meta.h
+++ b/nettle-meta.h
@@ -260,6 +260,21 @@ struct nettle_mac
nettle_hash_digest_func *digest;
};
+#define _NETTLE_CMAC(name, AES) { \
+ #name, \
+ sizeof(struct name##_ctx), \
+ CMAC128_DIGEST_SIZE, \
+ AES##_KEY_SIZE, \
+ 0, \
+ (nettle_set_key_func *) name##_set_key, \
+ NULL, \
+ (nettle_hash_update_func *) name##_update, \
+ (nettle_hash_digest_func *) name##_digest, \
+}
+
+extern const struct nettle_mac nettle_cmac_aes128;
+extern const struct nettle_mac nettle_cmac_aes256;
+
#ifdef __cplusplus
}
#endif
diff --git a/testsuite/cmac-test.c b/testsuite/cmac-test.c
index b1d4aa30..42188ece 100644
--- a/testsuite/cmac-test.c
+++ b/testsuite/cmac-test.c
@@ -2,30 +2,6 @@
#include "nettle-internal.h"
#include "cmac.h"
-const struct nettle_mac nettle_cmac_aes128 =
-{
- "CMAC-AES128",
- sizeof(struct cmac_aes128_ctx),
- CMAC128_DIGEST_SIZE,
- AES128_KEY_SIZE,
-
- (nettle_set_key_func*) cmac_aes128_set_key,
- (nettle_hash_update_func*) cmac_aes128_update,
- (nettle_hash_digest_func*) cmac_aes128_digest
-};
-
-const struct nettle_mac nettle_cmac_aes256 =
-{
- "CMAC-AES256",
- sizeof(struct cmac_aes256_ctx),
- CMAC128_DIGEST_SIZE,
- AES256_KEY_SIZE,
-
- (nettle_set_key_func*) cmac_aes256_set_key,
- (nettle_hash_update_func*) cmac_aes256_update,
- (nettle_hash_digest_func*) cmac_aes256_digest
-};
-
#define test_cmac_aes128(key, msg, ref)
\
test_mac(&nettle_cmac_aes128, key, msg, ref)
--
2.21.0
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs