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

Diff of /trunk/Src/wptKeyManager.cpp

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

revision 259 by twoaday, Tue Aug 1 16:37:23 2006 UTC revision 260 by twoaday, Wed Aug 16 10:01:30 2006 UTC
# Line 247  km_enable_disable_key (listview_ctrl_t l Line 247  km_enable_disable_key (listview_ctrl_t l
247  /* Create a string that contain all keyids from  /* Create a string that contain all keyids from
248     the key list @rset separated by a space. */     the key list @rset separated by a space. */
249  char*  char*
250  gpg_keylist_to_pattern (gpgme_key_t *rset, int n)  gpg_keylist_to_pattern (gpgme_key_t *rset, size_t n)
251  {  {
252      char *p;      char *p;
253      int i;      size_t i;
254    
255      if (!n)      if (!n)
256          return NULL;          return NULL;
# Line 274  km_clip_export (HWND dlg, listview_ctrl_ Line 274  km_clip_export (HWND dlg, listview_ctrl_
274      GPGME *ctx;      GPGME *ctx;
275      char *patt=NULL;      char *patt=NULL;
276      char buf[256];      char buf[256];
277      int n=0;      size_t n=0;
278      int rc=0;      int rc=0;
279            
280      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
# Line 318  km_privkey_export (HWND dlg, listview_ct Line 318  km_privkey_export (HWND dlg, listview_ct
318  {  {
319      gpgme_key_t *rset;      gpgme_key_t *rset;
320      gpgme_error_t err;      gpgme_error_t err;
321      int n = 0;      size_t n = 0;
322    
323      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
324      if (!n) {      if (!n) {
# Line 340  km_privkey_export (HWND dlg, listview_ct Line 340  km_privkey_export (HWND dlg, listview_ct
340          log_box (_("Key Manager"), MB_OK,          log_box (_("Key Manager"), MB_OK,
341                   _("Secret key successfully saved in '%s'."), fname);                   _("Secret key successfully saved in '%s'."), fname);
342    
343      free (rset);      safe_free (rset);
344      return err? WPTERR_GENERAL : 0;      return err? WPTERR_GENERAL : 0;
345  }  }
346    
# Line 353  km_file_export (HWND dlg, listview_ctrl_ Line 353  km_file_export (HWND dlg, listview_ctrl_
353      gpgme_key_t *rset;      gpgme_key_t *rset;
354      gpgme_error_t err;      gpgme_error_t err;
355      char *patt;      char *patt;
356      int n;      size_t n;
357    
358      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);      rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
359      if (!n) {      if (!n) {
# Line 402  extract_dash_escaped_key (void) Line 402  extract_dash_escaped_key (void)
402  }  }
403    
404    
 /* Import the PGP key data from the clipboard.  
    Return value: 0 on success. */  
 static gpgme_error_t  
 gpg_op_clip_import (gpgme_ctx_t ctx)  
 {  
     gpgme_error_t err = 0;  
     gpgme_data_t keydata = NULL;  
       
     err = gpg_data_new_from_clipboard (&keydata, 0);  
     if (!err)  
         err = gpgme_op_import (ctx, keydata);  
   
     gpgme_data_release (keydata);  
     return err;  
 }  
   
405  /* Import keys from the clipboard. */  /* Import keys from the clipboard. */
406  int  int
407  km_clip_import (HWND dlg, int *r_newkeys, int *r_newsks)  km_clip_import (HWND dlg, int *r_newkeys, int *r_newsks)
408  {  {
409      gpgme_error_t err;      gpgme_error_t err;  
     gpgme_ctx_t ctx = NULL;  
410      gpgme_import_result_t res;      gpgme_import_result_t res;
411        GPGME *gpg = NULL;
412      fm_state_s fm_stat;      fm_state_s fm_stat;
413      int pgptype;      int pgptype;
414      int id, has_data = 0;      int id, has_data = 0;
# Line 468  km_clip_import (HWND dlg, int *r_newkeys Line 452  km_clip_import (HWND dlg, int *r_newkeys
452      if (!has_data)      if (!has_data)
453          goto leave;          goto leave;
454    
455      err = gpgme_new (&ctx);              gpg = new GPGME ();
456      if (err)      err = gpg->importFromClipboard ();
         BUG (NULL);  
     op_begin ();  
     err = gpg_op_clip_import (ctx);  
     op_end ();  
457      if (err) {      if (err) {
458          msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR);          msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR);
459          goto leave;          goto leave;
460      }      }
461    
462      res = gpgme_op_import_result (ctx);      res = gpg->importGetResult ();
463      print_import_status (res);      print_import_status (res);
464      new_keys = res->considered - res->unchanged;      new_keys = res->considered - res->unchanged;
465      new_sks = res->secret_imported - res->secret_unchanged;      new_sks = res->secret_imported - res->secret_unchanged;
# Line 490  km_clip_import (HWND dlg, int *r_newkeys Line 470  km_clip_import (HWND dlg, int *r_newkeys
470      }      }
471    
472  leave:  leave:
473      if (ctx)      if (gpg)
474          gpgme_release (ctx);          delete gpg;
475      free_if_alloc (fm_stat.opaque);      free_if_alloc (fm_stat.opaque);
476      if (r_newkeys)      if (r_newkeys)
477          *r_newkeys = new_keys;          *r_newkeys = new_keys;
# Line 509  km_http_import (HWND dlg, const char *ur Line 489  km_http_import (HWND dlg, const char *ur
489  {  {
490      FILE *fp;      FILE *fp;
491      wHTTP *hd;      wHTTP *hd;
492      char tmpfile[500];      char tmpfile[MAX_PATH+64];
493      int rc = 0;      int rc = 0;
494    
495      if (strncmp (url, "http://", 7)) {      if (strncmp (url, "http://", 7)) {
# Line 548  km_http_import (HWND dlg, const char *ur Line 528  km_http_import (HWND dlg, const char *ur
528     On success an import statistics dialog is shown. */     On success an import statistics dialog is shown. */
529  int  int
530  km_file_import (HWND dlg, const char *fname, int *r_newkeys, int *r_newsks)  km_file_import (HWND dlg, const char *fname, int *r_newkeys, int *r_newsks)
531  {  {    
532      gpgme_data_t keydata = NULL;      gpgme_error_t err;
     gpgme_ctx_t ctx;  
     gpgme_error_t err;      
     fm_state_s fm_stat;  
533      gpgme_import_result_t res;      gpgme_import_result_t res;
534        GPGME *gpg;
535        fm_state_s fm_stat;    
536      const char *name;      const char *name;
537      int no_data = 0;      int no_data = 0;
538      int new_keys = 0, new_sks = 0;      int new_keys = 0, new_sks = 0;
# Line 578  km_file_import (HWND dlg, const char *fn Line 557  km_file_import (HWND dlg, const char *fn
557          return WPTERR_GENERAL;          return WPTERR_GENERAL;
558      }      }
559            
560      err = gpgme_new (&ctx);      gpg = new GPGME ();
561      if (err)      err = gpg->importFromFile (name);
         BUG (NULL);  
     err = gpgme_data_new_from_file (&keydata, name, 1);  
562      if (err) {      if (err) {
563          msg_box (dlg, _("Could not read key-data from file."),          msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR);
564                   _("Key Manager"), MB_ERR);          goto leave;
         goto leave;  
565      }      }
       
     op_begin ();  
     err = gpgme_op_import (ctx, keydata);  
     op_end ();  
     if (err) {  
         msg_box (dlg, gpgme_strerror (err), _("Key Manager"), MB_ERR);  
         goto leave;  
     }      
566    
567      res = gpgme_op_import_result (ctx);      res = gpg->importGetResult ();
568      if (res->unchanged == res->considered &&      if (res->unchanged == res->considered &&
569          res->secret_unchanged == res->secret_imported)          res->secret_unchanged == res->secret_imported)
570          no_data = 1;          no_data = 1;
# Line 607  km_file_import (HWND dlg, const char *fn Line 575  km_file_import (HWND dlg, const char *fn
575      if (res->secret_imported == 0 && fm_stat.import.has_seckey == 1)      if (res->secret_imported == 0 && fm_stat.import.has_seckey == 1)
576          res->secret_imported = 1;          res->secret_imported = 1;
577    
     /* XXX: if we import a key pair but the secret key comes first,  
             no_{valid}_user_id is 1 even so the public key, which comes  
             later is valid and self-signed. */  
578      print_import_status (res);      print_import_status (res);
579      if (res->no_user_id > 0) {      if (res->no_user_id > 0) {
580          msg_box (dlg, _("Key without a self signature was dectected!\n"          msg_box (dlg, _("Key without a self signature was dectected!\n"
# Line 618  km_file_import (HWND dlg, const char *fn Line 583  km_file_import (HWND dlg, const char *fn
583      }      }
584    
585  leave:  leave:
586      gpgme_data_release (keydata);      delete gpg;
     gpgme_release (ctx);  
587      free_if_alloc (fm_stat.opaque);      free_if_alloc (fm_stat.opaque);
588      if (r_newkeys)      if (r_newkeys)
589          *r_newkeys = new_keys;          *r_newkeys = new_keys;

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26