From: Daiki Ueno <du...@redhat.com>

Signed-off-by: Daiki Ueno <du...@redhat.com>
---
 Makefile.in           |  1 +
 cmac-aes128-meta.c    | 48 +++++++++++++++++++++++++++++++++++++++++++
 cmac-aes256-meta.c    | 48 +++++++++++++++++++++++++++++++++++++++++++
 nettle-meta.h         | 15 ++++++++++++++
 testsuite/cmac-test.c | 24 ----------------------
 5 files changed, 112 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..73cf396c
--- /dev/null
+++ b/cmac-aes128-meta.c
@@ -0,0 +1,48 @@
+/* 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"
+
+static void
+cmac_aes128_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+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..e7bf745c
--- /dev/null
+++ b/cmac-aes256-meta.c
@@ -0,0 +1,48 @@
+/* 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"
+
+static void
+cmac_aes256_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_cmac_aes256
+= _NETTLE_CMAC(cmac_aes256, AES256);
diff --git a/nettle-meta.h b/nettle-meta.h
index b03da208..656c30de 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,      \
+  name##_set_nonce_wrapper,                    \
+  (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
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to