X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/994614091d7a1bca67d9d5dc9a87d4da3edb6c49..80be023065ced106a4078a36371c135a60d2bd6c:/ecb-def.h diff --git a/ecb-def.h b/ecb-def.h index 473d35a..7333310 100644 --- a/ecb-def.h +++ b/ecb-def.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ecb-def.h,v 1.2 2000/06/17 10:54:43 mdw Exp $ + * $Id: ecb-def.h,v 1.4 2004/04/17 09:58:37 mdw Exp $ * * Definitions electronic code book mode * @@ -27,17 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: ecb-def.h,v $ - * Revision 1.2 2000/06/17 10:54:43 mdw - * Use secure arena for memory allocation. - * - * Revision 1.1 1999/12/10 23:16:39 mdw - * Split mode macros into interface and implementation. - * - */ - #ifndef CATACOMB_ECB_DEF_H #define CATACOMB_ECB_DEF_H @@ -159,11 +148,17 @@ void pre##_ecbencrypt(pre##_ecbctx *ctx, \ \ while (sz >= 2 * PRE##_BLKSZ || sz == PRE##_BLKSZ) { \ uint32 x[PRE##_BLKSZ / 4]; \ - BLKC_LOAD(PRE, x, s); \ + if (!s) \ + BLKC_ZERO(PRE, x); \ + else { \ + BLKC_LOAD(PRE, x, s); \ + s += PRE##_BLKSZ; \ + } \ pre##_eblk(&ctx->ctx, x, x); \ - BLKC_STORE(PRE, d, x); \ - s += PRE##_BLKSZ; \ - d += PRE##_BLKSZ; \ + if (d) { \ + BLKC_STORE(PRE, d, x); \ + d += PRE##_BLKSZ; \ + } \ sz -= PRE##_BLKSZ; \ } \ \ @@ -188,7 +183,12 @@ void pre##_ecbencrypt(pre##_ecbctx *ctx, \ * out yet, because I've not read the partial plaintext block. \ */ \ \ - BLKC_LOAD(PRE, x, s); \ + if (!s) \ + BLKC_ZERO(PRE, x); \ + else { \ + BLKC_LOAD(PRE, x, s); \ + s += PRE##_BLKSZ; \ + } \ pre##_eblk(&ctx->ctx, x, x); \ BLKC_STORE(PRE, b, x); \ \ @@ -199,16 +199,15 @@ void pre##_ecbencrypt(pre##_ecbctx *ctx, \ * ciphertext block. \ */ \ \ - s += PRE##_BLKSZ; \ - d += PRE##_BLKSZ; \ + if (d) d += PRE##_BLKSZ; \ for (i = 0; i < sz; i++) { \ register octet y = b[i]; \ b[i] = s[i]; \ - d[i] = y; \ + if (d) d[i] = y; \ } \ BLKC_LOAD(PRE, x, b); \ pre##_eblk(&ctx->ctx, x, x); \ - BLKC_STORE(PRE, d - PRE##_BLKSZ, x); \ + if (d) BLKC_STORE(PRE, d - PRE##_BLKSZ, x); \ } \ \ /* --- Done --- */ \