#include "ssh.h"
#include "winstuff.h"
+#ifdef MSVC4
+#define ICON_BIG 1
+#endif
+
#define WM_DONEKEY (WM_XUSER + 1)
#define DEFAULT_KEYSIZE 1024
#endif
of.hwndOwner = hwnd;
if (ppk) {
- of.lpstrFilter = "PuTTY Private Key Files (*.ppk)\0*.PPK\0"
- "All Files\0*\0\0\0";
+ of.lpstrFilter = "PuTTY Private Key Files (*.ppk)\0*.ppk\0"
+ "All Files (*.*)\0*\0\0\0";
of.lpstrDefExt = ".ppk";
} else {
- of.lpstrFilter = "All Files\0*\0\0\0";
+ of.lpstrFilter = "All Files (*.*)\0*\0\0\0";
}
of.lpstrCustomFilter = NULL;
of.nFilterIndex = 1;
return 0;
case 101:
EnableWindow(hwnd, 0);
- DialogBox(hinst, MAKEINTRESOURCE(214), NULL, LicenceProc);
+ DialogBox(hinst, MAKEINTRESOURCE(214), hwnd, LicenceProc);
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
int i;
pub_blob = key->alg->public_blob(key->data, &pub_len);
- buffer = smalloc(strlen(key->alg->name) + 4 * ((pub_len + 2) / 3) +
- strlen(key->comment) + 3);
+ buffer = snewn(strlen(key->alg->name) + 4 * ((pub_len + 2) / 3) +
+ strlen(key->comment) + 3, char);
strcpy(buffer, key->alg->name);
p = buffer + strlen(buffer);
*p++ = ' ';
}
void load_key_file(HWND hwnd, struct MainDlgState *state,
- char *filename, int was_import_cmd)
+ Filename filename, int was_import_cmd)
{
char passphrase[PASSPHRASE_MAXLEN];
int needs_pass;
struct RSAKey newkey1;
struct ssh2_userkey *newkey2 = NULL;
- type = realtype = key_type(filename);
+ type = realtype = key_type(&filename);
if (type != SSH_KEYTYPE_SSH1 &&
type != SSH_KEYTYPE_SSH2 &&
!import_possible(type)) {
comment = NULL;
if (realtype == SSH_KEYTYPE_SSH1)
- needs_pass = rsakey_encrypted(filename, &comment);
+ needs_pass = rsakey_encrypted(&filename, &comment);
else if (realtype == SSH_KEYTYPE_SSH2)
needs_pass =
- ssh2_userkey_encrypted(filename, &comment);
+ ssh2_userkey_encrypted(&filename, &comment);
else
- needs_pass = import_encrypted(filename, realtype,
+ needs_pass = import_encrypted(&filename, realtype,
&comment);
pps.passphrase = passphrase;
pps.comment = comment;
*passphrase = '\0';
if (type == SSH_KEYTYPE_SSH1) {
if (realtype == type)
- ret = loadrsakey(filename, &newkey1,
+ ret = loadrsakey(&filename, &newkey1,
passphrase);
else
- ret = import_ssh1(filename, realtype,
+ ret = import_ssh1(&filename, realtype,
&newkey1, passphrase);
} else {
if (realtype == type)
- newkey2 = ssh2_load_userkey(filename,
+ newkey2 = ssh2_load_userkey(&filename,
passphrase);
else
- newkey2 = import_ssh2(filename, realtype,
+ newkey2 = import_ssh2(&filename, realtype,
passphrase);
if (newkey2 == SSH2_WRONG_PASSPHRASE)
ret = -1;
*/
}
requested_help = FALSE;
+ SendMessage(hwnd, WM_SETICON, (WPARAM) ICON_BIG,
+ (LPARAM) LoadIcon(hinst, MAKEINTRESOURCE(200)));
- state = smalloc(sizeof(*state));
+ state = snew(struct MainDlgState);
state->generation_thread_exists = FALSE;
state->collecting_entropy = FALSE;
state->entropy = NULL;
* Load a key file if one was provided on the command line.
*/
if (cmdline_keyfile)
- load_key_file(hwnd, state, cmdline_keyfile, 0);
+ load_key_file(hwnd, state, filename_from_str(cmdline_keyfile), 0);
return 1;
case WM_MOUSEMOVE:
MAKELPARAM(0, PROGRESSRANGE));
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETPOS, 0, 0);
- params = smalloc(sizeof(*params));
+ params = snew(struct rsa_key_thread_params);
params->progressbar = GetDlgItem(hwnd, IDC_PROGRESS);
params->dialog = hwnd;
params->keysize = state->keysize;
int len = GetWindowTextLength(editctl);
if (*state->commentptr)
sfree(*state->commentptr);
- *state->commentptr = smalloc(len + 1);
+ *state->commentptr = snewn(len + 1, char);
GetWindowText(editctl, *state->commentptr, len + 1);
if (state->ssh2) {
setupbigedit2(hwnd, IDC_KEYDISPLAY, IDC_PKSTATIC,
break;
case IDC_ABOUT:
EnableWindow(hwnd, 0);
- DialogBox(hinst, MAKEINTRESOURCE(213), NULL, AboutProc);
+ DialogBox(hinst, MAKEINTRESOURCE(213), hwnd, AboutProc);
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
}
return 0;
case IDC_GENERATE:
+ if (HIWORD(wParam) != BN_CLICKED &&
+ HIWORD(wParam) != BN_DOUBLECLICKED)
+ break;
state =
(struct MainDlgState *) GetWindowLong(hwnd, GWL_USERDATA);
if (!state->generation_thread_exists) {
state->entropy_required = (state->keysize / 2) * 2;
state->entropy_got = 0;
state->entropy_size = (state->entropy_required *
- sizeof(*state->entropy));
- state->entropy = smalloc(state->entropy_size);
+ sizeof(unsigned));
+ state->entropy = snewn(state->entropy_required, unsigned);
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETRANGE, 0,
MAKELPARAM(0, state->entropy_required));
case IDC_SAVE:
case IDC_EXPORT_OPENSSH:
case IDC_EXPORT_SSHCOM:
+ if (HIWORD(wParam) != BN_CLICKED)
+ break;
state =
(struct MainDlgState *) GetWindowLong(hwnd, GWL_USERDATA);
if (state->key_exists) {
}
if (state->ssh2) {
+ Filename fn = filename_from_str(filename);
if (type != realtype)
- ret = export_ssh2(filename, type, &state->ssh2key,
+ ret = export_ssh2(&fn, type, &state->ssh2key,
*passphrase ? passphrase : NULL);
else
- ret = ssh2_save_userkey(filename, &state->ssh2key,
+ ret = ssh2_save_userkey(&fn, &state->ssh2key,
*passphrase ? passphrase :
NULL);
} else {
+ Filename fn = filename_from_str(filename);
if (type != realtype)
- ret = export_ssh1(filename, type, &state->key,
+ ret = export_ssh1(&fn, type, &state->key,
*passphrase ? passphrase : NULL);
else
- ret = saversakey(filename, &state->key,
+ ret = saversakey(&fn, &state->key,
*passphrase ? passphrase : NULL);
}
if (ret <= 0) {
}
break;
case IDC_SAVEPUB:
+ if (HIWORD(wParam) != BN_CLICKED)
+ break;
state =
(struct MainDlgState *) GetWindowLong(hwnd, GWL_USERDATA);
if (state->key_exists) {
break;
case IDC_LOAD:
case IDC_IMPORT:
+ if (HIWORD(wParam) != BN_CLICKED)
+ break;
state =
(struct MainDlgState *) GetWindowLong(hwnd, GWL_USERDATA);
if (!state->generation_thread_exists) {
char filename[FILENAME_MAX];
if (prompt_keyfile(hwnd, "Load private key:",
filename, 0, LOWORD(wParam)==IDC_LOAD))
- load_key_file(hwnd, state, filename,
+ load_key_file(hwnd, state, filename_from_str(filename),
LOWORD(wParam) != IDC_LOAD);
}
break;
* the user will immediately want to change it, which is
* what we want :-)
*/
- *state->commentptr = smalloc(30);
+ *state->commentptr = snewn(30, char);
{
time_t t;
struct tm *tm;