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

Diff of /trunk/Src/wptGPGME.cpp

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

revision 20 by twoaday, Wed Jul 27 11:17:22 2005 UTC revision 22 by twoaday, Wed Aug 10 11:33:35 2005 UTC
# Line 1  Line 1 
1  /* wptGPGME.cpp - WinPT GPGME interface  /* wptGPGME.cpp - WinPT GPGME interface
2   *      Copyright (C) 2001-2004 Timo Schulz   *      Copyright (C) 2001-2005 Timo Schulz
3   *   *
4   * This file is part of WinPT.   * This file is part of WinPT.
5   *   *
# Line 41  void progress_cleanup (progress_filter_s Line 41  void progress_cleanup (progress_filter_s
41  static gpgme_keycache_t pub = NULL;  static gpgme_keycache_t pub = NULL;
42  static gpgme_keycache_t sec = NULL;  static gpgme_keycache_t sec = NULL;
43  static unsigned int reload = 0;  static unsigned int reload = 0;
44    static char *gpg_secring = NULL;
45    
46  void  void
47  keycache_reload (HWND dlg)  keycache_reload (HWND dlg)
48  {        {      
49      refresh_cache_s rcs = {0};      refresh_cache_s rcs;
50    
51        memset (&rcs, 0, sizeof rcs);
52      rcs.kr_reload = rcs.kr_update = 1;      rcs.kr_reload = rcs.kr_update = 1;
53      /*rcs.tr_update = 1;*/      rcs.tr_update = 0;
54      DialogBoxParam( glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg,                                              DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg,                                        
55                      keycache_dlg_proc, (LPARAM)&rcs );                      keycache_dlg_proc, (LPARAM)&rcs);
56  } /* keycache_reload */  } /* keycache_reload */
57    
58  void  void
# Line 60  keycache_release (void) Line 61  keycache_release (void)
61      int n = gpgme_keycache_count (pub);      int n = gpgme_keycache_count (pub);
62      char tmpbuf[64];      char tmpbuf[64];
63    
64        /* XXX: update the value when the cache has changed. */
65      sprintf (tmpbuf, "%d", n);      sprintf (tmpbuf, "%d", n);
66      set_reg_key (HKEY_CURRENT_USER, "Software\\WinPT", "nKeys", tmpbuf);      set_reg_key (HKEY_CURRENT_USER, "Software\\WinPT", "nKeys", tmpbuf);
67    
68      if (pub) {      if (pub) {
69          gpgme_keycache_release( pub );          gpgme_keycache_release (pub);
70          pub = NULL;          pub = NULL;
71      }      }
72      if (sec) {      if (sec) {
73          gpgme_keycache_release( sec );          gpgme_keycache_release (sec);
74          sec = NULL;          sec = NULL;
75      }      }
76  } /* keycache_release */  } /* keycache_release */
# Line 78  gpgme_error_t Line 80  gpgme_error_t
80  keycache_update (int is_sec, const char *keyid)  keycache_update (int is_sec, const char *keyid)
81  {  {
82      gpgme_keycache_t ctx = pub;      gpgme_keycache_t ctx = pub;
83        gpgme_error_t err;
84    
85      if (is_sec)      if (is_sec)
86          ctx = sec;          ctx = sec;
87      return gpgme_keycache_update_key (ctx, is_sec, pub, keyid);      err =  gpgme_keycache_update_key (ctx, is_sec, pub, keyid);
88        if (is_sec)
89            gpgme_keycache_prepare_single (ctx, keyid, NULL, gpg_secring);
90        return err;
91  }  }
92    
93    /* XXX: cache_keyring_names must be called then the GPG homedir changes! */
94    
95  gpgme_error_t  gpgme_error_t
96  keycache_init (const char *pubring, const char * secring)  keycache_init (const char *pubring, const char * secring)
# Line 92  keycache_init (const char *pubring, cons Line 100  keycache_init (const char *pubring, cons
100      int val = 0;      int val = 0;
101      char * p;      char * p;
102    
103        if (secring != NULL) {
104            free_if_alloc (gpg_secring);
105            gpg_secring = get_gnupg_keyring (0, NO_STRICT);
106        }
107    
108      if (reload) {      if (reload) {
109          keycache_release ();          keycache_release ();
110          reload = 0;          reload = 0;
# Line 100  keycache_init (const char *pubring, cons Line 113  keycache_init (const char *pubring, cons
113      if (p && *p != ' ') {      if (p && *p != ' ') {
114          val = atoi (p);          val = atoi (p);
115          free_if_alloc (p);          free_if_alloc (p);
116          memset (&pfx, 0, sizeof pfx);          memset (&pfx, 0, sizeof (pfx));
117      }      }
118    
119      err = gpgme_keycache_new (&pub);      err = gpgme_keycache_new (&pub);
# Line 140  keycache_get_reload( void ) Line 153  keycache_get_reload( void )
153    
154    
155  gpgme_keycache_t  gpgme_keycache_t
156  keycache_get_ctx( int is_pub )  keycache_get_ctx (int is_pub)
157  {  {
158      return is_pub? pub : sec;      return is_pub? pub : sec;
159  } /* keycache_get_ctx */  } /* keycache_get_ctx */
# Line 195  get_key2( const char * keyid, gpgme_key_ Line 208  get_key2( const char * keyid, gpgme_key_
208    
209    
210  int  int
211  get_pubkey( const char *keyid, gpgme_key_t *ret_key )  get_pubkey (const char *keyid, gpgme_key_t *ret_key)
212  {  {
213      int rc = 0;      int rc = 0;
214    
215      if( pub && sec )      if (pub && sec)
216          rc = get_key( keyid, ret_key, 0 );          rc = get_key (keyid, ret_key, 0);
217      else      else
218          rc = get_key2( keyid, ret_key, 0 );          rc = get_key2 (keyid, ret_key, 0);
219      return rc;      return rc;
220  } /* get_pubkey */  } /* get_pubkey */
221    

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26