/[winpt]/trunk/Src/WinPT.cpp
ViewVC logotype

Diff of /trunk/Src/WinPT.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 193 by twoaday, Sat Apr 1 12:36:35 2006 UTC revision 260 by twoaday, Wed Aug 16 10:01:30 2006 UTC
# Line 43  Line 43 
43  #include "wptUTF8.h"  #include "wptUTF8.h"
44    
45  void remove_crit_file_attrs (const char *fname, int force);  void remove_crit_file_attrs (const char *fname, int force);
46    BOOL user_is_admin (void);
47    
48    /* Global variables. */
49  HINSTANCE glob_hinst;   /* global instance for the dialogs */  HINSTANCE glob_hinst;   /* global instance for the dialogs */
50  HWND glob_hwnd;         /* global window handle for the dialogs */  HWND glob_hwnd;         /* global window handle for the dialogs */
 HWND activ_hwnd;  
51  int scard_support = 0;  int scard_support = 0;
52  int debug = 0;  int debug = 0;
53  int mobile_mode_active = 0;  int mobile_mode_active = 0;
54  int gpg_read_only = 0;  int gpg_read_only = 0;
55    int admin_user = 0;
56  char gpgver[3];  char gpgver[3];
57    /* End */
58    
59    
60  /* Load the key cache and rebuild the signature cache. */  /* Load the key cache and rebuild the signature cache. */
61  void  int
62  update_keycache (HWND hwnd)  update_keycache (HWND hwnd)
63  {  {
64        int err;
65    
66      refresh_cache_s rcs = {0};      refresh_cache_s rcs = {0};
67      rcs.kr_reload = 0;      rcs.kr_reload = 0;
68      rcs.kr_update = 1;      rcs.kr_update = 1;
69      rcs.tr_update = 1;      rcs.tr_update = 1;
70      DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, hwnd,      err = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, hwnd,
71                      keycache_dlg_proc, (LPARAM)&rcs);                      keycache_dlg_proc, (LPARAM)&rcs);
72        if (err) {
73            char *cfg = get_gnupg_config ();
74            if (cfg && check_gnupg_options (cfg, 0) == WPTERR_FILE_EXIST)
75                msg_box (NULL, _("The gpg.conf contains at least one argument which points to a non-existing file."), "WinPT", MB_ERR);
76            free_if_alloc (cfg);
77            return -1;
78        }
79        return 0;
80  }  }
81    
82    
# Line 213  check_default_key (gpg_keycache_t kc) Line 225  check_default_key (gpg_keycache_t kc)
225          err = gpg_keycache_find_key (kc, defkey, 0, &key);          err = gpg_keycache_find_key (kc, defkey, 0, &key);
226      else      else
227          msg_box (NULL, _("No useable secret key found."),          msg_box (NULL, _("No useable secret key found."),
228                   _("WinPT Error"), MB_ERR);                   _("WinPT Warning"), MB_WARN);
229      free_if_alloc (defkey);      free_if_alloc (defkey);
230      return err? -1 : 0;      return err? -1 : 0;
231  }  }
# Line 288  check_crypto_engine (void) Line 300  check_crypto_engine (void)
300     do not show any errors. */     do not show any errors. */
301  static int  static int
302  load_keyserver_conf (int quiet)  load_keyserver_conf (int quiet)
303  {  {    
     char *buf;  
304      const char *t, *conf;      const char *t, *conf;
305        char *buf;
306      int rc;      int rc;
307    
308      /* Create $APPDATA\winpt if needed. */      /* Create $APPDATA\winpt if needed. */
# Line 376  enable_mobile_mode (void) Line 388  enable_mobile_mode (void)
388      reg_prefs.expert = 0;      reg_prefs.expert = 0;
389      reg_prefs.kserv_conf = m_strdup ("keyserver.conf");      reg_prefs.kserv_conf = m_strdup ("keyserver.conf");
390      reg_prefs.no_zip_mmedia = 1;      reg_prefs.no_zip_mmedia = 1;
     reg_prefs.use_tmpfiles = 1;  
391      reg_prefs.word_wrap = 80;      reg_prefs.word_wrap = 80;
392      reg_prefs.use_viewer = 0; /* XXX */      reg_prefs.use_viewer = 0; /* XXX */
393      return 0;      return 0;
# Line 417  winpt_debug_msg (void) Line 428  winpt_debug_msg (void)
428  }  }
429    
430    
431    /* Search for insecure ElGamal keys and return the
432       number of founded keys. */
433    static int
434    count_insecure_elgkeys (void)
435    {
436        gpg_keycache_t pc;
437        gpgme_key_t key;
438        int n = 0;
439    
440        pc = keycache_get_ctx (1);
441        while (!gpg_keycache_next_key (pc, 0, &key)) {
442            if (key->subkeys->pubkey_algo == GPGME_PK_ELG)
443                n++;
444        }
445        gpg_keycache_rewind (pc);
446        return n;
447    }
448    
449    
450  /* Main entry point. */  /* Main entry point. */
451  int WINAPI  int WINAPI
452  WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int showcmd)  WinMain (HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int showcmd)
# Line 425  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 455  WinMain (HINSTANCE hinst, HINSTANCE hpre
455      HACCEL accel_tab;      HACCEL accel_tab;
456      MSG msg;      MSG msg;
457      HWND hwnd = NULL;      HWND hwnd = NULL;
458      /*WORD ver[3], ptdver[4];*/      WORD ver[3], ptdver[4];
459        const char *s;
460      int rc, ec, created = 0;      int rc, ec, created = 0;
461      int first_start = 0, start_gpgprefs = 0;      int first_start = 0, start_gpgprefs = 0;
462      int winpt_inst_found = 0;      int winpt_inst_found = 0;
463      int start_manager = 0;      int start_manager = 0;    
     const char *s;  
464    
465      glob_hinst = hinst;      glob_hinst = hinst;
466      if (cmdline && stristr (cmdline, "--stop")) {      if (cmdline && stristr (cmdline, "--stop")) {
# Line 445  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 475  WinMain (HINSTANCE hinst, HINSTANCE hpre
475      debug = 1;      debug = 1;
476      #endif      #endif
477    
     /* XXX  
478      get_file_version ("WinPT.exe", &ver[0], &ver[1], &ver[2], &ver[3]);      get_file_version ("WinPT.exe", &ver[0], &ver[1], &ver[2], &ver[3]);
479      get_file_version ("PTD.dll", &ptdver[0], &ptdver[1],      ec = get_file_version ("PTD.dll", &ptdver[0], &ptdver[1],
480                                   &ptdver[2], &ptdver[3]);                                   &ptdver[2], &ptdver[3]);
481            
482      if (ptdver[0] != ver[0] || ptdver[1] != ver[1]|| ptdver[2] != ver[2]) {      if (!ec && (ptdver[0] != ver[0] || ptdver[1] != ver[1]|| ptdver[2] != ver[2])) {
483          log_box (_("WinPT Error"), MB_ERR,          log_box (_("WinPT Error"), MB_ERR,
484                   _("The PTD.dll file has a different version than WinPT.exe\n"                   _("The PTD.dll file has a different version than WinPT.exe\n"
485                     "Please update the PTD.dll to version %d.%d.%d"),                     "Please update the PTD.dll to version %d.%d.%d"),
486                     ver[0], ver[1], ver[2]);                     ver[0], ver[1], ver[2]);
487          return 0;          return 0;
488      }      }
     */  
489    
490      if (gpg_md_selftest ()) {      if (gpg_md_selftest ()) {
491          msg_box (NULL, _("Cryptographic selftest failed."),          msg_box (NULL, _("Cryptographic selftest failed."),
# Line 484  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 512  WinMain (HINSTANCE hinst, HINSTANCE hpre
512            
513      set_default_keyserver ();      set_default_keyserver ();
514      load_gettext ();      load_gettext ();
515        admin_user = user_is_admin ();
516    
517      if (!mobile_mode_active) {      if (!mobile_mode_active) {
518          regist_inst_gnupg (1);          regist_inst_gnupg (1);
# Line 497  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 526  WinMain (HINSTANCE hinst, HINSTANCE hpre
526    
527      if (!created) {      if (!created) {
528          memset (&reg_prefs, 0, sizeof (reg_prefs));          memset (&reg_prefs, 0, sizeof (reg_prefs));
         reg_prefs.use_tmpfiles = 1; /* default */  
529          reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */          reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */
530          get_reg_winpt_prefs (&reg_prefs);          get_reg_winpt_prefs (&reg_prefs);
531          gnupg_load_config ();          gnupg_load_config ();
# Line 535  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 563  WinMain (HINSTANCE hinst, HINSTANCE hpre
563              }              }
564          }          }
565          else {          else {
566              msg_box (NULL, _("GPG home directory could not be determited."),              msg_box (NULL, _("GPG home directory could not be determined."),
567                       _("WinPT Error"), MB_ERR);                       _("WinPT Error"), MB_ERR);
568              goto start;              goto start;
569          }          }
# Line 560  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 588  WinMain (HINSTANCE hinst, HINSTANCE hpre
588              ec = msg_box (NULL,              ec = msg_box (NULL,
589                  _("Could not access and/or find the public and secret keyring.\n"                  _("Could not access and/or find the public and secret keyring.\n"
590                    "If this is an accident, quit the program and fix it.\n\n"                    "If this is an accident, quit the program and fix it.\n\n"
591                    "Continue if you want that WinPT offers you more choices.\n"),                    "Continue if you want WinPT to offer you more choices.\n"),
592                    "WinPT", MB_INFO|MB_YESNO);                    "WinPT", MB_INFO|MB_YESNO);
593              if (ec == IDYES)              if (ec == IDYES)
594                  first_start = 1;                  first_start = 1;
# Line 699  start: Line 727  start:
727              }              }
728              break;              break;
729    
730            case SETUP_CARDGEN:
731                rc = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_CARD_KEYGEN,
732                                     h, card_keygen_dlg_proc, 0);
733                if (!rc)
734                    goto start;
735                break;
736    
737          case 0: /* Cancel/Abort. */          case 0: /* Cancel/Abort. */
738          default:          default:
739              DestroyWindow (hwnd);              DestroyWindow (hwnd);
# Line 709  start: Line 744  start:
744          if (!check_crypto_engine ()) {          if (!check_crypto_engine ()) {
745              DestroyWindow (hwnd);              DestroyWindow (hwnd);
746              free_gnupg_table ();              free_gnupg_table ();
747                keycache_release (1);
748              return 0;              return 0;
749          }          }
750          if (!is_gpg4win_installed ()) {          if (!is_gpg4win_installed ()) {
# Line 718  start: Line 754  start:
754      }      }
755      else {      else {
756          gpg_keycache_t c, sec_c;          gpg_keycache_t c, sec_c;
757          update_keycache (hwnd);          if (update_keycache (hwnd)) {
758                DestroyWindow (hwnd);
759                free_gnupg_table ();
760                keycache_release (1);
761                return 0;
762            }
763          c = keycache_get_ctx (1);          c = keycache_get_ctx (1);
764          if (!c || !gpg_keycache_get_size (c)) {          if (!gpg_keycache_get_size (c)) {
             gnupg_display_error ();  
765              msg_box (hwnd, _("The keycache was not initialized or is empty.\n"              msg_box (hwnd, _("The keycache was not initialized or is empty.\n"
766                               "Please check your GPG config (keyrings, pathes...)"),                               "Please check your GPG config (keyrings, pathes...)"),
767                               _("WinPT Error"), MB_ERR);                               _("WinPT Error"), MB_ERR);
768              ec = msg_box (NULL, _("It seems that GPG is not set properly.\n"              ec = msg_box (NULL, _("It seems that GPG is not configured properly.\n"
769                                    "Do you want to start the GPG preferences dialog?"),                                    "Do you want to start the GPG preferences dialog?"),
770                              "WinPT", MB_INFO|MB_YESNO);                              "WinPT", MB_INFO|MB_YESNO);
771              if (ec == IDYES) {              if (ec == IDYES) {
# Line 736  start: Line 776  start:
776              else {              else {
777                  DestroyWindow (hwnd);                  DestroyWindow (hwnd);
778                  free_gnupg_table ();                  free_gnupg_table ();
779                    keycache_release (1);
780                  return 0;                  return 0;
781              }              }
782          }          }
# Line 746  start: Line 787  start:
787                       _("Default key (from the GPG config file) could not be found.\n"                       _("Default key (from the GPG config file) could not be found.\n"
788                         "Please check your gpg.conf or set a new default key to correct it:\n\n"                         "Please check your gpg.conf or set a new default key to correct it:\n\n"
789                         "%s: public key not found."), p? p : "[null]");                         "%s: public key not found."), p? p : "[null]");
790              free_if_alloc (p);              set_gnupg_default_key (NULL);
             DestroyWindow (hwnd);  
             free_gnupg_table ();  
             return 0;  
791          }          }
792          if (count_insecure_elgkeys ())          if (count_insecure_elgkeys ())
793              DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_ELGWARN, glob_hwnd,              DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_ELGWARN, glob_hwnd,

Legend:
Removed from v.193  
changed lines
  Added in v.260

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26