Use secure arena for memory allocation. Minor changes in the generic
authormdw <mdw>
Sat, 17 Jun 2000 11:23:44 +0000 (11:23 +0000)
committermdw <mdw>
Sat, 17 Jun 2000 11:23:44 +0000 (11:23 +0000)
hash interface.

ghash-def.h
hmac-def.h

index 91cc6f0..db87d1f 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: ghash-def.h,v 1.1 1999/12/10 23:21:37 mdw Exp $
+ * $Id: ghash-def.h,v 1.2 2000/06/17 11:22:03 mdw Exp $
  *
  * Definitions for generic hash interface
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: ghash-def.h,v $
+ * Revision 1.2  2000/06/17 11:22:03  mdw
+ * Use secure arena for memory allocation.  Minor changes in the generic
+ * hash interface.
+ *
  * Revision 1.1  1999/12/10 23:21:37  mdw
  * Generic interface.
  *
 #include <mLib/bits.h>
 #include <mLib/sub.h>
 
+#ifndef CATACOMB_ARENA_H
+#  include "arena.h"
+#endif
+
 #ifndef CATACOMB_GHASH_H
 #  include "ghash.h"
 #endif
@@ -71,7 +79,7 @@ typedef struct gctx {                                                 \
                                                                        \
 static ghash *ghinit(void)                                             \
 {                                                                      \
-  gctx *g = CREATE(gctx);                                              \
+  gctx *g = S_CREATE(gctx);                                            \
   g->h.ops = &gops;                                                    \
   pre##_init(&g->c);                                                   \
   return (&g->h);                                                      \
@@ -92,11 +100,11 @@ static void ghdone(ghash *h, void *buf)                                    \
 static void ghdestroy(ghash *h)                                                \
 {                                                                      \
   gctx *g = (gctx *)h;                                                 \
-  DESTROY(g);                                                          \
+  S_DESTROY(g);                                                                \
 }                                                                      \
                                                                        \
-static const ghash_ops gops = { &pre.b, ghhash, ghdone, ghdestroy };   \
-const gchash pre = { { #pre, PRE##_HASHSZ }, ghinit };
+static const ghash_ops gops = { &pre, ghhash, ghdone, ghdestroy };     \
+const gchash pre = { #pre, PRE##_HASHSZ, ghinit };
 
 /*----- That's all, folks -------------------------------------------------*/
 
index 3f96649..0972b68 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: hmac-def.h,v 1.1 1999/12/10 23:16:40 mdw Exp $
+ * $Id: hmac-def.h,v 1.2 2000/06/17 11:23:44 mdw Exp $
  *
  * Definitions for HMAC and NMAC
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: hmac-def.h,v $
+ * Revision 1.2  2000/06/17 11:23:44  mdw
+ * Use secure arena for memory allocation.  Minor changes in the generic
+ * hash interface.
+ *
  * Revision 1.1  1999/12/10 23:16:40  mdw
  * Split mode macros into interface and implementation.
  *
 
 /*----- Header files ------------------------------------------------------*/
 
+#include <assert.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include <mLib/bits.h>
 #include <mLib/sub.h>
 
+#ifndef CATACOMB_ARENA_H
+#  include "arena.h"
+#endif
+
 #ifndef CATACOMB_GMAC_H
 #  include "gmac.h"
 #endif
 
 #define HMAC_DEF(PRE, pre)                                             \
                                                                        \
+/* --- Useful constants --- */                                         \
+                                                                       \
+const octet pre##_mackeysz[] = { KSZ_ANY, PRE##_HASHSZ };              \
+                                                                       \
 /* --- @pre_nmacinit@ --- *                                            \
  *                                                                     \
  * Arguments:  @pre_macctx *key@ = pointer to a MAC key object         \
@@ -204,7 +217,7 @@ typedef struct gctx {                                                       \
 static ghash *gkinit(gmac *m)                                          \
 {                                                                      \
   gkctx *gk = (gkctx *)m;                                              \
-  gctx *g = CREATE(gctx);                                              \
+  gctx *g = S_CREATE(gctx);                                            \
   g->h.ops = &gops;                                                    \
   pre##_macinit(&g->c, &gk->k);                                                \
   return (&g->h);                                                      \
@@ -212,7 +225,7 @@ static ghash *gkinit(gmac *m)                                               \
                                                                        \
 static gmac *gkey(const void *k, size_t sz)                            \
 {                                                                      \
-  gkctx *gk = CREATE(gkctx);                                           \
+  gkctx *gk = S_CREATE(gkctx);                                         \
   gk->m.ops = &gkops;                                                  \
   pre##_hmacinit(&gk->k, k, sz);                                       \
   return (&gk->m);                                                     \
@@ -233,19 +246,29 @@ static void ghdone(ghash *h, void *buf)                                   \
 static void ghdestroy(ghash *h)                                                \
 {                                                                      \
   gctx *g = (gctx *)h;                                                 \
-  DESTROY(g);                                                          \
+  BURN(*g);                                                            \
+  S_DESTROY(g);                                                                \
 }                                                                      \
                                                                        \
 static void gkdestroy(gmac *m)                                         \
 {                                                                      \
   gkctx *gk = (gkctx *)m;                                              \
-  DESTROY(gk);                                                         \
+  BURN(*gk);                                                           \
+  S_DESTROY(gk);                                                       \
+}                                                                      \
+                                                                       \
+static ghash *ghinit(void)                                             \
+{                                                                      \
+  assert(((void)"Attempt to instantiate an unkeyed MAC", 0));          \
+  return (0);                                                          \
 }                                                                      \
                                                                        \
-const gcmac pre##_hmac = { { #pre "-hmac", PRE##_HASHSZ }, gkey };     \
-static const gmac_ops gkops = { &pre##_hmac.b, gkinit, gkdestroy };    \
+const gcmac pre##_hmac =                                               \
+  { #pre "-hmac", PRE##_HASHSZ, pre##_mackeysz, gkey };                        \
+static const gmac_ops gkops = { &pre##_hmac, gkinit, gkdestroy };      \
+static const gchash gch = { #pre "-hmac", PRE##_HASHSZ, ghinit };      \
 static const ghash_ops gops =                                          \
-  { &pre##_hmac.b, ghhash, ghdone, ghdestroy };                                \
+  { &gch, ghhash, ghdone, ghdestroy };                                 \
                                                                        \
 HMAC_TEST(PRE, pre)