+Sun Jul 22 19:40:30 EEST 2001 Pekka Riikonen <priikone@silcnet.org>
+
+ * Changed the key material distribution function in case when
+ the hash output is too short. The data is now concatenated
+ a bit differently than it used to. Made the change to the
+ SKE protocol specification.
+
+ * Submitted new drafts to the IETF.
+
Fri Jul 20 13:16:00 EEST 2001 Pekka Riikonen <priikone@silcnet.org>
* Fixed a minor bug in SKE that might cause some problem on
.in 6
K1 = hash(2 | KEY | HASH)
-K2 = hash(KEY | K1)
-K3 = hash(KEY | K1 | K2) ...
+K2 = hash(KEY | HASH | K1)
+K3 = hash(KEY | HASH | K1 | K2) ...
Sending Encryption Key = K1 | K2 | K3 ...
K1 = hash(3 | KEY | HASH)
-K2 = hash(KEY | K1)
-K3 = hash(KEY | K1 | K2) ...
+K2 = hash(KEY | HASH | K1)
+K3 = hash(KEY | HASH | K1 | K2) ...
Receiving Encryption Key = K1 | K2 | K3 ...
.in 3
SILC_STR_END);
memset(k2, 0, sizeof(k2));
silc_hash_make(hash, dist->data, dist->len, k2);
-
+
/* Take third round */
dist = silc_buffer_realloc(dist, data_len + hash_len + hash_len);
silc_buffer_pull_tail(dist, hash_len);
dtmp = silc_calloc((3 * hash_len), sizeof(unsigned char));
memcpy(dtmp, k1, hash_len);
memcpy(dtmp + hash_len, k2, hash_len);
- memcpy(dtmp + hash_len, k3, hash_len);
+ memcpy(dtmp + hash_len + hash_len, k3, hash_len);
key->send_enc_key = silc_calloc(enc_key_len, sizeof(unsigned char));
memcpy(key->send_enc_key, dtmp, enc_key_len);
dtmp = silc_calloc((3 * hash_len), sizeof(unsigned char));
memcpy(dtmp, k1, hash_len);
memcpy(dtmp + hash_len, k2, hash_len);
- memcpy(dtmp + hash_len, k3, hash_len);
+ memcpy(dtmp + hash_len + hash_len, k3, hash_len);
key->receive_enc_key = silc_calloc(enc_key_len, sizeof(unsigned char));
memcpy(key->receive_enc_key, dtmp, enc_key_len);