[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.5

1.1       deraadt     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"
1.5     ! markus     18: RCSID("$Id: mpaux.c,v 1.4 1999/10/27 16:37:45 deraadt Exp $");
1.1       deraadt    19:
1.2       provos     20: #include <ssl/bn.h>
1.1       deraadt    21: #include "getput.h"
                     22: #include "xmalloc.h"
1.3       deraadt    23:
1.4       deraadt    24: #include <ssl/md5.h>
1.1       deraadt    25:
1.2       provos     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)
1.1       deraadt    33: {
                     34:   unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8;
                     35:   unsigned char *buf = xmalloc(bytes);
1.3       deraadt    36:   MD5_CTX md;
1.1       deraadt    37:
1.2       provos     38:   BN_bn2bin(host_key_n, buf);
                     39:   BN_bn2bin(session_key_n, buf + (host_key_bits + 7 ) / 8);
1.1       deraadt    40:   memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8,
                     41:         cookie, 8);
1.4       deraadt    42:   MD5_Init(&md);
                     43:   MD5_Update(&md, buf, bytes);
                     44:   MD5_Final(session_id, &md);
1.5     ! markus     45:   memset(buf, 0, bytes);
1.1       deraadt    46:   xfree(buf);
                     47: }