X-Git-Url: https://git.distorted.org.uk/~mdw/userv-utils/blobdiff_plain/76a30d074c1656141e57a3402805f07a1a5c90e8..8bb9d875e22b456711478e9d9972d458e8eb0d48:/ipif/mech-blowfish.c diff --git a/ipif/mech-blowfish.c b/ipif/mech-blowfish.c index 7447cad..65e3311 100644 --- a/ipif/mech-blowfish.c +++ b/ipif/mech-blowfish.c @@ -13,13 +13,13 @@ #include "blowfish.h" struct mechdata { + unsigned char iv[BLOWFISH_BLOCKBYTES]; struct blowfish_cbc_state cbc; }; static void mds_blowfish(struct mechdata **md_r) { struct mechdata *md; unsigned long keysize; - unsigned char iv[BLOWFISH_BLOCKBYTES]; unsigned char key[BLOWFISH_MAXKEYBYTES]; XMALLOC(md); @@ -29,12 +29,10 @@ static void mds_blowfish(struct mechdata **md_r) { keysize >>= 3; arg_assert(keysize > 0 && keysize <= BLOWFISH_MAXKEYBYTES); - random_key(iv,sizeof(iv)); + random_key(md->iv,sizeof(md->iv)); random_key(key,keysize); blowfish_loadkey(&md->cbc.ek, key,keysize); - blowfish_cbc_setiv(&md->cbc, iv); - *md_r= md; } @@ -62,6 +60,7 @@ static void mes_bfmac(struct mechdata **md_r, int *maxprefix_io, int *maxsuffix_ #define FOREACH_BLOCK(func,inptr,outptr) \ { \ unsigned char *ptr; \ + blowfish_cbc_setiv(&md->cbc, md->iv); \ for (ptr= buf->start; \ ptr < buf->start + msgsize; \ ptr += BLOWFISH_BLOCKBYTES) { \