svnno****@sourc*****
svnno****@sourc*****
2015年 11月 17日 (火) 13:37:00 JST
Revision: 6145 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6145 Author: maya Date: 2015-11-17 13:37:00 +0900 (Tue, 17 Nov 2015) Log Message: ----------- 鍵のコピーを関数化 Modified Paths: -------------- trunk/ttssh2/ttxssh/hosts.c trunk/ttssh2/ttxssh/key.c trunk/ttssh2/ttxssh/key.h trunk/ttssh2/ttxssh/ttxssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/hosts.c =================================================================== --- trunk/ttssh2/ttxssh/hosts.c 2015-11-16 14:59:37 UTC (rev 6144) +++ trunk/ttssh2/ttxssh/hosts.c 2015-11-17 04:37:00 UTC (rev 6145) @@ -1121,8 +1121,8 @@ SendMessage(GetDlgItem(dlg, IDC_FP_RANDOMART), WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), TRUE); - CheckDlgButton(dlg, IDC_FP_HASH_ALG_MD5, TRUE); - hosts_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_MD5); + CheckDlgButton(dlg, IDC_FP_HASH_ALG_SHA256, TRUE); + hosts_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_SHA256); } static int print_mp_int(char FAR * buf, unsigned char FAR * mp) @@ -1519,33 +1519,7 @@ } // \x90ڑ\xB1\x92\x86\x82̃T\x81[\x83o\x82̃L\x81[\x82\xF0\x93ǂݍ\x9E\x82\xDE - memset(&key, 0, sizeof(key)); - switch (pvar->hosts_state.hostkey.type) { - case KEY_RSA1: // SSH1 - key.type = KEY_RSA1; - key.bits = pvar->hosts_state.hostkey.bits; - key.exp = copy_mp_int(pvar->hosts_state.hostkey.exp); - key.mod = copy_mp_int(pvar->hosts_state.hostkey.mod); - break; - case KEY_RSA: // SSH2 RSA - key.type = KEY_RSA; - key.rsa = duplicate_RSA(pvar->hosts_state.hostkey.rsa); - break; - case KEY_DSA: // SSH2 DSA - key.type = KEY_DSA; - key.dsa = duplicate_DSA(pvar->hosts_state.hostkey.dsa); - break; - case KEY_ECDSA256: - case KEY_ECDSA384: - case KEY_ECDSA521: - key.type = pvar->hosts_state.hostkey.type; - key.ecdsa = EC_KEY_dup(pvar->hosts_state.hostkey.ecdsa); - break; - case KEY_ED25519: - key.type = pvar->hosts_state.hostkey.type; - key.ed25519_pk = duplicate_ED25519_PK(pvar->hosts_state.hostkey.ed25519_pk); - break; - } + key_copy(&key, &(pvar->hosts_state.hostkey)); // \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82\xDE begin_read_host_files(pvar, 0); @@ -1740,33 +1714,7 @@ } // \x90ڑ\xB1\x92\x86\x82̃T\x81[\x83o\x82̃L\x81[\x82\xF0\x93ǂݍ\x9E\x82\xDE - memset(&key, 0, sizeof(key)); - switch (pvar->hosts_state.hostkey.type) { - case KEY_RSA1: // SSH1 - key.type = KEY_RSA1; - key.bits = pvar->hosts_state.hostkey.bits; - key.exp = copy_mp_int(pvar->hosts_state.hostkey.exp); - key.mod = copy_mp_int(pvar->hosts_state.hostkey.mod); - break; - case KEY_RSA: // SSH2 RSA - key.type = KEY_RSA; - key.rsa = duplicate_RSA(pvar->hosts_state.hostkey.rsa); - break; - case KEY_DSA: // SSH2 DSA - key.type = KEY_DSA; - key.dsa = duplicate_DSA(pvar->hosts_state.hostkey.dsa); - break; - case KEY_ECDSA256: - case KEY_ECDSA384: - case KEY_ECDSA521: - key.type = pvar->hosts_state.hostkey.type; - key.ecdsa = EC_KEY_dup(pvar->hosts_state.hostkey.ecdsa); - break; - case KEY_ED25519: - key.type = pvar->hosts_state.hostkey.type; - key.ed25519_pk = duplicate_ED25519_PK(pvar->hosts_state.hostkey.ed25519_pk); - break; - } + key_copy(&key, &(pvar->hosts_state.hostkey)); // \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82\xDE begin_read_host_files(pvar, 0); @@ -2497,28 +2445,8 @@ } // known_hosts \x82ɑ\xB6\x8D݂\xB5\x82Ȃ\xA2\x83L\x81[\x82͂\xA0\x82ƂŃt\x83@\x83C\x83\x8B\x82֏\x91\x82\xAB\x8D\x9E\x82ނ\xBD\x82߂ɁA\x82\xB1\x82\xB1\x82ŕۑ\xB6\x82\xB5\x82Ă\xA8\x82\xAD\x81B - pvar->hosts_state.hostkey.type = key->type; - switch (key->type) { - case KEY_RSA1: // SSH1 - pvar->hosts_state.hostkey.bits = key->bits; - pvar->hosts_state.hostkey.exp = copy_mp_int(key->exp); - pvar->hosts_state.hostkey.mod = copy_mp_int(key->mod); - break; - case KEY_RSA: // SSH2 RSA - pvar->hosts_state.hostkey.rsa = duplicate_RSA(key->rsa); - break; - case KEY_DSA: // SSH2 DSA - pvar->hosts_state.hostkey.dsa = duplicate_DSA(key->dsa); - break; - case KEY_ECDSA256: // SSH2 ECDSA - case KEY_ECDSA384: - case KEY_ECDSA521: - pvar->hosts_state.hostkey.ecdsa = EC_KEY_dup(key->ecdsa); - break; - case KEY_ED25519: - pvar->hosts_state.hostkey.ed25519_pk = duplicate_ED25519_PK(key->ed25519_pk); - break; - } + key_copy(&(pvar->hosts_state.hostkey), key); + free(pvar->hosts_state.prefetched_hostname); pvar->hosts_state.prefetched_hostname = _strdup(hostname); Modified: trunk/ttssh2/ttxssh/key.c =================================================================== --- trunk/ttssh2/ttxssh/key.c 2015-11-16 14:59:37 UTC (rev 6144) +++ trunk/ttssh2/ttxssh/key.c 2015-11-17 04:37:00 UTC (rev 6145) @@ -478,6 +478,18 @@ return (ret); // success } +static char FAR *copy_mp_int(char FAR * num) +{ + int len = (get_ushort16_MSBfirst(num) + 7) / 8 + 2; + char FAR *result = (char FAR *) malloc(len); + + if (result != NULL) { + memcpy(result, num, len); + } + + return result; +} + // // RSA\x8D\\x91\xA2\x91̂̕\xA1\x90\xBB // @@ -547,6 +559,38 @@ return (ptr); } +BOOL key_copy(Key *dest, Key *src) +{ + switch (src->type) { + case KEY_RSA1: // SSH1 + dest->type = KEY_RSA1; + dest->bits = src->bits; + dest->exp = copy_mp_int(src->exp); + dest->mod = copy_mp_int(src->mod); + break; + case KEY_RSA: // SSH2 RSA + dest->type = KEY_RSA; + dest->rsa = duplicate_RSA(src->rsa); + break; + case KEY_DSA: // SSH2 DSA + dest->type = KEY_DSA; + dest->dsa = duplicate_DSA(src->dsa); + break; + case KEY_ECDSA256: + case KEY_ECDSA384: + case KEY_ECDSA521: + dest->type = src->type; + dest->ecdsa = EC_KEY_dup(src->ecdsa); + break; + case KEY_ED25519: + dest->type = src->type; + dest->ed25519_pk = duplicate_ED25519_PK(src->ed25519_pk); + break; + default: + return FALSE; + } + return TRUE; +} char* key_fingerprint_raw(Key *k, enum digest_algorithm dgst_alg, int *dgst_raw_length) { @@ -2094,8 +2138,8 @@ _snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, ctx->nold); SetDlgItemText(dlg, IDC_REMOVEKEY_TEXT, buf); - CheckDlgButton(dlg, IDC_FP_HASH_ALG_MD5, TRUE); - hosts_updatekey_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_MD5); + CheckDlgButton(dlg, IDC_FP_HASH_ALG_SHA256, TRUE); + hosts_updatekey_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_SHA256); GetDlgItemText(dlg, IDOK, uimsg, sizeof(uimsg)); UTIL_get_lang_msg("BTN_YES", pvar, uimsg); Modified: trunk/ttssh2/ttxssh/key.h =================================================================== --- trunk/ttssh2/ttxssh/key.h 2015-11-16 14:59:37 UTC (rev 6144) +++ trunk/ttssh2/ttxssh/key.h 2015-11-17 04:37:00 UTC (rev 6145) @@ -41,6 +41,7 @@ RSA *duplicate_RSA(RSA *src); DSA *duplicate_DSA(DSA *src); unsigned char *duplicate_ED25519_PK(unsigned char *src); +BOOL key_copy(Key *dest, Key *src); char *key_fingerprint_raw(Key *k, enum digest_algorithm dgst_alg, int *dgst_raw_length); char *key_fingerprint(Key *key, enum fp_rep dgst_rep, enum fp_type dgst_type); Modified: trunk/ttssh2/ttxssh/ttxssh.c =================================================================== --- trunk/ttssh2/ttxssh/ttxssh.c 2015-11-16 14:59:37 UTC (rev 6144) +++ trunk/ttssh2/ttxssh/ttxssh.c 2015-11-17 04:37:00 UTC (rev 6145) @@ -2933,8 +2933,8 @@ } init_about_dlg(pvar, dlg); - CheckDlgButton(dlg, IDC_FP_HASH_ALG_MD5, TRUE); - about_dlg_set_abouttext(pvar, dlg, SSH_DIGEST_MD5); + CheckDlgButton(dlg, IDC_FP_HASH_ALG_SHA256, TRUE); + about_dlg_set_abouttext(pvar, dlg, SSH_DIGEST_SHA256); SetFocus(GetDlgItem(dlg, IDOK)); // Edit control\x82\xF0\x83T\x83u\x83N\x83\x89\x83X\x89\xBB\x82\xB7\x82\xE9\x81B