/[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 259 by twoaday, Mon Apr 17 09:12:50 2006 UTC revision 260 by twoaday, Wed Aug 16 10:01:30 2006 UTC
# Line 25  Line 25 
25  #include <windows.h>  #include <windows.h>
26  #include <time.h>  #include <time.h>
27    
28  #include "gpgme.h"  #include "wptGPG.h"
29  #include "wptCard.h"  #include "wptCard.h"
30  #include "wptCardEdit.h"  #include "wptCardEdit.h"
 #include "wptGPG.h"  
31  #include "wptErrors.h"  #include "wptErrors.h"
32    #include "wptTypes.h"
33    #include "wptW32API.h"
34    
35  /* Create a new Smartcard context. */  /* Create a new Smartcard context. */
36  static gpgme_error_t  static gpgme_error_t
# Line 56  gpg_card_release (gpg_card_t card) Line 57  gpg_card_release (gpg_card_t card)
57    
58      if (!card)      if (!card)
59          return;          return;
60      if (card->aid)      safe_free (card->aid);
61          free (card->aid);        safe_free (card->version);
62      if (card->version)      safe_free (card->lang);
63          free (card->version);      safe_free (card->login);
64      if (card->lang)      for (i=0; i < N_CARD_FPR; i++) {
65          free (card->lang);          safe_free (card->fpr[i]);      
66      if (card->login)          safe_free (card->ca_fpr[i]);
67          free (card->login);          safe_free (card->fpr_created_str[i]);
     for (i=0; i < 3; i++) {  
         if (card->fpr[i])  
             free (card->fpr[i]);  
         if (card->ca_fpr[i])  
             free (card->ca_fpr[i]);  
         if (card->fpr_created_str[i])  
             free (card->fpr_created_str[i]);  
68      }      }
69      if (card->surname)      safe_free (card->surname);
70          free (card->surname);      safe_free (card->givenname);
71      if (card->givenname)      safe_free (card->serial);
72          free (card->givenname);      safe_free (card->vendor);
73      if (card->serial)      safe_free (card->url);
74          free (card->serial);      safe_free (card->card_type);
75      if (card->vendor)      safe_free (card);
         free (card->vendor);  
     if (card->url)  
         free (card->url);  
     if (card->card_type)  
         free (card->card_type);  
     free (card);  
76    
77  }  }
78    
79    
80  /* Parse the timestamp @long_ts and return a string  /* Parse the timestamp @long_ts and return a string
81     representation of it (format: YYYY-DD-MM HH:MM:SS). */     representation of it (format: depens on locale setting). */
82  static char*  static char*
83  get_str_timestamp (long long_ts)  get_str_timestamp (long long_ts)
84  {  {
85      struct tm *tm;      char timebuf[64];
86      char *p, *fmt;      const char *dat;
87    
88        if (long_ts < 1)
89            return strdup ("");
90        dat = get_locale_date (long_ts, timebuf, sizeof (timebuf)-1);
91        if (!dat)
92            return strdup ("");
93    
94        return strdup (dat);
95    }
96    
97    
98    /* Parse the card version AABB => 0100 */
99    static void
100    parse_version (gpg_card_t card, const char *ver)
101    {
102        char buf[6];
103    
104      tm = localtime (&long_ts);      if (strlen (ver) != 4)
105      fmt = "%04d-%02d-%02d %02d:%02d:%02d";          return;
106      p = (char*)calloc (1, strlen (fmt)+32);      buf[0] = *ver++;
107      if (!p)      buf[1] = *ver++;
108          abort ();      buf[2] = 0;
109      sprintf (p, fmt,      buf[3] = *ver++;
110               tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,      buf[4] = *ver++;
111               tm->tm_hour, tm->tm_min, tm->tm_sec);      buf[5] = 0;
112      return p;      card->ver[0] = atoi (buf);
113        card->ver[1] = atoi (buf+3);
114  }  }
115    
116    
# Line 194  statuscard_colon_handler (gpg_card_t car Line 199  statuscard_colon_handler (gpg_card_t car
199                  card->version = strdup (p);                  card->version = strdup (p);
200                  if (!card->version)                  if (!card->version)
201                      return gpg_error (GPG_ERR_ENOMEM);                      return gpg_error (GPG_ERR_ENOMEM);
202                    parse_version (card, p);
203              }              }
204              break;              break;
205    
# Line 277  statuscard_colon_handler (gpg_card_t car Line 283  statuscard_colon_handler (gpg_card_t car
283              break;              break;
284    
285          case CARD_Fpr:          case CARD_Fpr:
286              if (field > 4 || field == 1) /* max 3 fprs */              if (field > 4 || field == 1) /* max N_CARD_FPR=3 fprs */
287                  break;                  break;
288              card->fpr[field-2] = strdup (p);              card->fpr[field-2] = strdup (p);
289              if (!card->fpr[field-2])              if (!card->fpr[field-2])
# Line 288  statuscard_colon_handler (gpg_card_t car Line 294  statuscard_colon_handler (gpg_card_t car
294              if (field > 4 || field == 1)              if (field > 4 || field == 1)
295                  break;                  break;
296              card->fpr_created[field-2] = strtoul (p, NULL, 10);              card->fpr_created[field-2] = strtoul (p, NULL, 10);
297              card->fpr_created_str[field-2] = get_str_timestamp (strtoul (p, NULL, 10));              if (card->fpr_created[field-2] > 0)
298              if (!card->fpr_created_str[field-2])                  card->fpr_created_str[field-2] = get_str_timestamp (strtoul (p, NULL, 10));
299                  return gpg_error (GPG_ERR_ENOMEM);              else
300                    card->fpr_created_str[field-2] = NULL;
301              break;              break;
302                
303          default:          default:
304              break;              break;
305    
306          }          }
307      }      }
308      return 0;      return 0;
# Line 408  GpgCardEdit::setKeygenPassphrase (const Line 416  GpgCardEdit::setKeygenPassphrase (const
416    
417  /* Set the callback to @cb and the hook value to @cb_value. */  /* Set the callback to @cb and the hook value to @cb_value. */
418  void  void
419  GpgCardEdit::setCallback (const char* (*_cb)(int code, void *opaque),  GpgCardEdit::setCallback (const char* (*_cb)(int code, void *opaque),
420                            void *_cb_value)                            void *_cb_value)
421  {  {
422      this->cb_value = _cb_value;      this->cb_value = _cb_value;
# Line 628  GpgCardEdit::updateLanguage (const char Line 636  GpgCardEdit::updateLanguage (const char
636  gpgme_error_t  gpgme_error_t
637  GpgCardEdit::fetchKey (void)  GpgCardEdit::fetchKey (void)
638  {  {
639        gpgme_error_t err = 0;
640    
641      if (!this->pin)      if (!this->pin)
642          return gpg_error (GPG_ERR_INV_OBJ);          return gpg_error (GPG_ERR_INV_OBJ);
643    
644      return 0;      return err;
645  }  }
646    
647    

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26