// // fingerprint(指紋:ホスト公開鍵のハッシュ)を生成する // char *key_fingerprint(Key *key, enum fp_rep dgst_rep) { char *retval = NULL; unsigned char *dgst_raw; int dgst_raw_len; int i, retval_len; // fingerprintのハッシュ値(バイナリ)を求める dgst_raw = key_fingerprint_raw(key, SSH_FP_MD5, &dgst_raw_len); if (dgst_rep == SSH_FP_HEX) { // 16進表記へ変換する retval_len = dgst_raw_len * 3 + 1; retval = malloc(retval_len); retval[0] = '\0'; for (i = 0; i < dgst_raw_len; i++) { char hex[4]; _snprintf_s(hex, sizeof(hex), _TRUNCATE, "%02x:", dgst_raw[i]); strncat_s(retval, retval_len, hex, _TRUNCATE); } /* Remove the trailing ':' character */ retval[(dgst_raw_len * 3) - 1] = '\0'; } else if (dgst_rep == SSH_FP_RANDOMART) { retval = key_fingerprint_randomart(dgst_raw, dgst_raw_len, key); } else { } memset(dgst_raw, 0, dgst_raw_len); free(dgst_raw); return (retval); }
char *pcpkey_get_art(pcp_key_t *k) { char *r = key_fingerprint_randomart(k->pub, sizeof(k)); return r; }