Add a PuTTYgen icon
[sgt/putty] / puttygen.c
index 6a72121..9b36090 100644 (file)
@@ -22,8 +22,6 @@
 
 /*
  * TODO:
- *  - prompt before overwriting an existing file
- *  - check the return value from saversakey()
  *  - test the generated keys for actual working-RSA-key-hood
  *  - variable key size
  */
@@ -509,10 +507,25 @@ static int CALLBACK MainDlgProc (HWND hwnd, UINT msg,
                 }
                 if (prompt_keyfile(hwnd, "Save private key as:",
                                    filename, 1)) {
-                    /* FIXME: prompt before overwriting */
-                    saversakey(filename, &state->key, &state->aux,
-                               *passphrase ? passphrase : NULL);
-                    /* FIXME: check return value */
+                   int ret;
+                   FILE *fp = fopen(filename, "r");
+                   if (fp) {
+                       char buffer[FILENAME_MAX+80];
+                       fclose(fp);
+                       sprintf(buffer, "Overwrite existing file\n%.*s?",
+                               FILENAME_MAX, filename);
+                       ret = MessageBox(hwnd, buffer, "PuTTYgen Warning",
+                                        MB_YESNO | MB_ICONWARNING);
+                       if (ret != IDYES)
+                           break;
+                   }
+                    ret = saversakey(filename, &state->key, &state->aux,
+                                    *passphrase ? passphrase : NULL);
+                   if (ret <= 0) {
+                       MessageBox(hwnd, "Unable to save key file",
+                                  "PuTTYgen Error",
+                                  MB_OK | MB_ICONERROR);
+                   }
                 }
             }
             break;