[PATCH] cmac-des3: add meta declaration to Nettle library

2020-02-09 Thread dbaryshkov
From: Dmitry Baryshkov 

Move cmac-des3 meta information from testsuite/cmac-test.c to main
Nettle library.

Signed-off-by: Dmitry Baryshkov 
---
 Makefile.in   |  2 +-
 cmac-des3-meta.c  | 52 +++
 nettle-meta-macs.c|  1 +
 nettle-meta.h |  1 +
 testsuite/cmac-test.c | 12 -
 testsuite/meta-mac-test.c |  1 +
 6 files changed, 56 insertions(+), 13 deletions(-)
 create mode 100644 cmac-des3-meta.c

diff --git a/Makefile.in b/Makefile.in
index d4fcb81302a2..ddc304285321 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -103,7 +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 cmac64.c cmac-aes128.c cmac-aes256.c cmac-des3.c \
-cmac-aes128-meta.c cmac-aes256-meta.c \
+cmac-aes128-meta.c cmac-aes256-meta.c cmac-des3-meta.c \
 gost28147.c gosthash94.c gosthash94-meta.c \
 hmac.c hmac-gosthash94.c hmac-md5.c hmac-ripemd160.c \
 hmac-sha1.c hmac-sha224.c hmac-sha256.c hmac-sha384.c \
diff --git a/cmac-des3-meta.c b/cmac-des3-meta.c
new file mode 100644
index ..7fdee8e680cf
--- /dev/null
+++ b/cmac-des3-meta.c
@@ -0,0 +1,52 @@
+/* cmac-des3-meta.c
+
+   Copyright (C) 2020 Dmitry Baryshkov
+
+   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 
+
+#include "nettle-meta.h"
+
+#include "cmac.h"
+
+const struct nettle_mac nettle_cmac_des3 =
+{
+  "cmac_des3",
+  sizeof(struct cmac_des3_ctx),
+  CMAC64_DIGEST_SIZE,
+  DES3_KEY_SIZE,
+
+  (nettle_set_key_func*) cmac_des3_set_key,
+  (nettle_hash_update_func*) cmac_des3_update,
+  (nettle_hash_digest_func*) cmac_des3_digest
+};
diff --git a/nettle-meta-macs.c b/nettle-meta-macs.c
index cb9ede851573..a658ee39e230 100644
--- a/nettle-meta-macs.c
+++ b/nettle-meta-macs.c
@@ -40,6 +40,7 @@
 const struct nettle_mac * const _nettle_macs[] = {
   &nettle_cmac_aes128,
   &nettle_cmac_aes256,
+  &nettle_cmac_des3,
   &nettle_hmac_md5,
   &nettle_hmac_ripemd160,
   &nettle_hmac_sha1,
diff --git a/nettle-meta.h b/nettle-meta.h
index 5d86615f94cc..7a6af363426b 100644
--- a/nettle-meta.h
+++ b/nettle-meta.h
@@ -276,6 +276,7 @@ nettle_get_macs (void);
 
 extern const struct nettle_mac nettle_cmac_aes128;
 extern const struct nettle_mac nettle_cmac_aes256;
+extern const struct nettle_mac nettle_cmac_des3;
 
 /* HMAC variants with key size = digest size */
 extern const struct nettle_mac nettle_hmac_md5;
diff --git a/testsuite/cmac-test.c b/testsuite/cmac-test.c
index 1a2cd0e591cf..a71baa086d01 100644
--- a/testsuite/cmac-test.c
+++ b/testsuite/cmac-test.c
@@ -2,18 +2,6 @@
 #include "nettle-internal.h"
 #include "cmac.h"
 
-const struct nettle_mac nettle_cmac_des3 =
-{
-  "CMAC-3DES",
-  sizeof(struct cmac_des3_ctx),
-  CMAC64_DIGEST_SIZE,
-  DES3_KEY_SIZE,
-
-  (nettle_set_key_func*) cmac_des3_set_key,
-  (nettle_hash_update_func*) cmac_des3_update,
-  (nettle_hash_digest_func*) cmac_des3_digest
-};
-
 #define test_cmac_aes128(key, msg, ref)
\
   test_mac(&nettle_cmac_aes128, key, msg, ref)
 
diff --git a/testsuite/meta-mac-test.c b/testsuite/meta-mac-test.c
index 32b6f20f07cd..55339441c99f 100644
--- a/testsuite/meta-mac-test.c
+++ b/testsuite/meta-mac-test.c
@@ -4,6 +4,7 @@
 const char* macs[] = {
   "cmac_aes128",
   "cmac_aes256",
+  "cmac_des3",
   "hmac_md5",
   "hmac_ripemd160",
   "hmac_sha1",
-- 
2.24.1

___
nettle-bugs mailing list
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs


Re: [PATCH v2 3/6] nettle-meta: Add meta interface for HMAC functions

2020-02-09 Thread Niels Möller
Dmitry Eremin-Solenikov  writes:

> ср, 25 дек. 2019 г. в 14:31, Niels Möller :
>>
>> If we define a single nettle_mac for each supported (no-nonce) mac
>> algorithm, what should the key size be for each algorithm? Using the
>> underlying block size for the hmac algorithms seems to be a bit
>> overkill. What key sizes are used in practice? Does it make sense to
>> use key size equal to digest size (at least, that's what used for hmac
>> in the ssh protocol)?
>
> Same goes for TLS. Key size = digest size for HMAC.

I've pushed Daiki's patches with struct nettle_mac to a branch
move-nettle_mac, with a few changes: Drop the nonce things (and hence
also umac). Change the hmac algorithms to all use digest size as the key
size. And I've updated hmac tests to use this interface when possible.

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
___
nettle-bugs mailing list
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs