diff options
author | Ben Lindstrom <mouring@eviladmin.org> | 2001-04-30 23:06:57 +0000 |
---|---|---|
committer | Ben Lindstrom <mouring@eviladmin.org> | 2001-04-30 23:06:57 +0000 |
commit | 8c9639225559fab155828a3396cdbdc7fcb5cad0 (patch) | |
tree | a550c0644b049e2e24715ff8763779373055507b /kex.c | |
parent | 67bf50e23a2a8fdf130f1af79a8c284a0b596ff3 (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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: kex.c,v 1.33 2001/04/05 10:42:50 markus Exp $"); | 26 | RCSID("$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); |