diff options
Diffstat (limited to 'mpaux.c')
-rw-r--r-- | mpaux.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -15,7 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include "includes.h" | 17 | #include "includes.h" |
18 | RCSID("$Id: mpaux.c,v 1.7 1999/11/24 13:26:22 damien Exp $"); | 18 | RCSID("$Id: mpaux.c,v 1.8 1999/12/13 23:47:16 damien Exp $"); |
19 | 19 | ||
20 | #include "getput.h" | 20 | #include "getput.h" |
21 | #include "xmalloc.h" | 21 | #include "xmalloc.h" |
@@ -35,17 +35,17 @@ compute_session_id(unsigned char session_id[16], | |||
35 | BIGNUM* host_key_n, | 35 | BIGNUM* host_key_n, |
36 | BIGNUM* session_key_n) | 36 | BIGNUM* session_key_n) |
37 | { | 37 | { |
38 | unsigned int host_key_bits = BN_num_bits(host_key_n); | 38 | unsigned int host_key_bytes = BN_num_bytes(host_key_n); |
39 | unsigned int session_key_bits = BN_num_bits(session_key_n); | 39 | unsigned int session_key_bytes = BN_num_bytes(session_key_n); |
40 | unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8; | 40 | unsigned int bytes = host_key_bytes + session_key_bytes; |
41 | unsigned char *buf = xmalloc(bytes); | 41 | unsigned char *buf = xmalloc(bytes); |
42 | MD5_CTX md; | 42 | MD5_CTX md; |
43 | 43 | ||
44 | BN_bn2bin(host_key_n, buf); | 44 | BN_bn2bin(host_key_n, buf); |
45 | BN_bn2bin(session_key_n, buf + (host_key_bits + 7) / 8); | 45 | BN_bn2bin(session_key_n, buf + host_key_bytes); |
46 | memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8, cookie, 8); | ||
47 | MD5_Init(&md); | 46 | MD5_Init(&md); |
48 | MD5_Update(&md, buf, bytes); | 47 | MD5_Update(&md, buf, bytes); |
48 | MD5_Update(&md, cookie, 8); | ||
49 | MD5_Final(session_id, &md); | 49 | MD5_Final(session_id, &md); |
50 | memset(buf, 0, bytes); | 50 | memset(buf, 0, bytes); |
51 | xfree(buf); | 51 | xfree(buf); |