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

Annotation of src/usr.bin/ssh/fingerprint.c, Revision 1.3

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