[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.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: }