/[winpt]/trunk/MyGPGME/keycache.c
ViewVC logotype

Diff of /trunk/MyGPGME/keycache.c

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

revision 20 by twoaday, Fri May 20 08:38:32 2005 UTC revision 21 by twoaday, Wed Jul 27 11:17:44 2005 UTC
# Line 75  gpgme_keycache_set_cb (gpgme_keycache_t Line 75  gpgme_keycache_set_cb (gpgme_keycache_t
75  }  }
76    
77    
78  int  gpgme_error_t
79  gpgme_keycache_add_key( gpgme_keycache_t ctx, gpgme_key_t key )  gpgme_keycache_add_key (gpgme_keycache_t ctx, gpgme_key_t key, void **opaque)
80  {  {
81      struct keycache_s * c, * n1;      struct keycache_s * c, * n1;
82            
# Line 94  gpgme_keycache_add_key( gpgme_keycache_t Line 94  gpgme_keycache_add_key( gpgme_keycache_t
94              ;              ;
95          n1->next = c;          n1->next = c;
96      }      }
97        if (opaque)
98            *opaque = c;
99      return 0;      return 0;
100  } /* gpgme_keycache_add_key */  } /* gpgme_keycache_add_key */
101    
# Line 159  gpgme_keycache_find_key (gpgme_keycache_ Line 161  gpgme_keycache_find_key (gpgme_keycache_
161    
162    
163  gpgme_error_t  gpgme_error_t
164  gpgme_keycache_update_key (gpgme_keycache_t ctx, const char *keyid)  gpgme_keycache_update_key (gpgme_keycache_t ctx, int is_sec, void *opaque,
165                               const char *keyid)
166  {  {
167      struct keycache_s *c = NULL;      struct keycache_s *c = NULL;
168      gpgme_key_t key=NULL, fndkey=NULL;      gpgme_key_t key=NULL, fndkey=NULL;
169      gpgme_error_t err;      gpgme_error_t err;
170    
171      err = gpgme_op_keylist_getkey (0, keyid, &key);      err = gpgme_op_keylist_getkey (is_sec, keyid, &key);
172      if (err)      if (err)
173          return err;          return err;
174      err = keycache_find_key (ctx, keyid, 0, &fndkey, &c);      err = keycache_find_key (ctx, keyid, 0, &fndkey, &c);
175      if (err)      if (!err && c != NULL) {
         return err;  
     if (c != NULL) {  
176          gpgme_key_release (c->key);          gpgme_key_release (c->key);
177          c->key = key;          c->key = key;
178          c->flags = 0;          c->flags = 0;
179      }      }
180        else {
181            gpgme_keycache_t pub = (gpgme_keycache_t)opaque;
182            if (is_sec && !keycache_find_key (pub, keyid, 0, &fndkey, &c)) {
183                fndkey->gloflags.is_protected = c->key->gloflags.is_protected;
184                fndkey->gloflags.divert_to_card = c->key->gloflags.divert_to_card;
185            }      
186            gpgme_keycache_add_key (ctx, key, &c);
187            DEBUG3 ("keycache update: is_sec=%d keyid=%s %p\r\n", is_sec, keyid, c);
188            if (is_sec)
189                c->pubpart = fndkey;
190        }
191      return 0;      return 0;
192  }  }
193    
# Line 219  gpgme_keycache_init (gpgme_keycache_t ct Line 231  gpgme_keycache_init (gpgme_keycache_t ct
231      {      {
232          err = gpgme_op_keylist_next (c, &key);          err = gpgme_op_keylist_next (c, &key);
233          if (!err)          if (!err)
234              err = gpgme_keycache_add_key (ctx, key);              err = gpgme_keycache_add_key (ctx, key, NULL);
235      }      }
236      if (err == GPGME_EOF)      if (err == GPGME_EOF)
237          err = 0;          err = 0;

Legend:
Removed from v.20  
changed lines
  Added in v.21

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26