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

Diff of /trunk/Src/wptKeyEdit.cpp

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

revision 181 by twoaday, Tue Mar 14 11:01:22 2006 UTC revision 234 by twoaday, Tue Jun 27 10:16:41 2006 UTC
# Line 34  Line 34 
34  #include "wptW32API.h"  #include "wptW32API.h"
35  #include "wptGPG.h"  #include "wptGPG.h"
36  #include "wptErrors.h"  #include "wptErrors.h"
37    #include "wptUTF8.h"
38    
39    
40  /* Parse the colon status information of @line and store  /* Parse the colon status information of @line and store
# Line 74  rev_key_colon_handler (gpg_desig_rev_t * Line 75  rev_key_colon_handler (gpg_desig_rev_t *
75          if (pend == NULL)          if (pend == NULL)
76              break;              break;
77          switch (field) {          switch (field) {
78          case  4: r->pubkey_algo = (gpgme_pubkey_algo_t)atol (pend); break;          case  4:
79          case 10: strncpy (r->fpr, pend, 40); r->fpr[40] = 0; break;              r->pubkey_algo = (gpgme_pubkey_algo_t)atol (pend);
80                break;
81    
82            case 10:
83                strncpy (r->fpr, pend, 40);
84                r->fpr[40] = 0;
85                break;
86          }                }      
87      }      }
88      if (p)      if (p)
# Line 92  uid_inf_colon_handler (gpg_uid_info_t *i Line 99  uid_inf_colon_handler (gpg_uid_info_t *i
99  {  {
100      gpg_uid_info_t i, t;      gpg_uid_info_t i, t;
101      char *p, *pend;      char *p, *pend;
102        char *name;
103      int field = 0, len = 0;      int field = 0, len = 0;
104    
105      if (!line || strlen (line) < 3 || strncmp (line, "uid", 3))      if (!line || strlen (line) < 3 || strncmp (line, "uid", 3))
# Line 122  uid_inf_colon_handler (gpg_uid_info_t *i Line 130  uid_inf_colon_handler (gpg_uid_info_t *i
130              break;              break;
131    
132          case 10: /* user ID */          case 10: /* user ID */
133              i->name = (char *)calloc (1, strlen (pend)+1);              name = (char *)calloc (1, strlen (pend)+1);
134              if (!i->name)              if (!name)
135                  return gpg_error (GPG_ERR_ENOMEM);;                  return gpg_error (GPG_ERR_ENOMEM);;
136              gpg_decode_c_string (pend, &i->name, strlen (pend)+ 1);              gpg_decode_c_string (pend, &name, strlen (pend)+ 1);
137                i->name = utf8_to_native (name);
138                safe_free (name);
139              if (strchr (pend, '<') != NULL && strchr (pend, '>') != NULL) {              if (strchr (pend, '<') != NULL && strchr (pend, '>') != NULL) {
140                  int pos = strchr (i->name, '<')- i->name + 1;                  int pos = strchr (i->name, '<')- i->name + 1;
141                  int end = strchr (i->name, '>') - i->name;                  int end = strchr (i->name, '>') - i->name;
# Line 138  uid_inf_colon_handler (gpg_uid_info_t *i Line 148  uid_inf_colon_handler (gpg_uid_info_t *i
148    
149          case 13: /* preferences */          case 13: /* preferences */
150              if (strstr (pend, "mdc")) {              if (strstr (pend, "mdc")) {
151                    const char *s = "no-ks-modify";
152                  len = strlen (pend) - 4; /* ,mdc */                  len = strlen (pend) - 4; /* ,mdc */
153                  if (strstr (pend, "no-ks-modify")) {                  if (strstr (pend, s)) {
154                      i->flags.no_ks_modify = 1;                      i->flags.no_ks_modify = 1;
155                      len -= 13; /* ,no-ks-modify */                      len -= strlen (s)+1; /* ',' + s */
156                  }                  }
157                  i->prefs = (char*)calloc (1, len+1);                  i->prefs = (char*)calloc (1, len+1);
158                  if (!i->prefs)                  if (!i->prefs)
# Line 159  uid_inf_colon_handler (gpg_uid_info_t *i Line 170  uid_inf_colon_handler (gpg_uid_info_t *i
170              break;              break;
171    
172          case 14: /* index/flags */          case 14: /* index/flags */
173              i->index = atol (pend);              i->index = atoi (pend);
174              if (strchr (pend, 'r'))              if (strchr (pend, 'r'))
175                  i->flags.revoked = 1;                  i->flags.revoked = 1;
176              if (strchr (pend, 'p'))              if (strchr (pend, 'p'))
# Line 374  GpgKeyEdit::reset (void) Line 385  GpgKeyEdit::reset (void)
385  {  {
386      cmd_sent = 0;      cmd_sent = 0;
387      cnt = 0;      cnt = 0;
     //resval = 0;  
388  }  }
389    
390    
# Line 481  GpgKeyEdit::getType (void) Line 491  GpgKeyEdit::getType (void)
491      return type;      return type;
492  }  }
493    
494    
495    /* Add the notation data from @notation to the user ID
496       with the index @_uid_idx.
497       Return value: 0 on success.  */
498    gpgme_error_t
499    GpgKeyEdit::addNotation (int _uid_idx, const char *_notation)
500    {
501        if (!key)
502            return gpg_error (GPG_ERR_INV_OBJ);
503        if (key_has_passwd && !this->pass)
504            return gpg_error (GPG_ERR_INV_PASSPHRASE);
505    
506        type = GPG_EDITKEY_NOTATION;
507        this->uid_index = _uid_idx;
508        this->notation = (char*)_notation;
509        return gpg_editkey (this->ctx, this->key, this);
510    }
511    
512    
513  /* Sign the key stored in the object with the  /* Sign the key stored in the object with the
514     signing mode @mode and the signature class @sig_class.     signing mode @mode and the signature class @sig_class.
515     Return value: 0 on success. */     Return value: 0 on success. */
# Line 776  GpgKeyEdit::disable (void) Line 805  GpgKeyEdit::disable (void)
805  }  }
806    
807    
808    /* Remove unusable parts and all signatures from a key. */
809    gpgme_error_t
810    GpgKeyEdit::minimizeKey (void)
811    {
812        if (!this->key)
813            return gpg_error (GPG_ERR_INV_OBJ);
814        type = GPG_EDITKEY_MINIMIZE;
815        return gpg_editkey (this->ctx, this->key, this);
816    }
817    
818    
819  /* Remove unusable parts from a key. */  /* Remove unusable parts from a key. */
820  gpgme_error_t  gpgme_error_t
821  GpgKeyEdit::cleanKey (void)  GpgKeyEdit::cleanKey (void)
# Line 791  GpgKeyEdit::cleanKey (void) Line 831  GpgKeyEdit::cleanKey (void)
831     index @uid_index to the prefs given in @new_prefs.     index @uid_index to the prefs given in @new_prefs.
832     Return value: 0 on success. */     Return value: 0 on success. */
833  gpgme_error_t  gpgme_error_t
834  GpgKeyEdit::setUseridPreferences (int _uid_index, const char *new_prefs)  GpgKeyEdit::setUseridPreferences (int _uid_index, const char *_new_prefs)
835  {  {
836      if (!this->key)      if (!this->key)
837          return gpg_error (GPG_ERR_INV_OBJ);          return gpg_error (GPG_ERR_INV_OBJ);
838      if (key_has_passwd && !this->pass)      if (key_has_passwd && !this->pass)
839          return gpg_error (GPG_ERR_INV_PASSPHRASE);          return gpg_error (GPG_ERR_INV_PASSPHRASE);
840      return 0;      type = GPG_EDITKEY_SETPREF;
841        this->uid_index = _uid_index;
842        this->new_prefs = _new_prefs;
843        return gpg_editkey (this->ctx, this->key, this);
844  }  }
845    
846    

Legend:
Removed from v.181  
changed lines
  Added in v.234

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26