From a351d052dda03a2cc1af01dcef4640891f551ada Mon Sep 17 00:00:00 2001 From: mdw Date: Sun, 2 Jul 2000 18:27:42 +0000 Subject: [PATCH] (ghash->ops->done): Interface change. Passing in a null buffer pointer uses a buffer internal to the ghash object. The operation returns the address of the buffer it used. Clients of generic hashes no longer need to use dynamically allocated memory for hash results. --- ghash-def.h | 14 ++++++++++++-- ghash.h | 10 ++++++++-- hmac-def.h | 14 ++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ghash-def.h b/ghash-def.h index db87d1f..d8dfc3c 100644 --- a/ghash-def.h +++ b/ghash-def.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ghash-def.h,v 1.2 2000/06/17 11:22:03 mdw Exp $ + * $Id: ghash-def.h,v 1.3 2000/07/02 18:27:42 mdw Exp $ * * Definitions for generic hash interface * @@ -30,6 +30,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: ghash-def.h,v $ + * Revision 1.3 2000/07/02 18:27:42 mdw + * (ghash->ops->done): Interface change. Passing in a null buffer pointer + * uses a buffer internal to the ghash object. The operation returns the + * address of the buffer it used. Clients of generic hashes no longer need + * to use dynamically allocated memory for hash results. + * * Revision 1.2 2000/06/17 11:22:03 mdw * Use secure arena for memory allocation. Minor changes in the generic * hash interface. @@ -75,6 +81,7 @@ static const ghash_ops gops; \ typedef struct gctx { \ ghash h; \ pre##_ctx c; \ + octet buf[PRE##_HASHSZ]; \ } gctx; \ \ static ghash *ghinit(void) \ @@ -91,10 +98,13 @@ static void ghhash(ghash *h, const void *p, size_t sz) \ pre##_hash(&g->c, p, sz); \ } \ \ -static void ghdone(ghash *h, void *buf) \ +static octet *ghdone(ghash *h, void *buf) \ { \ gctx *g = (gctx *)h; \ + if (!buf) \ + buf = g->buf; \ pre##_done(&g->c, buf); \ + return (buf); \ } \ \ static void ghdestroy(ghash *h) \ diff --git a/ghash.h b/ghash.h index 762444c..85b3d7f 100644 --- a/ghash.h +++ b/ghash.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ghash.h,v 1.2 2000/06/17 11:22:17 mdw Exp $ + * $Id: ghash.h,v 1.3 2000/07/02 18:27:42 mdw Exp $ * * Generic hash function interface * @@ -30,6 +30,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: ghash.h,v $ + * Revision 1.3 2000/07/02 18:27:42 mdw + * (ghash->ops->done): Interface change. Passing in a null buffer pointer + * uses a buffer internal to the ghash object. The operation returns the + * address of the buffer it used. Clients of generic hashes no longer need + * to use dynamically allocated memory for hash results. + * * Revision 1.2 2000/06/17 11:22:17 mdw * Minor changes in the generic hash interface. * @@ -58,7 +64,7 @@ typedef struct ghash { typedef struct ghash_ops { const struct gchash *c; /* Pointer to hash class */ void (*hash)(ghash */*h*/, const void */*p*/, size_t /*sz*/); /* Hash */ - void (*done)(ghash */*h*/, void */*buf*/); /* Write result */ + octet *(*done)(ghash */*h*/, void */*buf*/); /* Write result */ void (*destroy)(ghash */*h*/); /* Destroy hash block */ } ghash_ops; diff --git a/hmac-def.h b/hmac-def.h index 0972b68..38dd64a 100644 --- a/hmac-def.h +++ b/hmac-def.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: hmac-def.h,v 1.2 2000/06/17 11:23:44 mdw Exp $ + * $Id: hmac-def.h,v 1.3 2000/07/02 18:27:42 mdw Exp $ * * Definitions for HMAC and NMAC * @@ -30,6 +30,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: hmac-def.h,v $ + * Revision 1.3 2000/07/02 18:27:42 mdw + * (ghash->ops->done): Interface change. Passing in a null buffer pointer + * uses a buffer internal to the ghash object. The operation returns the + * address of the buffer it used. Clients of generic hashes no longer need + * to use dynamically allocated memory for hash results. + * * Revision 1.2 2000/06/17 11:23:44 mdw * Use secure arena for memory allocation. Minor changes in the generic * hash interface. @@ -212,6 +218,7 @@ typedef struct gkctx { \ typedef struct gctx { \ ghash h; \ pre##_macctx c; \ + octet buf[PRE##_HASHSZ]; \ } gctx; \ \ static ghash *gkinit(gmac *m) \ @@ -237,10 +244,13 @@ static void ghhash(ghash *h, const void *p, size_t sz) \ pre##_machash(&g->c, p, sz); \ } \ \ -static void ghdone(ghash *h, void *buf) \ +static octet *ghdone(ghash *h, void *buf) \ { \ gctx *g = (gctx *)h; \ + if (!buf) \ + buf = g->buf; \ pre##_macdone(&g->c, buf); \ + return (buf); \ } \ \ static void ghdestroy(ghash *h) \ -- 2.11.0