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

Signed-off-by: Daiki Ueno <du...@redhat.com>
---
 Makefile.in           |  3 +++
 hmac-md5-meta.c       | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-ripemd160-meta.c | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha1-meta.c      | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha224-meta.c    | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha256-meta.c    | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha384-meta.c    | 46 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha512-meta.c    | 46 +++++++++++++++++++++++++++++++++++++++++++
 nettle-meta.h         | 20 +++++++++++++++++++
 9 files changed, 345 insertions(+)
 create mode 100644 hmac-md5-meta.c
 create mode 100644 hmac-ripemd160-meta.c
 create mode 100644 hmac-sha1-meta.c
 create mode 100644 hmac-sha224-meta.c
 create mode 100644 hmac-sha256-meta.c
 create mode 100644 hmac-sha384-meta.c
 create mode 100644 hmac-sha512-meta.c

diff --git a/Makefile.in b/Makefile.in
index 6a425e16..9031d959 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -107,6 +107,9 @@ nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.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 \
+                hmac-md5-meta.c hmac-ripemd160-meta.c hmac-sha1-meta.c \
+                hmac-sha224-meta.c hmac-sha256-meta.c hmac-sha384-meta.c \
+                hmac-sha512-meta.c \
                 knuth-lfib.c hkdf.c \
                 md2.c md2-meta.c md4.c md4-meta.c \
                 md5.c md5-compress.c md5-compat.c md5-meta.c \
diff --git a/hmac-md5-meta.c b/hmac-md5-meta.c
new file mode 100644
index 00000000..4ed99b5e
--- /dev/null
+++ b/hmac-md5-meta.c
@@ -0,0 +1,46 @@
+/* hmac-md5-meta.c
+
+   Copyright (C) 2002 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_md5_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_md5
+= _NETTLE_HMAC(hmac_md5, MD5);
diff --git a/hmac-ripemd160-meta.c b/hmac-ripemd160-meta.c
new file mode 100644
index 00000000..6c354ac2
--- /dev/null
+++ b/hmac-ripemd160-meta.c
@@ -0,0 +1,46 @@
+/* hmac-ripemd160-meta.c
+
+   Copyright (C) 2011 Andres Mejia
+
+   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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_ripemd160_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_ripemd160
+= _NETTLE_HMAC(hmac_ripemd160, RIPEMD160);
diff --git a/hmac-sha1-meta.c b/hmac-sha1-meta.c
new file mode 100644
index 00000000..d6a70802
--- /dev/null
+++ b/hmac-sha1-meta.c
@@ -0,0 +1,46 @@
+/* hmac-sha1-meta.c
+
+   Copyright (C) 2002 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_sha1_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_sha1
+= _NETTLE_HMAC(hmac_sha1, SHA1);
diff --git a/hmac-sha224-meta.c b/hmac-sha224-meta.c
new file mode 100644
index 00000000..f715ce64
--- /dev/null
+++ b/hmac-sha224-meta.c
@@ -0,0 +1,46 @@
+/* hmac-sha224-meta.c
+
+   Copyright (C) 2002, 2010 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_sha224_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_sha224
+= _NETTLE_HMAC(hmac_sha224, SHA224);
diff --git a/hmac-sha256-meta.c b/hmac-sha256-meta.c
new file mode 100644
index 00000000..bc3ae45e
--- /dev/null
+++ b/hmac-sha256-meta.c
@@ -0,0 +1,46 @@
+/* hmac-sha256-meta.c
+
+   Copyright (C) 2002 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_sha256_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_sha256
+= _NETTLE_HMAC(hmac_sha256, SHA256);
diff --git a/hmac-sha384-meta.c b/hmac-sha384-meta.c
new file mode 100644
index 00000000..a15e48b6
--- /dev/null
+++ b/hmac-sha384-meta.c
@@ -0,0 +1,46 @@
+/* hmac-sha384-meta.c
+
+   Copyright (C) 2002, 2010 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_sha384_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_sha384
+= _NETTLE_HMAC(hmac_sha384, SHA384);
diff --git a/hmac-sha512-meta.c b/hmac-sha512-meta.c
new file mode 100644
index 00000000..0efcb216
--- /dev/null
+++ b/hmac-sha512-meta.c
@@ -0,0 +1,46 @@
+/* hmac-sha512-meta.c
+
+   Copyright (C) 2002, 2010 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 "nettle-meta.h"
+
+#include "hmac.h"
+
+static void
+hmac_sha512_set_nonce_wrapper (void *ctx UNUSED, const uint8_t *key UNUSED)
+{
+}
+
+const struct nettle_mac nettle_hmac_sha512
+= _NETTLE_HMAC(hmac_sha512, SHA512);
diff --git a/nettle-meta.h b/nettle-meta.h
index 656c30de..f2a73d9b 100644
--- a/nettle-meta.h
+++ b/nettle-meta.h
@@ -272,9 +272,29 @@ struct nettle_mac
   (nettle_hash_digest_func *) name##_digest,   \
 }
 
+#define _NETTLE_HMAC(name, HASH) {                     \
+  #name,                                               \
+  sizeof(struct name##_ctx),                           \
+  HASH##_DIGEST_SIZE,                                  \
+  HASH##_BLOCK_SIZE,                                   \
+  0,                                                   \
+  (nettle_set_key_func *) name##_set_key_expanded,     \
+  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;
 
+extern const struct nettle_mac nettle_hmac_md5;
+extern const struct nettle_mac nettle_hmac_ripemd160;
+extern const struct nettle_mac nettle_hmac_sha1;
+extern const struct nettle_mac nettle_hmac_sha224;
+extern const struct nettle_mac nettle_hmac_sha256;
+extern const struct nettle_mac nettle_hmac_sha384;
+extern const struct nettle_mac nettle_hmac_sha512;
+
 #ifdef __cplusplus
 }
 #endif
-- 
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