2003-02-23 Moritz Schulte <moritz@g10code.com>
authorMoritz Schulte <mo@g10code.com>
Fri, 28 Feb 2003 01:41:14 +0000 (01:41 +0000)
committerMoritz Schulte <mo@g10code.com>
Fri, 28 Feb 2003 01:41:14 +0000 (01:41 +0000)
* cipher.c: Remove (bogus) `digitp' macro definition.
* md.c: Likewise.

* blowfish.c (burn_stack): Removed.
* arcfour.c (burn_stack): Likewise.
* cast5.c (burn_stack): Likewise.
* des.c (burn_stack): Likewise.
* md4.c (burn_stack): Likewise.
* md5.c (burn_stack): Likewise.
* random.c (burn_stack): Likewise.
* rijndael.c (burn_stack): Likewise.
* rmd160.c (burn_stack): Likewise.
* sha1.c (burn_stack): Likewise.
* sha256.c (burn_stack): Likewise.
* tiger.c (burn_stack): Likewise.
* twofish.c (burn_stack): Likewise.

* blowfish.c: Changed all occurences of burn_stack to
_gcry_burn_stack.
* arcfour.c: Likewise.
* cast5.c: Likewise.
* des.c: Likewise.
* md4.c: Likewise.
* md5.c: Likewise.
* random.c: Likewise.
* rijndael.c: Likewise.
* rmd160.c: Likewise.
* sha1.c: Likewise.
* sha256.c: Likewise.
* tiger.c: Likewise.
* twofish.c: Likewise.

* arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
instead of hard-coded value `301'.

16 files changed:
cipher/ChangeLog
cipher/arcfour.c
cipher/blowfish.c
cipher/cast5.c
cipher/cipher.c
cipher/des.c
cipher/md.c
cipher/md4.c
cipher/md5.c
cipher/random.c
cipher/rijndael.c
cipher/rmd160.c
cipher/sha1.c
cipher/sha256.c
cipher/tiger.c
cipher/twofish.c

index 6f7dfa7..95149bb 100644 (file)
@@ -1,3 +1,40 @@
+2003-02-23  Moritz Schulte  <moritz@g10code.com>
+
+       * cipher.c: Remove (bogus) `digitp' macro definition.
+       * md.c: Likewise.
+
+       * blowfish.c (burn_stack): Removed.
+       * arcfour.c (burn_stack): Likewise.
+       * cast5.c (burn_stack): Likewise.
+       * des.c (burn_stack): Likewise.
+       * md4.c (burn_stack): Likewise.
+       * md5.c (burn_stack): Likewise.
+       * random.c (burn_stack): Likewise.
+       * rijndael.c (burn_stack): Likewise.
+       * rmd160.c (burn_stack): Likewise.
+       * sha1.c (burn_stack): Likewise.
+       * sha256.c (burn_stack): Likewise.
+       * tiger.c (burn_stack): Likewise.
+       * twofish.c (burn_stack): Likewise.
+
+       * blowfish.c: Changed all occurences of burn_stack to
+       _gcry_burn_stack.
+       * arcfour.c: Likewise.
+       * cast5.c: Likewise.
+       * des.c: Likewise.
+       * md4.c: Likewise.
+       * md5.c: Likewise.
+       * random.c: Likewise.
+       * rijndael.c: Likewise.
+       * rmd160.c: Likewise.
+       * sha1.c: Likewise.
+       * sha256.c: Likewise.
+       * tiger.c: Likewise.
+       * twofish.c: Likewise.
+
+       * arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
+       instead of hard-coded value `301'.
+
 2003-01-24  Werner Koch  <wk@gnupg.org>
 
        * random.c (_gcry_register_random_progress): New.
 2003-01-24  Werner Koch  <wk@gnupg.org>
 
        * random.c (_gcry_register_random_progress): New.
index 66017b0..702d0a7 100644 (file)
@@ -1,5 +1,5 @@
 /* arcfour.c  -  The arcfour stream cipher
 /* arcfour.c  -  The arcfour stream cipher
- *     Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -41,18 +41,6 @@ typedef struct {
 
 
 static void
 
 
 static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
-static void
 do_encrypt_stream( ARCFOUR_context *ctx,
                 byte *outbuf, const byte *inbuf, unsigned int length )
 {
 do_encrypt_stream( ARCFOUR_context *ctx,
                 byte *outbuf, const byte *inbuf, unsigned int length )
 {
@@ -81,7 +69,7 @@ encrypt_stream( ARCFOUR_context *ctx,
 {
 
     do_encrypt_stream (ctx, outbuf, inbuf, length );
 {
 
     do_encrypt_stream (ctx, outbuf, inbuf, length );
-    burn_stack (64);
+    _gcry_burn_stack (64);
 }
 
 
 }
 
 
@@ -126,7 +114,7 @@ static int
 arcfour_setkey ( ARCFOUR_context *ctx, const byte *key, unsigned int keylen )
 {
     int rc = do_arcfour_setkey (ctx, key, keylen );
 arcfour_setkey ( ARCFOUR_context *ctx, const byte *key, unsigned int keylen )
 {
     int rc = do_arcfour_setkey (ctx, key, keylen );
-    burn_stack (300);
+    _gcry_burn_stack (300);
     return rc;
 }
 
     return rc;
 }
 
@@ -188,7 +176,7 @@ _gcry_arcfour_get_info( int algo, size_t *keylen, size_t *blocksize,
                                                        = encrypt_stream;
 
 
                                                        = encrypt_stream;
 
 
-    if( algo == 301 )
+    if( algo == GCRY_CIPHER_ARCFOUR )
        return "ARCFOUR";
     return NULL;
 }
        return "ARCFOUR";
     return NULL;
 }
index af4f497..a911c5b 100644 (file)
@@ -1,5 +1,5 @@
 /* blowfish.c  -  Blowfish encryption
 /* blowfish.c  -  Blowfish encryption
- *     Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -282,18 +282,6 @@ function_F( BLOWFISH_context *bc, u32 x )
 #define R(l,r,i)  do { l ^= p[i]; r ^= F(l); } while(0)
 
 static void
 #define R(l,r,i)  do { l ^= p[i]; r ^= F(l); } while(0)
 
 static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
-static void
 do_encrypt(  BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr )
 {
   #if BLOWFISH_ROUNDS == 16
 do_encrypt(  BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr )
 {
   #if BLOWFISH_ROUNDS == 16
@@ -448,7 +436,7 @@ static void
 encrypt_block ( BLOWFISH_context *bc, byte *outbuf, byte *inbuf )
 {
     do_encrypt_block (bc, outbuf, inbuf);
 encrypt_block ( BLOWFISH_context *bc, byte *outbuf, byte *inbuf )
 {
     do_encrypt_block (bc, outbuf, inbuf);
-    burn_stack (64);
+    _gcry_burn_stack (64);
 }
 
 
 }
 
 
@@ -474,7 +462,7 @@ static void
 decrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf )
 {
     do_decrypt_block (bc, outbuf, inbuf);
 decrypt_block( BLOWFISH_context *bc, byte *outbuf, byte *inbuf )
 {
     do_decrypt_block (bc, outbuf, inbuf);
-    burn_stack (64);
+    _gcry_burn_stack (64);
 }
 
 
 }
 
 
@@ -596,7 +584,7 @@ static int
 bf_setkey( BLOWFISH_context *c, byte *key, unsigned keylen )
 {
     int rc = do_bf_setkey (c, key, keylen);
 bf_setkey( BLOWFISH_context *c, byte *key, unsigned keylen )
 {
     int rc = do_bf_setkey (c, key, keylen);
-    burn_stack (64);
+    _gcry_burn_stack (64);
     return rc;
 }
 
     return rc;
 }
 
index fbed819..e378854 100644 (file)
@@ -1,5 +1,5 @@
 /* cast5.c  -  CAST5 cipher (RFC2144)
 /* cast5.c  -  CAST5 cipher (RFC2144)
- *     Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -358,18 +358,6 @@ rol(int n, u32 x)
     (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) )
 
 static void
     (((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) )
 
 static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
-static void
 do_encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     u32 l, r, t;
 do_encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     u32 l, r, t;
@@ -427,7 +415,7 @@ static void
 encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     do_encrypt_block (c, outbuf, inbuf);
 encrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     do_encrypt_block (c, outbuf, inbuf);
-    burn_stack (20+4*sizeof(void*));
+    _gcry_burn_stack (20+4*sizeof(void*));
 }
 
 \f
 }
 
 \f
@@ -477,7 +465,7 @@ static void
 decrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     do_decrypt_block (c, outbuf, inbuf);
 decrypt_block( CAST5_context *c, byte *outbuf, byte *inbuf )
 {
     do_decrypt_block (c, outbuf, inbuf);
-    burn_stack (20+4*sizeof(void*));
+    _gcry_burn_stack (20+4*sizeof(void*));
 }
 \f
 
 }
 \f
 
@@ -624,7 +612,7 @@ static int
 cast_setkey( CAST5_context *c, byte *key, unsigned keylen )
 {
     int rc = do_cast_setkey (c, key, keylen);
 cast_setkey( CAST5_context *c, byte *key, unsigned keylen )
 {
     int rc = do_cast_setkey (c, key, keylen);
-    burn_stack (96+7*sizeof(void*));
+    _gcry_burn_stack (96+7*sizeof(void*));
     return rc;
 }
 \f
     return rc;
 }
 \f
index 3aff308..4a1b515 100644 (file)
@@ -38,8 +38,6 @@
 #define CTX_MAGIC_NORMAL 0x24091964
 #define CTX_MAGIC_SECURE 0x46919042
 
 #define CTX_MAGIC_NORMAL 0x24091964
 #define CTX_MAGIC_SECURE 0x46919042
 
-#define digitp(p)   (*(p) >= 0 && *(p) <= '9')
-
 static struct {
   const char *oidstring;
   int algo;
 static struct {
   const char *oidstring;
   int algo;
index bb196f4..7ec8644 100644 (file)
@@ -1,5 +1,5 @@
 /* des.c - DES and Triple-DES encryption/decryption Algorithm
 /* des.c - DES and Triple-DES encryption/decryption Algorithm
- *     Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -135,18 +135,6 @@ working_memcmp( const char *a, const char *b, size_t n )
 }
 #endif
 
 }
 #endif
 
-static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
 
 /* Some defines/checks to support standalone modules */
 
 
 /* Some defines/checks to support standalone modules */
 
@@ -610,7 +598,7 @@ des_setkey (struct _des_ctx *ctx, const byte * key)
     return GCRYERR_SELFTEST;
 
   des_key_schedule (key, ctx->encrypt_subkeys);
     return GCRYERR_SELFTEST;
 
   des_key_schedule (key, ctx->encrypt_subkeys);
-  burn_stack (32);
+  _gcry_burn_stack (32);
 
   for(i=0; i<32; i+=2)
     {
 
   for(i=0; i<32; i+=2)
     {
@@ -669,7 +657,7 @@ tripledes_set2keys (struct _tripledes_ctx *ctx,
 
   des_key_schedule (key1, ctx->encrypt_subkeys);
   des_key_schedule (key2, &(ctx->decrypt_subkeys[32]));
 
   des_key_schedule (key1, ctx->encrypt_subkeys);
   des_key_schedule (key2, &(ctx->decrypt_subkeys[32]));
-  burn_stack (32);
+  _gcry_burn_stack (32);
 
   for(i=0; i<32; i+=2)
     {
 
   for(i=0; i<32; i+=2)
     {
@@ -707,7 +695,7 @@ tripledes_set3keys (struct _tripledes_ctx *ctx,
   des_key_schedule (key1, ctx->encrypt_subkeys);
   des_key_schedule (key2, &(ctx->decrypt_subkeys[32]));
   des_key_schedule (key3, &(ctx->encrypt_subkeys[64]));
   des_key_schedule (key1, ctx->encrypt_subkeys);
   des_key_schedule (key2, &(ctx->decrypt_subkeys[32]));
   des_key_schedule (key3, &(ctx->encrypt_subkeys[64]));
-  burn_stack (32);
+  _gcry_burn_stack (32);
 
   for(i=0; i<32; i+=2)
     {
 
   for(i=0; i<32; i+=2)
     {
@@ -1016,10 +1004,10 @@ do_tripledes_setkey ( struct _tripledes_ctx *ctx, byte *key, unsigned keylen )
     tripledes_set3keys ( ctx, key, key+8, key+16);
 
     if( is_weak_key( key ) || is_weak_key( key+8 ) || is_weak_key( key+16 ) ) {
     tripledes_set3keys ( ctx, key, key+8, key+16);
 
     if( is_weak_key( key ) || is_weak_key( key+8 ) || is_weak_key( key+16 ) ) {
-        burn_stack (64);
+        _gcry_burn_stack (64);
        return GCRYERR_WEAK_KEY;
     }
        return GCRYERR_WEAK_KEY;
     }
-    burn_stack (64);
+    _gcry_burn_stack (64);
 
     return 0;
 }
 
     return 0;
 }
@@ -1029,14 +1017,14 @@ static void
 do_tripledes_encrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     tripledes_ecb_encrypt ( ctx, inbuf, outbuf );
 do_tripledes_encrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     tripledes_ecb_encrypt ( ctx, inbuf, outbuf );
-    burn_stack (32);
+    _gcry_burn_stack (32);
 }
 
 static void
 do_tripledes_decrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     tripledes_ecb_decrypt ( ctx, inbuf, outbuf );
 }
 
 static void
 do_tripledes_decrypt( struct _tripledes_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     tripledes_ecb_decrypt ( ctx, inbuf, outbuf );
-    burn_stack (32);
+    _gcry_burn_stack (32);
 }
 
 
 }
 
 
@@ -1053,10 +1041,10 @@ do_des_setkey ( struct _des_ctx *ctx, byte *key, unsigned keylen )
     des_setkey (ctx, key);
 
     if( is_weak_key( key ) ) {
     des_setkey (ctx, key);
 
     if( is_weak_key( key ) ) {
-        burn_stack (64);
+        _gcry_burn_stack (64);
        return GCRYERR_WEAK_KEY;
     }
        return GCRYERR_WEAK_KEY;
     }
-    burn_stack (64);
+    _gcry_burn_stack (64);
 
     return 0;
 }
 
     return 0;
 }
@@ -1066,14 +1054,14 @@ static void
 do_des_encrypt( struct _des_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     des_ecb_encrypt ( ctx, inbuf, outbuf );
 do_des_encrypt( struct _des_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     des_ecb_encrypt ( ctx, inbuf, outbuf );
-    burn_stack (32);
+    _gcry_burn_stack (32);
 }
 
 static void
 do_des_decrypt( struct _des_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     des_ecb_decrypt ( ctx, inbuf, outbuf );
 }
 
 static void
 do_des_decrypt( struct _des_ctx *ctx, byte *outbuf, byte *inbuf )
 {
     des_ecb_decrypt ( ctx, inbuf, outbuf );
-    burn_stack (32);
+    _gcry_burn_stack (32);
 }
 
 
 }
 
 
index e80cb7c..40bf6e6 100644 (file)
@@ -114,9 +114,6 @@ struct md_digest_list_s {
 
 static struct md_digest_list_s *digest_list;
 
 
 static struct md_digest_list_s *digest_list;
 
-#define digitp(p)   (*(p) >= 0 && *(p) <= '9')
-
-
 
 \f
 static struct md_digest_list_s *
 
 \f
 static struct md_digest_list_s *
index d649f68..7bb31a8 100644 (file)
@@ -1,5 +1,5 @@
 /* md4.c - MD4 Message-Digest Algorithm
 /* md4.c - MD4 Message-Digest Algorithm
- * Copyright (C) 2002 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -79,17 +79,6 @@ md4_init( MD4_CONTEXT *ctx )
     ctx->count = 0;
 }
 
     ctx->count = 0;
 }
 
-static void
-burn_stack (int bytes)
-{
-    char buf[128];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
 #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
 #define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
 #define H(x, y, z) ((x) ^ (y) ^ (z))
 #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
 #define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
 #define H(x, y, z) ((x) ^ (y) ^ (z))
@@ -203,7 +192,7 @@ md4_write( MD4_CONTEXT *hd, byte *inbuf, size_t inlen)
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
-        burn_stack (80+6*sizeof(void*));
+        _gcry_burn_stack (80+6*sizeof(void*));
        hd->count = 0;
        hd->nblocks++;
     }
        hd->count = 0;
        hd->nblocks++;
     }
@@ -216,7 +205,7 @@ md4_write( MD4_CONTEXT *hd, byte *inbuf, size_t inlen)
        if( !inlen )
            return;
     }
        if( !inlen )
            return;
     }
-    burn_stack (80+6*sizeof(void*));
+    _gcry_burn_stack (80+6*sizeof(void*));
 
     while( inlen >= 64 ) {
        transform( hd, inbuf );
 
     while( inlen >= 64 ) {
        transform( hd, inbuf );
@@ -282,7 +271,7 @@ md4_final( MD4_CONTEXT *hd )
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
-    burn_stack (80+6*sizeof(void*));
+    _gcry_burn_stack (80+6*sizeof(void*));
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
index f03a301..9d2f7c8 100644 (file)
@@ -1,5 +1,5 @@
 /* md5.c - MD5 Message-Digest Algorithm
 /* md5.c - MD5 Message-Digest Algorithm
- * Copyright (C) 1995,1996,1998,1999,2001,2002 Free Software Foundation, Inc.
+ * Copyright (C) 1995,1996,1998,1999,2001,2002,2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -62,18 +62,6 @@ md5_init( MD5_CONTEXT *ctx )
     ctx->count = 0;
 }
 
     ctx->count = 0;
 }
 
-static void
-burn_stack (int bytes)
-{
-    char buf[128];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
 
 /* These are the four functions used in the four steps of the MD5 algorithm
    and defined in the RFC 1321.  The first function is a little bit optimized
 
 /* These are the four functions used in the four steps of the MD5 algorithm
    and defined in the RFC 1321.  The first function is a little bit optimized
@@ -229,7 +217,7 @@ md5_write( MD5_CONTEXT *hd, byte *inbuf, size_t inlen)
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
-        burn_stack (80+6*sizeof(void*));
+        _gcry_burn_stack (80+6*sizeof(void*));
        hd->count = 0;
        hd->nblocks++;
     }
        hd->count = 0;
        hd->nblocks++;
     }
@@ -242,7 +230,7 @@ md5_write( MD5_CONTEXT *hd, byte *inbuf, size_t inlen)
        if( !inlen )
            return;
     }
        if( !inlen )
            return;
     }
-    burn_stack (80+6*sizeof(void*));
+    _gcry_burn_stack (80+6*sizeof(void*));
 
     while( inlen >= 64 ) {
        transform( hd, inbuf );
 
     while( inlen >= 64 ) {
        transform( hd, inbuf );
@@ -308,7 +296,7 @@ md5_final( MD5_CONTEXT *hd )
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
-    burn_stack (80+6*sizeof(void*));
+    _gcry_burn_stack (80+6*sizeof(void*));
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
index f7b2378..60445fb 100644 (file)
@@ -188,19 +188,6 @@ _gcry_random_initialize ()
     initialize ();
 }
 
     initialize ();
 }
 
-
-static void
-burn_stack (int bytes)
-{
-    char buf[128];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
 void
 _gcry_random_dump_stats()
 {
 void
 _gcry_random_dump_stats()
 {
@@ -461,7 +448,7 @@ mix_pool(byte *pool)
         _gcry_rmd160_hash_buffer (failsafe_digest, pool, POOLSIZE);
         failsafe_digest_valid = 1;
       }
         _gcry_rmd160_hash_buffer (failsafe_digest, pool, POOLSIZE);
         failsafe_digest_valid = 1;
       }
-    burn_stack (384); /* for the rmd160_mixblock(), rmd160_hash_buffer */
+    _gcry_burn_stack (384); /* for the rmd160_mixblock(), rmd160_hash_buffer */
 }
 
 void
 }
 
 void
index f4b1fdd..b7c7d18 100644 (file)
@@ -1,5 +1,5 @@
 /* Rijndael (AES) for GnuPG
 /* Rijndael (AES) for GnuPG
- *     Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -1707,17 +1707,6 @@ static const u32 rcon[30] = {
 
 \f
 
 
 \f
 
-static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
 
 /* Perform the key setup.
  */  
 
 /* Perform the key setup.
  */  
@@ -1825,7 +1814,7 @@ static int
 rijndael_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen)
 {
     int rc = do_setkey (ctx, key, keylen);
 rijndael_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen)
 {
     int rc = do_setkey (ctx, key, keylen);
-    burn_stack ( 100 + 16*sizeof(int));
+    _gcry_burn_stack ( 100 + 16*sizeof(int));
     return rc;
 }
 
     return rc;
 }
 
@@ -1950,7 +1939,7 @@ static void
 rijndael_encrypt (const RIJNDAEL_context *ctx, byte *b, const byte *a)
 {
     do_encrypt (ctx, b, a);
 rijndael_encrypt (const RIJNDAEL_context *ctx, byte *b, const byte *a)
 {
     do_encrypt (ctx, b, a);
-    burn_stack (16 + 2*sizeof(int));
+    _gcry_burn_stack (16 + 2*sizeof(int));
 }
 
 
 }
 
 
@@ -1966,7 +1955,7 @@ do_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a)
 
     if ( !ctx->decryption_prepared ) {
         prepare_decryption ( ctx );
 
     if ( !ctx->decryption_prepared ) {
         prepare_decryption ( ctx );
-        burn_stack (64);
+        _gcry_burn_stack (64);
         ctx->decryption_prepared = 1;
     }
     
         ctx->decryption_prepared = 1;
     }
     
@@ -2045,7 +2034,7 @@ static void
 rijndael_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a)
 {
     do_decrypt (ctx, b, a);
 rijndael_decrypt (RIJNDAEL_context *ctx, byte *b, const byte *a)
 {
     do_decrypt (ctx, b, a);
-    burn_stack (16+2*sizeof(int));
+    _gcry_burn_stack (16+2*sizeof(int));
 }
 \f
 /* Test a single encryption and decryption with each key size. */
 }
 \f
 /* Test a single encryption and decryption with each key size. */
index 3680f0a..4cf52c5 100644 (file)
@@ -1,5 +1,5 @@
 /* rmd160.c  - RIPE-MD160
 /* rmd160.c  - RIPE-MD160
- * Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
  * 1 million times "a"   52783243c1697bdbe16d37f97f68f08325dc1528
  */
 
  * 1 million times "a"   52783243c1697bdbe16d37f97f68f08325dc1528
  */
 
-static void
-burn_stack (int bytes)
-{
-    char buf[150];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
 
 void
 _gcry_rmd160_init( RMD160_CONTEXT *hd )
 
 void
 _gcry_rmd160_init( RMD160_CONTEXT *hd )
@@ -414,7 +402,7 @@ rmd160_write( RMD160_CONTEXT *hd, byte *inbuf, size_t inlen)
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
-        burn_stack (108+5*sizeof(void*));
+        _gcry_burn_stack (108+5*sizeof(void*));
        hd->count = 0;
        hd->nblocks++;
     }
        hd->count = 0;
        hd->nblocks++;
     }
@@ -435,7 +423,7 @@ rmd160_write( RMD160_CONTEXT *hd, byte *inbuf, size_t inlen)
        inlen -= 64;
        inbuf += 64;
     }
        inlen -= 64;
        inbuf += 64;
     }
-    burn_stack (108+5*sizeof(void*));
+    _gcry_burn_stack (108+5*sizeof(void*));
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
@@ -508,7 +496,7 @@ rmd160_final( RMD160_CONTEXT *hd )
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
-    burn_stack (108+5*sizeof(void*));
+    _gcry_burn_stack (108+5*sizeof(void*));
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
index b1caf21..a6339b3 100644 (file)
@@ -1,5 +1,5 @@
 /* sha1.c - SHA1 hash function
 /* sha1.c - SHA1 hash function
- *     Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -49,18 +49,6 @@ typedef struct {
 
 
 static void
 
 
 static void
-burn_stack (int bytes)
-{
-    char buf[128];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
-static void
 sha1_init( SHA1_CONTEXT *hd )
 {
     hd->h0 = 0x67452301;
 sha1_init( SHA1_CONTEXT *hd )
 {
     hd->h0 = 0x67452301;
@@ -222,7 +210,7 @@ sha1_write( SHA1_CONTEXT *hd, byte *inbuf, size_t inlen)
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
-        burn_stack (88+4*sizeof(void*));
+        _gcry_burn_stack (88+4*sizeof(void*));
        hd->count = 0;
        hd->nblocks++;
     }
        hd->count = 0;
        hd->nblocks++;
     }
@@ -243,7 +231,7 @@ sha1_write( SHA1_CONTEXT *hd, byte *inbuf, size_t inlen)
        inlen -= 64;
        inbuf += 64;
     }
        inlen -= 64;
        inbuf += 64;
     }
-    burn_stack (88+4*sizeof(void*));
+    _gcry_burn_stack (88+4*sizeof(void*));
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
@@ -300,7 +288,7 @@ sha1_final(SHA1_CONTEXT *hd)
     hd->buf[62] = lsb >>  8;
     hd->buf[63] = lsb     ;
     transform( hd, hd->buf );
     hd->buf[62] = lsb >>  8;
     hd->buf[63] = lsb     ;
     transform( hd, hd->buf );
-    burn_stack (88+4*sizeof(void*));
+    _gcry_burn_stack (88+4*sizeof(void*));
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
index 9eb2bbe..1aafd33 100644 (file)
@@ -53,18 +53,6 @@ typedef struct {
 
 
 static void
 
 
 static void
-burn_stack (int bytes)
-{
-    char buf[128];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
-static void
 sha256_init (SHA256_CONTEXT *hd)
 {
   hd->h0 = 0x6a09e667;
 sha256_init (SHA256_CONTEXT *hd)
 {
   hd->h0 = 0x6a09e667;
@@ -190,7 +178,7 @@ sha256_write (SHA256_CONTEXT *hd, byte *inbuf, size_t inlen)
   if (hd->count == 64)
     { /* flush the buffer */
       transform (hd, hd->buf);
   if (hd->count == 64)
     { /* flush the buffer */
       transform (hd, hd->buf);
-      burn_stack (74*4+32);
+      _gcry_burn_stack (74*4+32);
       hd->count = 0;
       hd->nblocks++;
     }
       hd->count = 0;
       hd->nblocks++;
     }
@@ -213,7 +201,7 @@ sha256_write (SHA256_CONTEXT *hd, byte *inbuf, size_t inlen)
       inlen -= 64;
       inbuf += 64;
     }
       inlen -= 64;
       inbuf += 64;
     }
-  burn_stack (74*4+32);
+  _gcry_burn_stack (74*4+32);
   for (; inlen && hd->count < 64; inlen--)
     hd->buf[hd->count++] = *inbuf++;
 }
   for (; inlen && hd->count < 64; inlen--)
     hd->buf[hd->count++] = *inbuf++;
 }
@@ -270,7 +258,7 @@ sha256_final(SHA256_CONTEXT *hd)
   hd->buf[62] = lsb >>  8;
   hd->buf[63] = lsb;
   transform (hd, hd->buf);
   hd->buf[62] = lsb >>  8;
   hd->buf[63] = lsb;
   transform (hd, hd->buf);
-  burn_stack (74*4+32);
+  _gcry_burn_stack (74*4+32);
 
   p = hd->buf;
 #ifdef BIG_ENDIAN_HOST
 
   p = hd->buf;
 #ifdef BIG_ENDIAN_HOST
index 7ee60bd..432948b 100644 (file)
@@ -1,5 +1,5 @@
 /* tiger.c  -  The TIGER hash function
 /* tiger.c  -  The TIGER hash function
- *     Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  *
  * This file is part of Libgcrypt.
  *
@@ -589,18 +589,6 @@ static u64 sbox4[256] = {
 };
 
 
 };
 
 
-static void
-burn_stack (int bytes)
-{
-    char buf[256];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
-
 
 static void
 tiger_init( TIGER_CONTEXT *hd )
 
 static void
 tiger_init( TIGER_CONTEXT *hd )
@@ -734,7 +722,7 @@ tiger_write( TIGER_CONTEXT *hd, byte *inbuf, size_t inlen)
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
 {
     if( hd->count == 64 ) { /* flush the buffer */
        transform( hd, hd->buf );
-        burn_stack (21*8+11*sizeof(void*));
+        _gcry_burn_stack (21*8+11*sizeof(void*));
        hd->count = 0;
        hd->nblocks++;
     }
        hd->count = 0;
        hd->nblocks++;
     }
@@ -755,7 +743,7 @@ tiger_write( TIGER_CONTEXT *hd, byte *inbuf, size_t inlen)
        inlen -= 64;
        inbuf += 64;
     }
        inlen -= 64;
        inbuf += 64;
     }
-    burn_stack (21*8+11*sizeof(void*));
+    _gcry_burn_stack (21*8+11*sizeof(void*));
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
     for( ; inlen && hd->count < 64; inlen-- )
        hd->buf[hd->count++] = *inbuf++;
 }
@@ -809,7 +797,7 @@ tiger_final( TIGER_CONTEXT *hd )
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
     hd->buf[62] = msb >> 16;
     hd->buf[63] = msb >> 24;
     transform( hd, hd->buf );
-    burn_stack (21*8+11*sizeof(void*));
+    _gcry_burn_stack (21*8+11*sizeof(void*));
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
 
     p = hd->buf;
   #ifdef BIG_ENDIAN_HOST
index 4898b4b..8fb5f4b 100644 (file)
@@ -1,5 +1,5 @@
 /* Twofish for GPG
 /* Twofish for GPG
- * Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
  * Written by Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998
  * 256-bit key length added March 20, 1999
  * Some modifications to reduce the text size by Werner Koch, April, 1998
  * Written by Matthew Skala <mskala@ansuz.sooke.bc.ca>, July 26, 1998
  * 256-bit key length added March 20, 1999
  * Some modifications to reduce the text size by Werner Koch, April, 1998
@@ -560,17 +560,6 @@ static byte calc_sb_tbl[512] = {
    ctx->a[(j) + 1] = (y << 9) + (y >> 23)
 \f
 
    ctx->a[(j) + 1] = (y << 9) + (y >> 23)
 \f
 
-static void
-burn_stack (int bytes)
-{
-    char buf[64];
-    
-    memset (buf, 0, sizeof buf);
-    bytes -= sizeof buf;
-    if (bytes > 0)
-        burn_stack (bytes);
-}
-
 
 /* Perform the key setup.  Note that this works only with 128- and 256-bit
  * keys, despite the API that looks like it might support other sizes. */
 
 /* Perform the key setup.  Note that this works only with 128- and 256-bit
  * keys, despite the API that looks like it might support other sizes. */
@@ -714,7 +703,7 @@ static int
 twofish_setkey (TWOFISH_context *ctx, const byte *key, unsigned int keylen)
 {
     int rc = do_twofish_setkey (ctx, key, keylen);
 twofish_setkey (TWOFISH_context *ctx, const byte *key, unsigned int keylen)
 {
     int rc = do_twofish_setkey (ctx, key, keylen);
-    burn_stack (23+6*sizeof(void*));
+    _gcry_burn_stack (23+6*sizeof(void*));
     return rc;
 }
 
     return rc;
 }
 
@@ -816,7 +805,7 @@ static void
 twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
 {
     do_twofish_encrypt (ctx, out, in);
 twofish_encrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
 {
     do_twofish_encrypt (ctx, out, in);
-    burn_stack (24+3*sizeof (void*));
+    _gcry_burn_stack (24+3*sizeof (void*));
 }
 
 \f
 }
 
 \f
@@ -858,7 +847,7 @@ static void
 twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
 {
     do_twofish_decrypt (ctx, out, in);
 twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
 {
     do_twofish_decrypt (ctx, out, in);
-    burn_stack (24+3*sizeof (void*));
+    _gcry_burn_stack (24+3*sizeof (void*));
 }
 
 \f
 }
 
 \f