[Ttssh2-commit] [6145] 鍵のコピーを関数化

Back to archive index

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



Ttssh2-commit メーリングリストの案内
Back to archive index