/[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 208 by twoaday, Mon May 1 12:22:18 2006 UTC revision 211 by twoaday, Sun May 7 12:36:48 2006 UTC
# Line 83  get_photo_tmpname (HWND dlg) Line 83  get_photo_tmpname (HWND dlg)
83      char name[64];      char name[64];
84    
85      _snprintf (name, sizeof (name)-1, "winpt_photo_%08lX.tmp", (DWORD)dlg);      _snprintf (name, sizeof (name)-1, "winpt_photo_%08lX.tmp", (DWORD)dlg);
86      get_temp_name (buf, DIM (buf), name);      get_temp_name (buf, DIM (buf)-1, name);
87      return buf;      return buf;
88  }  }
89    
# Line 107  keyprops_load_photo (HWND dlg, gpgme_key Line 107  keyprops_load_photo (HWND dlg, gpgme_key
107      DWORD imglen = 0;      DWORD imglen = 0;
108      int pos=0;      int pos=0;
109    
110      winpt_get_pubkey (key->subkeys->keyid, &k);      if (winpt_get_pubkey (key->subkeys->keyid, &k))
111            BUG (0);
112      img = k.ext->attrib.d;      img = k.ext->attrib.d;
113      imglen = k.ext->attrib.len;      imglen = k.ext->attrib.len;
114      if (!k.ext->attrib.validity)      if (!k.ext->attrib.validity)
# Line 121  keyprops_load_photo (HWND dlg, gpgme_key Line 122  keyprops_load_photo (HWND dlg, gpgme_key
122    
123      f = fopen (get_photo_tmpname (dlg), "wb");      f = fopen (get_photo_tmpname (dlg), "wb");
124      if (f) {      if (f) {
         //for (pos = 0; img[pos] != 0x10; pos++)  
         //      ;  
125          pos += 16;          pos += 16;
126          fwrite (img + pos, 1, imglen - pos, f);          fwrite (img + pos, 1, imglen - pos, f);
127          fclose (f);          fclose (f);
# Line 154  keyprops_show_photo (HWND dlg) Line 153  keyprops_show_photo (HWND dlg)
153  static const char*  static const char*
154  get_validity (gpgme_key_t key)  get_validity (gpgme_key_t key)
155  {  {
156      int val;      if (key->expired)
     val = key->expired;  
     if (val)  
157          return _("Expired");              return _("Expired");    
158      val = key->revoked;      if (key->revoked)
     if (val)  
159          return _("Revoked");          return _("Revoked");
160      val = key->disabled;      if (key->disabled)
     if (val)  
161          return _("Disabled");          return _("Disabled");
162      return get_key_trust2 (NULL, key->uids->validity, 0, 0);      return get_key_trust2 (NULL, key->uids->validity, 0, 0);
163  }  }
# Line 174  get_pref_cipher (winpt_key_t k) Line 169  get_pref_cipher (winpt_key_t k)
169  {  {
170      if (k->is_v3)      if (k->is_v3)
171          return "IDEA";          return "IDEA";
172      if (!k->ext->sym_prefs)      if (!k->ext || !k->ext->sym_prefs)
173          return "3DES";          return "3DES";
174      switch (*k->ext->sym_prefs) {      switch (*k->ext->sym_prefs) {
175      case 1: return "IDEA";      case 1: return "IDEA";
176      case 2: return "3DES";      case 2: return "3DES";
177      case 3: return "CAST5";      case 3: return "CAST5";
178      case 4: return "Blowfish";      case 4: return "Blowfish";
179      case 7:      case 7: return "AES128";
180      case 8:      case 8: return "AES192";
181      case 9: return "AES";      case 9: return "AES256";
182      case 10:return "Twofish";      case 10:return "Twofish";
183      }      }
184      return "Unknown";      return "Unknown";
# Line 215  get_card_type (winpt_key_t k) Line 210  get_card_type (winpt_key_t k)
210  }  }
211    
212    
213    /* Return 1 if at least one user-ID is valid. */
214    static int
215    key_is_valid (gpgme_key_t k)
216    {
217        gpgme_user_id_t u;
218    
219        for (u=k->uids; u; u=u->next) {
220            if (u->validity >= GPGME_VALIDITY_MARGINAL)
221                return 1;
222        }
223        return 0;
224    }
225    
226    
227    
228  /* Display the key information for key @k.  /* Display the key information for key @k.
229     Return value: gpgme key on success. */     Return value: gpgme key on success. */
230  static void  static void
231  display_key_info (HWND dlg, winpt_key_t k, gpgme_key_t *r_key)  display_key_info (HWND dlg, winpt_key_t k)
232  {  {
233      gpgme_key_t key;      gpgme_key_t key;
234      struct winpt_key_s pk, sk;      struct winpt_key_s sk;
235      char info[512];      char info[512];
236      const char *inf;      const char *inf;
237      DWORD created, expires;      DWORD created, expires;
238    
239      memset (&pk, 0, sizeof (pk));      gpg_keycache_update_attr (k->ext, KC_ATTR_PREFSYM, 0);
     if (winpt_get_pubkey (k->keyid, &pk))  
         BUG (0);  
     gpg_keycache_update_attr (pk.ext, KC_ATTR_PREFSYM, 0);  
240      memset (&sk, 0, sizeof (sk));            memset (&sk, 0, sizeof (sk));      
241      if (k->key_pair && !winpt_get_seckey (k->keyid, &sk))      if (k->key_pair && !winpt_get_seckey (k->keyid, &sk))
242          k->is_protected = sk.is_protected;          k->is_protected = sk.is_protected;
243      key = pk.ext->key;      key = k->ext->key;
244      created = key->subkeys->timestamp;      created = key->subkeys->timestamp;
245      expires = key->subkeys->expires;      expires = key->subkeys->expires;
246      _snprintf (info, DIM (info)-1,      _snprintf (info, DIM (info)-1,
247                 _("Type: %s\r\n"                 _("Type: %s\r\n"
248                 "Key ID: %s\r\n"                 "Key ID: 0x%s\r\n"
249                 "Algorithm: %s\r\n"                 "Algorithm: %s\r\n"
250                 "Size: %s bits\r\n"                 "Size: %s bits\r\n"
251                 "Created: %s\r\n"                 "Created: %s\r\n"
# Line 253  display_key_info (HWND dlg, winpt_key_t Line 260  display_key_info (HWND dlg, winpt_key_t
260                 get_key_created (created),                 get_key_created (created),
261                 get_key_expire_date (expires),                 get_key_expire_date (expires),
262                 get_validity (key),                 get_validity (key),
263                 get_pref_cipher (&pk),                 get_pref_cipher (k),
264                 get_card_type (&sk));                 get_card_type (&sk));
265    
266      SetDlgItemText (dlg, IDC_KEYPROPS_INFO, info);      SetDlgItemText (dlg, IDC_KEYPROPS_INFO, info);
267      SetDlgItemText (dlg, IDC_KEYPROPS_FPR, get_key_fpr (key));        SetDlgItemText (dlg, IDC_KEYPROPS_FPR, get_key_fpr (key));  
268      inf = ownertrust_to_string (key->owner_trust, k->key_pair);      inf = ownertrust_to_string (key->owner_trust, k->key_pair);
269      SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);      SetDlgItemText (dlg, IDC_KEYPROPS_OT, inf);
   
     *r_key = key;  
270  }  }
271    
272    
# Line 270  BOOL CALLBACK Line 275  BOOL CALLBACK
275  keyprops_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  keyprops_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
276  {  {
277      static winpt_key_t k;      static winpt_key_t k;
     static gpgme_key_t key;  
278      gpgme_validity_t valid;      gpgme_validity_t valid;
279      const char *inf;      const char *inf;
280      int rc;      int rc;
# Line 288  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 292  keyprops_dlg_proc (HWND dlg, UINT msg, W
292          SetDlgItemText (dlg, IDC_KEYPROPS_CHANGE_PWD, _("Change &Password"));          SetDlgItemText (dlg, IDC_KEYPROPS_CHANGE_PWD, _("Change &Password"));
293          SetDlgItemText (dlg, IDC_KEYPROPS_OTINF, _("Ownertrust"));          SetDlgItemText (dlg, IDC_KEYPROPS_OTINF, _("Ownertrust"));
294                    
295          display_key_info (dlg, k, &key);          display_key_info (dlg, k);
296          if (!keyprops_load_photo (dlg, key, &valid)) {          if (!keyprops_load_photo (dlg, k->ctx, &valid)) {
297              k->has_photo = 1;                k->has_photo = 1;  
298              if (valid < GPGME_VALIDITY_MARGINAL)              if (valid < GPGME_VALIDITY_MARGINAL)
299                  SetDlgItemText (dlg, IDC_KEYPROPS_IMGINF, _("Photo-ID not validated."));                  SetDlgItemText (dlg, IDC_KEYPROPS_IMGINF, _("Photo-ID not validated."));
300          }          }
301          if (k->key_pair)          if (k->key_pair)
302              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_CHANGE_PWD), TRUE);              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_CHANGE_PWD), TRUE);
303          if (check_for_desig_rev (key))          if (check_for_desig_rev (k->ctx))
304              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_REVOKERS), TRUE);              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_REVOKERS), TRUE);
305          if (key->revoked || key->expired)          if (k->ctx->revoked || k->ctx->expired)
306              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_OT_CHANGE), FALSE);              EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_OT_CHANGE), FALSE);
307          center_window (dlg, NULL);          center_window (dlg, NULL);
308          SetForegroundWindow (dlg);                SetForegroundWindow (dlg);      
# Line 329  keyprops_dlg_proc (HWND dlg, UINT msg, W Line 333  keyprops_dlg_proc (HWND dlg, UINT msg, W
333              return TRUE;              return TRUE;
334                            
335          case IDC_KEYPROPS_OT_CHANGE:          case IDC_KEYPROPS_OT_CHANGE:
336              if (do_check_key (key)) {              if (do_check_key (k->ctx)) {
337                  msg_box (dlg, _("The status of this key is 'revoked' or 'expired'.\n"                  msg_box (dlg, _("The status of this key is 'revoked' or 'expired'.\n"
338                                  "You cannot change the ownertrust of such keys."),                                  "You cannot change the ownertrust of such keys."),
339                                  _("WinPT Warning"), MB_ERR);                                  _("WinPT Warning"), MB_ERR);
340                  return TRUE;                  return TRUE;
341              }              }
342              if (!k->key_pair && key->uids->validity < 3) {              if (!k->key_pair && !key_is_valid (k->ctx)) {
343                  rc = msg_box (dlg, _("This is a non-valid key.\n"                  rc = msg_box (dlg, _("This is a non-valid key.\n"
344                                       "Modifying the ownertrust has no effect on such keys.\n\n"                                       "Modifying the ownertrust has no effect on such keys.\n\n"
345                                       "Do you really want to continue?"),                                       "Do you really want to continue?"),

Legend:
Removed from v.208  
changed lines
  Added in v.211

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26