From 2af20fa2d3a7a9106c372ad308b1d3ef34d72bdc Mon Sep 17 00:00:00 2001 From: mdw Date: Sat, 17 Jun 2000 11:48:02 +0000 Subject: [PATCH] Use secure arena for memory allocation. Rearrange setiv slightly. --- ofb-def.h | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/ofb-def.h b/ofb-def.h index 20be645..d09e51f 100644 --- a/ofb-def.h +++ b/ofb-def.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ofb-def.h,v 1.2 1999/12/13 15:34:01 mdw Exp $ + * $Id: ofb-def.h,v 1.3 2000/06/17 11:48:02 mdw Exp $ * * Definitions for output feedback mode * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: ofb-def.h,v $ + * Revision 1.3 2000/06/17 11:48:02 mdw + * Use secure arena for memory allocation. Rearrange setiv slightly. + * * Revision 1.2 1999/12/13 15:34:01 mdw * Add support for seeding from a generic pseudorandom source. * @@ -53,6 +56,10 @@ #include #include +#ifndef CATACOMB_ARENA_H +# include "arena.h" +#endif + #ifndef CATACOMB_BLKC_H # include "blkc.h" #endif @@ -92,8 +99,8 @@ void pre##_ofbgetiv(const pre##_ofbctx *ctx, void *iv) \ { \ octet *p = iv; \ - int off = ctx->off; \ - int rest = PRE##_BLKSZ - off; \ + unsigned off = ctx->off; \ + unsigned rest = PRE##_BLKSZ - off; \ memcpy(p, ctx->iv + off, rest); \ memcpy(p + rest, ctx->iv, off); \ } \ @@ -110,11 +117,8 @@ void pre##_ofbgetiv(const pre##_ofbctx *ctx, void *iv) \ \ void pre##_ofbsetiv(pre##_ofbctx *ctx, const void *iv) \ { \ - uint32 niv[PRE##_BLKSZ / 4]; \ - BLKC_LOAD(PRE, niv, iv); \ - pre##_eblk(&ctx->ctx, niv, niv); \ - BLKC_STORE(PRE, ctx->iv, niv); \ - ctx->off = 0; \ + memcpy(ctx->iv, iv, PRE##_BLKSZ); \ + ctx->off = PRE##_BLKSZ; \ } \ \ /* --- @pre_ofbbdry@ --- * \ @@ -129,10 +133,12 @@ void pre##_ofbsetiv(pre##_ofbctx *ctx, const void *iv) \ \ void pre##_ofbbdry(pre##_ofbctx *ctx) \ { \ - octet iv[PRE##_BLKSZ]; \ - pre##_ofbgetiv(ctx, iv); \ - pre##_ofbsetiv(ctx, iv); \ - BURN(iv); \ + uint32 niv[PRE##_BLKSZ / 4]; \ + BLKC_LOAD(PRE, niv, ctx->iv); \ + pre##_eblk(&ctx->ctx, niv, niv); \ + BLKC_STORE(PRE, ctx->iv, niv); \ + ctx->off = PRE##_BLKSZ; \ + BURN(niv); \ } \ \ /* --- @pre_ofbsetkey@ --- * \ @@ -197,7 +203,7 @@ void pre##_ofbencrypt(pre##_ofbctx *ctx, \ { \ const octet *s = src; \ octet *d = dest; \ - int off = ctx->off; \ + unsigned off = ctx->off; \ \ /* --- Empty blocks are trivial --- */ \ \ @@ -212,7 +218,7 @@ void pre##_ofbencrypt(pre##_ofbctx *ctx, \ /* --- Finish off what's left in my buffer --- */ \ \ if (!d) \ - sz -= off; \ + sz -= PRE##_BLKSZ - off; \ else { \ while (off < PRE##_BLKSZ) { \ register octet x = s ? *s++ : 0; \ @@ -279,7 +285,7 @@ typedef struct gctx { \ \ static gcipher *ginit(const void *k, size_t sz) \ { \ - gctx *g = CREATE(gctx); \ + gctx *g = S_CREATE(gctx); \ g->c.ops = &gops; \ pre##_ofbinit(&g->k, k, sz, 0); \ return (&g->c); \ @@ -294,7 +300,8 @@ static void gencrypt(gcipher *c, const void *s, void *t, size_t sz) \ static void gdestroy(gcipher *c) \ { \ gctx *g = (gctx *)c; \ - DESTROY(g); \ + BURN(*g); \ + S_DESTROY(g); \ } \ \ static void gsetiv(gcipher *c, const void *iv) \ @@ -310,12 +317,12 @@ static void gbdry(gcipher *c) \ } \ \ static const gcipher_ops gops = { \ - &pre##_ofb.b, \ + &pre##_ofb, \ gencrypt, gencrypt, gdestroy, gsetiv, gbdry \ }; \ \ const gccipher pre##_ofb = { \ - { #pre "-ofb", PRE##_KEYSZ, PRE##_BLKSZ }, \ + #pre "-ofb", pre##_keysz, PRE##_BLKSZ, \ ginit \ }; \ \ @@ -329,7 +336,8 @@ typedef struct grctx { \ static void grdestroy(grand *r) \ { \ grctx *g = (grctx *)r; \ - DESTROY(g); \ + BURN(*g); \ + S_DESTROY(g); \ } \ \ static int grmisc(grand *r, unsigned op, ...) \ @@ -413,7 +421,7 @@ static void grfill(grand *r, void *p, size_t sz) \ \ static const grand_ops grops = { \ #pre "-ofb", \ - 0, \ + GRAND_CRYPTO, 0, \ grmisc, grdestroy, \ grword, grbyte, grword, grand_range, grfill \ }; \ @@ -431,7 +439,7 @@ static const grand_ops grops = { \ \ grand *pre##_ofbrand(const void *k, size_t sz) \ { \ - grctx *g = CREATE(grctx); \ + grctx *g = S_CREATE(grctx); \ g->r.ops = &grops; \ pre##_ofbinit(&g->k, k, sz, 0); \ return (&g->r); \ -- 2.11.0