svnno****@sourc*****
svnno****@sourc*****
2015年 11月 15日 (日) 22:27:58 JST
Revision: 6135 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6135 Author: maya Date: 2015-11-15 22:27:58 +0900 (Sun, 15 Nov 2015) Log Message: ----------- About TTSSH と Hostkey rotation ダイアログのテキスト追加方法を変更 EM_REPLACESEL で細かく追加するのをやめ、WM_SETTEXT でまとめてセットする Modified Paths: -------------- trunk/installer/release/lang/English.lng trunk/installer/release/lang/French.lng trunk/installer/release/lang/German.lng trunk/installer/release/lang/Japanese.lng trunk/installer/release/lang/Korean.lng trunk/installer/release/lang/Russian.lng trunk/installer/release/lang/Simplified Chinese.lng trunk/installer/release/lang/Traditional Chinese.lng trunk/ttssh2/ttxssh/key.c trunk/ttssh2/ttxssh/ttxssh.c -------------- next part -------------- Modified: trunk/installer/release/lang/English.lng =================================================================== --- trunk/installer/release/lang/English.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/English.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -515,7 +515,9 @@ DLG_ABOUT_AUTH=Authentication: DLG_ABOUT_COMP=Compression: DLG_ABOUT_CLIENTID=Client ID: +DLG_ABOUT_KEX=Key exchange algorithm: DLG_ABOUT_HOSTKEY=Host Key: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" to server," DLG_ABOUT_FROMSERVER=" from server" DLG_ABOUT_COMPDELAY=Delayed Compression: Modified: trunk/installer/release/lang/French.lng =================================================================== --- trunk/installer/release/lang/French.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/French.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -516,7 +516,9 @@ DLG_ABOUT_AUTH=Authentication: DLG_ABOUT_COMP=Compression: DLG_ABOUT_CLIENTID=ID Client: +DLG_ABOUT_KEX=Key exchange algorithm: DLG_ABOUT_HOSTKEY=Cl\xE9 de l'h\xF4te: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" vers le serveur," DLG_ABOUT_FROMSERVER=" depuis le serveur" DLG_ABOUT_COMPDELAY=Compression retard\xE9e: Modified: trunk/installer/release/lang/German.lng =================================================================== --- trunk/installer/release/lang/German.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/German.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -516,7 +516,9 @@ DLG_ABOUT_AUTH=Authentifikation: DLG_ABOUT_COMP=Kompression: DLG_ABOUT_CLIENTID=Client-ID: +DLG_ABOUT_KEX=Key exchange algorithm: DLG_ABOUT_HOSTKEY=Client-Schl\xFCssel: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" zum Server," DLG_ABOUT_FROMSERVER=" vom Server" DLG_ABOUT_COMPDELAY=Delayed Compression: Modified: trunk/installer/release/lang/Japanese.lng =================================================================== --- trunk/installer/release/lang/Japanese.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/Japanese.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -515,7 +515,9 @@ DLG_ABOUT_AUTH=\x94F\x8Fؕ\xFB\x8E\xAE: DLG_ABOUT_COMP=\x88\xB3\x8Fk\x8F\xF3\x8B\xB5: DLG_ABOUT_CLIENTID=\x83N\x83\x89\x83C\x83A\x83\x93\x83gID: +DLG_ABOUT_KEX=\x8C\xAE\x8C\xF0\x8A\xB7\x83A\x83\x8B\x83S\x83\x8A\x83Y\x83\x80: DLG_ABOUT_HOSTKEY=\x83z\x83X\x83g\x8C\xAE: +DLG_ABOUT_MAC=MAC\x83A\x83\x8B\x83S\x83\x8A\x83Y\x83\x80: DLG_ABOUT_TOSERVER=" TTSSH\x81\xA8\x83T\x81[\x83o," DLG_ABOUT_FROMSERVER=" \x83T\x81[\x83o\x81\xA8TTSSH" DLG_ABOUT_COMPDELAY=\x92x\x89\x84\x88\xB3\x8Fk\x8F\xF3\x8B\xB5: Modified: trunk/installer/release/lang/Korean.lng =================================================================== --- trunk/installer/release/lang/Korean.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/Korean.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -516,7 +516,9 @@ DLG_ABOUT_AUTH=\xC0\xCE\xC1\xF5: DLG_ABOUT_COMP=\xBE\xD0\xC3\xE0: DLG_ABOUT_CLIENTID=Ŭ\xB6\xF3\xC0̾\xF0Ʈ ID: +DLG_ABOUT_KEX=Key exchange algorithm: DLG_ABOUT_HOSTKEY=ȣ\xBD\xBAƮ Ű: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" \xBC\xAD\xB9\xF6\xB7\xCE," DLG_ABOUT_FROMSERVER=" \xBC\xAD\xB9\xF6\xB7κ\xCE\xC5\xCD" DLG_ABOUT_COMPDELAY=\xC1\x{1BFB35}\xC8 \xBE\xD0\xC3\xE0: Modified: trunk/installer/release/lang/Russian.lng =================================================================== --- trunk/installer/release/lang/Russian.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/Russian.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -516,7 +516,9 @@ DLG_ABOUT_AUTH=\xC0\xF3\xF2\xE5\xED\xF2\xE8\xF4\xE8\xEA\xE0\xF6\xE8\xFF: DLG_ABOUT_COMP=\xD1\xE6\xE0\xF2\xE8\xE5: DLG_ABOUT_CLIENTID=\xCA\xEB\xE8\xE5\xED\xF2 ID: +DLG_ABOUT_KEX=Key exchange algorithm: DLG_ABOUT_HOSTKEY=\xCA\xEB\xFE\xF7 \xF5\xEE\xF1\xF2\xE0: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" \xEA \xF1\xE5\xF0\xE2\xE5\xF0\xF3," DLG_ABOUT_FROMSERVER=" \xEE\xF2 \xF1\xE5\xF0\xE2\xE5\xF0\xE0" DLG_ABOUT_COMPDELAY=\xC7\xE0\xE4\xE5\xF0\xE6\xEA\xE0 \xF1\xE6\xE0\xF2\xE8\xFF: Modified: trunk/installer/release/lang/Simplified Chinese.lng =================================================================== --- trunk/installer/release/lang/Simplified Chinese.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/Simplified Chinese.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -508,18 +508,20 @@ ; dlg about DLG_ABOUT_TITLE=\xB9\xD8\xD3\xDA TTSSH DLG_ABOUT_FP_HASH_ALGORITHM=Fingerprint hash algorithm: -DLG_ABOUT_SERVERID=\xB7\xFE\xCE\xF1\xC6\xF7ID\xA3\xBA -DLG_ABOUT_PROTOCOL=Э\xD2\xE9\xB0汾\xA3\xBA -DLG_ABOUT_ENCRYPTION=\xBC\xD3\xC3ܷ\xBD\xB0\xB8\xA3\xBA -DLG_ABOUT_SERVERKEY=\xB7\xFE\xCE\xF1\xC6\xF7\xC3\xDCԿ\xA3\xBA -DLG_ABOUT_KEXKEY=\xC3\xDCԿ\xBD\xBB\xBB\xBB\xC3\xDCԿ\xA3\xBA -DLG_ABOUT_AUTH=\xC8\xCF֤\xB7\xBDʽ\xA3\xBA -DLG_ABOUT_COMP=ѹ\xCB\xF5״\xBF\xF6\xA3\xBA -DLG_ABOUT_CLIENTID=\xBFͻ\xA7\xB6\xCBID\xA3\xBA -DLG_ABOUT_HOSTKEY=\xD6\xF7\xBB\xFA\xC3\xDCԿ\xA3\xBA +DLG_ABOUT_SERVERID=\xB7\xFE\xCE\xF1\xC6\xF7ID: +DLG_ABOUT_PROTOCOL=Э\xD2\xE9\xB0汾: +DLG_ABOUT_ENCRYPTION=\xBC\xD3\xC3ܷ\xBD\xB0\xB8: +DLG_ABOUT_SERVERKEY=\xB7\xFE\xCE\xF1\xC6\xF7\xC3\xDCԿ: +DLG_ABOUT_KEXKEY=\xC3\xDCԿ\xBD\xBB\xBB\xBB\xC3\xDCԿ: +DLG_ABOUT_AUTH=\xC8\xCF֤\xB7\xBDʽ: +DLG_ABOUT_COMP=ѹ\xCB\xF5״\xBF\xF6: +DLG_ABOUT_CLIENTID=\xBFͻ\xA7\xB6\xCBID: +DLG_ABOUT_KEX=Key exchange algorithm: +DLG_ABOUT_HOSTKEY=\xD6\xF7\xBB\xFA\xC3\xDCԿ: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" TTSSH\xA1\xFA\xB7\xFE\xCE\xF1\xC6\xF7," DLG_ABOUT_FROMSERVER=" \xB7\xFE\xCE\xF1\xC6\xF7\xA1\xFATTSSH" -DLG_ABOUT_COMPDELAY=\xD1\xD3ʱѹ\xCB\xF5״\xBF\xF6\xA3\xBA +DLG_ABOUT_COMPDELAY=\xD1\xD3ʱѹ\xCB\xF5״\xBF\xF6: DLG_ABOUT_CIPHER_INFO=%s \xB5\xBD\xB7\xFE\xCE\xF1\xC6\xF7\xA3\xAC%s \xC0\xB4\xD7Է\xFE\xCE\xF1\xC6\xF7 DLG_ABOUT_KEY_INFO=%d\xD7ֽڷ\xFE\xCE\xF1\xC6\xF7\xC3\xDCԿ\xA3\xAC%d\xD7ֽ\xDA\xD6\xF7\xBB\xFA\xC3\xDCԿ DLG_ABOUT_KEY_INFO2=%d\xD7ֽڿͻ\xA7\xB6\xCB\xC3\xDCԿ\xA3\xAC%d\xD7ֽڷ\xFE\xCE\xF1\xC6\xF7\xC3\xDCԿ Modified: trunk/installer/release/lang/Traditional Chinese.lng =================================================================== --- trunk/installer/release/lang/Traditional Chinese.lng 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/installer/release/lang/Traditional Chinese.lng 2015-11-15 13:27:58 UTC (rev 6135) @@ -508,18 +508,20 @@ ; dlg about DLG_ABOUT_TITLE=\xC3\xF6\xA9\xF3 TTSSH DLG_ABOUT_FP_HASH_ALGORITHM=Fingerprint hash algorithm: -DLG_ABOUT_SERVERID=\xA6\xF8\xAAA\xBE\xB9ID\xA1G -DLG_ABOUT_PROTOCOL=\xA8\xF3\xA9w\xAA\xA9\xA5\xBB\xA1G -DLG_ABOUT_ENCRYPTION=\xA5[\xB1K\xA4\xE8\xAEסG -DLG_ABOUT_SERVERKEY=\xA6\xF8\xAAA\xBE\xB9\xB1K\xC6_\xA1G -DLG_ABOUT_KEXKEY=\xB1K\xC6_\xA5洫\xB1K\xC6_\xA1G -DLG_ABOUT_AUTH=\xBB{\xC3Ҥ覡\xA1G -DLG_ABOUT_COMP=\xC0\xA3\xC1Y\xAA\xAC\xAAp\xA1G -DLG_ABOUT_CLIENTID=\xABȤ\xE1\xBA\xDDID\xA1G -DLG_ABOUT_HOSTKEY=\xA5D\xBE\xF7\xB1K\xC6_\xA1G +DLG_ABOUT_SERVERID=\xA6\xF8\xAAA\xBE\xB9ID: +DLG_ABOUT_PROTOCOL=\xA8\xF3\xA9w\xAA\xA9\xA5\xBB: +DLG_ABOUT_ENCRYPTION=\xA5[\xB1K\xA4\xE8\xAE\xD7: +DLG_ABOUT_SERVERKEY=\xA6\xF8\xAAA\xBE\xB9\xB1K\xC6_: +DLG_ABOUT_KEXKEY=\xB1K\xC6_\xA5洫\xB1K\xC6_: +DLG_ABOUT_AUTH=\xBB{\xC3Ҥ覡: +DLG_ABOUT_COMP=\xC0\xA3\xC1Y\xAA\xAC\xAAp: +DLG_ABOUT_CLIENTID=\xABȤ\xE1\xBA\xDDID: +DLG_ABOUT_KEX=Key exchange algorithm: +DLG_ABOUT_HOSTKEY=\xA5D\xBE\xF7\xB1K\xC6_: +DLG_ABOUT_MAC=MAC algorithm: DLG_ABOUT_TOSERVER=" TTSSH\xA1\xF7\xA6\xF8\xAAA\xBE\xB9," DLG_ABOUT_FROMSERVER=" \xA6\xF8\xAAA\xBE\xB9\xA1\xF7TTSSH" -DLG_ABOUT_COMPDELAY=\xA9\xB5\xAE\xC9\xC0\xA3\xC1Y\xAA\xAC\xAAp\xA1G +DLG_ABOUT_COMPDELAY=\xA9\xB5\xAE\xC9\xC0\xA3\xC1Y\xAA\xAC\xAAp: DLG_ABOUT_CIPHER_INFO=%s \xA8\xEC\xA6\xF8\xAAA\xBE\xB9\xA1A%s \xA8Ӧۦ\xF8\xAAA\xBE\xB9 DLG_ABOUT_KEY_INFO=%d\xA6r\xB8`\xA6\xF8\xAAA\xBE\xB9\xB1K\xC6_\xA1A%d\xA6r\xB8`\xA5D\xBE\xF7\xB1K\xC6_ DLG_ABOUT_KEY_INFO2=%d\xA6r\xB8`\xABȤ\xE1\xBAݱK\xC6_\xA1A%d\xA6r\xB8`\xA6\xF8\xAAA\xBE\xB9\xB1K\xC6_ Modified: trunk/ttssh2/ttxssh/key.c =================================================================== --- trunk/ttssh2/ttxssh/key.c 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/ttssh2/ttxssh/key.c 2015-11-15 13:27:58 UTC (rev 6135) @@ -1991,51 +1991,62 @@ static void hosts_updatekey_dlg_set_fingerprint(PTInstVar pvar, HWND dlg, digest_algorithm dgst_alg) { - char buf[1024]; - char *fp; + char *fp, *buf; size_t i; + int buf_len; struct hostkeys_update_ctx *ctx; ctx = pvar->hostkey_ctx; - SendDlgItemMessage(dlg, IDC_ADDKEY_EDIT, WM_SETTEXT, 0, (LPARAM)(char FAR *)""); - for (i = 0; i < ctx->nkeys; i++) { - if (ctx->keys_seen[i]) - continue; - switch (dgst_alg) { - case SSH_DIGEST_MD5: - fp = key_fingerprint(ctx->keys[i], SSH_FP_HEX, dgst_alg); - break; - case SSH_DIGEST_SHA256: - fp = key_fingerprint(ctx->keys[i], SSH_FP_BASE64, dgst_alg); - break; - } - buf[0] = 0; - strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->keys[i])); - strcat_s(buf, sizeof(buf), " "); - strcat_s(buf, sizeof(buf), fp); - SendDlgItemMessage(dlg, IDC_ADDKEY_EDIT, EM_REPLACESEL, 0, (LPARAM)buf); - SendDlgItemMessage(dlg, IDC_ADDKEY_EDIT, EM_REPLACESEL, 0, (LPARAM)"\r\n"); - free(fp); + if (ctx->nkeys > 0) { + buf_len = 100 * ctx->nkeys; + buf = calloc(100, ctx->nkeys); + for (i = 0; i < ctx->nkeys; i++) { + if (ctx->keys_seen[i]) + continue; + switch (dgst_alg) { + case SSH_DIGEST_MD5: + fp = key_fingerprint(ctx->keys[i], SSH_FP_HEX, dgst_alg); + break; + case SSH_DIGEST_SHA256: + fp = key_fingerprint(ctx->keys[i], SSH_FP_BASE64, dgst_alg); + break; + } + strncat_s(buf, buf_len, get_sshname_from_key(ctx->keys[i]), _TRUNCATE); + strncat_s(buf, buf_len, " ", _TRUNCATE); + strncat_s(buf, buf_len, fp, _TRUNCATE); + free(fp); + if (i < ctx->nkeys - 1) { + strncat_s(buf, buf_len, "\r\n", _TRUNCATE); + } + } + SendDlgItemMessage(dlg, IDC_ADDKEY_EDIT, WM_SETTEXT, 0, (LPARAM)(char FAR *)buf); + free(buf); } - SendDlgItemMessage(dlg, IDC_REMOVEKEY_EDIT, WM_SETTEXT, 0, (LPARAM)(char FAR *)""); - for (i = 0; i < ctx->nold; i++) { - switch (dgst_alg) { - case SSH_DIGEST_MD5: - fp = key_fingerprint(ctx->old_keys[i], SSH_FP_HEX, dgst_alg); - break; - case SSH_DIGEST_SHA256: - fp = key_fingerprint(ctx->old_keys[i], SSH_FP_BASE64, dgst_alg); - break; + if (ctx->nold > 0) { + buf_len = 100 * ctx->nold; + buf = calloc(100, ctx->nold); + SendDlgItemMessage(dlg, IDC_REMOVEKEY_EDIT, WM_SETTEXT, 0, (LPARAM)(char FAR *)""); + for (i = 0; i < ctx->nold; i++) { + switch (dgst_alg) { + case SSH_DIGEST_MD5: + fp = key_fingerprint(ctx->old_keys[i], SSH_FP_HEX, dgst_alg); + break; + case SSH_DIGEST_SHA256: + fp = key_fingerprint(ctx->old_keys[i], SSH_FP_BASE64, dgst_alg); + break; + } + strncat_s(buf, buf_len, get_sshname_from_key(ctx->old_keys[i]), _TRUNCATE); + strncat_s(buf, buf_len, " ", _TRUNCATE); + strncat_s(buf, buf_len, fp, _TRUNCATE); + free(fp); + if (i < ctx->nold - 1) { + strncat_s(buf, buf_len, "\r\n", _TRUNCATE); + } } - buf[0] = 0; - strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->old_keys[i])); - strcat_s(buf, sizeof(buf), " "); - strcat_s(buf, sizeof(buf), fp); - SendDlgItemMessage(dlg, IDC_REMOVEKEY_EDIT, EM_REPLACESEL, 0, (LPARAM)buf); - SendDlgItemMessage(dlg, IDC_REMOVEKEY_EDIT, EM_REPLACESEL, 0, (LPARAM)"\r\n"); - free(fp); + SendDlgItemMessage(dlg, IDC_REMOVEKEY_EDIT, WM_SETTEXT, 0, (LPARAM)(char FAR *)buf); + free(buf); } } Modified: trunk/ttssh2/ttxssh/ttxssh.c =================================================================== --- trunk/ttssh2/ttxssh/ttxssh.c 2015-11-15 13:17:48 UTC (rev 6134) +++ trunk/ttssh2/ttxssh/ttxssh.c 2015-11-15 13:27:58 UTC (rev 6135) @@ -2564,15 +2564,6 @@ } } -static void append_about_text(HWND dlg, char FAR * prefix, char FAR * msg) -{ - SendDlgItemMessage(dlg, IDC_ABOUTTEXT, EM_REPLACESEL, 0, - (LPARAM) prefix); - SendDlgItemMessage(dlg, IDC_ABOUTTEXT, EM_REPLACESEL, 0, (LPARAM) msg); - SendDlgItemMessage(dlg, IDC_ABOUTTEXT, EM_REPLACESEL, 0, - (LPARAM) (char FAR *) "\r\n"); -} - // \x8E\xC0\x8Ds\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x83o\x81[\x83W\x83\x87\x83\x93\x8F\xEE\x95\xF1\x82\xE9 (2005.2.28 yutaka) void get_file_version(char *exefile, int *major, int *minor, int *release, int *build) { @@ -2635,103 +2626,160 @@ static void about_dlg_set_abouttext(PTInstVar pvar, HWND dlg, digest_algorithm dgst_alg) { - char buf[1024]; + char buf[1024], buf2[2048]; char *fp = NULL; // TTSSH\x83_\x83C\x83A\x83\x8D\x83O\x82ɕ\\x8E\xA6\x82\xB7\x82\xE9SSH\x82Ɋւ\xB7\x82\xE9\x8F\xEE\x95\xF1 (2004.10.30 yutaka) if (pvar->socket != INVALID_SOCKET) { - SendDlgItemMessage(dlg, IDC_ABOUTTEXT, WM_SETTEXT, 0, (LPARAM)(char FAR *)""); + buf2[0] = '\0'; if (SSHv1(pvar)) { + UTIL_get_lang_msg("DLG_ABOUT_SERVERID", pvar, "Server ID:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); SSH_get_server_ID_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_SERVERID", pvar, "Server ID:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); - SSH_get_protocol_version_info(pvar, buf, sizeof(buf)); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_PROTOCOL", pvar, "Using protocol:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); - CRYPT_get_cipher_info(pvar, buf, sizeof(buf)); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + SSH_get_server_ID_info(pvar, buf, sizeof(buf)); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_ENCRYPTION", pvar, "Encryption:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + SSH_get_server_ID_info(pvar, buf, sizeof(buf)); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + + UTIL_get_lang_msg("DLG_ABOUT_SERVERKEY", pvar, "Server keys:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); CRYPT_get_server_key_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_SERVERKEY", pvar, "Server keys:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + + UTIL_get_lang_msg("DLG_ABOUT_AUTH", pvar, "Authentication:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); AUTH_get_auth_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_AUTH", pvar, "Authentication:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + + UTIL_get_lang_msg("DLG_ABOUT_COMP", pvar, "Compression:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); SSH_get_compression_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_COMP", pvar, "Compression:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); } else { // SSH2 + UTIL_get_lang_msg("DLG_ABOUT_SERVERID", pvar, "Server ID:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); SSH_get_server_ID_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_SERVERID", pvar, "Server ID:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_CLIENTID", pvar, "Client ID:"); - append_about_text(dlg, pvar->ts->UIMsg, pvar->client_version_string); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + strncat_s(buf2, sizeof(buf2), pvar->client_version_string, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_PROTOCOL", pvar, "Using protocol:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); SSH_get_protocol_version_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_PROTOCOL", pvar, "Using protocol:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); - append_about_text(dlg, "KEX:", get_kex_algorithm_name(pvar->kex_type)); + UTIL_get_lang_msg("DLG_ABOUT_KEX", pvar, "Key exchange algorithm:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + strncat_s(buf2, sizeof(buf2), get_kex_algorithm_name(pvar->kex_type), _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); - strncpy_s(buf, sizeof(buf), get_ssh_keytype_name(pvar->hostkey_type), _TRUNCATE); UTIL_get_lang_msg("DLG_ABOUT_HOSTKEY", pvar, "Host Key:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + strncat_s(buf2, sizeof(buf2), get_ssh_keytype_name(pvar->hostkey_type), _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); - // add MAC algorithm (2004.12.17 yutaka) - buf[0] = '\0'; - strncat_s(buf, sizeof(buf), get_ssh2_mac_name(pvar->ctos_hmac), _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_MAC", pvar, "MAC algorithm:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + strncat_s(buf2, sizeof(buf2), get_ssh2_mac_name(pvar->ctos_hmac), _TRUNCATE); UTIL_get_lang_msg("DLG_ABOUT_TOSERVER", pvar, " to server,"); - strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE); - strncat_s(buf, sizeof(buf), get_ssh2_mac_name(pvar->stoc_hmac), _TRUNCATE); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + strncat_s(buf2, sizeof(buf2), get_ssh2_mac_name(pvar->stoc_hmac), _TRUNCATE); UTIL_get_lang_msg("DLG_ABOUT_FROMSERVER", pvar, " from server"); - strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE); - append_about_text(dlg, "MAC:", buf); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_ENCRYPTION", pvar, "Encryption:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); CRYPT_get_cipher_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_ENCRYPTION", pvar, "Encryption:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + + UTIL_get_lang_msg("DLG_ABOUT_KEXKEY", pvar, "Key exchange keys:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); CRYPT_get_server_key_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_KEXKEY", pvar, "Key exchange keys:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); + UTIL_get_lang_msg("DLG_ABOUT_AUTH", pvar, "Authentication:"); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); AUTH_get_auth_info(pvar, buf, sizeof(buf)); - UTIL_get_lang_msg("DLG_ABOUT_AUTH", pvar, "Authentication:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); - SSH_get_compression_info(pvar, buf, sizeof(buf)); if (pvar->ctos_compression == COMP_DELAYED) { // \x92x\x89\x84\x83p\x83P\x83b\x83g\x88\xB3\x8Fk\x82̏ꍇ (2006.6.23 yutaka) UTIL_get_lang_msg("DLG_ABOUT_COMPDELAY", pvar, "Delayed Compression:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); } else { UTIL_get_lang_msg("DLG_ABOUT_COMP", pvar, "Compression:"); - append_about_text(dlg, pvar->ts->UIMsg, buf); } + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), " ", _TRUNCATE); + SSH_get_compression_info(pvar, buf, sizeof(buf)); + strncat_s(buf2, sizeof(buf2), buf, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); } // \x83z\x83X\x83g\x8C\xF6\x8AJ\x8C\xAE\x82\xCCfingerprint\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9\x81B // (2014.5.1 yutaka) UTIL_get_lang_msg("DLG_ABOUT_FINGERPRINT", pvar, "Host key's fingerprint:"); - append_about_text(dlg, "", pvar->ts->UIMsg); + strncat_s(buf2, sizeof(buf2), pvar->ts->UIMsg, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); switch (dgst_alg) { case SSH_DIGEST_MD5: fp = key_fingerprint(&pvar->hosts_state.hostkey, SSH_FP_HEX, dgst_alg); - append_about_text(dlg, "", fp); + strncat_s(buf2, sizeof(buf2), fp, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); free(fp); break; case SSH_DIGEST_SHA256: fp = key_fingerprint(&pvar->hosts_state.hostkey, SSH_FP_BASE64, dgst_alg); - append_about_text(dlg, "", fp); + strncat_s(buf2, sizeof(buf2), fp, _TRUNCATE); + strncat_s(buf2, sizeof(buf2), "\r\n", _TRUNCATE); free(fp); break; } fp = key_fingerprint(&pvar->hosts_state.hostkey, SSH_FP_RANDOMART, dgst_alg); - // \x96\x96\x94\xF6\x82ɉ\xFC\x8Ds\x82͕s\x97v\x82Ȃ̂\xC5 append_about_text() \x82͎g\x97p\x82\xB5\x82Ȃ\xA2 - SendDlgItemMessage(dlg, IDC_ABOUTTEXT, EM_REPLACESEL, 0, (LPARAM)fp); + strncat_s(buf2, sizeof(buf2), fp, _TRUNCATE); free(fp); + + SendDlgItemMessage(dlg, IDC_ABOUTTEXT, WM_SETTEXT, 0, (LPARAM)(char FAR *)buf2); } }