[BACK]Return to mpaux.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/mpaux.c, Revision 1.14.2.5

1.1       deraadt     1: /*
1.8       deraadt     2:  * Author: Tatu Ylonen <ylo@cs.hut.fi>
                      3:  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
                      4:  *                    All rights reserved
                      5:  * This file contains various auxiliary functions related to multiple
                      6:  * precision integers.
1.12      markus      7:  *
1.14      deraadt     8:  * As far as I am concerned, the code I have written for this software
                      9:  * can be used freely for any purpose.  Any derived versions of this
                     10:  * software must be clearly marked as such, and if the derived work is
                     11:  * incompatible with the protocol description in the RFC file, it must be
                     12:  * called by a name other than "ssh" or "Secure Shell".
                     13:  */
1.1       deraadt    14:
                     15: #include "includes.h"
1.14.2.1  jason      16: RCSID("$OpenBSD: mpaux.c,v 1.16 2001/02/08 19:30:52 itojun Exp $");
1.1       deraadt    17:
1.11      markus     18: #include <openssl/bn.h>
1.1       deraadt    19: #include "getput.h"
                     20: #include "xmalloc.h"
1.3       deraadt    21:
1.11      markus     22: #include <openssl/md5.h>
1.1       deraadt    23:
1.14.2.1  jason      24: #include "mpaux.h"
                     25:
1.2       provos     26: void
1.14.2.1  jason      27: compute_session_id(u_char session_id[16],
                     28:     u_char cookie[8],
1.10      markus     29:     BIGNUM* host_key_n,
                     30:     BIGNUM* session_key_n)
1.1       deraadt    31: {
1.14.2.1  jason      32:        u_int host_key_bytes = BN_num_bytes(host_key_n);
                     33:        u_int session_key_bytes = BN_num_bytes(session_key_n);
                     34:        u_int bytes = host_key_bytes + session_key_bytes;
                     35:        u_char *buf = xmalloc(bytes);
1.7       markus     36:        MD5_CTX md;
1.6       markus     37:
1.7       markus     38:        BN_bn2bin(host_key_n, buf);
1.9       markus     39:        BN_bn2bin(session_key_n, buf + host_key_bytes);
1.7       markus     40:        MD5_Init(&md);
                     41:        MD5_Update(&md, buf, bytes);
1.9       markus     42:        MD5_Update(&md, cookie, 8);
1.7       markus     43:        MD5_Final(session_id, &md);
                     44:        memset(buf, 0, bytes);
                     45:        xfree(buf);
1.1       deraadt    46: }