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

Diff of /trunk/Src/wptKeyEditDlgs.cpp

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

revision 133 by twoaday, Mon Jan 9 09:15:29 2006 UTC revision 150 by twoaday, Wed Jan 18 11:52:45 2006 UTC
# Line 113  static subclass_s keyedit_uid_proc; Line 113  static subclass_s keyedit_uid_proc;
113    
114  int keygen_check_date (SYSTEMTIME *st);  int keygen_check_date (SYSTEMTIME *st);
115  void get_userid_preflist (char **r_prefs, int * r_flags);  void get_userid_preflist (char **r_prefs, int * r_flags);
116  char* get_subkey_fingerprint (const char *keyid);  char* get_subkey_keyid (const char *keyid);
117    
118    
119  /* Associate each key with a combo box entry.  /* Associate each key with a combo box entry.
# Line 195  do_add_new_subkey (listview_ctrl_t lv, K Line 195  do_add_new_subkey (listview_ctrl_t lv, K
195      _snprintf (info, sizeof info-1, "%d-bit %s",      _snprintf (info, sizeof info-1, "%d-bit %s",
196                 keygen->bits,                 keygen->bits,
197                 get_key_pubalgo ((gpgme_pubkey_algo_t)keygen->algo));                 get_key_pubalgo ((gpgme_pubkey_algo_t)keygen->algo));
198      _snprintf (keyid, sizeof keyid-1, "0x%s", keygen->fpr+32);      _snprintf (keyid, sizeof keyid-1, "0x%s", keygen->fpr+8);
199      n = listview_count_items (lv, 0);      n = listview_count_items (lv, 0);
200      listview_add_item_pos (lv, n);      listview_add_item_pos (lv, n);
201      listview_add_sub_item (lv, n, 0, info);      listview_add_sub_item (lv, n, 0, info);
202      listview_add_sub_item (lv, n, 1, keyid);      listview_add_sub_item (lv, n, 1, keyid);
203      listview_add_sub_item (lv, n, 2, get_key_created (time (NULL)));      listview_add_sub_item (lv, n, 2, get_key_created (time (NULL)));
204      listview_add_sub_item (lv, n, 3, expdate);      listview_add_sub_item (lv, n, 3, expdate);
205      if (flags & KM_FLAG_REVOKED) s = _("Revoked");            if (flags & KM_FLAG_REVOKED)
206      else if (flags & KM_FLAG_EXPIRED) s = _("Expired");          s = _("Revoked");      
207      else s = _("OK");      else if (flags & KM_FLAG_EXPIRED)
208            s = _("Expired");
209        else
210            s = _("OK");
211      listview_add_sub_item (lv, n, 4, s);      listview_add_sub_item (lv, n, 4, s);
212  } /* do_add_new_subkey */  }
213    
214    
215  /* Try to find the GPG edit key index which belongs to the user ID  /* Try to find the GPG edit key index which belongs to the user ID
# Line 610  keyedit_addsubkey_dlg_proc (HWND dlg, UI Line 613  keyedit_addsubkey_dlg_proc (HWND dlg, UI
613          return FALSE;          return FALSE;
614                    
615      case WM_SYSCOMMAND:      case WM_SYSCOMMAND:
616          if( LOWORD (wparam) == SC_CLOSE ) {          if (LOWORD (wparam) == SC_CLOSE) {
617              EndDialog( dlg, TRUE );              EndDialog (dlg, TRUE);
618          }          }
619          return FALSE;          return FALSE;
620                    
621      case WM_COMMAND:      case WM_COMMAND:
622          if (HIWORD (wparam) == BN_CLICKED && LOWORD (wparam) == IDC_ADDSUBKEY_EXPIRE) {          if (HIWORD (wparam) == BN_CLICKED &&
623                LOWORD (wparam) == IDC_ADDSUBKEY_EXPIRE) {
624              if (IsDlgButtonChecked (dlg, IDC_ADDSUBKEY_EXPIRE))              if (IsDlgButtonChecked (dlg, IDC_ADDSUBKEY_EXPIRE))
625                  EnableWindow (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), FALSE);                  EnableWindow (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), FALSE);
626              else              else
627                  EnableWindow (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), TRUE);                  EnableWindow (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), TRUE);
628          }          }
629          if (HIWORD (wparam) == LBN_SELCHANGE && LOWORD (wparam) == IDC_ADDSUBKEY_ALGO) {          if (HIWORD (wparam) == LBN_SELCHANGE &&
630                LOWORD (wparam) == IDC_ADDSUBKEY_ALGO) {
631              index = SendMessage ((HWND)lparam, LB_GETCURSEL, 0, 0);              index = SendMessage ((HWND)lparam, LB_GETCURSEL, 0, 0);
632              if (index == 0)              if (index == 0)
633                  SendDlgItemMessage (dlg, IDC_ADDSUBKEY_SIZE, CB_SETCURSEL, 0, 0);                  SendDlgItemMessage (dlg, IDC_ADDSUBKEY_SIZE, CB_SETCURSEL, 0, 0);
634          }          }
635    
636          switch ( LOWORD(wparam) ) {                  switch (LOWORD (wparam)) {
637          case IDOK:          case IDOK:
638              lb = GetDlgItem (dlg, IDC_ADDSUBKEY_ALGO);              lb = GetDlgItem (dlg, IDC_ADDSUBKEY_ALGO);
639              switch (listbox_get_cursel (lb)) {              switch (listbox_get_cursel (lb)) {
# Line 636  keyedit_addsubkey_dlg_proc (HWND dlg, UI Line 641  keyedit_addsubkey_dlg_proc (HWND dlg, UI
641              case 1: index = 4; break;              case 1: index = 4; break;
642              case 2: index = 5; break;              case 2: index = 5; break;
643              case 3: index = 6; break;              case 3: index = 6; break;
644              default:              default:
645                  msg_box( dlg, _("Please select one entry."), _("Add Subkey"), MB_ERR );                  msg_box (dlg, _("Please select one entry."), _("Add Subkey"), MB_ERR);
646                  return FALSE;                  return FALSE;
647              }              }
648              size = get_keysize_from_box (dlg, IDC_ADDSUBKEY_SIZE);              size = get_keysize_from_box (dlg, IDC_ADDSUBKEY_SIZE);
649              if (index == 2 && size != 1024) {              if (index == 2 && size != 1024) {
650                  msg_box( dlg,_("DSS uses a fixed keysize of 1024. Size changed."), _("Add Subkey"), MB_INFO );                  msg_box (dlg,_("DSS uses a fixed keysize of 1024. Size changed."),
651                             _("Add Subkey"), MB_INFO);
652                  size = 1024;                  size = 1024;
653              }              }
654              valid = diff_time (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), NULL);              valid = diff_time (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), NULL);
   
655              keygen->bits = size;              keygen->bits = size;
656              switch (index) {              switch (index) {
657              case 2: keygen->algo = GPGME_PK_DSA; break;              case 2: keygen->algo = GPGME_PK_DSA; break;
# Line 662  keyedit_addsubkey_dlg_proc (HWND dlg, UI Line 667  keyedit_addsubkey_dlg_proc (HWND dlg, UI
667                  BUG (NULL);                  BUG (NULL);
668              ke->setCallback (keygen_cb, NULL);              ke->setCallback (keygen_cb, NULL);
669              if (ctx->pass)              if (ctx->pass)
670                  ke->setPassphrase (ctx->pass);                        ke->setPassphrase (ctx->pass);
671              keygen_cb_dlg_create ();              keygen_cb_dlg_create ();
672    
673              err = ke->addSubkey ((gpgme_pubkey_algo_t)index, size, valid);              err = ke->addSubkey ((gpgme_pubkey_algo_t)index, size, valid);
674              keygen->fpr = get_subkey_fingerprint (ctx->keyid);              keygen->fpr = get_subkey_keyid (ctx->keyid);
675              keygen_cb_dlg_destroy ();              keygen_cb_dlg_destroy ();
676              keygen_cb (NULL, NULL, 0, 0, 0); /* flush */              keygen_cb (NULL, NULL, 0, 0, 0); /* flush */
677              if (err)              if (err)
# Line 674  keyedit_addsubkey_dlg_proc (HWND dlg, UI Line 679  keyedit_addsubkey_dlg_proc (HWND dlg, UI
679              else {              else {
680                  msg_box (dlg, _("Subkey successfully added."), _("GnuPG Status"), MB_OK);                  msg_box (dlg, _("Subkey successfully added."), _("GnuPG Status"), MB_OK);
681                  if (ctx->lv)                  if (ctx->lv)
682                      do_add_new_subkey (ctx->lv, keygen, /*XXXk->flags*/0);                      do_add_new_subkey (ctx->lv, keygen, 0);
683                  ctx->finished = 1;                  ctx->finished = 1;
684              }              }
685              delete ke;              delete ke;
# Line 728  keyedit_add_userid (winpt_key_t k, HWND Line 733  keyedit_add_userid (winpt_key_t k, HWND
733    
734    
735  char*  char*
736  get_subkey_fingerprint (const char *keyid)  get_subkey_keyid (const char *keyid)
737  {  {
738      gpgme_error_t err;      gpgme_error_t err;
739      gpgme_key_t key, main;      gpgme_key_t key;
740      gpgme_ctx_t ctx;      gpgme_ctx_t ctx;
741      gpgme_subkey_t last_sk, k, new_sk;      gpgme_subkey_t subk;
742      int n;      char *kid;
743    
744      err = gpgme_new (&ctx);      err = gpgme_new (&ctx);
745      if (err)      if (err)
746          return NULL;          return NULL;
747      err = gpgme_get_key (ctx, keyid, &key, 0);      err = gpgme_get_key (ctx, keyid, &key, 0);
748        gpgme_release (ctx);
749      if (err)      if (err)
750          return NULL;          return NULL;
751      /* XXX: this is very slow and complicated */      subk = get_nth_key (key, count_subkeys (key));
752            kid = strdup (subk->keyid);
     n = count_subkeys (key);  
     last_sk = get_nth_key (key, n-1);  
     new_sk = (gpgme_subkey_t)calloc (1, sizeof *new_sk);  
     if (!new_sk)  
         BUG (NULL);  
     memcpy (new_sk, last_sk, sizeof *last_sk);  
     new_sk->fpr = strdup (last_sk->fpr);  
     new_sk->keyid = strdup (last_sk->keyid);  
   
     get_pubkey (keyid, &main);  
     for (k=main->subkeys; k->next; k=k->next)  
         ;  
     k->next = new_sk;  
   
753      gpgme_key_release (key);      gpgme_key_release (key);
754      return new_sk->fpr;      return kid;
755  }  }
756    
757    
# Line 783  keyedit_add_subkey (winpt_key_t k, HWND Line 775  keyedit_add_subkey (winpt_key_t k, HWND
775    
776      memset (&keygen, 0, sizeof (keygen));      memset (&keygen, 0, sizeof (keygen));
777      memset (&cb, 0, sizeof (cb));      memset (&cb, 0, sizeof (cb));
778        cb.lv = lv;
779      cb.keyid = k->keyid;      cb.keyid = k->keyid;
780      cb.pass = k->is_protected? pass : NULL;      cb.pass = k->is_protected? pass : NULL;
781      cb.opaque = &keygen;      cb.opaque = &keygen;
# Line 790  keyedit_add_subkey (winpt_key_t k, HWND Line 783  keyedit_add_subkey (winpt_key_t k, HWND
783                        dlg, keyedit_addsubkey_dlg_proc,                        dlg, keyedit_addsubkey_dlg_proc,
784                        (LPARAM)&cb, _("Add new Subkey"),                        (LPARAM)&cb, _("Add new Subkey"),
785                        IDS_WINPT_KEYEDIT_ADDSUBKEY);                        IDS_WINPT_KEYEDIT_ADDSUBKEY);
786        safe_free (keygen.fpr);
787      if (cb.finished)      if (cb.finished)
788          k->update = 1;          k->update = 1;
789    

Legend:
Removed from v.133  
changed lines
  Added in v.150

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26