projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a
[u/mdw/putty]
/
puttygen.c
diff --git
a/puttygen.c
b/puttygen.c
index
fd713e0
..
e16b4f3
100644
(file)
--- a/
puttygen.c
+++ b/
puttygen.c
@@
-14,6
+14,10
@@
#include "ssh.h"
#include "winstuff.h"
#include "ssh.h"
#include "winstuff.h"
+#ifdef MSVC4
+#define ICON_BIG 1
+#endif
+
#define WM_DONEKEY (WM_XUSER + 1)
#define DEFAULT_KEYSIZE 1024
#define WM_DONEKEY (WM_XUSER + 1)
#define DEFAULT_KEYSIZE 1024
@@
-293,7
+297,7
@@
static int CALLBACK AboutProc(HWND hwnd, UINT msg,
return 0;
case 101:
EnableWindow(hwnd, 0);
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;
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
@@
-385,8
+389,8
@@
static void setupbigedit2(HWND hwnd, int id, int idstatic,
int i;
pub_blob = key->alg->public_blob(key->data, &pub_len);
int i;
pub_blob = key->alg->public_blob(key->data, &pub_len);
- buffer = s
malloc
(strlen(key->alg->name) + 4 * ((pub_len + 2) / 3) +
-
strlen(key->comment) + 3
);
+ buffer = s
newn
(strlen(key->alg->name) + 4 * ((pub_len + 2) / 3) +
+
strlen(key->comment) + 3, char
);
strcpy(buffer, key->alg->name);
p = buffer + strlen(buffer);
*p++ = ' ';
strcpy(buffer, key->alg->name);
p = buffer + strlen(buffer);
*p++ = ' ';
@@
-621,7
+625,7
@@
void ui_set_state(HWND hwnd, struct MainDlgState *state, int status)
}
void load_key_file(HWND hwnd, struct MainDlgState *state,
}
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;
{
char passphrase[PASSPHRASE_MAXLEN];
int needs_pass;
@@
-632,7
+636,7
@@
void load_key_file(HWND hwnd, struct MainDlgState *state,
struct RSAKey newkey1;
struct ssh2_userkey *newkey2 = NULL;
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)) {
if (type != SSH_KEYTYPE_SSH1 &&
type != SSH_KEYTYPE_SSH2 &&
!import_possible(type)) {
@@
-652,12
+656,12
@@
void load_key_file(HWND hwnd, struct MainDlgState *state,
comment = NULL;
if (realtype == SSH_KEYTYPE_SSH1)
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 =
else if (realtype == SSH_KEYTYPE_SSH2)
needs_pass =
- ssh2_userkey_encrypted(filename, &comment);
+ ssh2_userkey_encrypted(
&
filename, &comment);
else
else
- needs_pass = import_encrypted(filename, realtype,
+ needs_pass = import_encrypted(
&
filename, realtype,
&comment);
pps.passphrase = passphrase;
pps.comment = comment;
&comment);
pps.passphrase = passphrase;
pps.comment = comment;
@@
-676,17
+680,17
@@
void load_key_file(HWND hwnd, struct MainDlgState *state,
*passphrase = '\0';
if (type == SSH_KEYTYPE_SSH1) {
if (realtype == type)
*passphrase = '\0';
if (type == SSH_KEYTYPE_SSH1) {
if (realtype == type)
- ret = loadrsakey(filename, &newkey1,
+ ret = loadrsakey(
&
filename, &newkey1,
passphrase);
else
passphrase);
else
- ret = import_ssh1(filename, realtype,
+ ret = import_ssh1(
&
filename, realtype,
&newkey1, passphrase);
} else {
if (realtype == type)
&newkey1, passphrase);
} else {
if (realtype == type)
- newkey2 = ssh2_load_userkey(filename,
+ newkey2 = ssh2_load_userkey(
&
filename,
passphrase);
else
passphrase);
else
- newkey2 = import_ssh2(filename, realtype,
+ newkey2 = import_ssh2(
&
filename, realtype,
passphrase);
if (newkey2 == SSH2_WRONG_PASSPHRASE)
ret = -1;
passphrase);
if (newkey2 == SSH2_WRONG_PASSPHRASE)
ret = -1;
@@
-813,8
+817,10
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
*/
}
requested_help = FALSE;
*/
}
requested_help = FALSE;
+ SendMessage(hwnd, WM_SETICON, (WPARAM) ICON_BIG,
+ (LPARAM) LoadIcon(hinst, MAKEINTRESOURCE(200)));
- state = s
malloc(sizeof(*state)
);
+ state = s
new(struct MainDlgState
);
state->generation_thread_exists = FALSE;
state->collecting_entropy = FALSE;
state->entropy = NULL;
state->generation_thread_exists = FALSE;
state->collecting_entropy = FALSE;
state->entropy = NULL;
@@
-940,7
+946,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
* Load a key file if one was provided on the command line.
*/
if (cmdline_keyfile)
* 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:
return 1;
case WM_MOUSEMOVE:
@@
-968,7
+974,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
MAKELPARAM(0, PROGRESSRANGE));
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETPOS, 0, 0);
MAKELPARAM(0, PROGRESSRANGE));
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETPOS, 0, 0);
- params = s
malloc(sizeof(*params)
);
+ params = s
new(struct rsa_key_thread_params
);
params->progressbar = GetDlgItem(hwnd, IDC_PROGRESS);
params->dialog = hwnd;
params->keysize = state->keysize;
params->progressbar = GetDlgItem(hwnd, IDC_PROGRESS);
params->dialog = hwnd;
params->keysize = state->keysize;
@@
-1015,7
+1021,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
int len = GetWindowTextLength(editctl);
if (*state->commentptr)
sfree(*state->commentptr);
int len = GetWindowTextLength(editctl);
if (*state->commentptr)
sfree(*state->commentptr);
- *state->commentptr = s
malloc(len + 1
);
+ *state->commentptr = s
newn(len + 1, char
);
GetWindowText(editctl, *state->commentptr, len + 1);
if (state->ssh2) {
setupbigedit2(hwnd, IDC_KEYDISPLAY, IDC_PKSTATIC,
GetWindowText(editctl, *state->commentptr, len + 1);
if (state->ssh2) {
setupbigedit2(hwnd, IDC_KEYDISPLAY, IDC_PKSTATIC,
@@
-1029,7
+1035,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
break;
case IDC_ABOUT:
EnableWindow(hwnd, 0);
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;
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
@@
-1044,6
+1050,9
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
}
return 0;
case IDC_GENERATE:
}
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 =
(struct MainDlgState *) GetWindowLong(hwnd, GWL_USERDATA);
if (!state->generation_thread_exists) {
@@
-1087,8
+1096,8
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
state->entropy_required = (state->keysize / 2) * 2;
state->entropy_got = 0;
state->entropy_size = (state->entropy_required *
state->entropy_required = (state->keysize / 2) * 2;
state->entropy_got = 0;
state->entropy_size = (state->entropy_required *
- sizeof(
*state->entropy
));
- state->entropy = s
malloc(state->entropy_size
);
+ sizeof(
unsigned
));
+ state->entropy = s
newn(state->entropy_required, unsigned
);
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETRANGE, 0,
MAKELPARAM(0, state->entropy_required));
SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETRANGE, 0,
MAKELPARAM(0, state->entropy_required));
@@
-1166,19
+1175,21
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
}
if (state->ssh2) {
}
if (state->ssh2) {
+ Filename fn = filename_from_str(filename);
if (type != realtype)
if (type != realtype)
- ret = export_ssh2(
filename
, type, &state->ssh2key,
+ ret = export_ssh2(
&fn
, type, &state->ssh2key,
*passphrase ? passphrase : NULL);
else
*passphrase ? passphrase : NULL);
else
- ret = ssh2_save_userkey(
filename
, &state->ssh2key,
+ ret = ssh2_save_userkey(
&fn
, &state->ssh2key,
*passphrase ? passphrase :
NULL);
} else {
*passphrase ? passphrase :
NULL);
} else {
+ Filename fn = filename_from_str(filename);
if (type != realtype)
if (type != realtype)
- ret = export_ssh1(
filename
, type, &state->key,
+ ret = export_ssh1(
&fn
, type, &state->key,
*passphrase ? passphrase : NULL);
else
*passphrase ? passphrase : NULL);
else
- ret = saversakey(
filename
, &state->key,
+ ret = saversakey(
&fn
, &state->key,
*passphrase ? passphrase : NULL);
}
if (ret <= 0) {
*passphrase ? passphrase : NULL);
}
if (ret <= 0) {
@@
-1228,7
+1239,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
char filename[FILENAME_MAX];
if (prompt_keyfile(hwnd, "Load private key:",
filename, 0, LOWORD(wParam)==IDC_LOAD))
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;
LOWORD(wParam) != IDC_LOAD);
}
break;
@@
-1259,7
+1270,7
@@
static int CALLBACK MainDlgProc(HWND hwnd, UINT msg,
* the user will immediately want to change it, which is
* what we want :-)
*/
* the user will immediately want to change it, which is
* what we want :-)
*/
- *state->commentptr = s
malloc(30
);
+ *state->commentptr = s
newn(30, char
);
{
time_t t;
struct tm *tm;
{
time_t t;
struct tm *tm;