diff options
author | Damien Miller <djm@mindrot.org> | 1999-10-27 13:42:43 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 1999-10-27 13:42:43 +1000 |
commit | d4a8b7e34dd619a4debf9a206c81db26d1402ea6 (patch) | |
tree | a47d770a2f790f40d18b0982d4e55fa7cfb1fa3b /mpaux.c |
Initial revision
Diffstat (limited to 'mpaux.c')
-rw-r--r-- | mpaux.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mpaux.c b/mpaux.c new file mode 100644 index 000000000..fd2c18031 --- /dev/null +++ b/mpaux.c | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | |||
3 | mpaux.c | ||
4 | |||
5 | Author: Tatu Ylonen <ylo@cs.hut.fi> | ||
6 | |||
7 | Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
8 | All rights reserved | ||
9 | |||
10 | Created: Sun Jul 16 04:29:30 1995 ylo | ||
11 | |||
12 | This file contains various auxiliary functions related to multiple | ||
13 | precision integers. | ||
14 | |||
15 | */ | ||
16 | |||
17 | #include "includes.h" | ||
18 | RCSID("$Id: mpaux.c,v 1.1 1999/10/27 03:42:44 damien Exp $"); | ||
19 | |||
20 | #include <openssl/bn.h> | ||
21 | #include "getput.h" | ||
22 | #include "xmalloc.h" | ||
23 | |||
24 | #include <openssl/md5.h> | ||
25 | |||
26 | void | ||
27 | compute_session_id(unsigned char session_id[16], | ||
28 | unsigned char cookie[8], | ||
29 | unsigned int host_key_bits, | ||
30 | BIGNUM *host_key_n, | ||
31 | unsigned int session_key_bits, | ||
32 | BIGNUM *session_key_n) | ||
33 | { | ||
34 | unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8; | ||
35 | unsigned char *buf = xmalloc(bytes); | ||
36 | MD5_CTX md; | ||
37 | |||
38 | BN_bn2bin(host_key_n, buf); | ||
39 | BN_bn2bin(session_key_n, buf + (host_key_bits + 7 ) / 8); | ||
40 | memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8, | ||
41 | cookie, 8); | ||
42 | MD5_Init(&md); | ||
43 | MD5_Update(&md, buf, bytes); | ||
44 | MD5_Final(session_id, &md); | ||
45 | xfree(buf); | ||
46 | } | ||