Zero tail of CTR mode IV in IV Included mode.
authorPekka Riikonen <priikone@silcnet.org>
Mon, 5 Nov 2007 21:12:55 +0000 (21:12 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Mon, 5 Nov 2007 21:12:55 +0000 (21:12 +0000)
CHANGES
lib/silcske/silcske.c

diff --git a/CHANGES b/CHANGES
index 7a495d43cc94da59c8e16cb857290da6c82fb5a6..144212be7d3c9b4f15d51c4efc536c4bee4184df 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,13 @@
+Mon Nov  5 23:07:58 EET 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * Zero tail of CTR mode IV in IV Included mode.  Change does
+         not cause compatibility issues.  Affected file is
+         lib/silcske/silcske.c.
+
 Mon Nov  5 22:24:25 EET 2007  Pekka Riikonen <priikone@silcnet.org>
 
+       * SILC Toolkit 1.1.4.
+
        * Fixed CTR mode rekey.  Affected file is lib/silcske/silcske.c.
 
        * Rewrote the IV Included CTR mode encryption/decryption in
index 4a407490c4f91305c27b60a01351f04381a2ae0d..89e4a8480fd62184eed807cc05aebb8d8f64de42 100644 (file)
@@ -3285,7 +3285,7 @@ SilcBool silc_ske_set_keys(SilcSKE ske,
                           SilcHmac *ret_hmac_receive,
                           SilcHash *ret_hash)
 {
-  unsigned char iv[32];
+  unsigned char iv[SILC_HASH_MAXLEN];
   SilcBool iv_included = (prop->flags & SILC_SKE_SP_FLAG_IV_INCLUDED);
 
   /* Allocate ciphers to be used in the communication */
@@ -3337,6 +3337,8 @@ SilcBool silc_ske_set_keys(SilcSKE ske,
          silc_hash_make(prop->hash, keymat->receive_iv, 8, iv);
          if (!iv_included)
            memcpy(iv + 4, keymat->receive_iv, 8);
+         else
+           memset(iv + 4, 0, 12);
        }
 
         silc_cipher_set_iv(*ret_send_key, iv);
@@ -3361,6 +3363,8 @@ SilcBool silc_ske_set_keys(SilcSKE ske,
          silc_hash_make(prop->hash, keymat->send_iv, 8, iv);
          if (!iv_included)
            memcpy(iv + 4, keymat->send_iv, 8);
+         else
+           memset(iv + 4, 0, 12);
        }
 
         silc_cipher_set_iv(*ret_receive_key, iv);
@@ -3392,6 +3396,8 @@ SilcBool silc_ske_set_keys(SilcSKE ske,
          silc_hash_make(prop->hash, keymat->send_iv, 8, iv);
          if (!iv_included)
            memcpy(iv + 4, keymat->send_iv, 8);
+         else
+           memset(iv + 4, 0, 12);
        }
 
        silc_cipher_set_iv(*ret_send_key, iv);
@@ -3417,7 +3423,9 @@ SilcBool silc_ske_set_keys(SilcSKE ske,
          silc_hash_make(prop->hash, keymat->receive_iv, 8, iv);
          if (!iv_included)
            memcpy(iv + 4, keymat->receive_iv, 8);
-       }
+         else
+           memset(iv + 4, 0, 12);
+       }
 
        silc_cipher_set_iv(*ret_receive_key, iv);
       } else {