diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2012-11-16 10:45:43 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2012-11-21 11:52:33 +0100 |
commit | 8afabc2813948778a3db52d9dee9a041a3dd50d4 (patch) | |
tree | 2687114669064d67bceea84752f1287677711c46 | |
parent | d8bdfa42ed582655c180e7db9b16d4e756a12a6e (diff) | |
download | libgcrypt-8afabc2813948778a3db52d9dee9a041a3dd50d4.tar.gz |
Fix too large burn_stack in camellia-glue.c
* cipher/camellia-glue.c (camellia_encrypt, camellia_decrypt): Do not
take full array size of KEY_TABLE_TYPE, but argument size instead.
--
KEY_TABLE_TYPE is array type, and sizeof(KEY_TABLE_TYPE) gives full
size of array. However what is wanted here is size of array argument
in stack, so change sizeof(KEY_TABLE_TYPE) to sizeof(void*). This
gives boost in speed for camellia cipher.
On AMD Phenom II, x86-64:
Before:
$ tests/benchmark --cipher-repetitions 10 cipher camellia128
Running each test 10 times.
ECB/Stream CBC CFB OFB CTR
--------------- --------------- --------------- --------------- ---------------
CAMELLIA128 250ms 240ms 270ms 260ms 250ms 250ms 260ms 250ms 340ms 330ms
After:
$ tests/benchmark --cipher-repetitions 10 cipher camellia128
Running each test 10 times.
ECB/Stream CBC CFB OFB CTR
--------------- --------------- --------------- --------------- ---------------
CAMELLIA128 140ms 130ms 150ms 160ms 150ms 150ms 150ms 140ms 220ms 220ms
[v2]
- Add GNU style changelog
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-rw-r--r-- | cipher/camellia-glue.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/cipher/camellia-glue.c b/cipher/camellia-glue.c index a2636217..c5019d02 100644 --- a/cipher/camellia-glue.c +++ b/cipher/camellia-glue.c @@ -111,7 +111,7 @@ camellia_encrypt(void *c, byte *outbuf, const byte *inbuf) Camellia_EncryptBlock(ctx->keybitlength,inbuf,ctx->keytable,outbuf); _gcry_burn_stack - (sizeof(int)+2*sizeof(unsigned char *)+sizeof(KEY_TABLE_TYPE) + (sizeof(int)+2*sizeof(unsigned char *)+sizeof(void*/*KEY_TABLE_TYPE*/) +4*sizeof(u32) +2*sizeof(u32*)+4*sizeof(u32) +2*2*sizeof(void*) /* Function calls. */ @@ -125,7 +125,7 @@ camellia_decrypt(void *c, byte *outbuf, const byte *inbuf) Camellia_DecryptBlock(ctx->keybitlength,inbuf,ctx->keytable,outbuf); _gcry_burn_stack - (sizeof(int)+2*sizeof(unsigned char *)+sizeof(KEY_TABLE_TYPE) + (sizeof(int)+2*sizeof(unsigned char *)+sizeof(void*/*KEY_TABLE_TYPE*/) +4*sizeof(u32) +2*sizeof(u32*)+4*sizeof(u32) +2*2*sizeof(void*) /* Function calls. */ |