projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Zero tail of CTR mode IV in IV Included mode.
[silc.git]
/
lib
/
silcske
/
silcske.c
diff --git
a/lib/silcske/silcske.c
b/lib/silcske/silcske.c
index 4a407490c4f91305c27b60a01351f04381a2ae0d..89e4a8480fd62184eed807cc05aebb8d8f64de42 100644
(file)
--- a/
lib/silcske/silcske.c
+++ b/
lib/silcske/silcske.c
@@
-3285,7
+3285,7
@@
SilcBool silc_ske_set_keys(SilcSKE ske,
SilcHmac *ret_hmac_receive,
SilcHash *ret_hash)
{
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 */
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);
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);
}
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);
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);
}
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);
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);
}
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);
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 {
silc_cipher_set_iv(*ret_receive_key, iv);
} else {