Annotation of src/usr.bin/ssh/fingerprint.c, Revision 1.1
1.1 ! markus 1: #include "includes.h"
! 2: RCSID("$Id: $");
! 3:
! 4: #include "ssh.h"
! 5: #include "xmalloc.h"
! 6: #include <ssl/md5.h>
! 7:
! 8: #define FPRINT "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x"
! 9:
! 10: /* Generate key fingerprint in ascii format.
! 11: Based on ideas and code from Bjoern Groenvall <bg@sics.se> */
! 12:
! 13: char *
! 14: fingerprint(BIGNUM *e, BIGNUM *n)
! 15: {
! 16: static char retval[80];
! 17: MD5_CTX md;
! 18: unsigned char d[16];
! 19: char *buf;
! 20: int nlen, elen;
! 21:
! 22: nlen = BN_num_bytes(n);
! 23: elen = BN_num_bytes(e);
! 24:
! 25: buf = xmalloc(nlen + elen);
! 26:
! 27: BN_bn2bin(n, buf);
! 28: BN_bn2bin(e, buf + nlen);
! 29:
! 30: MD5_Init(&md);
! 31: MD5_Update(&md, buf, nlen + elen);
! 32: MD5_Final(d, &md);
! 33: snprintf(retval, sizeof(retval), FPRINT,
! 34: d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],
! 35: d[8], d[9], d[10], d[11], d[12], d[13], d[14], d[15]);
! 36: memset(buf, 0, nlen + elen);
! 37: xfree(buf);
! 38: return retval;
! 39: }