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

Diff of /trunk/Src/wptCardEdit.cpp

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

revision 26 by twoaday, Mon Oct 17 08:49:30 2005 UTC revision 27 by twoaday, Tue Oct 18 07:57:13 2005 UTC
# Line 299  statuscard_colon_handler (gpg_card_t car Line 299  statuscard_colon_handler (gpg_card_t car
299  static gpgme_error_t  static gpgme_error_t
300  list_handler (void *opaque, gpgme_status_code_t code, const char *key, int fd)  list_handler (void *opaque, gpgme_status_code_t code, const char *key, int fd)
301  {  {
302        static int wait_card=0;
303      GpgCardEdit *ce = (GpgCardEdit *)opaque;      GpgCardEdit *ce = (GpgCardEdit *)opaque;
304      const char *s="";      const char *s="";    
305      DWORD n;      DWORD n;
306            
307    
308      if (code == GPGME_STATUS_CARDCTRL && *key == '5')      if (code == GPGME_STATUS_CARDCTRL) {
309          ce->setResult (GPG_CARDRES_NOCARD);          if (!strcmp (key, "5"))
310                ce->setResult (GPG_CARDRES_NOCARD);
311            else if (!strcmp (key, "1"))
312                wait_card = 1;
313        }
314        if (wait_card && !strcmp (key, "cardctrl.insert_card.okay")) {
315            n = MessageBox (NULL, _("Please insert the card and click OK or Cancel to abort."),
316                            _("GPG Card Status"), MB_ICONQUESTION|MB_OKCANCEL);
317            if (n == IDCANCEL) {
318                ce->setResult (GPG_CARDRES_CANCEL);
319                WriteFile ((HANDLE)fd, "c\n", 2, &n, NULL);
320                wait_card = 0;
321            }
322        }
323      if (!strcmp (key, "cardedit.prompt")) {      if (!strcmp (key, "cardedit.prompt")) {
324          s = "quit\n";          s = "quit\n";
325          if (!WriteFile ((HANDLE)fd, s, strlen (s), &n, NULL))          if (!WriteFile ((HANDLE)fd, s, strlen (s), &n, NULL))
326              log_debug ("list_handler: WriteFile() failed ec=%d\r\n",              log_debug ("list_handler: WriteFile() failed ec=%d\r\n",
327                         (int)GetLastError ());                         (int)GetLastError ());
328            wait_card = 0;
329      }      }
330      return 0;      return 0;
331  }  }
# Line 401  gpgme_error_t Line 417  gpgme_error_t
417  GpgCardEdit::getCardStatus (gpg_card_t *r_card)  GpgCardEdit::getCardStatus (gpg_card_t *r_card)
418  {  {
419      gpgme_data_t out = NULL;      gpgme_data_t out = NULL;
     gpgme_key_t key=NULL;      
420      gpgme_error_t err;      gpgme_error_t err;
421      gpg_card_t card=NULL;      gpg_card_t card=NULL;
422      char buf[200];      char buf[200];
# Line 409  GpgCardEdit::getCardStatus (gpg_card_t * Line 424  GpgCardEdit::getCardStatus (gpg_card_t *
424      if (!r_card)      if (!r_card)
425          return gpg_error (GPG_ERR_INV_ARG);          return gpg_error (GPG_ERR_INV_ARG);
426    
     /* XXX: dummy key */  
     key = (gpgme_key_t)calloc (1, sizeof *key);  
     key->subkeys = (gpgme_subkey_t)calloc (1, sizeof *key->subkeys);  
     key->subkeys->fpr = strdup ("foo");  
   
427      err = gpg_card_new (&card);      err = gpg_card_new (&card);
428      if (err)      if (err)
429          return err;          return err;
# Line 424  GpgCardEdit::getCardStatus (gpg_card_t * Line 434  GpgCardEdit::getCardStatus (gpg_card_t *
434          return err;          return err;
435      }      }
436            
437      err = gpgme_op_card_edit  (ctx, key, list_handler, this, out);      err = gpgme_op_card_edit  (ctx, NULL, list_handler, this, out);
438      gpgme_data_rewind (out);      gpgme_data_rewind (out);
439      if (err) {      if (err) {
440          gpgme_data_release (out);          gpgme_data_release (out);
441          gpg_card_release (card);          gpg_card_release (card);
442          return err;          return err;
443      }      }
444      if (getResult () & GPG_CARDRES_NOCARD) {      if (getResult () & GPG_CARDRES_NOCARD ||
445            getResult () & GPG_CARDRES_CANCEL) {
446          gpg_card_release (card);          gpg_card_release (card);
447          gpgme_data_release (out);          gpgme_data_release (out);
448          return gpg_error (GPG_ERR_CARD_REMOVED);          return gpg_error (GPG_ERR_CARD_NOT_PRESENT);
449      }      }
450    
451      *r_card = card;      *r_card = card;
# Line 445  GpgCardEdit::getCardStatus (gpg_card_t * Line 456  GpgCardEdit::getCardStatus (gpg_card_t *
456      }      }
457      gpgme_data_release (out);      gpgme_data_release (out);
458    
     if (key) { /* XXX */  
         free (key->subkeys->keyid);  
         free (key->subkeys);  
         free (key);  
     }  
   
459      return err;      return err;
460  }  }
461    

Legend:
Removed from v.26  
changed lines
  Added in v.27

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26