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

Signed-off-by: Daiki Ueno <du...@redhat.com>
---
 Makefile.in           |  3 +++
 hmac-md5-meta.c       | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-ripemd160-meta.c | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha1-meta.c      | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha224-meta.c    | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha256-meta.c    | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha384-meta.c    | 47 +++++++++++++++++++++++++++++++++++++++++++
 hmac-sha512-meta.c    | 47 +++++++++++++++++++++++++++++++++++++++++++
 nettle-meta.h         | 20 ++++++++++++++++++
 9 files changed, 352 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..3933a455
--- /dev/null
+++ b/hmac-md5-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_md5_set_key (ctx, MD5_BLOCK_SIZE, key);
+}
+
+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..86469650
--- /dev/null
+++ b/hmac-ripemd160-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_ripemd160_set_key (ctx, RIPEMD160_BLOCK_SIZE, key);
+}
+
+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..14d34d2b
--- /dev/null
+++ b/hmac-sha1-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_sha1_set_key (ctx, SHA1_BLOCK_SIZE, key);
+}
+
+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..2468a4ce
--- /dev/null
+++ b/hmac-sha224-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_sha224_set_key (ctx, SHA224_BLOCK_SIZE, key);
+}
+
+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..df099d05
--- /dev/null
+++ b/hmac-sha256-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_sha256_set_key (ctx, SHA256_BLOCK_SIZE, key);
+}
+
+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..1cfdd278
--- /dev/null
+++ b/hmac-sha384-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_sha384_set_key (ctx, SHA384_BLOCK_SIZE, key);
+}
+
+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..f4140766
--- /dev/null
+++ b/hmac-sha512-meta.c
@@ -0,0 +1,47 @@
+/* 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_key_wrapper (void *ctx, const uint8_t *key)
+{
+  hmac_sha512_set_key (ctx, SHA512_BLOCK_SIZE, key);
+}
+
+const struct nettle_mac nettle_hmac_sha512
+= _NETTLE_HMAC(hmac_sha512, SHA512);
diff --git a/nettle-meta.h b/nettle-meta.h
index 783d80ce..20f5cd89 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,                                           \
+  name##_set_key_wrapper,                      \
+  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;
 
+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