diff options
Diffstat (limited to 'cipher')
-rw-r--r-- | cipher/ChangeLog | 6 | ||||
-rw-r--r-- | cipher/cipher.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog index 5c6f4a5e8..6c84bf5ab 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,9 @@ +Mon Aug 30 20:38:33 CEST 1999 Werner Koch <wk@isil.d.shuttle.de> + + + * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using + in place encryption. Pointed out by Frank Stajano. + Mon Jul 26 09:34:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de> diff --git a/cipher/cipher.c b/cipher/cipher.c index 4a0e683d9..990671fc5 100644 --- a/cipher/cipher.c +++ b/cipher/cipher.c @@ -443,7 +443,7 @@ do_cbc_encrypt( CIPHER_HANDLE c, byte *outbuf, byte *inbuf, unsigned nblocks ) * bytes. Maybe it is a good idea to enhance the cipher backend * API to allow for CBC handling in the backend */ for(ivp=c->iv,i=0; i < blocksize; i++ ) - outbuf[i] ^= *ivp++; + outbuf[i] = inbuf[i] ^ *ivp++; (*c->encrypt)( &c->context.c, outbuf, outbuf ); memcpy(c->iv, outbuf, blocksize ); inbuf += c->blocksize; |