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

Diff of /trunk/Src/wptKeyPropsDlg.cpp

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

revision 48 by werner, Mon Oct 31 21:14:11 2005 UTC revision 174 by twoaday, Thu Feb 2 08:20:50 2006 UTC
# Line 1  Line 1 
1  /* wptKeyPropsDlg.cpp - WinPT key properties dialog  /* wptKeyPropsDlg.cpp - WinPT key properties dialog
2   *      Copyright (C) 2000, 2001, 2002, 2003, 2005 Timo Schulz   *      Copyright (C) 2000, 2001, 2002, 2003, 2005, 2006 Timo Schulz
3   *   *
4   * This file is part of WinPT.   * This file is part of WinPT.
5   *   *
# Line 17  Line 17 
17   * along with WinPT; if not, write to the Free Software Foundation,   * along with WinPT; if not, write to the Free Software Foundation,
18   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19   */   */
   
20  #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
21  #include <config.h>  #include <config.h>
22  #endif  #endif
# Line 52  do_check_key (gpgme_key_t key) Line 51  do_check_key (gpgme_key_t key)
51    
52  /* Convert a trust integer into a string representation. */  /* Convert a trust integer into a string representation. */
53  static const char*  static const char*
54  ownertrust_to_string (int val)  ownertrust_to_string (int val, bool is_keypair)
55  {  {
56      const char *inf;      const char *inf;
57      int id = val;      int id = val;
# Line 63  ownertrust_to_string (int val) Line 62  ownertrust_to_string (int val)
62      case 3: inf = _("I trust marginally"); break;      case 3: inf = _("I trust marginally"); break;
63      case 4: inf = _("I trust fully");      break;      case 4: inf = _("I trust fully");      break;
64      case 5:      case 5:
65      case 6: inf = _("I trust ultimately"); break;      case 6:
66            if (is_keypair)
67                inf = _("I trust ultimately (implicit)");
68            else
69                inf = _("I trust ultimately"); break;
70      default:inf = _("Unknown");            break;      default:inf = _("Unknown");            break;
71      }      }
72            
# Line 76  ownertrust_to_string (int val) Line 79  ownertrust_to_string (int val)
79  static const char*  static const char*
80  get_photo_tmpname (HWND dlg)  get_photo_tmpname (HWND dlg)
81  {  {
82      static char buf[64];      static char buf[MAX_PATH+128+1];
83        char name[64];
84    
85        _snprintf (name, sizeof (name)-1, "winpt_photo_%08lX.tmp", (DWORD)dlg);
86        GetTempPath (sizeof (buf)-128, buf);
87        strcat (buf, name);
88    
     _snprintf (buf, sizeof (buf)-1, "winpt_photo_%08lX.tmp", (DWORD)dlg);  
89      return buf;      return buf;
90  }  }
91    
92    
93    static void
94    draw_nophoto_img (HWND dlg)
95    {
96        /*..
97        n = DrawText (hdc, "No Photo-ID", -1, &r, DT_LEFT);
98        ..*/
99    }
100    
101    
102  /* Load the photo from the key @key */  /* Load the photo from the key @key */
103  static int  static int
104  keyprops_load_photo (HWND dlg, gpgme_key_t key, gpgme_validity_t *r_valid)  keyprops_load_photo (HWND dlg, gpgme_key_t key, gpgme_validity_t *r_valid)
# Line 100  keyprops_load_photo (HWND dlg, gpgme_key Line 116  keyprops_load_photo (HWND dlg, gpgme_key
116          get_uat_validity (key->subkeys->keyid, &k.ext->attrib.validity);          get_uat_validity (key->subkeys->keyid, &k.ext->attrib.validity);
117      *r_valid = k.ext->attrib.validity;      *r_valid = k.ext->attrib.validity;
118    
119      if (!img || !imglen)      if (!img || !imglen) {
120            draw_nophoto_img (dlg);
121          return -1;          return -1;
122        }
123    
124      f = fopen (get_photo_tmpname (dlg), "wb");      f = fopen (get_photo_tmpname (dlg), "wb");
125      if (f) {      if (f) {
126          for (pos = 0; img[pos] != 0x10; pos++)          //for (pos = 0; img[pos] != 0x10; pos++)
127                  ;          //      ;
128          pos += 16;          pos += 16;
129          fwrite (img + pos, 1, imglen - pos, f);          fwrite (img + pos, 1, imglen - pos, f);
         fwrite (img, 1, imglen, f);  
130          fclose (f);          fclose (f);
131      }      }
132      return 0;      return 0;
# Line 156  get_validity (gpgme_key_t key) Line 174  get_validity (gpgme_key_t key)
174  static const char*  static const char*
175  get_pref_cipher (winpt_key_t k)  get_pref_cipher (winpt_key_t k)
176  {  {
     const char *sym_prefs=NULL;      
   
177      if (k->is_v3)      if (k->is_v3)
178          return "IDEA";          return "IDEA";
179      if (!k->ext->sym_prefs)      if (!k->ext->sym_prefs)
# Line 210  display_key_info (HWND dlg, winpt_key_t Line 226  display_key_info (HWND dlg, winpt_key_t
226      gpgme_key_t sk, key;      gpgme_key_t sk, key;
227      char info[512];      char info[512];
228      const char *inf;      const char *inf;
229      u32 created, expires;          u32 created, expires;
230    
231      memset (&k2, 0, sizeof (k2));            memset (&k2, 0, sizeof (k2));      
232      if (k->key_pair)      if (k->key_pair)
233          winpt_get_seckey (k->keyid, &k2);          winpt_get_seckey (k->keyid, &k2);
234      else          else    
235          winpt_get_pubkey (k->keyid, &k2);          winpt_get_pubkey (k->keyid, &k2);
236      sk = k2.ctx;              sk = k2.ctx;
237      if (sk)      if (sk)
238          k->is_protected = k2.is_protected;          k->is_protected = k2.is_protected;
239      if (get_pubkey (k->keyid, &key))      if (get_pubkey (k->keyid, &key))
# Line 228  display_key_info (HWND dlg, winpt_key_t Line 244  display_key_info (HWND dlg, winpt_key_t
244                 _("Type: %s\r\n"                 _("Type: %s\r\n"
245                 "Key ID: %s\r\n"                 "Key ID: %s\r\n"
246                 "Algorithm: %s\r\n"                 "Algorithm: %s\r\n"
247                 "Size: %s\r\n"                 "Size: %s bits\r\n"
248                 "Created: %s\r\n"                 "Created: %s\r\n"
249                 "Expires: %s\r\n"                 "Expires: %s\r\n"
250                 "Validity: %s\r\n"                 "Validity: %s\r\n"
# Line 246  display_key_info (HWND dlg, winpt_key_t Line 262  display_key_info (HWND dlg, winpt_key_t
262    
263      SetDlgItemText (dlg, IDC_KEYPROPS_INFO, info);      SetDlgItemText (dlg, IDC_KEYPROPS_INFO, info);
264      SetDlgItemText (dlg, IDC_KEYPROPS_FPR, get_key_fpr (key));        SetDlgItemText (dlg, IDC_KEYPROPS_FPR, get_key_fpr (key));  
265      inf = ownertrust_to_string (key->owner_trust);      inf = ownertrust_to_string (key->owner_trust, k->key_pair);
266      SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);      SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);
267    
268      *r_key = key;      *r_key = key;
# Line 262  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 278  keyprops_dlg_proc (HWND dlg, UINT msg, W
278      gpgme_validity_t valid;      gpgme_validity_t valid;
279      refresh_cache_s rcs = {0};      refresh_cache_s rcs = {0};
280      const char *inf;      const char *inf;
281        int cancel = 0;
282      int rc;      int rc;
283            
284      /* XXX: static variable (k) prevent that the dialog can      /* XXX: static variable (k) prevent that the dialog can
# Line 271  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 288  keyprops_dlg_proc (HWND dlg, UINT msg, W
288          if (!lparam)          if (!lparam)
289              dlg_fatal_error (dlg, "Could not get dialog param!");              dlg_fatal_error (dlg, "Could not get dialog param!");
290          k = (winpt_key_t)lparam;          k = (winpt_key_t)lparam;
         #ifndef LANG_DE  
291          SetWindowText (dlg, _("Key Properties"));          SetWindowText (dlg, _("Key Properties"));
292          SetDlgItemText (dlg, IDC_KEYPROPS_OT_CHANGE, _("&Change"));          SetDlgItemText (dlg, IDC_KEYPROPS_OT_CHANGE, _("&Change"));
293          SetDlgItemText (dlg, IDC_KEYPROPS_REVOKERS, _("&Revokers"));          SetDlgItemText (dlg, IDC_KEYPROPS_REVOKERS, _("&Revokers"));
294          SetDlgItemText (dlg, IDC_KEYPROPS_CHANGE_PWD, _("Change &Passwd"));          SetDlgItemText (dlg, IDC_KEYPROPS_CHANGE_PWD, _("Change &Password"));
295          SetDlgItemText (dlg, IDC_KEYPROPS_OTINF, _("Ownertrust"));          SetDlgItemText (dlg, IDC_KEYPROPS_OTINF, _("Ownertrust"));
         #endif    
296    
297          display_key_info (dlg, k, &key);          display_key_info (dlg, k, &key);
298          if (!keyprops_load_photo (dlg, key, &valid)) {          if (!keyprops_load_photo (dlg, key, &valid)) {
# Line 289  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 304  keyprops_dlg_proc (HWND dlg, UINT msg, W
304              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_CHANGE_PWD), TRUE);              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_CHANGE_PWD), TRUE);
305          if (check_for_desig_rev (key))          if (check_for_desig_rev (key))
306              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_REVOKERS), TRUE);              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_REVOKERS), TRUE);
307            if (key->revoked || key->expired)
308                EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_OT_CHANGE), FALSE);
309          center_window (dlg, NULL);          center_window (dlg, NULL);
310          SetForegroundWindow (dlg);                SetForegroundWindow (dlg);      
311          return TRUE;          return TRUE;
# Line 304  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 321  keyprops_dlg_proc (HWND dlg, UINT msg, W
321    
322      case WM_SYSCOMMAND:      case WM_SYSCOMMAND:
323          if (LOWORD (wparam) == SC_CLOSE)          if (LOWORD (wparam) == SC_CLOSE)
324              EndDialog (dlg, TRUE);              EndDialog (dlg, FALSE);
325          return FALSE;          return FALSE;
326                    
327      case WM_COMMAND:      case WM_COMMAND:
# Line 312  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 329  keyprops_dlg_proc (HWND dlg, UINT msg, W
329          case IDOK:          case IDOK:
330              EndDialog (dlg, TRUE);              EndDialog (dlg, TRUE);
331              return TRUE;              return TRUE;
332    
333            case IDCANCEL:
334                EndDialog (dlg, FALSE);
335                return TRUE;
336                            
337          case IDC_KEYPROPS_OT_CHANGE:          case IDC_KEYPROPS_OT_CHANGE:
338              if (do_check_key (key)) {              if (do_check_key (key)) {
# Line 320  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 341  keyprops_dlg_proc (HWND dlg, UINT msg, W
341                                  _("WinPT Warning"), MB_ERR);                                  _("WinPT Warning"), MB_ERR);
342                  return TRUE;                  return TRUE;
343              }              }
344              if( !k->key_pair && key->uids->validity < 3 ) {              if (!k->key_pair && key->uids->validity < 3) {
345                  rc = msg_box( dlg, _("This is a non-valid key.\n"                  rc = msg_box (dlg, _("This is a non-valid key.\n"
346                                       "Modifying the ownertrust has no effect on such keys.\n\n"                                       "Modifying the ownertrust has no effect on such keys.\n\n"
347                                       "Do you really want to continue?"),                                       "Do you really want to continue?"),
348                                       _("WinPT Warning"), MB_ICONWARNING|MB_YESNO );                                       _("WinPT Warning"), MB_ICONWARNING|MB_YESNO);
349                  if (rc == IDNO)                  if (rc == IDNO)
350                      return TRUE;                      return TRUE;
351              }              }
352              //GetDlgItemText (dlg, IDC_KEYPROPS_OT, info, sizeof info -1);              rc = dialog_box_param (glob_hinst,
353              dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_OWNERTRUST,                                     (LPCSTR)IDD_WINPT_KEYEDIT_OWNERTRUST,
354                                dlg, (DLGPROC)keyedit_ownertrust_dlg_proc,                                      dlg, keyedit_ownertrust_dlg_proc,
355                                (LPARAM)k, _("Change Ownertrust"),                                     (LPARAM)k, _("Change Ownertrust"),
356                                IDS_WINPT_KEYEDIT_OWNERTRUST);                                      IDS_WINPT_KEYEDIT_OWNERTRUST);
357              if (k->callback.new_val == -1) { /* Cancel */              if (rc == FALSE) /* Cancel */
358                  EndDialog (dlg, FALSE);                  return TRUE;
                 break;  
             }  
359    
360              inf = ownertrust_to_string (k->callback.new_val);              inf = ownertrust_to_string (k->callback.new_val, k->key_pair);
361              SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);              SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);
362              msg_box (dlg, _("Ownertrust successfully changed."),              msg_box (dlg, _("Ownertrust successfully changed."),
363                       _("GnuPG Status"), MB_OK);                       _("GnuPG Status"), MB_OK);
364                            k->update = 1;
             /* XXX: modified ownertrust values can effect the entire  
                     WoT so we reload the cache. But this is very slow. */  
             memset (&rcs, 0, sizeof (rcs));  
             rcs.kr_reload = 1; rcs.kr_update = 1; /* reload only keylist */  
             DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg,  
                             keycache_dlg_proc, (LPARAM)&rcs);  
365              return TRUE;              return TRUE;
366                            
367          case IDC_KEYPROPS_CHANGE_PWD:          case IDC_KEYPROPS_CHANGE_PWD:
# Line 356  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 369  keyprops_dlg_proc (HWND dlg, UINT msg, W
369              return TRUE;              return TRUE;
370    
371          case IDC_KEYPROPS_REVOKERS:          case IDC_KEYPROPS_REVOKERS:
372              dialog_box_param (glob_hinst, (LPCTSTR)IDD_WINPT_KEYREVOKERS, dlg,              k->update = dialog_box_param (
373                                key_revokers_dlg_proc, (LPARAM)key,                  glob_hinst, (LPCTSTR)IDD_WINPT_KEYREVOKERS, dlg,
374                                _("Key Revokers"), IDS_WINPT_KEY_REVOKERS);                  key_revokers_dlg_proc, (LPARAM)key,
375                    _("Key Revokers"), IDS_WINPT_KEY_REVOKERS);
376              break;              break;
377          }          }
378      }      }

Legend:
Removed from v.48  
changed lines
  Added in v.174

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26