| 377 |
// フィルタの追加 (2004.12.19 yutaka) |
// フィルタの追加 (2004.12.19 yutaka) |
| 378 |
// 3ファイルフィルタの追加 (2005.4.26 yutaka) |
// 3ファイルフィルタの追加 (2005.4.26 yutaka) |
| 379 |
UTIL_get_lang_msg("FILEDLG_OPEN_PRIVATEKEY_FILTER", pvar, |
UTIL_get_lang_msg("FILEDLG_OPEN_PRIVATEKEY_FILTER", pvar, |
| 380 |
"identity files\\0identity;id_rsa;id_dsa;id_ecdsa\\0identity(RSA1)\\0identity\\0id_rsa(SSH2)\\0id_rsa\\0id_dsa(SSH2)\\0id_dsa\\0id_ecdsa(SSH2)\\0id_ecdsa\\0all(*.*)\\0*.*\\0\\0"); |
"identity files\\0identity;id_rsa;id_dsa;id_ecdsa;*.ppk\\0identity(RSA1)\\0identity\\0id_rsa(SSH2)\\0id_rsa\\0id_dsa(SSH2)\\0id_dsa\\0id_ecdsa(SSH2)\\0id_ecdsa\\0PuTTY(*.ppk)\\0*.ppk\\0all(*.*)\\0*.*\\0\\0"); |
|
// "identity files\\0identity;id_rsa;id_dsa;id_ecdsa\\0identity(RSA1)\\0identity\\0id_rsa(SSH2)\\0id_rsa\\0id_dsa(SSH2)\\0id_dsa\\0id_ecdsa(SSH2)\\0id_ecdsa\\0PuTTY(*.ppk)\\0*.ppk\\0all(*.*)\\0*.*\\0\\0"); |
|
| 381 |
memcpy(filter, pvar->ts->UIMsg, sizeof(filter)); |
memcpy(filter, pvar->ts->UIMsg, sizeof(filter)); |
| 382 |
params.lpstrFilter = filter; |
params.lpstrFilter = filter; |
| 383 |
params.lpstrCustomFilter = NULL; |
params.lpstrCustomFilter = NULL; |
| 480 |
} else { // SSH2(yutaka) |
} else { // SSH2(yutaka) |
| 481 |
BOOL invalid_passphrase = FALSE; |
BOOL invalid_passphrase = FALSE; |
| 482 |
char errmsg[256]; |
char errmsg[256]; |
| 483 |
|
FILE *fp = NULL; |
| 484 |
|
ssh2_keyfile_type keyfile_type; |
| 485 |
|
|
| 486 |
memset(errmsg, 0, sizeof(errmsg)); |
memset(errmsg, 0, sizeof(errmsg)); |
|
//GetCurrentDirectory(sizeof(errmsg), errmsg); |
|
| 487 |
|
|
| 488 |
key_pair = read_SSH2_private_key(pvar, buf, password, |
keyfile_type = get_ssh2_keytype(buf, &fp, errmsg, sizeof(errmsg)); |
| 489 |
&invalid_passphrase, |
switch (keyfile_type) { |
| 490 |
FALSE, |
case SSH2_KEYFILE_TYPE_OPENSSH: |
| 491 |
errmsg, |
{ |
| 492 |
sizeof(errmsg) |
key_pair = read_SSH2_private_key(pvar, fp, password, |
| 493 |
); |
&invalid_passphrase, |
| 494 |
|
FALSE, |
| 495 |
|
errmsg, |
| 496 |
|
sizeof(errmsg) |
| 497 |
|
); |
| 498 |
|
break; |
| 499 |
|
} |
| 500 |
|
case SSH2_KEYFILE_TYPE_PUTTY: |
| 501 |
|
{ |
| 502 |
|
key_pair = read_SSH2_PuTTY_private_key(pvar, fp, password, |
| 503 |
|
&invalid_passphrase, |
| 504 |
|
FALSE, |
| 505 |
|
errmsg, |
| 506 |
|
sizeof(errmsg) |
| 507 |
|
); |
| 508 |
|
break; |
| 509 |
|
} |
| 510 |
|
case SSH2_KEYFILE_TYPE_SECSH: |
| 511 |
|
{ |
| 512 |
|
key_pair = read_SSH2_SECSH_private_key(pvar, fp, password, |
| 513 |
|
&invalid_passphrase, |
| 514 |
|
FALSE, |
| 515 |
|
errmsg, |
| 516 |
|
sizeof(errmsg) |
| 517 |
|
); |
| 518 |
|
break; |
| 519 |
|
} |
| 520 |
|
default: |
| 521 |
|
{ |
| 522 |
|
char buf[1024]; |
| 523 |
|
UTIL_get_lang_msg("MSG_READKEY_ERROR", pvar, |
| 524 |
|
"read error SSH2 private key file\r\n%s"); |
| 525 |
|
_snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, errmsg); |
| 526 |
|
notify_nonfatal_error(pvar, buf); |
| 527 |
|
// ここに来たということは SSH2 秘密鍵が開けない、あるいはファイル形式がおかしいので |
| 528 |
|
// 鍵ファイルの選択ボタンにフォーカスを移す |
| 529 |
|
SetFocus(GetDlgItem(dlg, IDC_CHOOSERSAFILE)); |
| 530 |
|
destroy_malloced_string(&password); |
| 531 |
|
return FALSE; |
| 532 |
|
} |
| 533 |
|
} |
| 534 |
|
|
| 535 |
if (key_pair == NULL) { // read error |
if (key_pair == NULL) { // read error |
| 536 |
char buf[1024]; |
char buf[1024]; |