/[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 36 by werner, Thu Oct 27 15:25:13 2005 UTC revision 150 by twoaday, Wed Jan 18 11:52:45 2006 UTC
# Line 17  Line 17 
17   * along with WinPT; if not, write to the Free Software Foundation,   * along with WinPT; if not, write to the Free Software Foundation,
18   * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA   * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19   */   */
   
20  #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
21  #include <config.h>  #include <config.h>
22  #endif  #endif
23    
24  #include <sys/types.h>  #include <sys/types.h>
 #include <sys/types.h>  
25  #include <windows.h>  #include <windows.h>
26    
27  #include "../resource.h"  #include "resource.h"
28  #include "wptNLS.h"  #include "wptNLS.h"
29  #include "wptGPG.h"  #include "wptGPG.h"
30  #include "wptErrors.h"  #include "wptErrors.h"
# Line 45  void progress_cleanup (progress_filter_s Line 43  void progress_cleanup (progress_filter_s
43    
44  static gpg_keycache_t pub = NULL;  static gpg_keycache_t pub = NULL;
45  static gpg_keycache_t sec = NULL;  static gpg_keycache_t sec = NULL;
 static unsigned int reload = 0;  
46  static char *gpg_secring = NULL;  static char *gpg_secring = NULL;
47    
48    
# Line 107  keycache_update (int is_sec, const char Line 104  keycache_update (int is_sec, const char
104      return err;      return err;
105  }  }
106    
 /* XXX: cache_keyring_names must be called then the GPG homedir changes! */  
107    
108  /* Initialize both cache contexts. Use @pubring for the public  /* Initialize both cache contexts. Use @pubring for the public
109     keyring and @secring for the secret keyring. */     keyring and @secring for the secret keyring. */
# Line 123  keycache_init (const char *pubring, cons Line 119  keycache_init (const char *pubring, cons
119          free_if_alloc (gpg_secring);          free_if_alloc (gpg_secring);
120          gpg_secring = get_gnupg_keyring (0, NO_STRICT);          gpg_secring = get_gnupg_keyring (0, NO_STRICT);
121      }      }
122        
     if (reload) {  
         keycache_release (0);  
         reload = 0;  
     }  
123      p = get_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "nKeys");      p = get_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "nKeys");
124      if (p && *p != ' ') {      if (p && *p != ' ') {
125          val = atoi (p);          val = atoi (p);
# Line 135  keycache_init (const char *pubring, cons Line 127  keycache_init (const char *pubring, cons
127          memset (&pfx, 0, sizeof (pfx));          memset (&pfx, 0, sizeof (pfx));
128      }      }
129    
130        /* Release old contexts first. */
131        keycache_release (0);
132    
133      err = gpg_keycache_new (&pub);      err = gpg_keycache_new (&pub);
134      if (err)      if (err)
135          return err;          return err;
# Line 157  keycache_init (const char *pubring, cons Line 152  keycache_init (const char *pubring, cons
152  }  }
153    
154    
 /* If @val = 1 indicate to reload the cache. */  
 void  
 keycache_set_reload (int val)  
 {  
     reload = val;  
 }  
   
   
 /* Return the reload cache flag. */  
 int  
 keycache_get_reload (void)  
 {  
     return reload;  
 }  
   
   
155  /* Return the public cache context if @is_pub is set  /* Return the public cache context if @is_pub is set
156     the secre cache context otherwise. */     the secre cache context otherwise. */
157  gpg_keycache_t  gpg_keycache_t
# Line 304  count_insecure_elgkeys (void) Line 283  count_insecure_elgkeys (void)
283      gpg_keycache_rewind (pc);      gpg_keycache_rewind (pc);
284      return n;      return n;
285  }  }
286    
287    
288    
289    /* Map the signature summary in @sum to signature status table index.
290       Return value: index to table. */
291    static int
292    sigsum_to_index (gpgme_sigsum_t sum)
293    {
294        if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_KEY_REVOKED))
295            return 7;
296        if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_SIG_EXPIRED))
297            return 6;
298        if (sum & GPGME_SIGSUM_GREEN)
299            return 1;
300        else if (sum & GPGME_SIGSUM_RED)
301            return 2;
302        else if (sum & GPGME_SIGSUM_KEY_MISSING)
303            return 3;
304        return 0;
305    }
306    
307    
308    /* Return a humand readable description for the signature status @sum. */
309    const char*
310    get_gpg_sigstat (gpgme_sigsum_t sum)
311    {
312        const char *gpg_sigstat[] = {
313            _("Error during verification process."),
314            _("The signature is good."),
315            _("The signature is BAD!"),
316            _("The signature could not be checked due to a missing key."),
317            _("No valid OpenPGP signature."),
318            _("Signature Error"),
319            _("Good Signature (Expired Key)"),
320            _("Good Signature (Revoked Key)"),
321            NULL
322        };
323        const unsigned int mask = 8;
324    
325        return gpg_sigstat[sigsum_to_index (sum) % mask];
326    }

Legend:
Removed from v.36  
changed lines
  Added in v.150

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26