=================================================================== RCS file: kd_index.c,v retrieving revision 1.16 diff -u -r1.16 kd_index.c --- kd_index.c 1999/09/23 03:19:36 1.16 +++ kd_index.c 2001/09/02 04:00:23 @@ -122,6 +122,7 @@ int keys_elem_genindex(void *e, void *c) { + keys_elem *ke = (keys_elem *) e; keg_state *s = (keg_state *) c; gi_state gis; @@ -131,6 +132,8 @@ SHS_CTX sha; unsigned char hash[20]; int i; + unsigned int pos = 0; + /* pgp does gmtime, so we do, too */ c_tm = gmtime(&(ke->create_time)); @@ -163,24 +166,33 @@ MD5Final(hash, &md5ctx); } - for (i=0; i<8; i++) - sprintf(buf+i*3, "%02X ", hash[i]); - buf[24] = ' '; - for (i=8; i<16; i++) - sprintf(buf+1+i*3, "%02X ", hash[i]); + pos = 0; + // print longer SHA-1 hashes differently if (ke->keytype == 16 || ke->keytype == 17) { - buf[49] = ' '; - for (i=16; i<20; i++) - sprintf(buf+2+i*3, "%02X ", hash[i]); - buf[62] = '\n'; - } else { - buf[48] = '\n'; - } + for (i = 0; i < 20; i += 2) { + sprintf (&buf[pos], "%02X%02X ", hash[i], hash[i+1]); + pos += 5; // just added n chars... + // add another space halfway through... + if (i == 8) { + buf[pos] = ' '; + pos++; + } + } // for i + pos--; // remove last space + buf[pos] = '\n'; + } else { // if keytype != 16 or 17 + for (i=0; i<8; i++) + sprintf(buf+i*3, "%02X ", hash[i]); + buf[24] = ' '; + for (i=8; i<16; i++) + sprintf(buf+1+i*3, "%02X ", hash[i]); + buf[48] = '\n'; + } // if else on keytype - if (!xbuffer_append_str(s->xb, " Key fingerprint = ")) + if (!xbuffer_append_str(s->xb, " Key fingerprint = ")) return(0); if (ke->keytype == 16 || ke->keytype == 17) { - if (!xbuffer_append(s->xb, (unsigned char *) buf, 63)) + if (!xbuffer_append(s->xb, (unsigned char *) buf, 51)) return(0); } else { if (!xbuffer_append(s->xb, (unsigned char *) buf, 49))