summaryrefslogtreecommitdiff
path: root/kex.c
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-04-30 23:06:57 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-04-30 23:06:57 +0000
commit8c9639225559fab155828a3396cdbdc7fcb5cad0 (patch)
treea550c0644b049e2e24715ff8763779373055507b /kex.c
parent67bf50e23a2a8fdf130f1af79a8c284a0b596ff3 (diff)
- markus@cvs.openbsd.org 2001/04/30 15:50:46
[compat.c compat.h kex.c] allow interop with weaker key generation used by ssh-2.0.x, x < 10
Diffstat (limited to 'kex.c')
-rw-r--r--kex.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kex.c b/kex.c
index 69ba102e1..6b68ba504 100644
--- a/kex.c
+++ b/kex.c
@@ -23,7 +23,7 @@
23 */ 23 */
24 24
25#include "includes.h" 25#include "includes.h"
26RCSID("$OpenBSD: kex.c,v 1.33 2001/04/05 10:42:50 markus Exp $"); 26RCSID("$OpenBSD: kex.c,v 1.34 2001/04/30 15:50:46 markus Exp $");
27 27
28#include <openssl/crypto.h> 28#include <openssl/crypto.h>
29 29
@@ -375,7 +375,8 @@ derive_key(Kex *kex, int id, int need, u_char *hash, BIGNUM *shared_secret)
375 375
376 /* K1 = HASH(K || H || "A" || session_id) */ 376 /* K1 = HASH(K || H || "A" || session_id) */
377 EVP_DigestInit(&md, evp_md); 377 EVP_DigestInit(&md, evp_md);
378 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); 378 if (!(datafellows & SSH_BUG_DERIVEKEY))
379 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b));
379 EVP_DigestUpdate(&md, hash, mdsz); 380 EVP_DigestUpdate(&md, hash, mdsz);
380 EVP_DigestUpdate(&md, &c, 1); 381 EVP_DigestUpdate(&md, &c, 1);
381 EVP_DigestUpdate(&md, kex->session_id, kex->session_id_len); 382 EVP_DigestUpdate(&md, kex->session_id, kex->session_id_len);
@@ -388,7 +389,8 @@ derive_key(Kex *kex, int id, int need, u_char *hash, BIGNUM *shared_secret)
388 */ 389 */
389 for (have = mdsz; need > have; have += mdsz) { 390 for (have = mdsz; need > have; have += mdsz) {
390 EVP_DigestInit(&md, evp_md); 391 EVP_DigestInit(&md, evp_md);
391 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); 392 if (!(datafellows & SSH_BUG_DERIVEKEY))
393 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b));
392 EVP_DigestUpdate(&md, hash, mdsz); 394 EVP_DigestUpdate(&md, hash, mdsz);
393 EVP_DigestUpdate(&md, digest, have); 395 EVP_DigestUpdate(&md, digest, have);
394 EVP_DigestFinal(&md, digest + have, NULL); 396 EVP_DigestFinal(&md, digest + have, NULL);