[Winpt-commits] r273 - in trunk: . Include PTD Po Src icons

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Fri Dec 8 11:22:38 CET 2006


Author: twoaday
Date: 2006-12-08 11:22:17 +0100 (Fri, 08 Dec 2006)
New Revision: 273

Added:
   trunk/Src/wptMisc.c
   trunk/Src/wptNLS.cpp
   trunk/icons/exp_keypair.ico
   trunk/icons/exp_pubkey.ico
   trunk/icons/rev_keypair.ico
Removed:
   trunk/Src/wptCardPCSC.c
   trunk/Src/wptFileDisk.c
   trunk/Src/wptNLS.c
Modified:
   trunk/AUTHORS
   trunk/Include/wptContext.h
   trunk/Include/wptCrypto.h
   trunk/Include/wptFileManager.h
   trunk/Include/wptGPG.h
   trunk/Include/wptKeylist.h
   trunk/Include/wptKeyserver.h
   trunk/Include/wptRegistry.h
   trunk/Include/wptUtil.h
   trunk/NEWS
   trunk/PTD/PTD.cpp
   trunk/PTD/wptDNSKeys.cpp
   trunk/PTD/wptWipeFile.cpp
   trunk/Po/POTFILES.in
   trunk/Po/de.po
   trunk/Po/jp.po
   trunk/Po/pt_BR.po
   trunk/Src/ChangeLog
   trunk/Src/Makefile.am
   trunk/Src/WinPT-en.rc
   trunk/Src/WinPT.cpp
   trunk/Src/resource.h
   trunk/Src/wptClipDecryptDlg.cpp
   trunk/Src/wptClipEncryptDlg.cpp
   trunk/Src/wptClipboard.cpp
   trunk/Src/wptCurrWnd.cpp
   trunk/Src/wptFileCBS.cpp
   trunk/Src/wptFileManager.cpp
   trunk/Src/wptFileManagerDlg.cpp
   trunk/Src/wptGPG.cpp
   trunk/Src/wptGPGOptDlg.cpp
   trunk/Src/wptGPGUtil.cpp
   trunk/Src/wptImportList.cpp
   trunk/Src/wptKeyCacheDlg.cpp
   trunk/Src/wptKeyEditCB.cpp
   trunk/Src/wptKeyEditDlgs.cpp
   trunk/Src/wptKeyManagerDlg.cpp
   trunk/Src/wptKeyPropsDlg.cpp
   trunk/Src/wptKeylist.cpp
   trunk/Src/wptKeyserver.cpp
   trunk/Src/wptKeyserverDlg.cpp
   trunk/Src/wptKeyserverSearchDlg.cpp
   trunk/Src/wptKeysignDlg.cpp
   trunk/Src/wptListView.cpp
   trunk/Src/wptPassCache.cpp
   trunk/Src/wptPreferencesDlg.cpp
   trunk/Src/wptProxySettingsDlg.cpp
   trunk/Src/wptRegistry.cpp
   trunk/Src/wptSOCKS.cpp
   trunk/Src/wptUtil.cpp
   trunk/THANKS
   trunk/TODO
   trunk/configure.ac
   trunk/icons/Makefile.am
Log:


Modified: trunk/AUTHORS
===================================================================
--- trunk/AUTHORS	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/AUTHORS	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,5 +1,5 @@
 Packet maintainer and WinPT author:
-Timo Schulz <twoaday at freakmail.de>
+Timo Schulz <twoaday at gmx.net>
 
 Port from MyGPGME to the official GPGME was done by g10 Code GmbH,
 also a lot of code for gpg4win integration.

Modified: trunk/Include/wptContext.h
===================================================================
--- trunk/Include/wptContext.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptContext.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -72,8 +72,10 @@
 };
 
 struct secdel_confirm_s {
-    unsigned int       yes:1;	/* if yes=1 user confirmed delete. */
-    listview_ctrl_t    lv_files;/* listview control with the files to delete. */
+    unsigned int    yes:1;    /* if yes=1 user confirmed delete. */
+    listview_ctrl_t lv_files; /* listview with the files to delete. */
+    int		    mode;     /* return the wipe mode. */
+    int		    passes;   /* number of random passes. */
 };
 
 

Modified: trunk/Include/wptCrypto.h
===================================================================
--- trunk/Include/wptCrypto.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptCrypto.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -17,7 +17,6 @@
  * along with WinPT; if not, write to the Free Software Foundation, 
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
-
 #ifndef WPT_CRYPTO_H
 #define WPT_CRYPTO_H
 
@@ -27,10 +26,9 @@
     WIPE_MODE_DOD	= 1,
     WIPE_MODE_GUTMANN	= 2,
     WIPE_MODE_FAST	= 3,	/* 1 random pass */
+    WIPE_MODE_PASSES	= 4	/* generic for n random passes. */
 };
 
-
-
 /* Possible PGP message types. */
 enum pgp_type_t {
     PGP_NONE	     =  0,
@@ -42,30 +40,22 @@
     PGP_DASH_ESCAPED = 32 /* actually not a type, just a flag */
 };
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-
 int gpg_md_hash_file (int mdalgo, const char *file, byte *digest, size_t *nlen);
 int gpg_md_selftest (void);
 
-
-
-
 int rename_unlink (const char *path);
-int secure_unlink (const char *path, const int mode);
+int secure_unlink (const char *path, const int mode, const int passes);
 void secure_unlink_set_cb (void (*cb)(void *, const char *, int, int, int),
 			   void *cb_value);
 int wipe_freespace (const char * drive, HANDLE *r_fd,
 		    void (*cb)(void *, unsigned __int64, unsigned __int64), 
 		    void * cb_value);
-
 #ifdef __cplusplus
 }
 #endif
 
-
 #endif /*WPT_CRYPTO_H*/
-

Modified: trunk/Include/wptFileManager.h
===================================================================
--- trunk/Include/wptFileManager.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptFileManager.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -100,13 +100,13 @@
 typedef struct file_sig_ctx_s *file_sig_ctx_t;
 
 
+/* Gpg file handle. */
 enum file_data_flag_t {
     F_DATA_WRITE    = 0,
     F_DATA_READ	    = 1,    
     F_DATA_NOMAP    = 2
 };
 
-/* Gpg file handle. */
 struct file_data_s {
     struct gpgme_data_cbs cbs;
     HANDLE	     handle;
@@ -128,8 +128,8 @@
 				    struct progress_filter_s *pfx);
 
 /*-- wptFileManager.cpp --*/
-char * fm_quote_file (const char * name);
-int fm_parse_command_line (char * cmdl);
+char *fm_quote_file (const char *name);
+int fm_parse_command_line (char *cmdl);
 int fm_parse_files (listview_ctrl_t lv, HWND dlg, int cmd);
 int fm_state_new (fm_state_t *ctx);
 void fm_state_release (fm_state_t ctx);
@@ -158,7 +158,6 @@
 int fm_sign (fm_state_t c, const char * name);
 int fm_verify (fm_state_t c, int detached, const char * name);
 int fm_import(fm_state_t c, const char *name);
-int fm_wipe (const char * name);
 int fm_list (const char * name, HWND dlg);
 int fm_encrypt_directory (fm_state_t c, const char * name);
 int fm_verify_pasted_detsig (listview_ctrl_t lv, HWND dlg);

Modified: trunk/Include/wptGPG.h
===================================================================
--- trunk/Include/wptGPG.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptGPG.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -56,9 +56,8 @@
 
 /* Keycache refresh context. */
 struct refresh_cache_s {
-    int kr_reload;
-    int kr_update;
-    int tr_update;
+    int kring_update; /* update the keyring cache. */
+    int sig_update;   /* update the signature cache. */
 };
 
 
@@ -91,7 +90,6 @@
 char* get_gnupg_default_key (void);
 int set_gnupg_default_key (const char *key);
 char* get_gnupg_config (void);
-char* get_gnupg_keyring_from_options (const char *fname, int pub);
 int check_gnupg_config (const char *fname, int *secrings, int *pubrings);
 char* get_gnupg_path (void);
 int check_gnupg_prog (void);
@@ -155,7 +153,7 @@
 typedef struct conf_option_s *conf_option_t;
 
 struct conf_member_s {
-    struct conf_member_s *next;
+    struct conf_member_s * next;
     char *name;
     unsigned int used:1;  
 };
@@ -170,37 +168,35 @@
 typedef struct conf_group_s *conf_group_t;
 
 struct conf_file_s {
-    struct conf_option_s *list;
-    struct conf_group_s *grp;
+    conf_option_t list;
+    conf_group_t grp;
 };
 typedef struct conf_file_s *config_file_t;
 
-/* find */
-conf_group_t conf_find_group( config_file_t opt, const char *str );
-conf_option_t conf_find_option( config_file_t opt, const char *str );
-conf_member_t conf_find_member( config_file_t opt, const char *grp, const char *str );
-/* delete */
-int conf_delete_group( config_file_t opt, const char *str );
-int conf_delete_member( config_file_t opt, const char *grp, const char *str );
-int conf_delete_option( config_file_t opt, const char *str );
-/* add */
-int conf_modify_entry( config_file_t opt, int type, const char *name, const char *val );
-int conf_add_entry( config_file_t opt, int type, const char *name, const char *val );
+/* find/delete/add */
+conf_group_t conf_find_group (config_file_t opt, const char *str);
+conf_option_t conf_find_option (config_file_t opt, const char *str);
+conf_member_t conf_find_member (config_file_t opt, 
+				const char *grp, const char *str);
+int conf_delete_group (config_file_t opt, const char *str);
+int conf_delete_member (config_file_t opt, const char *grp, const char *str);
+int conf_delete_option (config_file_t opt, const char *str);
+int conf_modify_entry (config_file_t opt, int type, const char *name, const char *val);
+int conf_add_entry (config_file_t opt, int type, const char *name, const char *val);
 int conf_add_entry_int (config_file_t opt, int type, const char *name, int val);
-int conf_add_member( config_file_t opt, const char *grp, const char *str );
-int conf_add_group( config_file_t opt, const char *str );
+int conf_add_member (config_file_t opt, const char *grp, const char *str);
+int conf_add_group (config_file_t opt, const char *str);
 /* high-level */
 void new_config (config_file_t *r_opt);
 int parse_config (const char *file, config_file_t *r_opt);
 int commit_config (const char *file, config_file_t opt);
 void release_config (config_file_t opt);
-/* memory */
-void release_group( conf_group_t grp );
+void release_group (conf_group_t grp);
 
 /*-- wptPassphraseCB.cpp --*/
 enum passdlg_t {
-    PASSDLG_REPEAT  = 0,
-    PASSDLG_INIT    = 1,  
+    PASSDLG_REPEAT  = 0, /* indicate the dialig is in the 'repeat passwd' state. */
+    PASSDLG_INIT    = 1,
     PASSDLG_STRICT  = 2,
     PASSDLG_NOTEMPTY= 4,
     PASSDLG_WARN_UTF8=8,
@@ -254,5 +250,6 @@
 gpgme_error_t gpg_get_recipients (const char *file, gpgme_recipient_t *r_list);
 gpgme_error_t gpg_find_key_subpacket (const char *key, int subpktid,
 				      char **value);
+int gpg_check_return_code (const char *args);
 
 #endif /* WPT_GPG_H */

Modified: trunk/Include/wptKeylist.h
===================================================================
--- trunk/Include/wptKeylist.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptKeylist.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -126,10 +126,10 @@
 int keylist_sort( listview_ctrl_t lv, int sortby );
 
 /*-- wptImportList.cpp --*/
-int  implist_build( listview_ctrl_t *lv, HWND ctrl );
-int  implist_load( listview_ctrl_t lv, const char *file, 
-		   int *r_revcerts, int *r_seckeys );
-void implist_delete( listview_ctrl_t lv );
+void implist_build (listview_ctrl_t *lv, HWND ctrl);
+int  implist_load (listview_ctrl_t lv, const char *file,
+		   int *r_revcerts, int *r_seckeys);
+void implist_delete (listview_ctrl_t lv);
 
 /*-- wptSigList.cpp --*/
 listview_ctrl_t siglist_load (HWND ctrl, const char *keyid);

Modified: trunk/Include/wptKeyserver.h
===================================================================
--- trunk/Include/wptKeyserver.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptKeyserver.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -116,28 +116,28 @@
 void kserver_proxy_release (keyserver_proxy_t ctx);
 const char* kserver_get_hostname (int idx, int type, unsigned short *port);
 void keyserver_set_default (const char *hostname, unsigned short port);
-void kserver_set_socket_timeout (int nsec);
+void kserver_set_socket_timeout (size_t nsec);
 
 /*-- General --*/
-int check_IP_or_hostname (const char *name);
+int check_inet_address (const char *addr);
 const char* kserver_strerror (void);
 int kserver_check_inet_connection (void);
 int kserver_connect (const char *hostname, WORD port, int *conn_fd);
 int kserver_sendkey (const char *hostname, WORD port, 
-		     const char *pubkey, int len);
+		     const char *pubkey, size_t len);
 int kserver_recvkey (const char *hostname, WORD port, 
-		     const char *keyid, char **r_key, int *r_keylen);
+		     const char *keyid, char **r_key, size_t *r_keylen);
 int kserver_search_begin (const char *hostname, WORD port, 
-			  const char *pattern, int *conn_fd, int *nkeys);
+			  const char *pattern, int *conn_fd, size_t *nkeys);
 int kserver_search_next (int conn_fd, keyserver_key_s **r_key);
 void kserver_search_end (int conn_fd);
 void kserver_release_key (keyserver_key_s *key);
 
 /*-- Finger/LDAP Protocol --*/
 int  ldap_recvkey (const char *hostname, const char *keyid, 
-		   char **r_key, int *r_keylen);
+		   char **r_key, size_t *r_keylen);
 int finger_recvkey (const char *host, const char *user, 
-		    char **r_key, int *r_keylen);
+		    char **r_key, size_t *r_keylen);
 
 /*-- Dialog support --*/
 int hkp_send_key (HWND dlg, const char *kserver, unsigned short port, 

Modified: trunk/Include/wptRegistry.h
===================================================================
--- trunk/Include/wptRegistry.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptRegistry.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -29,7 +29,6 @@
     CFG_WORDWRAP,
     CFG_FILEEXT,
     CFG_VIEWER,
-    CFG_WIPEMODE,
     CFG_ALWAYSTRUST,
     CFG_AUTOBACKUP,
     CFG_AUTOBAKMODE,
@@ -50,7 +49,6 @@
     "WordWrap",
     "DefaultExt",
     "Viewer",
-    "WipeMode",
     "AlwaysTrust",
     "AutoBackup",
     "BackupMode",
@@ -67,7 +65,6 @@
     int cache_time;	/* caching time for passphrase */
     int use_viewer;	/* use clipboard viewer for displaying plaintext */
     int no_zip_mmedia;  /* disable compression for multi-media files (movies, music) */
-    int wipe_mode;	/* simple=0, dod=1, gutmann=2 */
     int always_trust;	/* skip key validation (1 means yes) */
     int auto_backup;	/* automatic backup (1 means activated) */
     int default_ext;	/* 1 = GPG, PGP otherwise. */

Modified: trunk/Include/wptUtil.h
===================================================================
--- trunk/Include/wptUtil.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Include/wptUtil.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,3 +1,18 @@
+/* wptUtil.h
+ *	Copyright (C) 2006 Timo Schulz
+ *
+ * This file is part of WinPT.
+ *
+ * WinPT is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * WinPT is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
 #ifndef WPT_UTIL_H
 #define WPT_UTIL_H
 

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/NEWS	2006-12-08 10:22:17 UTC (rev 273)
@@ -956,4 +956,21 @@
   a problem for platforms where sizeof(char) != 1,
   because then the size of char[256] is sizeof(char)*256
   and not 256.
-  
\ No newline at end of file
+
+
+Noteworthy changes in version 1.2.0 (2006-12-09)
+================================================
+
+* Fix a problem when a revoked key has been set as
+  the default key. This is now not longer possible in
+  the Key Manager. Plus, revoked key pairs are now have
+  its own icon to give them a visible attribute.
+
+* Several minor cleanups all over the place.
+
+* Disable the free space wiper because it might not
+  work on expected on some systems.
+
+* Fix a BUG() problem when decrypt+verify does not find 
+  a public key to verify the signature.
+

Modified: trunk/PTD/PTD.cpp
===================================================================
--- trunk/PTD/PTD.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/PTD/PTD.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -57,7 +57,7 @@
 static unsigned *journ_keys = 0;
 static unsigned key_idx = 0;
 static unsigned nkeys = 0;
-static HHOOK journ_hook = NULL;	    /* Journaling hook  handle. */
+static HHOOK journ_hook = NULL;	 /* Journaling hook  handle. */
 
 
 void dns_cleanup (void);
@@ -73,7 +73,7 @@
         /* A window is about to receive the keyboard focus */		
         
         curr_hwnd = (HWND)wparam;
-        GetWindowThreadProcessId( curr_hwnd, &proc_id );
+        GetWindowThreadProcessId (curr_hwnd, &proc_id);
         /* Only if the current window is different from this window list,
            we set the new focus. For more information read the hint in 
 	   PTD_initialize. */

Modified: trunk/PTD/wptDNSKeys.cpp
===================================================================
--- trunk/PTD/wptDNSKeys.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/PTD/wptDNSKeys.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -81,8 +81,6 @@
 }
 
 
-
-
 /* build a DNS name for the PKA lookup. */
 static char*
 email_get_pka_addr (const char *uid)
@@ -92,11 +90,13 @@
     char *pka;
     int pos=0;
 
+    /* check that the @uid really contains an email address. */
     if ((bo=strchr (uid, '<')) && strchr (uid, '>'))
 	uid += (bo-uid+1);
     if (!strchr (uid, '@'))
 	return NULL;
 
+    /* create the user at _pka.domain-part.tlp string. */
     pka = (char*)calloc (1, strlen (uid)+strlen (fmt)+1);
     while (uid && *uid != '@')
 	pka[pos++] = *uid++;

Modified: trunk/PTD/wptWipeFile.cpp
===================================================================
--- trunk/PTD/wptWipeFile.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/PTD/wptWipeFile.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,7 +1,9 @@
 /* wptWipeFile.cpp - Secure file removal
- *	Copyright (C) 2001-2005 Timo Schulz
+ *	Copyright (C) 2001-2006 Timo Schulz
  *	Copyright (C) 2000 Matt Gauthier
  *
+ * (This code based on the sunlink.c file from the SRM project)
+ *
  * WinPT software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -15,17 +17,7 @@
  * You should have received a copy of the GNU General Public License
  * along with WinPT; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- *
- **************************************************************************
- * This code based on the sunlink.c file from the SRM project, but        *
- * it was heavily modified to work with W32 and with added GCRYPT         *
- * support for gathering random bytes.                                    *
- *                                                                        *
- * The original code was placed under the GNU Lesser Public License,      *
- * even so I decide to put this file under the GNU General Public License.*
- **************************************************************************
  */
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -38,12 +30,18 @@
 #include <ctype.h>
 #include <direct.h>
 
-#include "openpgp.h"
 #include "wptW32API.h"
 #include "wptErrors.h"
 #include "wptTypes.h"
-#include "wptCrypto.h"
 
+/* WARNING: Because modern file systems, for example NTFS, use a lot of
+	    features to provide better performance and journaling to recover
+	    the FS after a crash, secure file deleting is extremly
+	    difficult. It can happen that parts of the file are still in
+	    plaintext after wiping the file. To avoid information leakage,
+	    it is recommend to wipe the free space of the disk to destroy
+	    left over pattern. */
+
 #ifdef _MSC_VER
 typedef unsigned __int64 DDWORD;
 #else
@@ -51,8 +49,8 @@
 #endif
 
 typedef struct {
-    HANDLE fd;
-    DDWORD filesize;
+    HANDLE fd;		/* file descriptor. */
+    DDWORD filesize;	/* file size of the file. */
     DDWORD offset;
     BYTE  *buffer;
     DWORD  buffsize;
@@ -60,10 +58,11 @@
     int    n_passes;
 } wipe_context_s;
 
+#define SBOX_SIZE 256
 struct arcfour_s {
     BYTE *seed;
     int  pos;
-    BYTE sbox[256];
+    BYTE sbox[SBOX_SIZE];
     DWORD i;
     DWORD j;
 };
@@ -83,14 +82,13 @@
    into the seed @seed. The seed length (256) used to
    emulate a circular movment. */
 static void
-add_random (unsigned char *seed, int *seed_pos,
-	    unsigned char *buf, int buf_len)
+add_random (BYTE *seed, int *seed_pos, BYTE *buf, int buf_len)
 {
     int i, s_pos = *seed_pos;
 
     for (i=0; i < buf_len; i++)
-	seed[(s_pos++ % 256)] ^= buf[i];
-    *seed_pos = s_pos % 256;
+	seed[(s_pos++ % SBOX_SIZE)] ^= buf[i];
+    *seed_pos = s_pos % SBOX_SIZE;
 }
 
 
@@ -106,7 +104,7 @@
     char buf[256];
     int n;
 
-    n  = GetWindowText (h, buf, 255);
+    n  = GetWindowText (h, buf, DIM (buf)-1);
     if (n > 0)
 	add_random (cb->seed, &cb->pos, (BYTE*)buf, n);
     add_random (cb->seed, &cb->pos, (BYTE*)&a, 4);
@@ -193,9 +191,9 @@
 
     ctx->i = 0;
     ctx->j = 0;
-    for (ctx->i=0; ctx->i < 256; ctx->i++)
+    for (ctx->i=0; ctx->i < SBOX_SIZE; ctx->i++)
 	ctx->sbox[ctx->i] = (BYTE)ctx->i;
-    for (ctx->i=0; ctx->i < 256; ctx->i++) {
+    for (ctx->i=0; ctx->i < SBOX_SIZE; ctx->i++) {
 	ctx->j += (ctx->j+ctx->sbox[ctx->i]+key[ctx->i]);
 	ctx->j &= 255;
 	t = ctx->sbox[ctx->i];
@@ -214,7 +212,8 @@
     BYTE t;
 
     if (!init_done) {
-	BYTE buf[256];
+	BYTE buf[SBOX_SIZE];
+
 	init_random (buf);
 	init_arcfour (ctx, buf);
 	init_done = 1;
@@ -233,11 +232,11 @@
 static char
 random_char (void)
 {	
-    byte c = 0;
+    BYTE c = 0;
 
-    while  (!isalnum(c))
+    while  (!isalnum ((int)c))
 	c = rnd_byte ();
-    return c % 127; 
+    return c % 127;
 }
 
 
@@ -275,7 +274,7 @@
 
 /* fill the buffer with random of the given level. */
 static void
-randomize_buffer (byte *buf, size_t bufsize)
+randomize_buffer (BYTE *buf, size_t bufsize)
 {
     const int blocksize = 512;
     int blocks = bufsize / blocksize;
@@ -311,7 +310,7 @@
 {
     memset (ctx->buffer, byte, ctx->buffsize);
     overwrite (ctx);
-} /* overwrite_byte */
+}
 
 
 /* perform an overwrite with a specific byte triple (like 0x00, 0xFF, 0xAA). */
@@ -326,7 +325,7 @@
 	ctx->buffer[i+1] = byte3;
     }
     overwrite (ctx);
-} /* overwrite_bytes */
+}
 
 
 /* For the case the file is not a regular file (this is true for
@@ -397,7 +396,8 @@
 
 
 static int
-_secure_unlink (const char * path, int mode, HANDLE *r_fd)
+_secure_unlink (const char *path, const int mode, 
+		const int passes, HANDLE *r_fd)
 {
     wipe_context_s ctx;
     LONG size_high = 0;
@@ -408,14 +408,14 @@
     memset (&ctx, 0, sizeof (ctx));
     ctx.name = path;
     ctx.buffsize = 16384;
-    ctx.buffer = new byte[ctx.buffsize];
+    ctx.buffer = new BYTE[ctx.buffsize];
     if (!ctx.buffer)
-	BUG (0);
+	BUG (NULL);
     
     ctx.filesize = GetFileSize64 (path);
     if (!ctx.filesize) {
 	free_if_alloc (ctx.buffer);
-	unlink (path);
+	remove (path);
 	return 0;
     }
 
@@ -423,7 +423,7 @@
 			 OPEN_ALWAYS, 0, NULL);
     if (ctx.fd == INVALID_HANDLE_VALUE) {
 	free_if_alloc (ctx.buffer);
-	return WPTERR_FILE_OPEN;
+	return WPTERR_FILE_CREAT;
     }
     else if (r_fd)
 	*r_fd = ctx.fd;
@@ -432,6 +432,11 @@
 	unlink_cb (unlink_cb_value, ctx.name, 0, 0, 0);
 
     switch (mode) {
+    case WIPE_MODE_PASSES:
+	ctx.n_passes = passes;
+	overwrite_random (passes, &ctx);
+	break;
+
     case WIPE_MODE_FAST:
 	ctx.n_passes = 1;
 	overwrite_random (1, &ctx);
@@ -490,16 +495,16 @@
     SetEndOfFile (ctx.fd);
     CloseHandle (ctx.fd);
     
-    memset (ctx.buffer, 0, ctx.buffsize); /* burn the last evidence */	
+    wipememory (ctx.buffer, ctx.buffsize); /* burn the last evidence */	
     free_if_alloc (ctx.buffer);
 
     return rename_unlink (path);
 }
 
 
-/* Delete a file in a secure way with the given mode @mode. */
+/* Try to delete a file in a secure way with the given mode @mode. */
 extern "C" int 
-secure_unlink (const char *path, int mode)
+secure_unlink (const char *path, const int mode, const int passes)
 {
     /* If the file has one of the following attributes, the
        chance the file really gets overwritten is very low so
@@ -509,7 +514,7 @@
 	(attr & FILE_ATTRIBUTE_ENCRYPTED) ||
 	(attr & FILE_ATTRIBUTE_SPARSE_FILE))
 	return DeleteFile (path); /* XXX */
-    return _secure_unlink (path, mode, NULL);
+    return _secure_unlink (path, mode, passes, NULL);
 }
 
 
@@ -528,16 +533,19 @@
    which has the size of the free space. This file will be then
    overwritten with random and static pattern. */
 extern "C" int
-wipe_freespace (const char * drive, HANDLE *r_fd,
+wipe_freespace (const char *drive, HANDLE *r_fd,
 	        void (*cb)(void *, DDWORD, DDWORD), void * cb_value)
 {
     ULARGE_INTEGER caller, total, frees;
     LONG hpart=0;
     HANDLE fd;
+    const char *fmt;
+    char *file;
     int disktyp = GetDriveType (drive);
     int rc;
-    char * file;
 
+    /* XXX: needs to be modernized or better extracted to a separate
+	    program module. */
     if (disktyp != DRIVE_FIXED && disktyp != DRIVE_REMOVABLE)
 	return -1;
     if (!GetDiskFreeSpaceEx (drive, &caller, &total, &frees))
@@ -546,17 +554,18 @@
     /* disk is full */
     if (!frees.LowPart)
 	return 0;
-    file = new char[strlen (drive)+8];
+    fmt = "%stemp_winpt.tmp";
+    file = new char[strlen (drive)+strlen (fmt)+8+1];
     if (!file)
 	BUG (0);
-    sprintf (file, "%stemp_winpt.tmp", drive);
+    sprintf (file, fmt, drive);
     fd = CreateFile (file,
-		    GENERIC_READ|GENERIC_WRITE,
-		    FILE_SHARE_READ|FILE_SHARE_WRITE,
-		    NULL, CREATE_ALWAYS, 0, NULL);
+		     GENERIC_READ|GENERIC_WRITE,
+		     FILE_SHARE_READ|FILE_SHARE_WRITE,
+		     NULL, CREATE_ALWAYS, 0, NULL);
     if (fd == INVALID_HANDLE_VALUE) {
 	free_if_alloc (file);
-	return WPTERR_FILE_OPEN;
+	return WPTERR_FILE_CREAT;
     }
     hpart = frees.HighPart;
     SetFilePointer (fd, frees.LowPart, &hpart, FILE_BEGIN);
@@ -567,7 +576,7 @@
 	progress_cb = cb;
 	progress_cb_value = cb_value;
     }
-    rc = _secure_unlink (file, WIPE_MODE_FAST, r_fd);
+    rc = _secure_unlink (file, WIPE_MODE_PASSES, 2, r_fd);
     free_if_alloc (file);
     return rc;
 }

Modified: trunk/Po/POTFILES.in
===================================================================
--- trunk/Po/POTFILES.in	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Po/POTFILES.in	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,12 +1,13 @@
 # List of source files containing translatable strings.
 
 Src/WinPT.cpp
+Src/wptNLS.cpp
 Src/wptAboutDlgs.cpp
 Src/wptCardDlg.cpp
 Src/wptCardEditCB.cpp
 Src/wptCardEdit.cpp
 Src/wptCardManager.cpp
-Src/wptCardPCSC.c
+Src/wptCardPCSC.cpp
 Src/wptClipboard.cpp
 Src/wptClipDecryptDlg.cpp
 Src/wptClipEditDlg.cpp

Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Po/de.po	2006-12-08 10:22:17 UTC (rev 273)
@@ -14,9 +14,9 @@
 # BUG: GetOpenFileName needs \0\0. gettext does not support it.
 msgid ""
 msgstr ""
-"Project-Id-Version: WinPT 1.0.2\n"
+"Project-Id-Version: WinPT 1.1.1\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-11-04 14:17+0100\n"
+"POT-Creation-Date: 2006-12-07 14:51+0100\n"
 "PO-Revision-Date: 2005-12-28 16:10+0100\n"
 "Last-Translator: Timo Schulz <ts at g10code.de>\n"
 "Language-Team: DE <twoaday at freakmail.de>\n"
@@ -36,29 +36,33 @@
 msgid "Could not create GPG home directory"
 msgstr "Konnte Heimatverzeichnis von GPG nicht erstellen"
 
-#: Src/WinPT.cpp:197 Src/WinPT.cpp:276 Src/WinPT.cpp:280 Src/WinPT.cpp:521
-#: Src/WinPT.cpp:530 Src/WinPT.cpp:537 Src/WinPT.cpp:566 Src/WinPT.cpp:582
-#: Src/WinPT.cpp:591 Src/WinPT.cpp:595 Src/WinPT.cpp:612 Src/WinPT.cpp:681
-#: Src/WinPT.cpp:694 Src/WinPT.cpp:741 Src/WinPT.cpp:784 Src/WinPT.cpp:803
-#: Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144 Src/wptGPG.cpp:922
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:944 Src/wptGPG.cpp:955
+#: Src/WinPT.cpp:197 Src/WinPT.cpp:298 Src/WinPT.cpp:302 Src/WinPT.cpp:543
+#: Src/WinPT.cpp:552 Src/WinPT.cpp:559 Src/WinPT.cpp:582 Src/WinPT.cpp:592
+#: Src/WinPT.cpp:608 Src/WinPT.cpp:617 Src/WinPT.cpp:621 Src/WinPT.cpp:638
+#: Src/WinPT.cpp:707 Src/WinPT.cpp:720 Src/WinPT.cpp:767 Src/WinPT.cpp:810
+#: Src/WinPT.cpp:828 Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144
+#: Src/wptGPG.cpp:929 Src/wptGPG.cpp:941 Src/wptGPG.cpp:951 Src/wptGPG.cpp:962
 #: Src/wptMainProc.cpp:346 Src/wptMainProc.cpp:519
 msgid "WinPT Error"
 msgstr "WinPT Fehler"
 
-#: Src/WinPT.cpp:225
+#: Src/WinPT.cpp:233
 msgid "No useable secret key found."
 msgstr "Kein benutzbarer geheimer Schlüssel gefunden."
 
-#: Src/WinPT.cpp:226 Src/wptKeyPropsDlg.cpp:357 Src/wptKeyPropsDlg.cpp:364
+#: Src/WinPT.cpp:234 Src/WinPT.cpp:245 Src/wptKeyPropsDlg.cpp:370
 msgid "WinPT Warning"
 msgstr "WinPT Warnung"
 
-#: Src/WinPT.cpp:275
+#: Src/WinPT.cpp:244
+msgid "Default secret key is unuseable"
+msgstr "Voreingestellter geheimer Schlüssel unbenutzbar"
+
+#: Src/WinPT.cpp:297
 msgid "Could not read GnuPG version."
 msgstr "Konnte Version von GnuPG nicht auslesen."
 
-#: Src/WinPT.cpp:281
+#: Src/WinPT.cpp:303
 #, c-format
 msgid ""
 "Sorry, you need a newer GPG version.\n"
@@ -67,12 +71,12 @@
 "Sorry, Sie benötigen eine neuere Version von GPG.\n"
 "Aktuelle Version von GPG %d.%d.%d benötigte Version von GPG "
 
-#: Src/WinPT.cpp:315
+#: Src/WinPT.cpp:337
 msgid "Failed to create WinPT directory"
 msgstr "Konnte WinPT-Verzeichnis nicht erstellen"
 
-#: Src/WinPT.cpp:316 Src/WinPT.cpp:333 Src/WinPT.cpp:344
-#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:638
+#: Src/WinPT.cpp:338 Src/WinPT.cpp:355 Src/WinPT.cpp:366
+#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:642
 #: Src/wptKeyserverDlg.cpp:71 Src/wptKeyserverDlg.cpp:73
 #: Src/wptKeyserverDlg.cpp:190 Src/wptKeyserverDlg.cpp:198
 #: Src/wptKeyserverDlg.cpp:214 Src/wptKeyserverDlg.cpp:392
@@ -84,11 +88,11 @@
 msgid "Keyserver"
 msgstr "Schlüsselserver"
 
-#: Src/WinPT.cpp:332
+#: Src/WinPT.cpp:354
 msgid "Failed to copy the keyserver.conf"
 msgstr "Kopieren der keyserver.conf ist fehlgeschlagen"
 
-#: Src/WinPT.cpp:522
+#: Src/WinPT.cpp:544
 #, c-format
 msgid ""
 "The PTD.dll file has a different version than WinPT.exe\n"
@@ -98,16 +102,26 @@
 "Ein Update der PTD.dll auf Version %d.%d.%d ist nötig"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:245
-#: Src/WinPT.cpp:529
+#: Src/WinPT.cpp:551
 msgid "Cryptographic selftest failed."
 msgstr "Kryptographischer Selbsttest ist fehlgeschlagen."
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:252
-#: Src/WinPT.cpp:536
+#: Src/WinPT.cpp:558
 msgid "A newer GPGME version is needed; at least "
 msgstr "Eine neuere Version von GPGME wird benötigt; mindestens "
 
-#: Src/WinPT.cpp:567
+#: Src/WinPT.cpp:579
+msgid ""
+"The gpg.conf file contains the 'textmode' option\n"
+"which leads to broken binary output during decryption.\n"
+"If this is on purpose, just continue otherwise the option should be disabled."
+msgstr ""
+"Die gpg.conf Datei enthält die 'textmode' Option\n"
+"welche zu verstümmelten binären Ausgabedateien führt.\n"
+"Sollte das keine Absicht sein, sollte die Option deaktiviert werden."
+
+#: Src/WinPT.cpp:593
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -118,16 +132,16 @@
 "Bitte überprüfen Sie die Registryseinträge von GPG:\n"
 "%s."
 
-#: Src/WinPT.cpp:571
+#: Src/WinPT.cpp:597
 msgid "Select GPG Public Keyring"
 msgstr "Öffentlichen GPG-Schlüsselbund auswählen"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:313
-#: Src/WinPT.cpp:581
+#: Src/WinPT.cpp:607
 msgid "GPG home directory could not be determined."
 msgstr "Heimatverzeichnos von GPG konnte nicht bestimmt werden."
 
-#: Src/WinPT.cpp:589
+#: Src/WinPT.cpp:615
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
@@ -136,7 +150,7 @@
 "Möchten Sie die GPG-Einstellungen öffnen um das Problem zu beheben?"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:339
-#: Src/WinPT.cpp:604
+#: Src/WinPT.cpp:630
 msgid ""
 "Could not access and/or find the public and secret keyring.\n"
 "If this is an accident, quit the program and fix it.\n"
@@ -151,20 +165,20 @@
 # c:\oss\winpt-gpgme\src\WinPT.cpp:376
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:426
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:711
-#: Src/WinPT.cpp:637 Src/wptFileManagerDlg.cpp:520
-#: Src/wptFileManagerDlg.cpp:837
+#: Src/WinPT.cpp:663 Src/wptFileManagerDlg.cpp:520
+#: Src/wptFileManagerDlg.cpp:861
 msgid "Wipe Free Space"
 msgstr "Freien Speicher Löschen"
 
-#: Src/WinPT.cpp:680
+#: Src/WinPT.cpp:706
 msgid "Could not register window class"
 msgstr "Konnte Fensterklasse nicht registrieren"
 
-#: Src/WinPT.cpp:694
+#: Src/WinPT.cpp:720
 msgid "Could not create window"
 msgstr "Konnte Fenster nicht erstellen"
 
-#: Src/WinPT.cpp:782
+#: Src/WinPT.cpp:808
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
@@ -172,7 +186,7 @@
 "Der Schlüsselcache wurde nicht initialisiert oder ist leer.\n"
 "Bitte überprüfen Sie die Konfiguration von GPG (Schlüsselbunde, Pfade)"
 
-#: Src/WinPT.cpp:785
+#: Src/WinPT.cpp:811
 msgid ""
 "It seems that GPG is not configured properly.\n"
 "Do you want to start the GPG preferences dialog?"
@@ -180,17 +194,19 @@
 "GPG ist nicht richtig konfiguriert.\n"
 "Den GPG-Einstellungsdialog starten?"
 
-#: Src/WinPT.cpp:804
+#: Src/WinPT.cpp:829
 #, c-format
 msgid ""
-"Default key (from the GPG config file) could not be found.\n"
-"Please check your gpg.conf or set a new default key to correct it:\n"
+"Default key (from the GPG config file) could not be found or is unuseable.\n"
+"The default key will be resetted and can be set later in the Key Manager "
+"again.\n"
 "\n"
-"%s: public key not found."
+"%s: secret key not found."
 msgstr ""
-"Standardschlüssel (in der GPG Config-Datei) nicht gefunden.\n"
-"Bitte überprüfen Sie die gpg.conf oder setzen Sie einen neuen "
-"Standardschlüssel um das Problem zu beheben:\n"
+"Standardschlüssel (in der GPG Config-Datei) nicht gefunden oder "
+"unbenutzbar.\n"
+"Der Standard-Schlüssel wird reseted und kann im Key Manager später neu "
+"gesetzt werden.\n"
 "\n"
 "%s: öffentlicher Schlüssel nicht gefunden."
 
@@ -202,7 +218,7 @@
 msgid "About GnuPG"
 msgstr "Über GnuPG"
 
-#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1890
+#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1943
 #: Src/wptMainProc.cpp:568
 msgid "About WinPT"
 msgstr "Über WinPT"
@@ -257,7 +273,7 @@
 msgstr "Über &GPG..."
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:700
-#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2152
+#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2178
 #: Src/wptKeyManagerDlg.cpp:1002
 msgid "&Help"
 msgstr "&Hilfe"
@@ -354,12 +370,12 @@
 msgid "&Sex"
 msgstr "&Geschlecht"
 
-#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2154
+#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2180
 #: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
 msgid "&OK"
 msgstr "&OK"
 
-#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:59
+#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:51
 msgid "&Exit"
 msgstr "&Beenden"
 
@@ -413,7 +429,7 @@
 msgid "Make off-card backup of encryption key"
 msgstr "Externes Backup des Verschlüsselungs-Schlüssel"
 
-#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1833
 msgid "Card Key Generation"
 msgstr "Karten-Schlüsselerzeugung"
 
@@ -442,7 +458,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
 
-#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1389 Src/wptKeygenDlg.cpp:457
 msgid "The date you have chosen has already passed."
 msgstr "Das gewählte Datum liegt in der Vergangenheit."
 
@@ -505,31 +521,32 @@
 "Bitte die OpenPGP-SmartCard einlegen\n"
 "OK zum Fortfahren oder Abbrechen"
 
-#: Src/wptClipDecryptDlg.cpp:60 Src/wptClipDecryptDlg.cpp:177
-#: Src/wptKeyRevokersDlg.cpp:129 Src/wptKeyRevokersDlg.cpp:173
-#: Src/wptVerifyList.cpp:257 Src/wptVerifyList.cpp:319
+#: Src/wptClipDecryptDlg.cpp:55 Src/wptClipDecryptDlg.cpp:136
+#: Src/wptClipDecryptDlg.cpp:179 Src/wptKeyRevokersDlg.cpp:129
+#: Src/wptKeyRevokersDlg.cpp:173 Src/wptVerifyList.cpp:257
+#: Src/wptVerifyList.cpp:319
 msgid "user ID not found"
 msgstr "Benutzerkennung nicht gefunden"
 
-#: Src/wptClipDecryptDlg.cpp:108
+#: Src/wptClipDecryptDlg.cpp:105
 msgid "Signature status: created with a fully trusted key"
 msgstr "Signatur Status: erstellt mit einem vertraunswürdigen Schlüssel"
 
-#: Src/wptClipDecryptDlg.cpp:110
+#: Src/wptClipDecryptDlg.cpp:107
 msgid "Signature status: created with a marginal trusted key"
 msgstr ""
 "Signatur Status: erstellt mit einem teilweise vertrauenswürdigen Schlüssel"
 
-#: Src/wptClipDecryptDlg.cpp:113
+#: Src/wptClipDecryptDlg.cpp:111
 msgid "Signature status: created with an UNTRUSTED key"
 msgstr "Signatur Status: erstellt mit einem NICHT vertrauenswürdigen Schlüssel"
 
-#: Src/wptClipDecryptDlg.cpp:116
+#: Src/wptClipDecryptDlg.cpp:114
 msgid "Signature status: created with an undefined trusted key"
 msgstr ""
 "Signatur Status: erstellt mit einem Schlüssel ohne definiertes Vertrauen"
 
-#: Src/wptClipDecryptDlg.cpp:126
+#: Src/wptClipDecryptDlg.cpp:124
 #, c-format
 msgid ""
 "*** PGP SIGNATURE VERIFICATION ***\r\n"
@@ -547,7 +564,7 @@
 "*** Signatur:           %s\r\\n*** Unterzeichner: %s (0x%s)\r\n"
 "*** BEGINN PGP ENTSCHLÜSSELTER TEXT ***\r\n"
 
-#: Src/wptClipDecryptDlg.cpp:133
+#: Src/wptClipDecryptDlg.cpp:131
 msgid ""
 "\r\n"
 "*** END PGP DECRYPTED TEXT ***"
@@ -555,11 +572,11 @@
 "\r\n"
 "*** ENDE PGP ENTSCHLÜSSELTER TEXT ***"
 
-#: Src/wptClipDecryptDlg.cpp:181
+#: Src/wptClipDecryptDlg.cpp:183
 msgid "Decrypt Verify"
 msgstr "Entschlüsseln/Überprüfen"
 
-#: Src/wptClipDecryptDlg.cpp:182
+#: Src/wptClipDecryptDlg.cpp:184
 #, c-format
 msgid ""
 "%s\n"
@@ -574,25 +591,25 @@
 "Von \"%s\" mit Schlüssel ID 0x%s%s %s\n"
 "%s"
 
-#: Src/wptClipDecryptDlg.cpp:216 Src/wptClipVerifyDlg.cpp:159
+#: Src/wptClipDecryptDlg.cpp:218 Src/wptClipVerifyDlg.cpp:159
 #: Src/wptClipVerifyDlg.cpp:170 Src/wptClipVerifyDlg.cpp:186
 #: Src/wptClipVerifyDlg.cpp:203 Src/wptClipVerifyDlg.cpp:214
-#: Src/wptFileManager.cpp:1671 Src/wptFileManager.cpp:1736
-#: Src/wptFileManager.cpp:1756 Src/wptFileManagerDlg.cpp:597
+#: Src/wptFileManager.cpp:1670 Src/wptFileManager.cpp:1735
+#: Src/wptFileManager.cpp:1755 Src/wptFileManagerDlg.cpp:597
 #: Src/wptFileVerifyDlg.cpp:127 Src/wptKeyserverDlg.cpp:276
 #: Src/wptKeyserverDlg.cpp:284 Src/wptMainProc.cpp:208 Src/wptMainProc.cpp:224
 #: Src/wptMainProc.cpp:234 Src/wptMainProc.cpp:404
 msgid "Verify"
 msgstr "Überprüfen"
 
-#: Src/wptClipDecryptDlg.cpp:223 Src/wptClipDecryptDlg.cpp:236
-#: Src/wptClipDecryptDlg.cpp:244 Src/wptClipDecryptDlg.cpp:251
-#: Src/wptClipDecryptDlg.cpp:253 Src/wptFileManager.cpp:1378
-#: Src/wptFileManager.cpp:1429
+#: Src/wptClipDecryptDlg.cpp:225 Src/wptClipDecryptDlg.cpp:238
+#: Src/wptClipDecryptDlg.cpp:246 Src/wptClipDecryptDlg.cpp:253
+#: Src/wptClipDecryptDlg.cpp:255 Src/wptFileManager.cpp:1377
+#: Src/wptFileManager.cpp:1428
 msgid "Decryption"
 msgstr "Entschlüsselung"
 
-#: Src/wptClipDecryptDlg.cpp:237 Src/wptFileManager.cpp:1430
+#: Src/wptClipDecryptDlg.cpp:239 Src/wptFileManager.cpp:1429
 #, c-format
 msgid ""
 "Encrypted with %s key, ID 0x%s.%s\n"
@@ -601,18 +618,18 @@
 "Verschlüsselt mit %s Schlüssel, ID 0x%s.%s\n"
 "Entschlüsselung fehlgeschlagen: geheimer Schlüssel nicht verfügbar."
 
-#: Src/wptClipDecryptDlg.cpp:244
+#: Src/wptClipDecryptDlg.cpp:246
 #, c-format
 msgid "Unsupported algorithm: %s"
 msgstr "Unbekannter Algorithmus: %s"
 
 # c:\oss\winpt-gpgme\src\wptClipDecryptDlg.cpp:137
-#: Src/wptClipDecryptDlg.cpp:250
+#: Src/wptClipDecryptDlg.cpp:252
 msgid "Broken OpenPGP message (maybe: quoted printable character in armor)."
 msgstr ""
 "Ungültige OpenPGP Nachricht  (vielleicht: \"quoted printable\" im Armorteil)."
 
-#: Src/wptClipDecryptDlg.cpp:260
+#: Src/wptClipDecryptDlg.cpp:262
 msgid ""
 "WARNING: encrypted message has been manipulated!\n"
 "\n"
@@ -625,11 +642,11 @@
 "Es ist möglich, dass die Daten beschädigt worden aber es ist ebenfalls "
 "möglich das dies ein Teil eines Attacke ist."
 
-#: Src/wptClipDecryptDlg.cpp:265
+#: Src/wptClipDecryptDlg.cpp:267
 msgid "*** IMPORTANT ***"
 msgstr "*** WICHTIG ***"
 
-#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
+#: Src/wptClipDecryptDlg.cpp:271 Src/wptClipEncryptDlg.cpp:221
 #: Src/wptClipSignDlg.cpp:118 Src/wptClipSignDlg.cpp:264
 #: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
 #: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:962 Src/wptSymEnc.cpp:94
@@ -702,26 +719,26 @@
 msgid "Clipboard Editor"
 msgstr "Zwischenablagen-Editor"
 
-#: Src/wptClipEncryptDlg.cpp:99
+#: Src/wptClipEncryptDlg.cpp:104
 msgid "key not found"
 msgstr "Schlüssel nicht gefunden"
 
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:108
-#: Src/wptClipEncryptDlg.cpp:118
+#: Src/wptClipEncryptDlg.cpp:123
 msgid "Recipients unsuable for encryption:\n"
 msgstr "Empfänger nicht geeignet für Verschlüsselung:\n"
 
-#: Src/wptClipEncryptDlg.cpp:134 Src/wptClipEncryptDlg.cpp:156
-#: Src/wptClipEncryptDlg.cpp:206 Src/wptClipEncryptDlg.cpp:213
-#: Src/wptClipEncryptDlg.cpp:239 Src/wptMainProc.cpp:172
+#: Src/wptClipEncryptDlg.cpp:139 Src/wptClipEncryptDlg.cpp:161
+#: Src/wptClipEncryptDlg.cpp:211 Src/wptClipEncryptDlg.cpp:218
+#: Src/wptClipEncryptDlg.cpp:244 Src/wptMainProc.cpp:172
 msgid "Encryption"
 msgstr "Verschlüsseln"
 
-#: Src/wptClipEncryptDlg.cpp:157
+#: Src/wptClipEncryptDlg.cpp:162
 msgid "&Find"
 msgstr "&Suche"
 
-#: Src/wptClipEncryptDlg.cpp:158 Src/wptClipSignEncDlg.cpp:112
+#: Src/wptClipEncryptDlg.cpp:163 Src/wptClipSignEncDlg.cpp:112
 #: Src/wptCommonDlg.cpp:80 Src/wptCommonDlg.cpp:257
 #: Src/wptFileManagerDlg.cpp:97 Src/wptFileManagerDlg.cpp:226
 #: Src/wptFileManagerDlg.cpp:288 Src/wptFileSaveDlg.cpp:59
@@ -733,16 +750,16 @@
 #: Src/wptKeyserverDlg.cpp:549 Src/wptKeyserverSearchDlg.cpp:66
 #: Src/wptKeysignDlg.cpp:362 Src/wptPassphraseCB.cpp:95
 #: Src/wptPassphraseDlg.cpp:104 Src/wptPINDlg.cpp:54
-#: Src/wptPreferencesDlg.cpp:134 Src/wptTextInputDlg.cpp:86
+#: Src/wptPreferencesDlg.cpp:120 Src/wptTextInputDlg.cpp:86
 msgid "&Cancel"
 msgstr "&Abbrechen"
 
-#: Src/wptClipEncryptDlg.cpp:205 Src/wptClipSignEncDlg.cpp:150
+#: Src/wptClipEncryptDlg.cpp:210 Src/wptClipSignEncDlg.cpp:150
 msgid "You must select at least one key."
 msgstr "Sie müssen mindestens einen Schlüssel auswählen."
 
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:229
-#: Src/wptClipEncryptDlg.cpp:240
+#: Src/wptClipEncryptDlg.cpp:245
 #, c-format
 msgid "No recipient found with '%s'"
 msgstr "Keine Empfaenger mit '%s' gefunden"
@@ -761,8 +778,8 @@
 #: Src/wptClipSignDlg.cpp:156 Src/wptClipSignDlg.cpp:224
 #: Src/wptClipSignDlg.cpp:228 Src/wptClipSignDlg.cpp:248
 #: Src/wptClipSignDlg.cpp:259 Src/wptClipSignEncDlg.cpp:159
-#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1188
-#: Src/wptFileManager.cpp:1204 Src/wptFileManager.cpp:1494
+#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1203 Src/wptFileManager.cpp:1493
 #: Src/wptMainProc.cpp:179
 msgid "Signing"
 msgstr "Signieren"
@@ -795,7 +812,7 @@
 msgid "Signing key:"
 msgstr "Signierer Schlüssel:"
 
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1225
 msgid "No key was selected."
 msgstr "Kein Schlüssel ausgewählt."
 
@@ -804,7 +821,7 @@
 msgstr "Signaturinformationen"
 
 #: Src/wptClipVerifyDlg.cpp:160 Src/wptFileVerifyDlg.cpp:52
-#: Src/wptGPGOptDlg.cpp:57
+#: Src/wptGPGOptDlg.cpp:49
 msgid "&Save"
 msgstr "&Speichern"
 
@@ -836,35 +853,35 @@
 msgid "Enter URL to retrieve the public key"
 msgstr "Bitte URL eingeben um öff. Schlüssel zu empfangen"
 
-#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:755
-#: Src/wptKeyEditDlgs.cpp:823 Src/wptKeyEditDlgs.cpp:864
-#: Src/wptKeyEditDlgs.cpp:877 Src/wptKeyEditDlgs.cpp:879
-#: Src/wptKeyEditDlgs.cpp:905 Src/wptKeyEditDlgs.cpp:935
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyEditDlgs.cpp:1012
-#: Src/wptKeyEditDlgs.cpp:1019 Src/wptKeyEditDlgs.cpp:1039
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1292 Src/wptKeyEditDlgs.cpp:1299
-#: Src/wptKeyEditDlgs.cpp:1334 Src/wptKeyEditDlgs.cpp:1339
-#: Src/wptKeyEditDlgs.cpp:1349 Src/wptKeyEditDlgs.cpp:1364
-#: Src/wptKeyEditDlgs.cpp:1368 Src/wptKeyEditDlgs.cpp:1407
-#: Src/wptKeyEditDlgs.cpp:1412 Src/wptKeyEditDlgs.cpp:1419
-#: Src/wptKeyEditDlgs.cpp:1425 Src/wptKeyEditDlgs.cpp:1430
-#: Src/wptKeyEditDlgs.cpp:1473 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1485 Src/wptKeyEditDlgs.cpp:1492
-#: Src/wptKeyEditDlgs.cpp:1495 Src/wptKeyEditDlgs.cpp:1535
-#: Src/wptKeyEditDlgs.cpp:1543 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1599 Src/wptKeyEditDlgs.cpp:1708
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1781
-#: Src/wptKeyEditDlgs.cpp:1786 Src/wptKeyEditDlgs.cpp:1796
-#: Src/wptKeyEditDlgs.cpp:1901 Src/wptKeyEditDlgs.cpp:1903
-#: Src/wptKeyEditDlgs.cpp:1919 Src/wptKeyEditDlgs.cpp:1921
-#: Src/wptKeyEditDlgs.cpp:1956 Src/wptKeyEditDlgs.cpp:1964
-#: Src/wptKeyEditDlgs.cpp:1980 Src/wptKeyEditDlgs.cpp:1994
-#: Src/wptKeyEditDlgs.cpp:1998 Src/wptKeyEditDlgs.cpp:2065
-#: Src/wptKeyEditDlgs.cpp:2128 Src/wptKeyEditDlgs.cpp:2142
-#: Src/wptKeyEditDlgs.cpp:2157 Src/wptKeyEditDlgs.cpp:2197
-#: Src/wptKeyEditDlgs.cpp:2202 Src/wptKeyManagerDlg.cpp:1031
-#: Src/wptKeyManagerDlg.cpp:1919
+#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:758
+#: Src/wptKeyEditDlgs.cpp:826 Src/wptKeyEditDlgs.cpp:867
+#: Src/wptKeyEditDlgs.cpp:881 Src/wptKeyEditDlgs.cpp:883
+#: Src/wptKeyEditDlgs.cpp:909 Src/wptKeyEditDlgs.cpp:939
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1024 Src/wptKeyEditDlgs.cpp:1044
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1310 Src/wptKeyEditDlgs.cpp:1326
+#: Src/wptKeyEditDlgs.cpp:1360 Src/wptKeyEditDlgs.cpp:1365
+#: Src/wptKeyEditDlgs.cpp:1375 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptKeyEditDlgs.cpp:1394 Src/wptKeyEditDlgs.cpp:1433
+#: Src/wptKeyEditDlgs.cpp:1438 Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyEditDlgs.cpp:1451 Src/wptKeyEditDlgs.cpp:1456
+#: Src/wptKeyEditDlgs.cpp:1499 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1518
+#: Src/wptKeyEditDlgs.cpp:1521 Src/wptKeyEditDlgs.cpp:1561
+#: Src/wptKeyEditDlgs.cpp:1569 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1625 Src/wptKeyEditDlgs.cpp:1734
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1807
+#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeyEditDlgs.cpp:1822
+#: Src/wptKeyEditDlgs.cpp:1927 Src/wptKeyEditDlgs.cpp:1929
+#: Src/wptKeyEditDlgs.cpp:1945 Src/wptKeyEditDlgs.cpp:1947
+#: Src/wptKeyEditDlgs.cpp:1982 Src/wptKeyEditDlgs.cpp:1990
+#: Src/wptKeyEditDlgs.cpp:2006 Src/wptKeyEditDlgs.cpp:2020
+#: Src/wptKeyEditDlgs.cpp:2024 Src/wptKeyEditDlgs.cpp:2091
+#: Src/wptKeyEditDlgs.cpp:2154 Src/wptKeyEditDlgs.cpp:2168
+#: Src/wptKeyEditDlgs.cpp:2183 Src/wptKeyEditDlgs.cpp:2223
+#: Src/wptKeyEditDlgs.cpp:2228 Src/wptKeyManagerDlg.cpp:1031
+#: Src/wptKeyManagerDlg.cpp:1972
 msgid "Key Edit"
 msgstr "Schlüssel bearbeiten"
 
@@ -1051,10 +1068,10 @@
 #: Src/wptFileManager.cpp:131 Src/wptFileManager.cpp:153
 #: Src/wptFileManager.cpp:159 Src/wptFileManager.cpp:199
 #: Src/wptFileManager.cpp:325 Src/wptFileManager.cpp:747
-#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1030
-#: Src/wptFileManager.cpp:1580 Src/wptFileManager.cpp:1607
-#: Src/wptFileManager.cpp:1626 Src/wptFileManager.cpp:1911
-#: Src/wptFileManager.cpp:1973 Src/wptFileManagerDlg.cpp:530
+#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1045
+#: Src/wptFileManager.cpp:1579 Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1625 Src/wptFileManager.cpp:1910
+#: Src/wptFileManager.cpp:1972 Src/wptFileManagerDlg.cpp:530
 #: Src/wptFileManagerDlg.cpp:640 Src/wptFileStatDlg.cpp:152
 #: Src/wptMainProc.cpp:393 Src/wptMDSumDlg.cpp:276 Src/wptMDSumDlg.cpp:281
 msgid "File Manager"
@@ -1096,12 +1113,12 @@
 "\n"
 "Möchten Sie die Kompression ausschalten?"
 
-#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1075
+#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1080
 #: Src/wptVerifyList.cpp:169
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1156
+#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1161
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:190
 #: Src/wptVerifyList.cpp:168
 msgid "Name"
@@ -1124,62 +1141,62 @@
 "\"%s\" scheint keine Text-Datei zu sein.\n"
 "Möchten Sie wirklich diese Datei signieren?"
 
-#: Src/wptFileManager.cpp:1031
+#: Src/wptFileManager.cpp:1046
 #, c-format
 msgid "\"%s\" does not exist"
 msgstr "\"%s\" existiert nicht"
 
-#: Src/wptFileManager.cpp:1114 Src/wptFileStatDlg.cpp:282
+#: Src/wptFileManager.cpp:1113 Src/wptFileStatDlg.cpp:282
 #: Src/wptFileStatDlg.cpp:286
 msgid "File Status"
 msgstr "Dateistatus"
 
-#: Src/wptFileManager.cpp:1157
+#: Src/wptFileManager.cpp:1156
 msgid "Enter Filename for Encrypted File"
 msgstr "Namen für die verschlüsselte Datei auswählen"
 
-#: Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1186
 msgid "Could not get default secret key."
 msgstr "Konnte den geheimen Standardschlüssel nicht finden."
 
-#: Src/wptFileManager.cpp:1218 Src/wptFileManager.cpp:1530
+#: Src/wptFileManager.cpp:1217 Src/wptFileManager.cpp:1529
 #: Src/wptFileManagerDlg.cpp:595 Src/wptMainProc.cpp:156
 #: Src/wptMainProc.cpp:401 Src/wptMainProc.cpp:408
 msgid "Sign"
 msgstr "Signieren"
 
-#: Src/wptFileManager.cpp:1231 Src/wptFileManagerDlg.cpp:593
+#: Src/wptFileManager.cpp:1230 Src/wptFileManagerDlg.cpp:593
 #: Src/wptMainProc.cpp:400 Src/wptMainProc.cpp:405
 msgid "Encrypt"
 msgstr "Verschlüsseln"
 
-#: Src/wptFileManager.cpp:1258 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
+#: Src/wptFileManager.cpp:1257 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
 msgid "Symmetric Encryption"
 msgstr "Symmetrisch verschlüsseln"
 
-#: Src/wptFileManager.cpp:1291 Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1290 Src/wptFileManager.cpp:1295
 #: Src/wptMainProc.cpp:399 Src/wptMainProc.cpp:409
 msgid "Symmetric"
 msgstr "Symmetrisch"
 
-#: Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1295
 msgid "Encryption failed."
 msgstr "Verschlüsselung fehlgeschlagen."
 
-#: Src/wptFileManager.cpp:1387
+#: Src/wptFileManager.cpp:1386
 msgid "Choose Filename for Output"
 msgstr "Wählen Sie einen Namen für die Ausgabedatei"
 
-#: Src/wptFileManager.cpp:1396
+#: Src/wptFileManager.cpp:1395
 msgid "Enter Filename for Plaintext File"
 msgstr "Namen für die Klartext-Datei auswählen"
 
-#: Src/wptFileManager.cpp:1438 Src/wptFileManager.cpp:1458
+#: Src/wptFileManager.cpp:1437 Src/wptFileManager.cpp:1457
 #: Src/wptFileManagerDlg.cpp:594
 msgid "Decrypt"
 msgstr "Entschlüsseln"
 
-#: Src/wptFileManager.cpp:1444
+#: Src/wptFileManager.cpp:1443
 #, c-format
 msgid ""
 "Decryption failed.\n"
@@ -1188,7 +1205,7 @@
 "Entshlüsselung fehlgeschlagen.\n"
 "%s: existiert nicht."
 
-#: Src/wptFileManager.cpp:1459
+#: Src/wptFileManager.cpp:1458
 #, c-format
 msgid ""
 "The original file name is '%s'.\n"
@@ -1199,42 +1216,42 @@
 "\n"
 "Wollen Sie diesen anstatt von '%s' benutzen?"
 
-#: Src/wptFileManager.cpp:1507
+#: Src/wptFileManager.cpp:1506
 msgid "Enter Filename for Signed File"
 msgstr "Namen für die signierte Datei auswählen"
 
-#: Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1605
 msgid "Could not find detached signature in the clipboard."
 msgstr "Konnte abgetrennte Signatur in der Zwischenablage nicht finden."
 
 # c:\oss\winpt-gpgme\src\wptFileManager.cpp:1362
-#: Src/wptFileManager.cpp:1626
+#: Src/wptFileManager.cpp:1625
 msgid "No files to check."
 msgstr "Keine Datei(en) zu prüfen."
 
-#: Src/wptFileManager.cpp:1643
+#: Src/wptFileManager.cpp:1642
 msgid "Select Data File"
 msgstr "Bitte Datendatei auswählen"
 
-#: Src/wptFileManager.cpp:1645
+#: Src/wptFileManager.cpp:1644
 msgid "Selected Output File"
 msgstr "Bitte Ausgabedatei auswählen"
 
-#: Src/wptFileManager.cpp:1671
+#: Src/wptFileManager.cpp:1670
 msgid "Invalid file name. Exit"
 msgstr "Ungültiger Dateiname. Abbruch"
 
-#: Src/wptFileManager.cpp:1804 Src/wptFileManager.cpp:1815
-#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:404
-#: Src/wptImportList.cpp:411 Src/wptImportList.cpp:421
-#: Src/wptImportList.cpp:429 Src/wptImportList.cpp:438
+#: Src/wptFileManager.cpp:1803 Src/wptFileManager.cpp:1814
+#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:406
+#: Src/wptImportList.cpp:413 Src/wptImportList.cpp:423
+#: Src/wptImportList.cpp:431 Src/wptImportList.cpp:440
 #: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
 #: Src/wptKeyManager.cpp:567 Src/wptKeyManager.cpp:586
 #: Src/wptKeyserverDlg.cpp:220
 msgid "Import"
 msgstr "Importieren"
 
-#: Src/wptFileManager.cpp:1812
+#: Src/wptFileManager.cpp:1811
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -1246,58 +1263,58 @@
 "\n"
 "Kann diese(n) Schlüssel nicht importieren!"
 
-#: Src/wptFileManager.cpp:1838 Src/wptKeyManager.cpp:282
+#: Src/wptFileManager.cpp:1837 Src/wptKeyManager.cpp:282
 #: Src/wptKeyManager.cpp:325 Src/wptKeyManager.cpp:360
 msgid "No key was selected for export."
 msgstr "Kein Schlüssel zum Exportieren ausgewählt."
 
-#: Src/wptFileManager.cpp:1839 Src/wptFileManager.cpp:1862
+#: Src/wptFileManager.cpp:1838 Src/wptFileManager.cpp:1861
 #: Src/wptKeyserverDlg.cpp:93
 msgid "Export"
 msgstr "Export"
 
-#: Src/wptFileManager.cpp:1847 Src/wptKeyManagerDlg.cpp:1850
-#: Src/wptKeyManagerDlg.cpp:1882
+#: Src/wptFileManager.cpp:1846 Src/wptKeyManagerDlg.cpp:1903
+#: Src/wptKeyManagerDlg.cpp:1935
 msgid "Choose Name for Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptFileManager.cpp:1866 Src/wptKeyEditDlgs.cpp:1055
-#: Src/wptKeyEditDlgs.cpp:1314 Src/wptKeyEditDlgs.cpp:1386
+#: Src/wptFileManager.cpp:1865 Src/wptKeyEditDlgs.cpp:1060
+#: Src/wptKeyEditDlgs.cpp:1340 Src/wptKeyEditDlgs.cpp:1412
 #: Src/wptKeyserverDlg.cpp:105
 msgid "GnuPG status"
 msgstr "GnuPG-Status"
 
-#: Src/wptFileManager.cpp:1866
+#: Src/wptFileManager.cpp:1865
 #, c-format
 msgid "Finished (Output: %s)"
 msgstr "Fertig (Ausgabe: %s)"
 
-#: Src/wptFileManager.cpp:1912
+#: Src/wptFileManager.cpp:1911
 #, c-format
 msgid "%s: no valid OpenPGP data found."
 msgstr "%s: keine gültigen OpenPGP-Daten gefunden."
 
-#: Src/wptFileManager.cpp:1972
+#: Src/wptFileManager.cpp:1971
 msgid "Encrypting into a ZIP archive makes sense with multiple files"
 msgstr "Verschlüsseln in eine ZIP-Datei macht nur mit mehreren Dateien Sinn"
 
-#: Src/wptFileManager.cpp:1977
+#: Src/wptFileManager.cpp:1976
 msgid "Choose File Name for Output"
 msgstr "Wählen Sie einen Namen für die Ausgabedatei"
 
-#: Src/wptFileManager.cpp:2049
+#: Src/wptFileManager.cpp:2048
 msgid "Choose a Name for the Archive"
 msgstr "Wählen Sie den Namen für das Archiv"
 
-#: Src/wptFileManager.cpp:2052
+#: Src/wptFileManager.cpp:2051
 msgid "Invalid archive name. Exit."
 msgstr "Ungültiger Archivename. Abbruch."
 
-#: Src/wptFileManager.cpp:2053 Src/wptFileManager.cpp:2061
+#: Src/wptFileManager.cpp:2052 Src/wptFileManager.cpp:2060
 msgid "Encrypt Directory"
 msgstr "Verzeichnis verschlüsseln"
 
-#: Src/wptFileManager.cpp:2060
+#: Src/wptFileManager.cpp:2059
 msgid "Could not create zip archive."
 msgstr "Konnte ZIP-Datei nicht erstellen."
 
@@ -1381,14 +1398,14 @@
 msgid "Signature mode"
 msgstr "Signaturmodus"
 
-#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
+#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1365 Src/wptKeyEditDlgs.cpp:1438
 #: Src/wptKeyManager.cpp:690 Src/wptKeyManager.cpp:791
-#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1657
-#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1701
-#: Src/wptKeyManagerDlg.cpp:1712 Src/wptKeyManagerDlg.cpp:1727
-#: Src/wptKeyManagerDlg.cpp:1840 Src/wptKeyManagerDlg.cpp:1859
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1710
+#: Src/wptKeyManagerDlg.cpp:1726 Src/wptKeyManagerDlg.cpp:1754
+#: Src/wptKeyManagerDlg.cpp:1765 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptKeyManagerDlg.cpp:1893 Src/wptKeyManagerDlg.cpp:1912
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Please select a key."
 msgstr "Bitte wählen Sie einen Schlüssel aus."
 
@@ -1499,27 +1516,31 @@
 msgstr "Dieses Kommando benötigt Adminrechte.\n"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:671
-#: Src/wptFileManagerDlg.cpp:789
+#: Src/wptFileManagerDlg.cpp:790
 msgid "Are you sure you want to secure delete these files?"
 msgstr "Sollen diese Dateien wirklich sicher gelöscht werden?"
 
-#: Src/wptFileManagerDlg.cpp:790 Src/wptMainProc.cpp:110
+#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:110
 msgid "&Yes"
 msgstr "&Ja"
 
-#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:111
+#: Src/wptFileManagerDlg.cpp:792 Src/wptMainProc.cpp:111
 msgid "&No"
 msgstr "&Nein"
 
-#: Src/wptFileManagerDlg.cpp:834
+#: Src/wptFileManagerDlg.cpp:793
+msgid "passes"
+msgstr "Durchgänge"
+
+#: Src/wptFileManagerDlg.cpp:858
 msgid "Operation Status: Error"
 msgstr "Prozess-Status: Fehler"
 
-#: Src/wptFileManagerDlg.cpp:835
+#: Src/wptFileManagerDlg.cpp:859
 msgid "Operation Status: Done."
 msgstr "Prozess-Status: Fertig."
 
-#: Src/wptFileManagerDlg.cpp:878
+#: Src/wptFileManagerDlg.cpp:902
 #, c-format
 msgid ""
 "Total Capacity: %12sk\n"
@@ -1575,7 +1596,7 @@
 msgstr "WinPT Erster Start"
 
 # c:\oss\winpt-gpgme\src\wptGPG.cpp:728
-#: Src/wptGPG.cpp:836
+#: Src/wptGPG.cpp:843
 msgid ""
 "The selected keyring has the read-only file\n"
 "attribute. In this state you do not have write\n"
@@ -1585,19 +1606,19 @@
 "In diesem Zustand kann nichts gespeichert werden\n"
 "Wollen Sie das Attribut zurücksetzen?"
 
-#: Src/wptGPG.cpp:839
+#: Src/wptGPG.cpp:846
 msgid "GPG Information"
 msgstr "GPG Information"
 
-#: Src/wptGPG.cpp:843
+#: Src/wptGPG.cpp:850
 msgid "Could not reset read-only state."
 msgstr "Konnte den Nur-Lesen Zustand nicht zurücksetzen."
 
-#: Src/wptGPG.cpp:844
+#: Src/wptGPG.cpp:851
 msgid "GPG Error"
 msgstr "GPG Fehler"
 
-#: Src/wptGPG.cpp:856
+#: Src/wptGPG.cpp:863
 msgid ""
 "You do not have file access to modify the contents of\n"
 "one or both of the selected keyrings.\n"
@@ -1611,22 +1632,22 @@
 "Die Schlüsselbunde sind im Nur-Lesen-Modus, was meistens der Fall ist, \n"
 "wenn ein anderes Programm auf die Schlüsselbunde zugreift.\n"
 
-#: Src/wptGPG.cpp:861
+#: Src/wptGPG.cpp:868
 msgid "GPG Warning"
 msgstr "GPG Warnung"
 
-#: Src/wptGPG.cpp:889 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
+#: Src/wptGPG.cpp:896 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
 #: Src/wptGPGPrefsDlg.cpp:234 Src/wptGPGPrefsDlg.cpp:240
 #: Src/wptGPGPrefsDlg.cpp:245 Src/wptGPGPrefsDlg.cpp:250
 #: Src/wptGPGPrefsDlg.cpp:256 Src/wptGPGPrefsDlg.cpp:270
-#: Src/wptKeyEditDlgs.cpp:1713 Src/wptMainProc.cpp:419
-#: Src/wptPreferencesDlg.cpp:225 Src/wptPreferencesDlg.cpp:270
-#: Src/wptPreferencesDlg.cpp:282 Src/wptPreferencesDlg.cpp:295
-#: Src/wptPreferencesDlg.cpp:326 Src/wptRegistry.cpp:599
+#: Src/wptKeyEditDlgs.cpp:1739 Src/wptMainProc.cpp:419
+#: Src/wptPreferencesDlg.cpp:209 Src/wptPreferencesDlg.cpp:254
+#: Src/wptPreferencesDlg.cpp:266 Src/wptPreferencesDlg.cpp:287
+#: Src/wptPreferencesDlg.cpp:315 Src/wptRegistry.cpp:596
 msgid "Preferences"
 msgstr "Einstellungen"
 
-#: Src/wptGPG.cpp:890
+#: Src/wptGPG.cpp:897
 #, c-format
 msgid ""
 "%s does not exit.\n"
@@ -1635,41 +1656,41 @@
 "%s existiert nicht.\n"
 "Möchten Sie dieses Verzeichnis erstellen?"
 
-#: Src/wptGPG.cpp:918
+#: Src/wptGPG.cpp:925
 msgid "Please choose your Public Keyring"
 msgstr "Bitte wählen Sie Ihren öffentlichen Schlüsselbund."
 
-#: Src/wptGPG.cpp:921 Src/wptGPG.cpp:943
+#: Src/wptGPG.cpp:928 Src/wptGPG.cpp:950
 msgid "No keyring was chosen. Exit."
 msgstr "Kein Schlüsselbund ausgewählt. Abbruch."
 
-#: Src/wptGPG.cpp:928
+#: Src/wptGPG.cpp:935
 msgid "Overwrite old public keyring?"
 msgstr "Alten öff. Schlüsselbund überschreiben?"
 
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:955
+#: Src/wptGPG.cpp:941 Src/wptGPG.cpp:962
 msgid "Could not copy file."
 msgstr "Datei konnte nicht kopiert werden"
 
-#: Src/wptGPG.cpp:940
+#: Src/wptGPG.cpp:947
 msgid "Please choose your Secret Keyring"
 msgstr "Bitte wählen Sie Ihren geheimen Schlüsselbund"
 
-#: Src/wptGPG.cpp:949
+#: Src/wptGPG.cpp:956
 msgid "Overwrite old secret keyring?"
 msgstr "Alten geheimen Schlüsselbund überschreiben?"
 
-#: Src/wptGPG.cpp:995 Src/wptGPG.cpp:1088 Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1002 Src/wptGPG.cpp:1095 Src/wptGPG.cpp:1111
 msgid "Backup"
 msgstr "Sicherung"
 
-#: Src/wptGPG.cpp:995
+#: Src/wptGPG.cpp:1002
 #, c-format
 msgid "Backup keyring \"%s\" failed"
 msgstr "Schlüsselbundsicherung \"%s\" fehlgeschlagen"
 
 # c:\oss\winpt-gpgme\src\wptGPG.cpp:1021
-#: Src/wptGPG.cpp:1089
+#: Src/wptGPG.cpp:1096
 #, c-format
 msgid ""
 "The backup drive '%s' does not seems to be accessable.\n"
@@ -1678,7 +1699,7 @@
 "Kann auf das Backup-Laufwerk '%s' nicht zugreifen.\n"
 "Bitte aktivieren/überprüfen sie das Laufwerk um Fortzufahren."
 
-#: Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1111
 #, c-format
 msgid "Invalid backup mode %d"
 msgstr "Ungültiger Sicherungsmethode %d"
@@ -1719,42 +1740,47 @@
 msgid "Good signature (Expired)"
 msgstr "Gültige Signature (Abgelaufen)"
 
-#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:42
 msgid "Could not load GnuPG config file!"
 msgstr "Konnte GnuPG Konfigurationsdatei nicht laden!"
 
-#: Src/wptGPGOptDlg.cpp:51 Src/wptGPGOptDlg.cpp:72 Src/wptGPGOptDlg.cpp:78
-#: Src/wptGPGOptDlg.cpp:83 Src/wptGPGOptDlg.cpp:87 Src/wptGPGOptDlg.cpp:94
-#: Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:43 Src/wptGPGOptDlg.cpp:62 Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:78 Src/wptGPGOptDlg.cpp:85 Src/wptGPGOptDlg.cpp:88
+#: Src/wptGPGOptDlg.cpp:95 Src/wptGPGOptDlg.cpp:102
 msgid "GPG Config"
 msgstr "GPG Konfiguration"
 
 # c:\oss\winpt-gpgme\src\wptGPGOptDlg.cpp:47
-#: Src/wptGPGOptDlg.cpp:56
+#: Src/wptGPGOptDlg.cpp:48
 msgid "GnuPG Configuration File"
 msgstr "GnuPG Konfigurationsdatei"
 
-#: Src/wptGPGOptDlg.cpp:58 Src/wptTextInputDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:50 Src/wptTextInputDlg.cpp:87
 msgid "&Load"
 msgstr "&Laden"
 
-#: Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:61
 msgid "The 'gpg.conf' file is not loaded."
 msgstr "Die 'gpg.conf' wurde nicht geladen"
 
-#: Src/wptGPGOptDlg.cpp:78
-msgid "File contains invalid GnuPG keywords!"
-msgstr "Datei enthält ungültige GnuPG-Schlüsselwörter!"
+#: Src/wptGPGOptDlg.cpp:71
+msgid "Config contains invalid GnuPG keywords."
+msgstr "Datei enthält ungültige GnuPG-Schlüsselwörter."
 
-#: Src/wptGPGOptDlg.cpp:83
+#: Src/wptGPGOptDlg.cpp:77
 msgid "Could not save GnuPG config file."
 msgstr "Konnte GnuPG Konfigurationsdatei nicht speichern."
 
-#: Src/wptGPGOptDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:85
 msgid "Successfully saved."
 msgstr "Erfolgreich gespeichert."
 
-#: Src/wptGPGOptDlg.cpp:93
+#: Src/wptGPGOptDlg.cpp:87
+msgid "GnuPG returned an error while parsing the config file."
+msgstr ""
+"GnuPG gab einen Fehler zurück während des Parsing der Konfigurationsdatei"
+
+#: Src/wptGPGOptDlg.cpp:94
 msgid ""
 "Current data will be lost!\n"
 "Are you sure?"
@@ -1762,7 +1788,11 @@
 "Aktuelle Daten gehen verloren\n"
 "Sind Sie sicher?"
 
-#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1812
+#: Src/wptGPGOptDlg.cpp:101
+msgid "Could not load GnuPG config file."
+msgstr "Konnte GnuPG Konfigurationsdatei nicht laden."
+
+#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1865
 #: Src/wptMainProc.cpp:580
 msgid "GnuPG Preferences"
 msgstr "GnuPG-Einstellungen"
@@ -1800,8 +1830,8 @@
 msgstr "Allgemeine GPG-Optionen"
 
 #: Src/wptGPGPrefsDlg.cpp:164 Src/wptGPGPrefsDlg.cpp:165
-#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:130
-#: Src/wptPreferencesDlg.cpp:131
+#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:117
 msgid "Browse..."
 msgstr "Ändern..."
 
@@ -1859,16 +1889,16 @@
 #: Src/wptKeyManager.cpp:838 Src/wptKeyManager.cpp:898
 #: Src/wptKeyManager.cpp:903 Src/wptKeyManager.cpp:960
 #: Src/wptKeyManager.cpp:993 Src/wptKeyManager.cpp:1077
-#: Src/wptKeyManagerDlg.cpp:1308 Src/wptKeyManagerDlg.cpp:1319
-#: Src/wptKeyManagerDlg.cpp:1329 Src/wptKeyManagerDlg.cpp:1635
-#: Src/wptKeyManagerDlg.cpp:1658 Src/wptKeyManagerDlg.cpp:1673
-#: Src/wptKeyManagerDlg.cpp:1683 Src/wptKeyManagerDlg.cpp:1691
-#: Src/wptKeyManagerDlg.cpp:1701 Src/wptKeyManagerDlg.cpp:1712
-#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1744
-#: Src/wptKeyManagerDlg.cpp:1776 Src/wptKeyManagerDlg.cpp:1841
-#: Src/wptKeyManagerDlg.cpp:1859 Src/wptKeyManagerDlg.cpp:1864
-#: Src/wptKeyManagerDlg.cpp:1869 Src/wptKeyManagerDlg.cpp:1945
-#: Src/wptKeyManagerDlg.cpp:1950 Src/wptKeyManagerDlg.cpp:2064
+#: Src/wptKeyManagerDlg.cpp:1357 Src/wptKeyManagerDlg.cpp:1368
+#: Src/wptKeyManagerDlg.cpp:1378 Src/wptKeyManagerDlg.cpp:1688
+#: Src/wptKeyManagerDlg.cpp:1711 Src/wptKeyManagerDlg.cpp:1726
+#: Src/wptKeyManagerDlg.cpp:1736 Src/wptKeyManagerDlg.cpp:1744
+#: Src/wptKeyManagerDlg.cpp:1754 Src/wptKeyManagerDlg.cpp:1765
+#: Src/wptKeyManagerDlg.cpp:1780 Src/wptKeyManagerDlg.cpp:1797
+#: Src/wptKeyManagerDlg.cpp:1829 Src/wptKeyManagerDlg.cpp:1894
+#: Src/wptKeyManagerDlg.cpp:1912 Src/wptKeyManagerDlg.cpp:1917
+#: Src/wptKeyManagerDlg.cpp:1922 Src/wptKeyManagerDlg.cpp:1998
+#: Src/wptKeyManagerDlg.cpp:2003 Src/wptKeyManagerDlg.cpp:2117
 #: Src/wptKeysigDlg.cpp:94 Src/wptKeysigDlg.cpp:106 Src/wptKeysigDlg.cpp:317
 #: Src/wptKeysigDlg.cpp:389 Src/wptKeysigDlg.cpp:399 Src/wptKeysigDlg.cpp:442
 #: Src/wptMainProc.cpp:394 Src/wptMainProc.cpp:543 Src/wptMainProc.cpp:551
@@ -1945,70 +1975,70 @@
 msgid "Unknown Hotkey"
 msgstr "Unbekanntes Tastenkürzel"
 
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:257
-#: Src/wptKeyEditDlgs.cpp:1129 Src/wptKeyEditDlgs.cpp:1179
-#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1444
-#: Src/wptKeyEditDlgs.cpp:1483 Src/wptKeyEditDlgs.cpp:1514
-#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1758
-#: Src/wptKeyEditDlgs.cpp:1960 Src/wptKeylist.cpp:424 Src/wptKeylist.cpp:458
+#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:257
+#: Src/wptKeyEditDlgs.cpp:1134 Src/wptKeyEditDlgs.cpp:1184
+#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1470
+#: Src/wptKeyEditDlgs.cpp:1509 Src/wptKeyEditDlgs.cpp:1540
+#: Src/wptKeyEditDlgs.cpp:1618 Src/wptKeyEditDlgs.cpp:1784
+#: Src/wptKeyEditDlgs.cpp:1986 Src/wptKeylist.cpp:425 Src/wptKeylist.cpp:459
 #: Src/wptKeyPropsDlg.cpp:152 Src/wptKeysigDlg.cpp:158
 #: Src/wptKeysigDlg.cpp:215
 msgid "Revoked"
 msgstr "Widerrufen"
 
-#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:1127 Src/wptKeyEditDlgs.cpp:1346
-#: Src/wptKeylist.cpp:426 Src/wptKeylist.cpp:456 Src/wptKeyPropsDlg.cpp:150
+#: Src/wptImportList.cpp:270 Src/wptKeyEditDlgs.cpp:259
+#: Src/wptKeyEditDlgs.cpp:1132 Src/wptKeyEditDlgs.cpp:1372
+#: Src/wptKeylist.cpp:427 Src/wptKeylist.cpp:457 Src/wptKeyPropsDlg.cpp:150
 #: Src/wptKeysigDlg.cpp:157 Src/wptKeysigDlg.cpp:216
 msgid "Expired"
 msgstr "Abgelaufen"
 
-#: Src/wptImportList.cpp:272
+#: Src/wptImportList.cpp:274
 msgid "secret key"
 msgstr "geheimer Schlüssel"
 
-#: Src/wptImportList.cpp:274 Src/wptKeylist.cpp:462
+#: Src/wptImportList.cpp:276 Src/wptKeylist.cpp:463
 msgid "public key"
 msgstr "öffentlicher Schlüssel"
 
-#: Src/wptImportList.cpp:304 Src/wptKeyEditDlgs.cpp:1187
+#: Src/wptImportList.cpp:306 Src/wptKeyEditDlgs.cpp:1192
 msgid "Invalid user ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptImportList.cpp:345 Src/wptKeylist.cpp:579 Src/wptKeylist.cpp:587
+#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588
 #: Src/wptKeyManagerDlg.cpp:910 Src/wptKeyManagerDlg.cpp:980
 #: Src/wptKeyserverSearchDlg.cpp:58 Src/wptSigList.cpp:53
 #: Src/wptVerifyList.cpp:173
 msgid "User ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:590
+#: Src/wptImportList.cpp:347 Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591
 #: Src/wptKeyManagerDlg.cpp:913 Src/wptKeyserverSearchDlg.cpp:54
 msgid "Size"
 msgstr "Größe"
 
-#: Src/wptImportList.cpp:347 Src/wptKeyEditDlgs.cpp:1072
-#: Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588 Src/wptKeyManagerDlg.cpp:911
+#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1077
+#: Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:589 Src/wptKeyManagerDlg.cpp:911
 #: Src/wptKeyManagerDlg.cpp:1004 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:56 Src/wptSigList.cpp:57
 #: Src/wptVerifyList.cpp:172
 msgid "Key ID"
 msgstr "Schlüssel-ID"
 
-#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1073
-#: Src/wptKeyEditDlgs.cpp:1158 Src/wptKeylist.cpp:594
+#: Src/wptImportList.cpp:349 Src/wptKeyEditDlgs.cpp:1078
+#: Src/wptKeyEditDlgs.cpp:1163 Src/wptKeylist.cpp:595
 #: Src/wptKeyManagerDlg.cpp:917 Src/wptKeyManagerDlg.cpp:1007
 #: Src/wptKeyserverSearchDlg.cpp:57 Src/wptSigList.cpp:56
 msgid "Creation"
 msgstr "Erstellung"
 
-#: Src/wptImportList.cpp:349 Src/wptKeylist.cpp:589
+#: Src/wptImportList.cpp:350 Src/wptKeylist.cpp:590
 #: Src/wptKeyManagerDlg.cpp:912 Src/wptKeyManagerDlg.cpp:1006
 msgid "Type"
 msgstr "Typ"
 
 # c:\oss\winpt-gpgme\src\wptImportList.cpp:424
-#: Src/wptImportList.cpp:419
+#: Src/wptImportList.cpp:421
 msgid ""
 "It is possible that the ASCII-Armor is damaged\n"
 "and thus causing a CRC error."
@@ -2021,28 +2051,28 @@
 msgid "Load GPG Keyrings..."
 msgstr "Lade GPG Schlüsselbunde..."
 
-#: Src/wptKeyCacheDlg.cpp:54
+#: Src/wptKeyCacheDlg.cpp:50
 msgid "WinPT Key Caching"
 msgstr "WinPT Schlüssel-Caching"
 
-#: Src/wptKeyCacheDlg.cpp:57
+#: Src/wptKeyCacheDlg.cpp:53
 msgid "Caching keyrings, please wait..."
 msgstr "Lade Schlüssebund, bitte warten..."
 
-#: Src/wptKeyCacheDlg.cpp:72
+#: Src/wptKeyCacheDlg.cpp:70
 msgid "Key Cache"
 msgstr "Schlüsselcache"
 
-#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:391
+#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:392
 msgid "Ultimate"
 msgstr "Absolut"
 
-#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1125
-#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:385
+#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1130
+#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:386
 msgid "Never"
 msgstr "Niemals"
 
-#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1131
+#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1136
 msgid "OK"
 msgstr "OK"
 
@@ -2094,7 +2124,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:371 Src/wptKeyEditDlgs.cpp:382
 #: Src/wptKeyEditDlgs.cpp:388 Src/wptKeyEditDlgs.cpp:400
-#: Src/wptKeyEditDlgs.cpp:899
+#: Src/wptKeyEditDlgs.cpp:903
 msgid "Add Photo"
 msgstr "Foto hinzufügen"
 
@@ -2120,11 +2150,11 @@
 msgstr "Foto erfolgreich hinzugefügt."
 
 #: Src/wptKeyEditDlgs.cpp:406 Src/wptKeyEditDlgs.cpp:469
-#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:722
-#: Src/wptKeyEditDlgs.cpp:1446 Src/wptKeyEditDlgs.cpp:1516
-#: Src/wptKeyEditDlgs.cpp:1566 Src/wptKeyEditDlgs.cpp:1614
-#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeygenDlg.cpp:499
-#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:380
+#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:725
+#: Src/wptKeyEditDlgs.cpp:1472 Src/wptKeyEditDlgs.cpp:1542
+#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1640
+#: Src/wptKeyEditDlgs.cpp:1838 Src/wptKeygenDlg.cpp:499
+#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:386
 #: Src/wptOwnertrustDlg.cpp:119 Src/wptOwnertrustDlg.cpp:131
 msgid "GnuPG Status"
 msgstr "GnuPG-Status"
@@ -2141,14 +2171,14 @@
 msgstr "öff. Schlüssel"
 
 #: Src/wptKeyEditDlgs.cpp:441 Src/wptKeyEditDlgs.cpp:450
-#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:934
 msgid "Add Revoker"
 msgstr "Wiederrufer hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1535 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1786
-#: Src/wptKeyEditDlgs.cpp:1956
+#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1561 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1982
 msgid "Please select a user ID."
 msgstr "Bitte eine Benutzerkennung wählen."
 
@@ -2196,7 +2226,7 @@
 msgid "user ID successfully added."
 msgstr "Benutzerkennung erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:836
+#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:839
 msgid "Add new Subkey"
 msgstr "Neuen Unterschlüssel hinzufügen"
 
@@ -2212,49 +2242,49 @@
 msgid "Key expiration"
 msgstr "Key Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:681
+#: Src/wptKeyEditDlgs.cpp:684
 msgid "Please select one entry."
 msgstr "Bitte wählen Sie einen Eintrag aus."
 
-#: Src/wptKeyEditDlgs.cpp:682 Src/wptKeyEditDlgs.cpp:688
-#: Src/wptKeyEditDlgs.cpp:719 Src/wptKeyEditDlgs.cpp:819
+#: Src/wptKeyEditDlgs.cpp:685 Src/wptKeyEditDlgs.cpp:691
+#: Src/wptKeyEditDlgs.cpp:722 Src/wptKeyEditDlgs.cpp:822
 msgid "Add Subkey"
 msgstr "Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:687
+#: Src/wptKeyEditDlgs.cpp:690
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr "DSS benötigt feste Schlüssellänge von 1024. Größe geändert."
 
-#: Src/wptKeyEditDlgs.cpp:721
+#: Src/wptKeyEditDlgs.cpp:724
 msgid "Subkey successfully added."
 msgstr "Unterschlüssel erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:749 Src/wptKeyEditDlgs.cpp:818
-#: Src/wptKeyEditDlgs.cpp:898 Src/wptKeyEditDlgs.cpp:930
-#: Src/wptKeyEditDlgs.cpp:1011 Src/wptKeyEditDlgs.cpp:1334
-#: Src/wptKeyEditDlgs.cpp:1407 Src/wptKeyEditDlgs.cpp:1467
-#: Src/wptKeyManagerDlg.cpp:1690
+#: Src/wptKeyEditDlgs.cpp:752 Src/wptKeyEditDlgs.cpp:821
+#: Src/wptKeyEditDlgs.cpp:902 Src/wptKeyEditDlgs.cpp:934
+#: Src/wptKeyEditDlgs.cpp:1016 Src/wptKeyEditDlgs.cpp:1360
+#: Src/wptKeyEditDlgs.cpp:1433 Src/wptKeyEditDlgs.cpp:1493
+#: Src/wptKeyManagerDlg.cpp:1743
 msgid "There is no secret key available!"
 msgstr "Kein geheimer Schlüssel vorhanden!"
 
-#: Src/wptKeyEditDlgs.cpp:750 Src/wptKeyEditDlgs.cpp:769
+#: Src/wptKeyEditDlgs.cpp:753 Src/wptKeyEditDlgs.cpp:772
 msgid "Add user ID"
 msgstr "Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:877
+#: Src/wptKeyEditDlgs.cpp:880
 msgid "Preferred keyserver successfully set."
 msgstr "Bevorzugter Keyserver wurde erfolgreich gesetzt."
 
-#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditOwnertrustDlg.cpp:55
-#: Src/wptKeyPropsDlg.cpp:371
+#: Src/wptKeyEditDlgs.cpp:969 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyPropsDlg.cpp:377
 msgid "Change Ownertrust"
 msgstr "Besitzervertrauen ändern"
 
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyManager.cpp:238
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyManager.cpp:238
 msgid "Key status changed."
 msgstr "Schlüsselstatus geändert."
 
-#: Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1022
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2262,15 +2292,15 @@
 "Kann das Passwort das Schlüssels nicht ändern, da der \n"
 "Schlüssel mit dem IDEA Verschlüsselungs-Algorithmus gesichert ist."
 
-#: Src/wptKeyEditDlgs.cpp:1024
+#: Src/wptKeyEditDlgs.cpp:1029
 msgid "Current (old) Passphrase"
 msgstr "Aktuelles (altes) Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1034
 msgid "New Passphrase"
 msgstr "Neues Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:1037
+#: Src/wptKeyEditDlgs.cpp:1042
 msgid ""
 "Are you sure that you really don't want a passphrase?\n"
 "This is propably a bad idea, continue?"
@@ -2278,32 +2308,32 @@
 "Sind Sie sicher das Sie wirklich keine Passphrase wollen?\n"
 "Das ist generell keine gute Idee, trotzdem fortfahren?"
 
-#: Src/wptKeyEditDlgs.cpp:1053
+#: Src/wptKeyEditDlgs.cpp:1058
 msgid "Change Password"
 msgstr "&Passwort ändern"
 
-#: Src/wptKeyEditDlgs.cpp:1055
+#: Src/wptKeyEditDlgs.cpp:1060
 msgid "Passphrase successfully changed."
 msgstr "Passwort erfolgreich geändert."
 
-#: Src/wptKeyEditDlgs.cpp:1071 Src/wptKeyManagerDlg.cpp:918
+#: Src/wptKeyEditDlgs.cpp:1076 Src/wptKeyManagerDlg.cpp:918
 msgid "Description"
 msgstr "Beschreibung"
 
-#: Src/wptKeyEditDlgs.cpp:1074
+#: Src/wptKeyEditDlgs.cpp:1079
 msgid "Expires"
 msgstr "Verfällt"
 
-#: Src/wptKeyEditDlgs.cpp:1155 Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592
+#: Src/wptKeyEditDlgs.cpp:1160 Src/wptKeylist.cpp:584 Src/wptKeylist.cpp:593
 #: Src/wptKeyManagerDlg.cpp:915
 msgid "Validity"
 msgstr "Gültigkeit"
 
-#: Src/wptKeyEditDlgs.cpp:1157
+#: Src/wptKeyEditDlgs.cpp:1162
 msgid "Email"
 msgstr "E-Mail"
 
-#: Src/wptKeyEditDlgs.cpp:1245
+#: Src/wptKeyEditDlgs.cpp:1250
 msgid ""
 "ADDUID      add a user ID\r\n"
 "ADDPHOTO    add a photo ID\r\n"
@@ -2313,8 +2343,7 @@
 "ADDREVOKER  add a revocation key\r\n"
 "EXPIRE      change the expire date\r\n"
 "SHOWPREF    list preferences (verbose)\r\n"
-"SETPREF     set preference list\r\n"
-"UPDPREF     updated preferences\r\n"
+"SETPREF     update specific algorithm preferences\r\n"
 "PASSWD      change the passphrase\r\n"
 "PRIMARY     flag user ID as primary\r\n"
 "TRUST       change the ownertrust\r\n"
@@ -2334,7 +2363,7 @@
 "DELKEY    \t\tSekundären Schlüssel löschen\r\n"
 "ADDREVOKER\t\tWiderrufer hinzufügen\r\n"
 "EXPIRE\t\t\tAblaufdatum ändern\r\n"
-"UPDPREF   \t\tEigenschaften geändert\r\n"
+"SETPREF   \t\tEigenschaften geändert\r\n"
 "PASSWD    \t\tPasswort ändern\r\n"
 "PRIMARY   \t\tBenutzerkennung als primär kennzeichnen\r\n"
 "TRUST\t    \t\tVertrauensstellung ändern\r\n"
@@ -2347,40 +2376,53 @@
 "CLEAN     \t\tEntferne unbrauchbare Signaturen vom Schlüssel\r\n"
 "MINIMIZE  \t\tEntferne alle Signaturen vom Schlüssel\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1267
+#: Src/wptKeyEditDlgs.cpp:1271
 msgid "Key Edit Help"
 msgstr "Hilfe zum Schlüssel bearbeiten"
 
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1310
 msgid "Primary key can not be deleted!"
 msgstr "Primärer Schlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1300
+#: Src/wptKeyEditDlgs.cpp:1318
+msgid ""
+"Anything encrypted to the selected subkey cannot be\n"
+"decrypted any longer."
+msgstr ""
+"Alles was mit dem ausgewählten Unterschlüssel verschlüsselt wurde,\n"
+"kann nicht mehr länger entschlüsselt werden."
+
+#: Src/wptKeyEditDlgs.cpp:1321
+msgid ""
+"Anything signed by the selected subkey cannot be\n"
+"verified any longer."
+msgstr ""
+"Jede Signatur die mit diesem Unterschlüssel erzeugt wurde, kann nicht\n"
+"mehr überprüft werden."
+
+#: Src/wptKeyEditDlgs.cpp:1327
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
 "\n"
-"Anything encrypted to the selected subkey will no longer\n"
-"be able to be decrypted.\n"
+"%s\n"
 "\n"
 "Do you really want to delete this subkey?"
 msgstr ""
 "\"Unterschlüssel %s.\"\n"
 "\n"
-"Alles, was mit diesem Schlüssel verschlüsselt wurde, kann\n"
-"nicht mehr entschlüsselt werden.\n"
-"\n"
-"Möchten Sie diesen Unterschlüssel wirklich löschen?"
+"%s\n"
+"Diesen Schlüssel wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1310
+#: Src/wptKeyEditDlgs.cpp:1336
 msgid "Delete Subkey"
 msgstr "Unterschlüssel löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1314
+#: Src/wptKeyEditDlgs.cpp:1340
 msgid "Subkey successfully deleted."
 msgstr "Unterschlüssel erfolgreich gelöscht."
 
-#: Src/wptKeyEditDlgs.cpp:1347
+#: Src/wptKeyEditDlgs.cpp:1373
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -2390,19 +2432,19 @@
 "\n"
 "Wollen Sie das Ablaufdatum ändern?"
 
-#: Src/wptKeyEditDlgs.cpp:1356 Src/wptKeyEditDlgs.cpp:1359
+#: Src/wptKeyEditDlgs.cpp:1382 Src/wptKeyEditDlgs.cpp:1385
 msgid "Key Expiration Date"
 msgstr "Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:1380
+#: Src/wptKeyEditDlgs.cpp:1406
 msgid "Expire Subkey"
 msgstr "Untschlüssel Ablauf"
 
-#: Src/wptKeyEditDlgs.cpp:1385
+#: Src/wptKeyEditDlgs.cpp:1411
 msgid "Subkey expire date successfully set."
 msgstr "Unterschlüsselablaufdatum erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:1416
+#: Src/wptKeyEditDlgs.cpp:1442
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2414,31 +2456,31 @@
 "\n"
 "Diese Funktion ist nur für das Widerrufen einzelner Unterschlüssel gedacht."
 
-#: Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1451
 msgid "Key already revoked."
 msgstr "Der Schlüssel ist bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1442
+#: Src/wptKeyEditDlgs.cpp:1468
 msgid "Revoke Subkey"
 msgstr "Unterschlüssel widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1472
 msgid "Subkey successfully revoked."
 msgstr "Unterschlüssel erfolgreich widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1468
+#: Src/wptKeyEditDlgs.cpp:1494
 msgid "Revoke user ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1473
+#: Src/wptKeyEditDlgs.cpp:1499
 msgid "Key has only one user ID."
 msgstr "Schlüssel hat nur eine Benutzerkennung."
 
-#: Src/wptKeyEditDlgs.cpp:1484
+#: Src/wptKeyEditDlgs.cpp:1510
 msgid "This user ID has been already revoked."
 msgstr "Diese Benutzerkennung wurde bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1490
+#: Src/wptKeyEditDlgs.cpp:1516
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2448,51 +2490,51 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich widerrufen?"
 
-#: Src/wptKeyEditDlgs.cpp:1512
+#: Src/wptKeyEditDlgs.cpp:1538
 msgid "Revoke User ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1516
+#: Src/wptKeyEditDlgs.cpp:1542
 msgid "User ID successfully revoked"
 msgstr "Benutzerkennung erfolgreich widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1563
+#: Src/wptKeyEditDlgs.cpp:1589
 msgid "Set user ID preferences"
 msgstr "Setze Einstellungen für Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:1566
+#: Src/wptKeyEditDlgs.cpp:1592
 msgid "User ID preferences successfully updated"
 msgstr "Benutzerkennung wurde erfolgreich geändert"
 
-#: Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1637
 msgid "Primary"
 msgstr "Primär"
 
-#: Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1640
 msgid "User ID successfully flagged"
 msgstr "Benutzerkennung erfolgreich gekennzeichnet"
 
-#: Src/wptKeyEditDlgs.cpp:1708
+#: Src/wptKeyEditDlgs.cpp:1734
 msgid "No preferences available."
 msgstr "Keine Präferenzen verfübar."
 
-#: Src/wptKeyEditDlgs.cpp:1712
+#: Src/wptKeyEditDlgs.cpp:1738
 msgid "MDC feature"
 msgstr "Unterstützt MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1714
+#: Src/wptKeyEditDlgs.cpp:1740
 msgid "user ID:"
 msgstr "Benutzerkennung:"
 
-#: Src/wptKeyEditDlgs.cpp:1715 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1741 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "Schlüsseleinstellungen"
 
-#: Src/wptKeyEditDlgs.cpp:1780
+#: Src/wptKeyEditDlgs.cpp:1806
 msgid "Primary user ID can not be deleted!"
 msgstr "Primäre Benutzerkennung kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1791
+#: Src/wptKeyEditDlgs.cpp:1817
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2507,27 +2549,27 @@
 "\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1808
+#: Src/wptKeyEditDlgs.cpp:1834
 msgid "Delete User ID"
 msgstr "Benutzerkennung löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1838
 msgid "User ID successfully deleted"
 msgstr "Benutzerkennung erfolgreich gelöscht"
 
-#: Src/wptKeyEditDlgs.cpp:1903 Src/wptKeyEditDlgs.cpp:1921
+#: Src/wptKeyEditDlgs.cpp:1929 Src/wptKeyEditDlgs.cpp:1947
 msgid "Finished to compact key."
 msgstr "Schlüssel erfolgreich bearbeitet."
 
-#: Src/wptKeyEditDlgs.cpp:1963
+#: Src/wptKeyEditDlgs.cpp:1989
 msgid "Do you really want to make this sig exportable?"
 msgstr "Wollen Sie diese Signatur wirklich exportierbar machen?"
 
-#: Src/wptKeyEditDlgs.cpp:1994 Src/wptKeysignDlg.cpp:460
+#: Src/wptKeyEditDlgs.cpp:2020 Src/wptKeysignDlg.cpp:463
 msgid "Key successfully signed."
 msgstr "Schlüssel erfolgreich signiert."
 
-#: Src/wptKeyEditDlgs.cpp:2057
+#: Src/wptKeyEditDlgs.cpp:2083
 #, c-format
 msgid ""
 "Your keys is listed as a designated revoker for the key\n"
@@ -2545,31 +2587,31 @@
 "erstellen wollen welches es erlaubt den gelisteten Schlüssel\n"
 "zu widerrufen?"
 
-#: Src/wptKeyEditDlgs.cpp:2095
+#: Src/wptKeyEditDlgs.cpp:2121
 msgid "Capabilties: C = Certify, S = Sign, E = Encrypt, A = Authenticate"
 msgstr ""
 "Fähigkeiten: C = Zertifizieren, S = Signieren, E = Verschlüsseln, A = "
 "Authentifizierung"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:1739
-#: Src/wptKeyEditDlgs.cpp:2150
+#: Src/wptKeyEditDlgs.cpp:2176
 msgid "Command>"
 msgstr "Kommando>"
 
-#: Src/wptKeyEditDlgs.cpp:2151 Src/wptKeyserverDlg.cpp:689
+#: Src/wptKeyEditDlgs.cpp:2177 Src/wptKeyserverDlg.cpp:689
 #: Src/wptMDSumDlg.cpp:208 Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
 msgstr "&Schliessen"
 
-#: Src/wptKeyEditDlgs.cpp:2153
+#: Src/wptKeyEditDlgs.cpp:2179
 msgid "&Revoke..."
 msgstr "&Widerrufen..."
 
-#: Src/wptKeyEditDlgs.cpp:2197
+#: Src/wptKeyEditDlgs.cpp:2223
 msgid "Please select a command."
 msgstr "Bitte einen Befehl auswählen."
 
-#: Src/wptKeyEditDlgs.cpp:2201
+#: Src/wptKeyEditDlgs.cpp:2227
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "Dieser Befehl kann mit PGP2 (v3) Schlüsseln nicht verwendet werden.\n"
 
@@ -2609,7 +2651,7 @@
 
 #: Src/wptKeyEditOwnertrustDlg.cpp:83 Src/wptKeyEditOwnertrustDlg.cpp:89
 #: Src/wptKeyEditOwnertrustDlg.cpp:98 Src/wptKeyManagerDlg.cpp:974
-#: Src/wptKeyManagerDlg.cpp:1911 Src/wptKeyPropsDlg.cpp:286
+#: Src/wptKeyManagerDlg.cpp:1964 Src/wptKeyPropsDlg.cpp:298
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:116
 #: Src/wptOwnertrustDlg.cpp:128
 msgid "Ownertrust"
@@ -2632,7 +2674,7 @@
 #: Src/wptKeygenDlg.cpp:424 Src/wptKeygenDlg.cpp:429 Src/wptKeygenDlg.cpp:436
 #: Src/wptKeygenDlg.cpp:444 Src/wptKeygenDlg.cpp:458 Src/wptKeygenDlg.cpp:465
 #: Src/wptKeygenDlg.cpp:475 Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:579
-#: Src/wptKeyManagerDlg.cpp:1767 Src/wptPassphraseDlg.cpp:147
+#: Src/wptKeyManagerDlg.cpp:1820 Src/wptPassphraseDlg.cpp:147
 #: Src/wptPassphraseDlg.cpp:157
 msgid "Key Generation"
 msgstr "Schlüsselerzeugung"
@@ -2791,7 +2833,7 @@
 
 #: Src/wptKeygenDlg.cpp:546 Src/wptKeygenDlg.cpp:557 Src/wptKeygenDlg.cpp:562
 #: Src/wptKeygenDlg.cpp:569 Src/wptKeygenDlg.cpp:575 Src/wptKeygenDlg.cpp:596
-#: Src/wptKeyManagerDlg.cpp:1790
+#: Src/wptKeyManagerDlg.cpp:1843
 msgid "Key Generation Wizard"
 msgstr "Schlüsselerzeugungs-Assistent"
 
@@ -2859,42 +2901,42 @@
 msgid "Public Key"
 msgstr "Öffentlicher Schlüssel"
 
-#: Src/wptKeylist.cpp:383
+#: Src/wptKeylist.cpp:384
 msgid "None"
 msgstr "Keine"
 
-#: Src/wptKeylist.cpp:387
+#: Src/wptKeylist.cpp:388
 msgid "Marginal"
 msgstr "Marginal"
 
 # c:\oss\winpt-gpgme\src\wptKeylist.cpp:492
-#: Src/wptKeylist.cpp:389
+#: Src/wptKeylist.cpp:390
 msgid "Full"
 msgstr "Voll"
 
-#: Src/wptKeylist.cpp:428 Src/wptKeylist.cpp:454 Src/wptKeyPropsDlg.cpp:154
+#: Src/wptKeylist.cpp:429 Src/wptKeylist.cpp:455 Src/wptKeyPropsDlg.cpp:154
 msgid "Disabled"
 msgstr "Inaktiv"
 
-#: Src/wptKeylist.cpp:464
+#: Src/wptKeylist.cpp:465
 msgid "key pair"
 msgstr "Schlüsselpaar"
 
-#: Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591 Src/wptKeyManagerDlg.cpp:914
+#: Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592 Src/wptKeyManagerDlg.cpp:914
 #: Src/wptKeyManagerDlg.cpp:1005
 msgid "Cipher"
 msgstr "Cipher"
 
-#: Src/wptKeylist.cpp:593 Src/wptKeyManagerDlg.cpp:916
+#: Src/wptKeylist.cpp:594 Src/wptKeyManagerDlg.cpp:916
 #: Src/wptVerifyList.cpp:171
 msgid "Trust"
 msgstr "Vertrauen"
 
-#: Src/wptKeylist.cpp:766 Src/wptPassphraseCB.cpp:126
+#: Src/wptKeylist.cpp:782 Src/wptPassphraseCB.cpp:126
 msgid "Invalid User ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptKeylist.cpp:1035
+#: Src/wptKeylist.cpp:1051
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -2909,11 +2951,11 @@
 "\n"
 "\"%s\" trotzdem benutzen?"
 
-#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
+#: Src/wptKeylist.cpp:1059 Src/wptKeylist.cpp:1122
 msgid "Recipients"
 msgstr "Empfänger"
 
-#: Src/wptKeylist.cpp:1107
+#: Src/wptKeylist.cpp:1123
 #, c-format
 msgid ""
 "KeyID %s.\n"
@@ -2922,7 +2964,7 @@
 "Schlüssel ID %s.\n"
 "Wollen Sie wirklich einen widerrufenen Schlüssel exportieren?"
 
-#: Src/wptKeylist.cpp:1209
+#: Src/wptKeylist.cpp:1225
 msgid "Secret Key List"
 msgstr "Liste der geheimen Schlüssel"
 
@@ -3127,7 +3169,7 @@
 msgid "Key"
 msgstr "Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1347
+#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1397
 msgid "Groups"
 msgstr "Gruppen"
 
@@ -3181,7 +3223,7 @@
 msgid "&List Signatures"
 msgstr "Signaturen anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1707
+#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1760
 #: Src/wptKeyTrustPathDlg.cpp:129
 msgid "List Trust Path"
 msgstr "Zeige Vertrauenspfad"
@@ -3324,7 +3366,7 @@
 msgid "Send to Keyserver"
 msgstr "Sende an Keyserver"
 
-#: Src/wptKeyManagerDlg.cpp:1317
+#: Src/wptKeyManagerDlg.cpp:1366
 msgid ""
 "No ultimately trusted key found.\n"
 "Please set at least one secret key to ultimate trust."
@@ -3332,79 +3374,79 @@
 "Keinen explizit vertrauenswürdigen Schlüssel gefunden.\n"
 "Bitte setzten Sie zumindest einen geheimen Schlüssel auf absolutes Vertrauen."
 
-#: Src/wptKeyManagerDlg.cpp:1348
+#: Src/wptKeyManagerDlg.cpp:1398
 msgid "&Show"
 msgstr "&Anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:1349
+#: Src/wptKeyManagerDlg.cpp:1399
 msgid "&New..."
 msgstr "&Neu..."
 
 # c:\oss\winpt-gpgme\src\wptFirstRunDlg.cpp:42
-#: Src/wptKeyManagerDlg.cpp:1460
+#: Src/wptKeyManagerDlg.cpp:1510
 msgid "Generate new key pair"
 msgstr "Neues Schlüsselpaar erzeugen"
 
-#: Src/wptKeyManagerDlg.cpp:1464
+#: Src/wptKeyManagerDlg.cpp:1514
 msgid "Search for a specific key"
 msgstr "Suche nach einem bestimmten Schlüssel"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:842
-#: Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1518
 msgid "Delete key from keyring"
 msgstr "Schlüssel aus Schlüsselbund löschen"
 
-#: Src/wptKeyManagerDlg.cpp:1472
+#: Src/wptKeyManagerDlg.cpp:1522
 msgid "Show key properties"
 msgstr "Schlüsseleigenschaften anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:1476
+#: Src/wptKeyManagerDlg.cpp:1526
 msgid "Sign key"
 msgstr "Signiere Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:1480
+#: Src/wptKeyManagerDlg.cpp:1530
 msgid "Copy key to clipboard"
 msgstr "Kopiere Schlüssel in Ablage"
 
-#: Src/wptKeyManagerDlg.cpp:1484
+#: Src/wptKeyManagerDlg.cpp:1534
 msgid "Paste key from clipboard"
 msgstr "Schlüssel aus Ablage einfügen"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:854
-#: Src/wptKeyManagerDlg.cpp:1488
+#: Src/wptKeyManagerDlg.cpp:1538
 msgid "Import key to keyring"
 msgstr "In Schlüsselbund importieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:858
-#: Src/wptKeyManagerDlg.cpp:1492
+#: Src/wptKeyManagerDlg.cpp:1542
 msgid "Export key to a file"
 msgstr "Schlüssel in Datei exportieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:499
-#: Src/wptKeyManagerDlg.cpp:1626
+#: Src/wptKeyManagerDlg.cpp:1679
 msgid "New"
 msgstr "Neu"
 
-#: Src/wptKeyManagerDlg.cpp:1628
+#: Src/wptKeyManagerDlg.cpp:1681
 msgid "Preferences..."
 msgstr "Einstellungen..."
 
-#: Src/wptKeyManagerDlg.cpp:1634
+#: Src/wptKeyManagerDlg.cpp:1687
 msgid "Could not access public keyring"
 msgstr "Konnte nicht auf öffentlichen Schlüsselbund zugreifen"
 
-#: Src/wptKeyManagerDlg.cpp:1666 Src/wptKeysignDlg.cpp:351
+#: Src/wptKeyManagerDlg.cpp:1719 Src/wptKeysignDlg.cpp:351
 #: Src/wptKeysignDlg.cpp:365 Src/wptKeysignDlg.cpp:426
-#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:458
-#: Src/wptKeysignDlg.cpp:460
+#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:461
+#: Src/wptKeysignDlg.cpp:463
 msgid "Key Signing"
 msgstr "Schlüsselsignierung"
 
-#: Src/wptKeyManagerDlg.cpp:1682
+#: Src/wptKeyManagerDlg.cpp:1735
 msgid "Key already revoked!"
 msgstr "Schlüssel ist bereits widerrufen!"
 
-#: Src/wptKeyManagerDlg.cpp:1696 Src/wptKeyRevokeDlg.cpp:68
+#: Src/wptKeyManagerDlg.cpp:1749 Src/wptKeyRevokeDlg.cpp:68
 #: Src/wptKeyRevokeDlg.cpp:78 Src/wptKeyRevokeDlg.cpp:162
 #: Src/wptKeyRevokeDlg.cpp:167 Src/wptKeyRevokeDlg.cpp:172
 #: Src/wptKeyRevokeDlg.cpp:181 Src/wptKeyRevokeDlg.cpp:191
@@ -3412,15 +3454,15 @@
 msgid "Key Revocation Cert"
 msgstr "Schlüsselwiderruf Zertifikat"
 
-#: Src/wptKeyManagerDlg.cpp:1718
+#: Src/wptKeyManagerDlg.cpp:1771
 msgid "Key Signature List"
 msgstr "Schlüssel-Signatur-Liste"
 
-#: Src/wptKeyManagerDlg.cpp:1735 Src/wptKeyPropsDlg.cpp:282
+#: Src/wptKeyManagerDlg.cpp:1788 Src/wptKeyPropsDlg.cpp:294
 msgid "Key Properties"
 msgstr "Schlüsseleigenschaften"
 
-#: Src/wptKeyManagerDlg.cpp:1745
+#: Src/wptKeyManagerDlg.cpp:1798
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
@@ -3429,32 +3471,32 @@
 "Signierung etc.)\n"
 "Möchten Sie den Zwischenspeicher reinitialisieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1775
+#: Src/wptKeyManagerDlg.cpp:1828
 msgid "Smart Card support is not available."
 msgstr "SmartCard-Unterstützung ist nicht verfügbar."
 
-#: Src/wptKeyManagerDlg.cpp:1798 Src/wptKeyserverDlg.cpp:680
+#: Src/wptKeyManagerDlg.cpp:1851 Src/wptKeyserverDlg.cpp:680
 msgid "Keyserver Access"
 msgstr "Schlüsselserver-Zugriff"
 
-#: Src/wptKeyManagerDlg.cpp:1806 Src/wptMainProc.cpp:574
-#: Src/wptPreferencesDlg.cpp:139
+#: Src/wptKeyManagerDlg.cpp:1859 Src/wptMainProc.cpp:574
+#: Src/wptPreferencesDlg.cpp:125
 msgid "WinPT Preferences"
 msgstr "WinPT Einstellungen"
 
-#: Src/wptKeyManagerDlg.cpp:1821
+#: Src/wptKeyManagerDlg.cpp:1874
 msgid "GnuPG Options"
 msgstr "GnuPG Optionen"
 
-#: Src/wptKeyManagerDlg.cpp:1863
+#: Src/wptKeyManagerDlg.cpp:1916
 msgid "There is no corresponding secret key for this key."
 msgstr "Für diesen Schlüssel ist kein geheimer Schlüssel vorhanden."
 
-#: Src/wptKeyManagerDlg.cpp:1868
+#: Src/wptKeyManagerDlg.cpp:1921
 msgid "You can only export one secret key."
 msgstr "Sie können nur einen geheimen Schlüssel exportieren."
 
-#: Src/wptKeyManagerDlg.cpp:1873
+#: Src/wptKeyManagerDlg.cpp:1926
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -3472,15 +3514,15 @@
 "\n"
 "Wirklich den Schlüssel exportieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1878
+#: Src/wptKeyManagerDlg.cpp:1931
 msgid "WARNING"
 msgstr "WARNUNG"
 
-#: Src/wptKeyManagerDlg.cpp:1944
+#: Src/wptKeyManagerDlg.cpp:1997
 msgid "No key was selected, select all by default."
 msgstr "Kein Schlüssel ausgewählt, es wurden alle ausgewählt."
 
-#: Src/wptKeyManagerDlg.cpp:1949
+#: Src/wptKeyManagerDlg.cpp:2002
 msgid "Keyserver refresh finished."
 msgstr "Erneuerung von Keyserver abgeschlossen."
 
@@ -3503,7 +3545,7 @@
 msgstr "Karten-Typ: %s\r\n"
 
 # c:\oss\winpt-gpgme\src\wptKeyPropsDlg.cpp:214
-#: Src/wptKeyPropsDlg.cpp:244
+#: Src/wptKeyPropsDlg.cpp:256
 #, c-format
 msgid ""
 "Type: %s\r\n"
@@ -3526,34 +3568,24 @@
 "Cipher: %s\r\n"
 "%s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:283
+#: Src/wptKeyPropsDlg.cpp:295
 msgid "&Change"
 msgstr "&Ändern"
 
-#: Src/wptKeyPropsDlg.cpp:284
+#: Src/wptKeyPropsDlg.cpp:296
 msgid "&Revokers"
 msgstr "&Widerrufer"
 
-#: Src/wptKeyPropsDlg.cpp:285
+#: Src/wptKeyPropsDlg.cpp:297
 msgid "Change &Password"
 msgstr "&Passwort ändern"
 
-#: Src/wptKeyPropsDlg.cpp:292
+#: Src/wptKeyPropsDlg.cpp:304
 msgid "Photo-ID not validated."
 msgstr "Foto-ID nicht geprüft."
 
-# msgid "Unknown"
-# msgstr "Unbekannt"
-#: Src/wptKeyPropsDlg.cpp:355
+#: Src/wptKeyPropsDlg.cpp:367
 msgid ""
-"The status of this key is 'revoked' or 'expired'.\n"
-"You cannot change the ownertrust of such keys."
-msgstr ""
-"Der Status dieses Schlüssels ist 'widerrufen' oder 'abgelaufen'.\n"
-"Sie können das Vertrauen in solche Schlüssel nicht ändern."
-
-#: Src/wptKeyPropsDlg.cpp:361
-msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
 "\n"
@@ -3563,11 +3595,11 @@
 "Das Vertrauen solcher Schlüssel zu ändern hat keinerlei Effekt.\n"
 "Trotzdem fortfahren?"
 
-#: Src/wptKeyPropsDlg.cpp:379
+#: Src/wptKeyPropsDlg.cpp:385
 msgid "Ownertrust successfully changed."
 msgstr "Besitzervertrauen erfolgreich geändert."
 
-#: Src/wptKeyPropsDlg.cpp:392 Src/wptKeyRevokersDlg.cpp:160
+#: Src/wptKeyPropsDlg.cpp:398 Src/wptKeyRevokersDlg.cpp:160
 msgid "Key Revokers"
 msgstr "Schlüsselwiderrufer"
 
@@ -3629,39 +3661,39 @@
 msgid "Do you want to retrieve %s via the default keyserver?"
 msgstr "Wollen Sie '0x%s' wirklich vom Standard-Schlüsselserver empfangen?"
 
-#: Src/wptKeyserver.cpp:439
+#: Src/wptKeyserver.cpp:443
 msgid "Network unreachable"
 msgstr "Netzwerk unerreichbar"
 
-#: Src/wptKeyserver.cpp:442
+#: Src/wptKeyserver.cpp:446
 msgid "Host unreachable"
 msgstr "Rechner unerreichbar"
 
-#: Src/wptKeyserver.cpp:445
+#: Src/wptKeyserver.cpp:449
 msgid "Could not resolve host name"
 msgstr "Konnte Rechnernamen nicht auflösen"
 
-#: Src/wptKeyserver.cpp:448
+#: Src/wptKeyserver.cpp:452
 msgid "Connection refused"
 msgstr "Verbindung abgelehnt"
 
-#: Src/wptKeyserver.cpp:452
+#: Src/wptKeyserver.cpp:456
 msgid "Connection timeout"
 msgstr "Verbindung Time-Out"
 
-#: Src/wptKeyserver.cpp:456
+#: Src/wptKeyserver.cpp:460
 msgid "Connection resetted by peer"
 msgstr "Verbindung wurde zurückgesetzt"
 
-#: Src/wptKeyserver.cpp:459
+#: Src/wptKeyserver.cpp:463
 msgid "Socket has been shutdown"
 msgstr "Socket wurde runtergefahren"
 
-#: Src/wptKeyserver.cpp:637
+#: Src/wptKeyserver.cpp:641
 msgid "Could not save keyserver.conf file"
 msgstr "Konnte keyserver.conf Datei nicht speichern"
 
-#: Src/wptKeyserver.cpp:722
+#: Src/wptKeyserver.cpp:727
 msgid ""
 "Invalid proxy configuration. You need to set a user and a password to use "
 "proxy authentication!"
@@ -3669,11 +3701,11 @@
 "Ungültige Proxy-Konfiguration. Sie müssen einen Benutzernamen und ein "
 "Passwort setzen, um Proxy-Authentifizierung nutzen zu können!"
 
-#: Src/wptKeyserver.cpp:725
+#: Src/wptKeyserver.cpp:730
 msgid "Proxy Error"
 msgstr "Proxyfehler"
 
-#: Src/wptKeyserver.cpp:750
+#: Src/wptKeyserver.cpp:755
 msgid ""
 "All entries of this file must have a valid prefix.\n"
 "Currently HKP/HTTP, LDAP and FINGER are supported.\n"
@@ -3681,16 +3713,16 @@
 "Alle Eintraäge in dieser Datei müssen über einen gültigen Präfix verfügen.\n"
 "Aktuell werden HKP/HTTP, LDAP and FINGER unterstützt.\n"
 
-#: Src/wptKeyserver.cpp:752
+#: Src/wptKeyserver.cpp:757
 msgid "Keyserver Error"
 msgstr "Schlüsselserver-Fehler"
 
 # c:\oss\winpt-gpgme\src\wptKeyserver.cpp:548
-#: Src/wptKeyserver.cpp:771
+#: Src/wptKeyserver.cpp:776
 msgid "The keyserver limit is exceeded"
 msgstr "Das Limit der Keyserver wurde erreicht"
 
-#: Src/wptKeyserver.cpp:772
+#: Src/wptKeyserver.cpp:777
 msgid "Keyserver Warning"
 msgstr "Keyserver Warnung"
 
@@ -3845,11 +3877,11 @@
 msgid "&Edit"
 msgstr "&Edtieren"
 
-#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:103
-#: Src/wptProxySettingsDlg.cpp:113 Src/wptProxySettingsDlg.cpp:118
-#: Src/wptProxySettingsDlg.cpp:125 Src/wptProxySettingsDlg.cpp:130
-#: Src/wptProxySettingsDlg.cpp:135 Src/wptProxySettingsDlg.cpp:194
-#: Src/wptProxySettingsDlg.cpp:229
+#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:105
+#: Src/wptProxySettingsDlg.cpp:115 Src/wptProxySettingsDlg.cpp:120
+#: Src/wptProxySettingsDlg.cpp:127 Src/wptProxySettingsDlg.cpp:132
+#: Src/wptProxySettingsDlg.cpp:137 Src/wptProxySettingsDlg.cpp:198
+#: Src/wptProxySettingsDlg.cpp:233
 msgid "Proxy Settings"
 msgstr "Proxy-Einstellungen"
 
@@ -3882,12 +3914,12 @@
 msgid "Keyserver Searching"
 msgstr "Schlüsselserver-Suche"
 
-#: Src/wptKeyserverSearchDlg.cpp:96 Src/wptKeyserverSearchDlg.cpp:101
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyserverSearchDlg.cpp:97 Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Keyserver Search"
 msgstr "Schlüsselserver-Suche"
 
-#: Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:103
 #, c-format
 msgid ""
 "The search result contains a lot of keys: %d\n"
@@ -4107,7 +4139,7 @@
 msgid "You cannot select today as the expiration date."
 msgstr "Das Ablaufdatum kann nicht auf den heutigen Tag gesetzt werden."
 
-#: Src/wptKeysignDlg.cpp:457
+#: Src/wptKeysignDlg.cpp:460
 msgid "This key is already signed by your key"
 msgstr "Der Schlüssel ist bereits mit Ihrem Schlüssel signiert"
 
@@ -4362,79 +4394,75 @@
 msgid "'User PIN' must be at least 6 characters long."
 msgstr "Die 'Benutzer PIN' muss mindestens 6 Zeichen lang sein."
 
-#: Src/wptPreferencesDlg.cpp:114
+#: Src/wptPreferencesDlg.cpp:101
 msgid "Do not use any &temporary files"
 msgstr "Keine &temporären Dateien benutzen"
 
-#: Src/wptPreferencesDlg.cpp:115
+#: Src/wptPreferencesDlg.cpp:102
 msgid "Use clipboard &viewer to display the plaintext"
 msgstr "Benutze Ablagen-&Betracher zur Anzeige des Klartexts"
 
-#: Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:103
 msgid "Word wrap cleartext &signatures at column"
 msgstr "Breche Zeilen in &Klartextsignaturen um"
 
-#: Src/wptPreferencesDlg.cpp:117
+#: Src/wptPreferencesDlg.cpp:104
 msgid "&Disable hotkeys (Not recommended!)"
 msgstr "&Hotkeys deaktivieren (Nicht empfohlen!)"
 
-#: Src/wptPreferencesDlg.cpp:118
+#: Src/wptPreferencesDlg.cpp:105
 msgid "Skip key validation and assume that keys are always fully trusted"
 msgstr "Benutze Trust-Model 'immer gültig' und prüfe Schlüssel nie"
 
-#: Src/wptPreferencesDlg.cpp:119
+#: Src/wptPreferencesDlg.cpp:106
 msgid "&Automatic keyring backup when WinPT closes"
 msgstr "&Automatisch Backups erstellen wenn WinPT beendet wird"
 
-#: Src/wptPreferencesDlg.cpp:120
+#: Src/wptPreferencesDlg.cpp:107
 msgid "Backup to &keyring folder"
 msgstr "Backup in &Schlüsselbund-Ordner"
 
-#: Src/wptPreferencesDlg.cpp:121
+#: Src/wptPreferencesDlg.cpp:108
 msgid "Backup to:"
 msgstr "Backup nach:"
 
-#: Src/wptPreferencesDlg.cpp:122
+#: Src/wptPreferencesDlg.cpp:109
 msgid "Select &key list mode"
 msgstr "Key List-Modus auswählen"
 
-#: Src/wptPreferencesDlg.cpp:123
-msgid "Select &wipe mode"
-msgstr "Löschmodus auswählen"
-
-#: Src/wptPreferencesDlg.cpp:124
+#: Src/wptPreferencesDlg.cpp:110
 msgid "Keyserver &config"
 msgstr "Keyserver &Config"
 
-#: Src/wptPreferencesDlg.cpp:125
+#: Src/wptPreferencesDlg.cpp:111
 msgid "Cache &passphrases for 'n' minutes"
 msgstr "&Passphrase für 'n' Minuten cachen"
 
-#: Src/wptPreferencesDlg.cpp:126
+#: Src/wptPreferencesDlg.cpp:112
 msgid "(CTRL+ALT+F to clear the cache)"
 msgstr "(STRG+ALT+F löscht den Cache)"
 
-#: Src/wptPreferencesDlg.cpp:127
+#: Src/wptPreferencesDlg.cpp:113
 msgid "General options"
 msgstr "Allgemeine Optionen"
 
-#: Src/wptPreferencesDlg.cpp:128
+#: Src/wptPreferencesDlg.cpp:114
 msgid "Clipboard hotkeys"
 msgstr "Zwischenablage Hotkeys"
 
-#: Src/wptPreferencesDlg.cpp:129
+#: Src/wptPreferencesDlg.cpp:115
 msgid "Current window hotkeys"
 msgstr "Aktuelle Fenster Hotkeys"
 
-#: Src/wptPreferencesDlg.cpp:132
+#: Src/wptPreferencesDlg.cpp:118
 msgid "Default extension for encrypted files"
 msgstr "Dateierweiterung für verschlüsselte Dateien"
 
-#: Src/wptPreferencesDlg.cpp:133
+#: Src/wptPreferencesDlg.cpp:119
 msgid "&Backup includes secret keyring"
 msgstr "&Backup beinhaltet geheimen Schlüsselbund"
 
-#: Src/wptPreferencesDlg.cpp:222
+#: Src/wptPreferencesDlg.cpp:206
 msgid ""
 "In most cases it is not a good idea to enable this setting.\n"
 "If you know what you are doing, you can enable this flag, otherwise\n"
@@ -4445,11 +4473,11 @@
 "Wenn Sie unsicher sind, dann lassen Sie diese Funktion besser deaktiviert."
 
 # c:\oss\winpt-gpgme\src\wptPreferencesDlg.cpp:214
-#: Src/wptPreferencesDlg.cpp:256
+#: Src/wptPreferencesDlg.cpp:240
 msgid "Select GPG backup path"
 msgstr "GPG Backup-Pfad auswählen"
 
-#: Src/wptPreferencesDlg.cpp:268
+#: Src/wptPreferencesDlg.cpp:252
 msgid ""
 "Please enter a value that is between 1-720.\n"
 "It is not a good idea to cache the passphrase more than 12 hours."
@@ -4457,15 +4485,15 @@
 "Bitte geben Sie einen Wert von 1-720 ein.\n"
 "Es ist nicht zu empfehlen, das Passwort länger als 12 Stunden zu speichern."
 
-#: Src/wptPreferencesDlg.cpp:281
+#: Src/wptPreferencesDlg.cpp:265
 msgid "Please enter a value between 1-80."
 msgstr "Bitte geben Sie einen Wert von 1-80 ein."
 
-#: Src/wptPreferencesDlg.cpp:294
+#: Src/wptPreferencesDlg.cpp:286
 msgid "The specified backup folder is invalid."
 msgstr "Der angegebene Backupverzeichnis ist ungültig."
 
-#: Src/wptPreferencesDlg.cpp:332
+#: Src/wptPreferencesDlg.cpp:321
 msgid "Hotkeys"
 msgstr "Tastenkürzel"
 
@@ -4473,57 +4501,57 @@
 msgid "Could not create progress thread."
 msgstr "Konnte Fortschrittsthread nicht erstellen."
 
-#: Src/wptProxySettingsDlg.cpp:103
-msgid "Invalid host/IP address."
-msgstr "Ungültige IP-Adresse."
+#: Src/wptProxySettingsDlg.cpp:105
+msgid "Invalid host or IP address."
+msgstr "Ungültiger Hostname oder IP-Adresse."
 
-#: Src/wptProxySettingsDlg.cpp:112
+#: Src/wptProxySettingsDlg.cpp:114
 msgid "Please enter the proxy hostname."
 msgstr "Bitte geben Sie den Proxy-Hostnamen ein."
 
-#: Src/wptProxySettingsDlg.cpp:118
+#: Src/wptProxySettingsDlg.cpp:120
 msgid "Invalid port number."
 msgstr "Ungültige Portnummer."
 
-#: Src/wptProxySettingsDlg.cpp:124
+#: Src/wptProxySettingsDlg.cpp:126
 msgid "Please select a value from 0-65535 for the port"
 msgstr "Bitte geben Sie für den Port einen Wert von 0-65535 ein"
 
-#: Src/wptProxySettingsDlg.cpp:129
+#: Src/wptProxySettingsDlg.cpp:131
 msgid "When you want to use authentication, please fill out both fields."
 msgstr ""
 "Wenn Sie Authentifizierung nutzen wollen, füllen Sie bitte beide Felder aus."
 
-#: Src/wptProxySettingsDlg.cpp:134
+#: Src/wptProxySettingsDlg.cpp:136
 msgid "Please enter a host name and a port."
 msgstr "Bitte geben Sie den Hostname und Port ein."
 
-#: Src/wptProxySettingsDlg.cpp:188
+#: Src/wptProxySettingsDlg.cpp:192
 msgid "Proxy host name or IP address"
 msgstr "Proxy Rechnername oder IP Adresse"
 
-#: Src/wptProxySettingsDlg.cpp:189
+#: Src/wptProxySettingsDlg.cpp:193
 msgid "Server requires &authentication"
 msgstr "Server benötigt &Authentifikation"
 
-#: Src/wptProxySettingsDlg.cpp:190
+#: Src/wptProxySettingsDlg.cpp:194
 msgid "User name"
 msgstr "Benutzername"
 
-#: Src/wptProxySettingsDlg.cpp:191
+#: Src/wptProxySettingsDlg.cpp:195
 msgid "Password"
 msgstr "Passwort"
 
-#: Src/wptProxySettingsDlg.cpp:192
+#: Src/wptProxySettingsDlg.cpp:196
 msgid "Proxy type"
 msgstr "Proxy-Type"
 
-#: Src/wptProxySettingsDlg.cpp:193
+#: Src/wptProxySettingsDlg.cpp:197
 msgid "Authentication"
 msgstr "Authentifizierung"
 
 # c:\oss\winpt-gpgme\src\wptProxySettingsDlg.cpp:156
-#: Src/wptProxySettingsDlg.cpp:228
+#: Src/wptProxySettingsDlg.cpp:232
 msgid "Please fill out all required fields for authentication."
 msgstr "Bitte füllen Sie alle benötigen Felder für die Authentifizierung aus."
 
@@ -4563,7 +4591,7 @@
 "Der Dateityp '%s' scheint mit einer anderen Anwendung verknüpft zu sein.\n"
 "Vorhandenen Eintrag überschreiben?"
 
-#: Src/wptRegistry.cpp:599
+#: Src/wptRegistry.cpp:596
 msgid "Could not write to Registry."
 msgstr "Konnte Werte in der Registrierung nicht speichern."
 
@@ -4619,6 +4647,33 @@
 msgid "Signed"
 msgstr "Signiert"
 
+#~ msgid "Select &wipe mode"
+#~ msgstr "Löschmodus auswählen"
+
+# msgid "Unknown"
+# msgstr "Unbekannt"
+#~ msgid ""
+#~ "The status of this key is 'revoked' or 'expired'.\n"
+#~ "You cannot change the ownertrust of such keys."
+#~ msgstr ""
+#~ "Der Status dieses Schlüssels ist 'widerrufen' oder 'abgelaufen'.\n"
+#~ "Sie können das Vertrauen in solche Schlüssel nicht ändern."
+
+#~ msgid ""
+#~ "\"Subkey %s.\"\n"
+#~ "\n"
+#~ "Anything encrypted to the selected subkey will no longer\n"
+#~ "be able to be decrypted.\n"
+#~ "\n"
+#~ "Do you really want to delete this subkey?"
+#~ msgstr ""
+#~ "\"Unterschlüssel %s.\"\n"
+#~ "\n"
+#~ "Alles, was mit diesem Schlüssel verschlüsselt wurde, kann\n"
+#~ "nicht mehr entschlüsselt werden.\n"
+#~ "\n"
+#~ "Möchten Sie diesen Unterschlüssel wirklich löschen?"
+
 #~ msgid "Could not lock or unlock volume"
 #~ msgstr "Konnte Volume nicht sperren oder entsperren"
 

Modified: trunk/Po/jp.po
===================================================================
--- trunk/Po/jp.po	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Po/jp.po	2006-12-08 10:22:17 UTC (rev 273)
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: WinPT 0.10.2\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-11-04 14:17+0100\n"
+"POT-Creation-Date: 2006-12-07 14:51+0100\n"
 "PO-Revision-Date: 2005-12-22 07:28+0100\n"
 "Last-Translator: Davar Pishva <dpishva at andrew.cmu.edu>\n"
 "Language-Team: jp <jp at li.org>\n"
@@ -36,34 +36,38 @@
 # c:\oss\winpt\src\wptGPG.cpp:886 c:\oss\winpt\src\wptGPG.cpp:896
 # c:\oss\winpt\src\wptGPGME.cpp:175 c:\oss\winpt\src\wptMainProc.cpp:337
 # c:\oss\winpt\src\wptMainProc.cpp:509
-#: Src/WinPT.cpp:197 Src/WinPT.cpp:276 Src/WinPT.cpp:280 Src/WinPT.cpp:521
-#: Src/WinPT.cpp:530 Src/WinPT.cpp:537 Src/WinPT.cpp:566 Src/WinPT.cpp:582
-#: Src/WinPT.cpp:591 Src/WinPT.cpp:595 Src/WinPT.cpp:612 Src/WinPT.cpp:681
-#: Src/WinPT.cpp:694 Src/WinPT.cpp:741 Src/WinPT.cpp:784 Src/WinPT.cpp:803
-#: Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144 Src/wptGPG.cpp:922
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:944 Src/wptGPG.cpp:955
+#: Src/WinPT.cpp:197 Src/WinPT.cpp:298 Src/WinPT.cpp:302 Src/WinPT.cpp:543
+#: Src/WinPT.cpp:552 Src/WinPT.cpp:559 Src/WinPT.cpp:582 Src/WinPT.cpp:592
+#: Src/WinPT.cpp:608 Src/WinPT.cpp:617 Src/WinPT.cpp:621 Src/WinPT.cpp:638
+#: Src/WinPT.cpp:707 Src/WinPT.cpp:720 Src/WinPT.cpp:767 Src/WinPT.cpp:810
+#: Src/WinPT.cpp:828 Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144
+#: Src/wptGPG.cpp:929 Src/wptGPG.cpp:941 Src/wptGPG.cpp:951 Src/wptGPG.cpp:962
 #: Src/wptMainProc.cpp:346 Src/wptMainProc.cpp:519
 msgid "WinPT Error"
 msgstr "WinPT ƒGƒ‰["
 
 # c:\oss\winpt\src\wptGPG.cpp:178
-#: Src/WinPT.cpp:225
+#: Src/WinPT.cpp:233
 msgid "No useable secret key found."
 msgstr "Žg—p‚Å‚«‚é”é–§Œ®‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:173
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:180
-#: Src/WinPT.cpp:226 Src/wptKeyPropsDlg.cpp:357 Src/wptKeyPropsDlg.cpp:364
+#: Src/WinPT.cpp:234 Src/WinPT.cpp:245 Src/wptKeyPropsDlg.cpp:370
 msgid "WinPT Warning"
 msgstr "WinPT Œx"
 
+#: Src/WinPT.cpp:244
+msgid "Default secret key is unuseable"
+msgstr ""
+
 # c:\oss\winpt\src\WinPT.cpp:155
-#: Src/WinPT.cpp:275
+#: Src/WinPT.cpp:297
 msgid "Could not read GnuPG version."
 msgstr "GnuPGƒo[ƒWƒ‡ƒ“î•ñ‚ð“Ç‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\WinPT.cpp:161
-#: Src/WinPT.cpp:281
+#: Src/WinPT.cpp:303
 #, c-format
 msgid ""
 "Sorry, you need a newer GPG version.\n"
@@ -73,7 +77,7 @@
 "•K—v‚Æ‚³‚ê‚Ä‚¢‚éƒo[ƒWƒ‡ƒ“‚ª %d.%d.%d ‚Å‚·B"
 
 # c:\oss\winpt\src\wptErrors.cpp:93
-#: Src/WinPT.cpp:315
+#: Src/WinPT.cpp:337
 msgid "Failed to create WinPT directory"
 msgstr "WinPTƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
@@ -92,8 +96,8 @@
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:420
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:72
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:115
-#: Src/WinPT.cpp:316 Src/WinPT.cpp:333 Src/WinPT.cpp:344
-#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:638
+#: Src/WinPT.cpp:338 Src/WinPT.cpp:355 Src/WinPT.cpp:366
+#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:642
 #: Src/wptKeyserverDlg.cpp:71 Src/wptKeyserverDlg.cpp:73
 #: Src/wptKeyserverDlg.cpp:190 Src/wptKeyserverDlg.cpp:198
 #: Src/wptKeyserverDlg.cpp:214 Src/wptKeyserverDlg.cpp:392
@@ -107,11 +111,11 @@
 
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:370
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:395
-#: Src/WinPT.cpp:332
+#: Src/WinPT.cpp:354
 msgid "Failed to copy the keyserver.conf"
 msgstr "keyserver.conf‚̃tƒ@ƒCƒ‹ƒRƒs[‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
 
-#: Src/WinPT.cpp:522
+#: Src/WinPT.cpp:544
 #, c-format
 msgid ""
 "The PTD.dll file has a different version than WinPT.exe\n"
@@ -121,16 +125,23 @@
 "PTD.dll‚̃o[ƒWƒ‡ƒ“‚ð%d.%d.%d‚ɍXV‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\WinPT.cpp:223
-#: Src/WinPT.cpp:529
+#: Src/WinPT.cpp:551
 msgid "Cryptographic selftest failed."
 msgstr "ˆÃ†–@ƒZƒ‹ƒtƒeƒXƒg‚ªŽ¸”s‚µ‚Ü‚µ‚½B"
 
-#: Src/WinPT.cpp:536
+#: Src/WinPT.cpp:558
 msgid "A newer GPGME version is needed; at least "
 msgstr "­‚È‚­‚Ä‚àGPME‚̐V‚µ‚¢ƒo[ƒWƒ‡ƒ“‚ª•K—v‚Å‚·B"
 
+#: Src/WinPT.cpp:579
+msgid ""
+"The gpg.conf file contains the 'textmode' option\n"
+"which leads to broken binary output during decryption.\n"
+"If this is on purpose, just continue otherwise the option should be disabled."
+msgstr ""
+
 # c:\oss\winpt\src\WinPT.cpp:242
-#: Src/WinPT.cpp:567
+#: Src/WinPT.cpp:593
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -142,17 +153,17 @@
 "%s."
 
 # c:\oss\winpt\src\WinPT.cpp:246
-#: Src/WinPT.cpp:571
+#: Src/WinPT.cpp:597
 msgid "Select GPG Public Keyring"
 msgstr "GPGŒöŠJƒL[ƒŠƒ“ƒO‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\WinPT.cpp:268
-#: Src/WinPT.cpp:581
+#: Src/WinPT.cpp:607
 msgid "GPG home directory could not be determined."
 msgstr "GPGƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\WinPT.cpp:276
-#: Src/WinPT.cpp:589
+#: Src/WinPT.cpp:615
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
@@ -160,7 +171,7 @@
 "GPGƒoƒCƒiƒŠ(gpg.exe)‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B\n"
 "GPG ƒJƒXƒ^ƒ€Ý’è‚ð‹N“®‚µ‚Ä‚±‚Ì–â‘è‚ð‰ðŒˆ‚µ‚Ü‚·‚©H"
 
-#: Src/WinPT.cpp:604
+#: Src/WinPT.cpp:630
 msgid ""
 "Could not access and/or find the public and secret keyring.\n"
 "If this is an accident, quit the program and fix it.\n"
@@ -173,23 +184,23 @@
 "‚±‚Ì‚Ü‚Ü‘±‚¯‚é‚ÆWinPT‚ª‚¢‚ë‚¢‚ë‚È‘I‘ð‚ð’ño‚µ‚Ü‚·B\n"
 
 # c:\oss\winpt\src\WinPT.cpp:320 c:\oss\winpt\src\wptFileManagerDlg.cpp:552
-#: Src/WinPT.cpp:637 Src/wptFileManagerDlg.cpp:520
-#: Src/wptFileManagerDlg.cpp:837
+#: Src/WinPT.cpp:663 Src/wptFileManagerDlg.cpp:520
+#: Src/wptFileManagerDlg.cpp:861
 msgid "Wipe Free Space"
 msgstr "ŠJ‚«—̈æ‚ðŽæ‚èÁ‚·"
 
 # c:\oss\winpt\src\WinPT.cpp:382
-#: Src/WinPT.cpp:680
+#: Src/WinPT.cpp:706
 msgid "Could not register window class"
 msgstr "ƒEƒBƒ“ƒh‚̃Nƒ‰ƒX‚ð“o˜^‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\WinPT.cpp:395
-#: Src/WinPT.cpp:694
+#: Src/WinPT.cpp:720
 msgid "Could not create window"
 msgstr "ƒEƒBƒ“ƒh‚ðì¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\WinPT.cpp:461
-#: Src/WinPT.cpp:782
+#: Src/WinPT.cpp:808
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
@@ -198,7 +209,7 @@
 "GPG‚±‚¤‚¹‚¢ (ƒL[ƒŠƒ“ƒO, ƒpƒX‚È‚Ç...) ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\WinPT.cpp:464
-#: Src/WinPT.cpp:785
+#: Src/WinPT.cpp:811
 msgid ""
 "It seems that GPG is not configured properly.\n"
 "Do you want to start the GPG preferences dialog?"
@@ -207,13 +218,14 @@
 "GPGƒJƒXƒ^ƒ€Ý’è‚ðŽÀs‚µ‚Ü‚·H"
 
 # c:\oss\winpt\src\WinPT.cpp:480
-#: Src/WinPT.cpp:804
-#, c-format
+#: Src/WinPT.cpp:829
+#, fuzzy, c-format
 msgid ""
-"Default key (from the GPG config file) could not be found.\n"
-"Please check your gpg.conf or set a new default key to correct it:\n"
+"Default key (from the GPG config file) could not be found or is unuseable.\n"
+"The default key will be resetted and can be set later in the Key Manager "
+"again.\n"
 "\n"
-"%s: public key not found."
+"%s: secret key not found."
 msgstr ""
 "GPGƒIƒvƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚æ‚è‹K’èƒL[‚ðŒ©‚Â‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B\n"
 "‚±‚ê‚𒼂·‚Ì‚Égpg.conf (ƒIƒvƒVƒ‡ƒ“) ‚ðƒ`ƒFƒbƒN‚·‚é‚©V‚µ‚¢‹K’èƒL[‚ðƒZƒbƒg‚µ"
@@ -234,7 +246,7 @@
 # c:\oss\winpt\src\wptAboutDlgs.cpp:78
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1152
 # c:\oss\winpt\src\wptMainProc.cpp:560
-#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1890
+#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1943
 #: Src/wptMainProc.cpp:568
 msgid "About WinPT"
 msgstr "WinPT‚ɂ‚¢‚Ä"
@@ -290,7 +302,7 @@
 msgid "&About GPG..."
 msgstr "GPG‚ɂ‚¢‚Ä..."
 
-#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2152
+#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2178
 #: Src/wptKeyManagerDlg.cpp:1002
 msgid "&Help"
 msgstr "ƒwƒ‹ƒv(&H)"
@@ -419,14 +431,14 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:144
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:166
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:890
-#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2154
+#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2180
 #: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
 msgid "&OK"
 msgstr "&OK"
 
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:364
 # c:\oss\winpt\src\wptMainProc.cpp:400
-#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:59
+#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:51
 msgid "&Exit"
 msgstr "I—¹i&Ej"
 
@@ -496,7 +508,7 @@
 msgstr "ˆÃ†‰»ƒL[‚̃J[ƒhŠOƒoƒbƒNƒAƒbƒv‚ðì¬"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1049
-#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1833
 msgid "Card Key Generation"
 msgstr "ƒJ[ƒhƒL[ì¬"
 
@@ -532,7 +544,7 @@
 # c:\oss\winpt\src\wptCardDlg.cpp:580
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1153
 # c:\oss\winpt\src\wptKeygenDlg.cpp:310
-#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1389 Src/wptKeygenDlg.cpp:457
 msgid "The date you have chosen has already passed."
 msgstr "‚ ‚È‚½‚Í‘I‚΂ꂽ“ú•t‚ª–³Œø‚Å‚·i‰ß‚¬‚Ä‚¢‚Ü‚·jB"
 
@@ -618,33 +630,34 @@
 "Œp‘±‚·‚é‚Ì‚ÉOK‚Ü‚½‚̓Lƒƒƒ“ƒZƒ‹‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:48
-#: Src/wptClipDecryptDlg.cpp:60 Src/wptClipDecryptDlg.cpp:177
-#: Src/wptKeyRevokersDlg.cpp:129 Src/wptKeyRevokersDlg.cpp:173
-#: Src/wptVerifyList.cpp:257 Src/wptVerifyList.cpp:319
+#: Src/wptClipDecryptDlg.cpp:55 Src/wptClipDecryptDlg.cpp:136
+#: Src/wptClipDecryptDlg.cpp:179 Src/wptKeyRevokersDlg.cpp:129
+#: Src/wptKeyRevokersDlg.cpp:173 Src/wptVerifyList.cpp:257
+#: Src/wptVerifyList.cpp:319
 msgid "user ID not found"
 msgstr "ƒ†[ƒU[ID‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:170
-#: Src/wptClipDecryptDlg.cpp:108
+#: Src/wptClipDecryptDlg.cpp:105
 msgid "Signature status: created with a fully trusted key"
 msgstr "–¼‚̏ó‘ԁFŠ®‘S‚ɐM—p‚Å‚«‚éƒL[‚ōì‚ç‚ꂽ‚à‚Ì"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:172
-#: Src/wptClipDecryptDlg.cpp:110
+#: Src/wptClipDecryptDlg.cpp:107
 msgid "Signature status: created with a marginal trusted key"
 msgstr "–¼‚̏ó‘ԁF‚ ‚Ü‚èM—p‚Å‚«‚È‚¢ƒL[‚ōì‚ç‚ꂽ‚à‚Ì"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:177
-#: Src/wptClipDecryptDlg.cpp:113
+#: Src/wptClipDecryptDlg.cpp:111
 msgid "Signature status: created with an UNTRUSTED key"
 msgstr "–¼‚̏ó‘ԁFM—p‚Å‚«‚È‚¢ƒL[‚ōì‚ç‚ꂽ‚à‚Ì"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:170
-#: Src/wptClipDecryptDlg.cpp:116
+#: Src/wptClipDecryptDlg.cpp:114
 msgid "Signature status: created with an undefined trusted key"
 msgstr "–¼‚̏ó‘ԁF’è‹`‚³‚ê‚Ä‚¢‚È‚¢Š®‘S‚ɐM—p‚Å‚«‚éƒL[‚ōì‚ç‚ꂽ‚à‚Ì"
 
-#: Src/wptClipDecryptDlg.cpp:126
+#: Src/wptClipDecryptDlg.cpp:124
 #, c-format
 msgid ""
 "*** PGP SIGNATURE VERIFICATION ***\r\n"
@@ -663,7 +676,7 @@
 "*** –¼ŽÒ: %s (0x%s)\r\n"
 "*** PGP•œ†ƒeƒLƒXƒg‚ðŽn‚ß‚é ***\r\n"
 
-#: Src/wptClipDecryptDlg.cpp:133
+#: Src/wptClipDecryptDlg.cpp:131
 msgid ""
 "\r\n"
 "*** END PGP DECRYPTED TEXT ***"
@@ -672,12 +685,12 @@
 "*** PGP•œ†ƒeƒLƒXƒg‚ðI—¹‚·‚é ***"
 
 # c:\oss\winpt\src\wptMainProc.cpp:405 c:\oss\winpt\src\wptMainProc.cpp:409
-#: Src/wptClipDecryptDlg.cpp:181
+#: Src/wptClipDecryptDlg.cpp:183
 msgid "Decrypt Verify"
 msgstr "•œ†/Šm”F"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:188
-#: Src/wptClipDecryptDlg.cpp:182
+#: Src/wptClipDecryptDlg.cpp:184
 #, c-format
 msgid ""
 "%s\n"
@@ -707,11 +720,11 @@
 # c:\oss\winpt\src\wptMainProc.cpp:191 c:\oss\winpt\src\wptMainProc.cpp:259
 # c:\oss\winpt\src\wptMainProc.cpp:271 c:\oss\winpt\src\wptMainProc.cpp:279
 # c:\oss\winpt\src\wptMainProc.cpp:406
-#: Src/wptClipDecryptDlg.cpp:216 Src/wptClipVerifyDlg.cpp:159
+#: Src/wptClipDecryptDlg.cpp:218 Src/wptClipVerifyDlg.cpp:159
 #: Src/wptClipVerifyDlg.cpp:170 Src/wptClipVerifyDlg.cpp:186
 #: Src/wptClipVerifyDlg.cpp:203 Src/wptClipVerifyDlg.cpp:214
-#: Src/wptFileManager.cpp:1671 Src/wptFileManager.cpp:1736
-#: Src/wptFileManager.cpp:1756 Src/wptFileManagerDlg.cpp:597
+#: Src/wptFileManager.cpp:1670 Src/wptFileManager.cpp:1735
+#: Src/wptFileManager.cpp:1755 Src/wptFileManagerDlg.cpp:597
 #: Src/wptFileVerifyDlg.cpp:127 Src/wptKeyserverDlg.cpp:276
 #: Src/wptKeyserverDlg.cpp:284 Src/wptMainProc.cpp:208 Src/wptMainProc.cpp:224
 #: Src/wptMainProc.cpp:234 Src/wptMainProc.cpp:404
@@ -724,16 +737,16 @@
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:138
 # c:\oss\winpt\src\wptFileManager.cpp:952
 # c:\oss\winpt\src\wptFileManager.cpp:996
-#: Src/wptClipDecryptDlg.cpp:223 Src/wptClipDecryptDlg.cpp:236
-#: Src/wptClipDecryptDlg.cpp:244 Src/wptClipDecryptDlg.cpp:251
-#: Src/wptClipDecryptDlg.cpp:253 Src/wptFileManager.cpp:1378
-#: Src/wptFileManager.cpp:1429
+#: Src/wptClipDecryptDlg.cpp:225 Src/wptClipDecryptDlg.cpp:238
+#: Src/wptClipDecryptDlg.cpp:246 Src/wptClipDecryptDlg.cpp:253
+#: Src/wptClipDecryptDlg.cpp:255 Src/wptFileManager.cpp:1377
+#: Src/wptFileManager.cpp:1428
 msgid "Decryption"
 msgstr "•œ†"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:130
 # c:\oss\winpt\src\wptFileManager.cpp:997
-#: Src/wptClipDecryptDlg.cpp:237 Src/wptFileManager.cpp:1430
+#: Src/wptClipDecryptDlg.cpp:239 Src/wptFileManager.cpp:1429
 #, c-format
 msgid ""
 "Encrypted with %s key, ID 0x%s.%s\n"
@@ -742,17 +755,17 @@
 " %s‚ň͆‰»‚µ‚Ä‚ ‚éAID‚ª %s.%s‚Å‚·\n"
 "•œ†‚ÉŽ¸”s‚µ‚Ü‚µ‚½: ”é–§Œ®‚ª—˜—p‚Å‚«‚Ü‚¹‚ñB"
 
-#: Src/wptClipDecryptDlg.cpp:244
+#: Src/wptClipDecryptDlg.cpp:246
 #, c-format
 msgid "Unsupported algorithm: %s"
 msgstr "‘Ήž‚³‚ê‚Ä‚È‚¢ƒAƒ‹ƒSƒŠƒYƒ€: %s"
 
-#: Src/wptClipDecryptDlg.cpp:250
+#: Src/wptClipDecryptDlg.cpp:252
 msgid "Broken OpenPGP message (maybe: quoted printable character in armor)."
 msgstr "•s–¾‚ÈOpenPGPƒƒbƒZ[ƒW"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:144
-#: Src/wptClipDecryptDlg.cpp:260
+#: Src/wptClipDecryptDlg.cpp:262
 msgid ""
 "WARNING: encrypted message has been manipulated!\n"
 "\n"
@@ -767,7 +780,7 @@
 "‚Ü‚½A‚±‚ê‚̓Aƒ^ƒbƒN‚Ì•”•ª‚Æ‚µ‚Ä‚àl‚¦‚ç‚ê‚Ü‚·B"
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:149
-#: Src/wptClipDecryptDlg.cpp:265
+#: Src/wptClipDecryptDlg.cpp:267
 msgid "*** IMPORTANT ***"
 msgstr "*** d—v ***"
 
@@ -779,7 +792,7 @@
 # c:\oss\winpt\src\wptKeyManager.cpp:274
 # c:\oss\winpt\src\wptKeyManager.cpp:610
 # c:\oss\winpt\src\wptKeyManager.cpp:852 c:\oss\winpt\src\wptSymEnc.cpp:52
-#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
+#: Src/wptClipDecryptDlg.cpp:271 Src/wptClipEncryptDlg.cpp:221
 #: Src/wptClipSignDlg.cpp:118 Src/wptClipSignDlg.cpp:264
 #: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
 #: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:962 Src/wptSymEnc.cpp:94
@@ -876,11 +889,11 @@
 msgstr "ƒNƒŠƒbƒvƒ{[ƒhƒGƒfƒBƒ^["
 
 # c:\oss\winpt\src\wptClipDecryptDlg.cpp:48
-#: Src/wptClipEncryptDlg.cpp:99
+#: Src/wptClipEncryptDlg.cpp:104
 msgid "key not found"
 msgstr "ƒL[‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
-#: Src/wptClipEncryptDlg.cpp:118
+#: Src/wptClipEncryptDlg.cpp:123
 msgid "Recipients unsuable for encryption:\n"
 msgstr "ŽóMŽÒ‚½‚¿‚͈͆‰»Žg—p‚É“K‚³‚È‚¢:\n"
 
@@ -890,20 +903,20 @@
 # c:\oss\winpt\src\wptClipEncryptDlg.cpp:134
 # c:\oss\winpt\src\wptClipEncryptDlg.cpp:168
 # c:\oss\winpt\src\wptMainProc.cpp:153 c:\oss\winpt\src\wptMainProc.cpp:223
-#: Src/wptClipEncryptDlg.cpp:134 Src/wptClipEncryptDlg.cpp:156
-#: Src/wptClipEncryptDlg.cpp:206 Src/wptClipEncryptDlg.cpp:213
-#: Src/wptClipEncryptDlg.cpp:239 Src/wptMainProc.cpp:172
+#: Src/wptClipEncryptDlg.cpp:139 Src/wptClipEncryptDlg.cpp:161
+#: Src/wptClipEncryptDlg.cpp:211 Src/wptClipEncryptDlg.cpp:218
+#: Src/wptClipEncryptDlg.cpp:244 Src/wptMainProc.cpp:172
 msgid "Encryption"
 msgstr "ˆÃ†‰»"
 
 # c:\oss\winpt\src\wptFileSaveDlg.cpp:88
 # c:\oss\winpt\src\wptFileSaveDlg.cpp:103
-#: Src/wptClipEncryptDlg.cpp:157
+#: Src/wptClipEncryptDlg.cpp:162
 msgid "&Find"
 msgstr "ŒŸŽ@(&F)"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:114
-#: Src/wptClipEncryptDlg.cpp:158 Src/wptClipSignEncDlg.cpp:112
+#: Src/wptClipEncryptDlg.cpp:163 Src/wptClipSignEncDlg.cpp:112
 #: Src/wptCommonDlg.cpp:80 Src/wptCommonDlg.cpp:257
 #: Src/wptFileManagerDlg.cpp:97 Src/wptFileManagerDlg.cpp:226
 #: Src/wptFileManagerDlg.cpp:288 Src/wptFileSaveDlg.cpp:59
@@ -915,18 +928,18 @@
 #: Src/wptKeyserverDlg.cpp:549 Src/wptKeyserverSearchDlg.cpp:66
 #: Src/wptKeysignDlg.cpp:362 Src/wptPassphraseCB.cpp:95
 #: Src/wptPassphraseDlg.cpp:104 Src/wptPINDlg.cpp:54
-#: Src/wptPreferencesDlg.cpp:134 Src/wptTextInputDlg.cpp:86
+#: Src/wptPreferencesDlg.cpp:120 Src/wptTextInputDlg.cpp:86
 msgid "&Cancel"
 msgstr "ƒLƒƒƒ“ƒZƒ‹(&C)"
 
 # c:\oss\winpt\src\wptClipEncryptDlg.cpp:109
 # c:\oss\winpt\src\wptClipSignEncDlg.cpp:110
-#: Src/wptClipEncryptDlg.cpp:205 Src/wptClipSignEncDlg.cpp:150
+#: Src/wptClipEncryptDlg.cpp:210 Src/wptClipSignEncDlg.cpp:150
 msgid "You must select at least one key."
 msgstr "­‚È‚­‚Ä‚àˆê‚‚̃L[‚ð‘I‘ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B"
 
 # c:\oss\winpt\src\wptClipEncryptDlg.cpp:168
-#: Src/wptClipEncryptDlg.cpp:240
+#: Src/wptClipEncryptDlg.cpp:245
 #, c-format
 msgid "No recipient found with '%s'"
 msgstr "'%s'‚É‚æ‚éŽóMŽÒ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
@@ -963,8 +976,8 @@
 #: Src/wptClipSignDlg.cpp:156 Src/wptClipSignDlg.cpp:224
 #: Src/wptClipSignDlg.cpp:228 Src/wptClipSignDlg.cpp:248
 #: Src/wptClipSignDlg.cpp:259 Src/wptClipSignEncDlg.cpp:159
-#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1188
-#: Src/wptFileManager.cpp:1204 Src/wptFileManager.cpp:1494
+#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1203 Src/wptFileManager.cpp:1493
 #: Src/wptMainProc.cpp:179
 msgid "Signing"
 msgstr "–¼"
@@ -1007,7 +1020,7 @@
 
 # c:\oss\winpt\src\wptClipSignEncDlg.cpp:119
 # c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1225
 msgid "No key was selected."
 msgstr "ƒL[‚ª‘I‘ð‚³‚ê‚Ä‚Ü‚¹‚ñB"
 
@@ -1018,7 +1031,7 @@
 
 # c:\oss\winpt\src\wptClipEditDlg.cpp:49 c:\oss\winpt\src\wptGPGOptDlg.cpp:48
 #: Src/wptClipVerifyDlg.cpp:160 Src/wptFileVerifyDlg.cpp:52
-#: Src/wptGPGOptDlg.cpp:57
+#: Src/wptGPGOptDlg.cpp:49
 msgid "&Save"
 msgstr "•Û‘¶(&S)"
 
@@ -1104,35 +1117,35 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1561
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1568
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1173
-#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:755
-#: Src/wptKeyEditDlgs.cpp:823 Src/wptKeyEditDlgs.cpp:864
-#: Src/wptKeyEditDlgs.cpp:877 Src/wptKeyEditDlgs.cpp:879
-#: Src/wptKeyEditDlgs.cpp:905 Src/wptKeyEditDlgs.cpp:935
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyEditDlgs.cpp:1012
-#: Src/wptKeyEditDlgs.cpp:1019 Src/wptKeyEditDlgs.cpp:1039
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1292 Src/wptKeyEditDlgs.cpp:1299
-#: Src/wptKeyEditDlgs.cpp:1334 Src/wptKeyEditDlgs.cpp:1339
-#: Src/wptKeyEditDlgs.cpp:1349 Src/wptKeyEditDlgs.cpp:1364
-#: Src/wptKeyEditDlgs.cpp:1368 Src/wptKeyEditDlgs.cpp:1407
-#: Src/wptKeyEditDlgs.cpp:1412 Src/wptKeyEditDlgs.cpp:1419
-#: Src/wptKeyEditDlgs.cpp:1425 Src/wptKeyEditDlgs.cpp:1430
-#: Src/wptKeyEditDlgs.cpp:1473 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1485 Src/wptKeyEditDlgs.cpp:1492
-#: Src/wptKeyEditDlgs.cpp:1495 Src/wptKeyEditDlgs.cpp:1535
-#: Src/wptKeyEditDlgs.cpp:1543 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1599 Src/wptKeyEditDlgs.cpp:1708
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1781
-#: Src/wptKeyEditDlgs.cpp:1786 Src/wptKeyEditDlgs.cpp:1796
-#: Src/wptKeyEditDlgs.cpp:1901 Src/wptKeyEditDlgs.cpp:1903
-#: Src/wptKeyEditDlgs.cpp:1919 Src/wptKeyEditDlgs.cpp:1921
-#: Src/wptKeyEditDlgs.cpp:1956 Src/wptKeyEditDlgs.cpp:1964
-#: Src/wptKeyEditDlgs.cpp:1980 Src/wptKeyEditDlgs.cpp:1994
-#: Src/wptKeyEditDlgs.cpp:1998 Src/wptKeyEditDlgs.cpp:2065
-#: Src/wptKeyEditDlgs.cpp:2128 Src/wptKeyEditDlgs.cpp:2142
-#: Src/wptKeyEditDlgs.cpp:2157 Src/wptKeyEditDlgs.cpp:2197
-#: Src/wptKeyEditDlgs.cpp:2202 Src/wptKeyManagerDlg.cpp:1031
-#: Src/wptKeyManagerDlg.cpp:1919
+#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:758
+#: Src/wptKeyEditDlgs.cpp:826 Src/wptKeyEditDlgs.cpp:867
+#: Src/wptKeyEditDlgs.cpp:881 Src/wptKeyEditDlgs.cpp:883
+#: Src/wptKeyEditDlgs.cpp:909 Src/wptKeyEditDlgs.cpp:939
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1024 Src/wptKeyEditDlgs.cpp:1044
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1310 Src/wptKeyEditDlgs.cpp:1326
+#: Src/wptKeyEditDlgs.cpp:1360 Src/wptKeyEditDlgs.cpp:1365
+#: Src/wptKeyEditDlgs.cpp:1375 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptKeyEditDlgs.cpp:1394 Src/wptKeyEditDlgs.cpp:1433
+#: Src/wptKeyEditDlgs.cpp:1438 Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyEditDlgs.cpp:1451 Src/wptKeyEditDlgs.cpp:1456
+#: Src/wptKeyEditDlgs.cpp:1499 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1518
+#: Src/wptKeyEditDlgs.cpp:1521 Src/wptKeyEditDlgs.cpp:1561
+#: Src/wptKeyEditDlgs.cpp:1569 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1625 Src/wptKeyEditDlgs.cpp:1734
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1807
+#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeyEditDlgs.cpp:1822
+#: Src/wptKeyEditDlgs.cpp:1927 Src/wptKeyEditDlgs.cpp:1929
+#: Src/wptKeyEditDlgs.cpp:1945 Src/wptKeyEditDlgs.cpp:1947
+#: Src/wptKeyEditDlgs.cpp:1982 Src/wptKeyEditDlgs.cpp:1990
+#: Src/wptKeyEditDlgs.cpp:2006 Src/wptKeyEditDlgs.cpp:2020
+#: Src/wptKeyEditDlgs.cpp:2024 Src/wptKeyEditDlgs.cpp:2091
+#: Src/wptKeyEditDlgs.cpp:2154 Src/wptKeyEditDlgs.cpp:2168
+#: Src/wptKeyEditDlgs.cpp:2183 Src/wptKeyEditDlgs.cpp:2223
+#: Src/wptKeyEditDlgs.cpp:2228 Src/wptKeyManagerDlg.cpp:1031
+#: Src/wptKeyManagerDlg.cpp:1972
 msgid "Key Edit"
 msgstr "ƒL[‚̕ҏW"
 
@@ -1371,10 +1384,10 @@
 #: Src/wptFileManager.cpp:131 Src/wptFileManager.cpp:153
 #: Src/wptFileManager.cpp:159 Src/wptFileManager.cpp:199
 #: Src/wptFileManager.cpp:325 Src/wptFileManager.cpp:747
-#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1030
-#: Src/wptFileManager.cpp:1580 Src/wptFileManager.cpp:1607
-#: Src/wptFileManager.cpp:1626 Src/wptFileManager.cpp:1911
-#: Src/wptFileManager.cpp:1973 Src/wptFileManagerDlg.cpp:530
+#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1045
+#: Src/wptFileManager.cpp:1579 Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1625 Src/wptFileManager.cpp:1910
+#: Src/wptFileManager.cpp:1972 Src/wptFileManagerDlg.cpp:530
 #: Src/wptFileManagerDlg.cpp:640 Src/wptFileStatDlg.cpp:152
 #: Src/wptMainProc.cpp:393 Src/wptMDSumDlg.cpp:276 Src/wptMDSumDlg.cpp:281
 msgid "File Manager"
@@ -1422,7 +1435,7 @@
 # c:\oss\winpt\src\wptFileManager.cpp:179
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:810
 # c:\oss\winpt\src\wptVerifyList.cpp:76 c:\oss\winpt\src\wptVerifyList.cpp:84
-#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1075
+#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1080
 #: Src/wptVerifyList.cpp:169
 msgid "Status"
 msgstr "ó‹µ"
@@ -1431,7 +1444,7 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:919
 # c:\oss\winpt\src\wptKeyRevokersDlg.cpp:43
 # c:\oss\winpt\src\wptMDSumDlg.cpp:53 c:\oss\winpt\src\wptVerifyList.cpp:75
-#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1156
+#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1161
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:190
 #: Src/wptVerifyList.cpp:168
 msgid "Name"
@@ -1458,25 +1471,25 @@
 "‚±‚ê‚ð–{“–‚É'clearsign'‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptFileManager.cpp:704
-#: Src/wptFileManager.cpp:1031
+#: Src/wptFileManager.cpp:1046
 #, c-format
 msgid "\"%s\" does not exist"
 msgstr "%s ‚ªŠù‘¶‚µ‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptFileManager.cpp:779
 # c:\oss\winpt\src\wptFileStatDlg.cpp:225
-#: Src/wptFileManager.cpp:1114 Src/wptFileStatDlg.cpp:282
+#: Src/wptFileManager.cpp:1113 Src/wptFileStatDlg.cpp:282
 #: Src/wptFileStatDlg.cpp:286
 msgid "File Status"
 msgstr "ƒtƒ@ƒCƒ‹‚̏ó‘Ô"
 
 # c:\oss\winpt\src\wptFileManager.cpp:825
-#: Src/wptFileManager.cpp:1157
+#: Src/wptFileManager.cpp:1156
 msgid "Enter Filename for Encrypted File"
 msgstr "ˆÃ†‰»‚µ‚½ƒtƒ@ƒCƒ‹‚É–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:837
-#: Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1186
 msgid "Could not get default secret key."
 msgstr "‹K’è”é–§Œ®‚ðŽæ“¾‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
@@ -1485,7 +1498,7 @@
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:296
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:403
 # c:\oss\winpt\src\wptMainProc.cpp:211 c:\oss\winpt\src\wptMainProc.cpp:410
-#: Src/wptFileManager.cpp:1218 Src/wptFileManager.cpp:1530
+#: Src/wptFileManager.cpp:1217 Src/wptFileManager.cpp:1529
 #: Src/wptFileManagerDlg.cpp:595 Src/wptMainProc.cpp:156
 #: Src/wptMainProc.cpp:401 Src/wptMainProc.cpp:408
 msgid "Sign"
@@ -1494,13 +1507,13 @@
 # c:\oss\winpt\src\wptFileManager.cpp:868
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:401
 # c:\oss\winpt\src\wptMainProc.cpp:403 c:\oss\winpt\src\wptMainProc.cpp:407
-#: Src/wptFileManager.cpp:1231 Src/wptFileManagerDlg.cpp:593
+#: Src/wptFileManager.cpp:1230 Src/wptFileManagerDlg.cpp:593
 #: Src/wptMainProc.cpp:400 Src/wptMainProc.cpp:405
 msgid "Encrypt"
 msgstr "ŒöŠJˆÃ†‰»"
 
 # c:\oss\winpt\src\wptSymEnc.cpp:40 c:\oss\winpt\src\wptSymEnc.cpp:50
-#: Src/wptFileManager.cpp:1258 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
+#: Src/wptFileManager.cpp:1257 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
 msgid "Symmetric Encryption"
 msgstr "‹¤’ʈ͆‰»"
 
@@ -1508,36 +1521,36 @@
 # c:\oss\winpt\src\wptFileManager.cpp:914
 # c:\oss\winpt\src\wptFileManager.cpp:919
 # c:\oss\winpt\src\wptMainProc.cpp:401
-#: Src/wptFileManager.cpp:1291 Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1290 Src/wptFileManager.cpp:1295
 #: Src/wptMainProc.cpp:399 Src/wptMainProc.cpp:409
 msgid "Symmetric"
 msgstr "‹¤’ʈ͆‰»"
 
 # c:\oss\winpt\src\wptFileManager.cpp:919
-#: Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1295
 msgid "Encryption failed."
 msgstr "ˆÃ†‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:963
-#: Src/wptFileManager.cpp:1387
+#: Src/wptFileManager.cpp:1386
 msgid "Choose Filename for Output"
 msgstr "o—̓tƒ@ƒCƒ‹–¼‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:980
-#: Src/wptFileManager.cpp:1396
+#: Src/wptFileManager.cpp:1395
 msgid "Enter Filename for Plaintext File"
 msgstr "ƒvƒŒ[ƒ“ƒeƒLƒX—p‚̃gƒtƒ@ƒCƒ‹–¼‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1006
 # c:\oss\winpt\src\wptFileManager.cpp:1011
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:402
-#: Src/wptFileManager.cpp:1438 Src/wptFileManager.cpp:1458
+#: Src/wptFileManager.cpp:1437 Src/wptFileManager.cpp:1457
 #: Src/wptFileManagerDlg.cpp:594
 msgid "Decrypt"
 msgstr "•œ†"
 
 # c:\oss\winpt\src\wptErrors.cpp:71
-#: Src/wptFileManager.cpp:1444
+#: Src/wptFileManager.cpp:1443
 #, c-format
 msgid ""
 "Decryption failed.\n"
@@ -1546,7 +1559,7 @@
 "•œ†‚ªŽ¸”s‚µ‚Ü‚µ‚½B\n"
 "%s: ƒtƒ@ƒCƒ‹‚ªŠù‘¶‚µ‚Ü‚¹‚ñB"
 
-#: Src/wptFileManager.cpp:1459
+#: Src/wptFileManager.cpp:1458
 #, c-format
 msgid ""
 "The original file name is '%s'.\n"
@@ -1558,32 +1571,32 @@
 "‚±‚ê‚ð '%s' ‚Ì‘ã‚í‚è‚É–{“–‚ÉŽg—p‚µ‚Ü‚·‚©?"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1068
-#: Src/wptFileManager.cpp:1507
+#: Src/wptFileManager.cpp:1506
 msgid "Enter Filename for Signed File"
 msgstr "–¼‚µ‚½ƒtƒ@ƒCƒ‹‚É–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1165
-#: Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1605
 msgid "Could not find detached signature in the clipboard."
 msgstr "ƒNƒŠƒbƒvƒ{[ƒh‚ÉŽæ‚èo‚µ‚½–¼‚ðŒ©‚Â‚¯‚邱‚Æ‚ªo—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1184
-#: Src/wptFileManager.cpp:1626
+#: Src/wptFileManager.cpp:1625
 msgid "No files to check."
 msgstr "ƒ`ƒFƒbƒN‚·‚éƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1212
-#: Src/wptFileManager.cpp:1643
+#: Src/wptFileManager.cpp:1642
 msgid "Select Data File"
 msgstr "ƒf[ƒ^ƒtƒ@ƒCƒ‹‚ð‘I‚Ô"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1212
-#: Src/wptFileManager.cpp:1645
+#: Src/wptFileManager.cpp:1644
 msgid "Selected Output File"
 msgstr "‘I‘ð‚µ‚½o—̓tƒ@ƒCƒ‹"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1218
-#: Src/wptFileManager.cpp:1671
+#: Src/wptFileManager.cpp:1670
 msgid "Invalid file name. Exit"
 msgstr "–³Œø‚ȃtƒ@ƒCƒ‹–¼BI—¹"
 
@@ -1598,10 +1611,10 @@
 # c:\oss\winpt\src\wptImportList.cpp:220
 # c:\oss\winpt\src\wptKeyManager.cpp:516
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:150
-#: Src/wptFileManager.cpp:1804 Src/wptFileManager.cpp:1815
-#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:404
-#: Src/wptImportList.cpp:411 Src/wptImportList.cpp:421
-#: Src/wptImportList.cpp:429 Src/wptImportList.cpp:438
+#: Src/wptFileManager.cpp:1803 Src/wptFileManager.cpp:1814
+#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:406
+#: Src/wptImportList.cpp:413 Src/wptImportList.cpp:423
+#: Src/wptImportList.cpp:431 Src/wptImportList.cpp:440
 #: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
 #: Src/wptKeyManager.cpp:567 Src/wptKeyManager.cpp:586
 #: Src/wptKeyserverDlg.cpp:220
@@ -1610,7 +1623,7 @@
 
 # c:\oss\winpt\src\wptFileManager.cpp:1285
 # c:\oss\winpt\src\wptKeyManager.cpp:513
-#: Src/wptFileManager.cpp:1812
+#: Src/wptFileManager.cpp:1811
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -1626,7 +1639,7 @@
 # c:\oss\winpt\src\wptKeyManager.cpp:262
 # c:\oss\winpt\src\wptKeyManager.cpp:294
 # c:\oss\winpt\src\wptKeyManager.cpp:340
-#: Src/wptFileManager.cpp:1838 Src/wptKeyManager.cpp:282
+#: Src/wptFileManager.cpp:1837 Src/wptKeyManager.cpp:282
 #: Src/wptKeyManager.cpp:325 Src/wptKeyManager.cpp:360
 msgid "No key was selected for export."
 msgstr "ƒGƒLƒXƒ|[ƒg‚·‚邽‚߂̃L[‚ª‘I‘ð‚³‚ê‚Ä‚Ü‚¹‚ñB"
@@ -1634,7 +1647,7 @@
 # c:\oss\winpt\src\wptFileManager.cpp:1309
 # c:\oss\winpt\src\wptFileManager.cpp:1335
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:79
-#: Src/wptFileManager.cpp:1839 Src/wptFileManager.cpp:1862
+#: Src/wptFileManager.cpp:1838 Src/wptFileManager.cpp:1861
 #: Src/wptKeyserverDlg.cpp:93
 msgid "Export"
 msgstr "ƒGƒLƒXƒ|[ƒg"
@@ -1642,8 +1655,8 @@
 # c:\oss\winpt\src\wptFileManager.cpp:1327
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1106
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1138
-#: Src/wptFileManager.cpp:1847 Src/wptKeyManagerDlg.cpp:1850
-#: Src/wptKeyManagerDlg.cpp:1882
+#: Src/wptFileManager.cpp:1846 Src/wptKeyManagerDlg.cpp:1903
+#: Src/wptKeyManagerDlg.cpp:1935
 msgid "Choose Name for Key File"
 msgstr "ƒL[ƒtƒ@ƒCƒ‹‚É–¼‘O‚ð‘I‘ð‚·‚éB"
 
@@ -1652,51 +1665,51 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1113
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1177
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:90
-#: Src/wptFileManager.cpp:1866 Src/wptKeyEditDlgs.cpp:1055
-#: Src/wptKeyEditDlgs.cpp:1314 Src/wptKeyEditDlgs.cpp:1386
+#: Src/wptFileManager.cpp:1865 Src/wptKeyEditDlgs.cpp:1060
+#: Src/wptKeyEditDlgs.cpp:1340 Src/wptKeyEditDlgs.cpp:1412
 #: Src/wptKeyserverDlg.cpp:105
 msgid "GnuPG status"
 msgstr "GnuPG‚̏ó‘Ô"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1339
-#: Src/wptFileManager.cpp:1866
+#: Src/wptFileManager.cpp:1865
 #, c-format
 msgid "Finished (Output: %s)"
 msgstr "I—¹‚µ‚Ü‚µ‚½ (o—Í: %s)"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1381
-#: Src/wptFileManager.cpp:1912
+#: Src/wptFileManager.cpp:1911
 #, c-format
 msgid "%s: no valid OpenPGP data found."
 msgstr "%s: —LŒø‚ÈOpenPGPƒf[ƒ^‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
-#: Src/wptFileManager.cpp:1972
+#: Src/wptFileManager.cpp:1971
 msgid "Encrypting into a ZIP archive makes sense with multiple files"
 msgstr "‘½”‚̃tƒ@ƒCƒ‹‚ðZipƒA[ƒJƒCƒu‚Ɉ͆‰»‚·‚邱‚Æ‚ª—Ç‚¢‚±‚Æ‚Å‚·B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:963
-#: Src/wptFileManager.cpp:1977
+#: Src/wptFileManager.cpp:1976
 msgid "Choose File Name for Output"
 msgstr "o—̓tƒ@ƒCƒ‹–¼‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1450
-#: Src/wptFileManager.cpp:2049
+#: Src/wptFileManager.cpp:2048
 msgid "Choose a Name for the Archive"
 msgstr "ƒA[ƒJƒCƒu‚É–¼‘O‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1453
-#: Src/wptFileManager.cpp:2052
+#: Src/wptFileManager.cpp:2051
 msgid "Invalid archive name. Exit."
 msgstr "–³Œø‚ȃA[ƒJƒCƒu–¼BI—¹B"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1453
 # c:\oss\winpt\src\wptFileManager.cpp:1464
-#: Src/wptFileManager.cpp:2053 Src/wptFileManager.cpp:2061
+#: Src/wptFileManager.cpp:2052 Src/wptFileManager.cpp:2060
 msgid "Encrypt Directory"
 msgstr "ˆÃ†‰»ƒfƒBƒŒƒNƒgƒŠ"
 
 # c:\oss\winpt\src\wptFileManager.cpp:1464
-#: Src/wptFileManager.cpp:2060
+#: Src/wptFileManager.cpp:2059
 msgid "Could not create zip archive."
 msgstr "ˆ³kƒA[ƒJƒCƒu‚ðì¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
@@ -1818,14 +1831,14 @@
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1097
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1115
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:115
-#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
+#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1365 Src/wptKeyEditDlgs.cpp:1438
 #: Src/wptKeyManager.cpp:690 Src/wptKeyManager.cpp:791
-#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1657
-#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1701
-#: Src/wptKeyManagerDlg.cpp:1712 Src/wptKeyManagerDlg.cpp:1727
-#: Src/wptKeyManagerDlg.cpp:1840 Src/wptKeyManagerDlg.cpp:1859
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1710
+#: Src/wptKeyManagerDlg.cpp:1726 Src/wptKeyManagerDlg.cpp:1754
+#: Src/wptKeyManagerDlg.cpp:1765 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptKeyManagerDlg.cpp:1893 Src/wptKeyManagerDlg.cpp:1912
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Please select a key."
 msgstr "ƒL[‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
@@ -1976,30 +1989,34 @@
 msgstr "‚±‚̃Rƒ}ƒ“ƒh‚ð—˜—p‚·‚é‚Ì‚ÉŠÇ—ŽÒ“ÁŒ ‚ª•K—v‚Å‚·B\n"
 
 # c:\oss\winpt\src\wptKeysigDlg.cpp:82
-#: Src/wptFileManagerDlg.cpp:789
+#: Src/wptFileManagerDlg.cpp:790
 msgid "Are you sure you want to secure delete these files?"
 msgstr "–{“–‚É‚±‚ê‚ç‚̃tƒ@ƒCƒ‹‚ðˆÀ‘Síœ‚µ‚Ü‚·‚©Hn"
 
-#: Src/wptFileManagerDlg.cpp:790 Src/wptMainProc.cpp:110
+#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:110
 msgid "&Yes"
 msgstr "‚Í‚¢(&Y)"
 
-#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:111
+#: Src/wptFileManagerDlg.cpp:792 Src/wptMainProc.cpp:111
 msgid "&No"
 msgstr "‚¢‚¢‚¦(&N)"
 
+#: Src/wptFileManagerDlg.cpp:793
+msgid "passes"
+msgstr ""
+
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:550
-#: Src/wptFileManagerDlg.cpp:834
+#: Src/wptFileManagerDlg.cpp:858
 msgid "Operation Status: Error"
 msgstr "‘€ìó‹µFƒGƒ‰["
 
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:550
-#: Src/wptFileManagerDlg.cpp:835
+#: Src/wptFileManagerDlg.cpp:859
 msgid "Operation Status: Done."
 msgstr "‘€ìó‹µFŠ®—¹B"
 
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:573
-#: Src/wptFileManagerDlg.cpp:878
+#: Src/wptFileManagerDlg.cpp:902
 #, c-format
 msgid ""
 "Total Capacity: %12sk\n"
@@ -2063,7 +2080,7 @@
 msgstr "WinPTÅ‰‚̃Xƒ^[ƒg"
 
 # c:\oss\winpt\src\wptGPG.cpp:734
-#: Src/wptGPG.cpp:836
+#: Src/wptGPG.cpp:843
 msgid ""
 "The selected keyring has the read-only file\n"
 "attribute. In this state you do not have write\n"
@@ -2074,23 +2091,23 @@
 "‚±‚Ì‘®«‚ðíœ‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptGPG.cpp:737
-#: Src/wptGPG.cpp:839
+#: Src/wptGPG.cpp:846
 msgid "GPG Information"
 msgstr "GPGƒCƒ“ƒtƒH"
 
 # c:\oss\winpt\src\wptGPG.cpp:741
-#: Src/wptGPG.cpp:843
+#: Src/wptGPG.cpp:850
 msgid "Could not reset read-only state."
 msgstr "ƒŠ[ƒhƒIƒ“ƒŠ[ó‘Ô‚ð‰Šú‰»‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptGPG.cpp:178 c:\oss\winpt\src\wptGPG.cpp:742
 # c:\oss\winpt\src\wptGPG.cpp:1029 c:\oss\winpt\src\wptGPG.cpp:1038
-#: Src/wptGPG.cpp:844
+#: Src/wptGPG.cpp:851
 msgid "GPG Error"
 msgstr "GPGƒGƒ‰["
 
 # c:\oss\winpt\src\wptGPG.cpp:757
-#: Src/wptGPG.cpp:856
+#: Src/wptGPG.cpp:863
 msgid ""
 "You do not have file access to modify the contents of\n"
 "one or both of the selected keyrings.\n"
@@ -2105,7 +2122,7 @@
 "ƒvƒƒOƒ‰ƒ€‚ª‚»‚ê‚ðŠJ‚¢‚½‚½‚߂ƍl‚¦‚ç‚ê‚Ü‚·B\n"
 
 # c:\oss\winpt\src\wptGPG.cpp:762
-#: Src/wptGPG.cpp:861
+#: Src/wptGPG.cpp:868
 msgid "GPG Warning"
 msgstr "GPGŒx"
 
@@ -2129,19 +2146,19 @@
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:270
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:317
 # c:\oss\winpt\src\wptRegistry.cpp:492
-#: Src/wptGPG.cpp:889 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
+#: Src/wptGPG.cpp:896 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
 #: Src/wptGPGPrefsDlg.cpp:234 Src/wptGPGPrefsDlg.cpp:240
 #: Src/wptGPGPrefsDlg.cpp:245 Src/wptGPGPrefsDlg.cpp:250
 #: Src/wptGPGPrefsDlg.cpp:256 Src/wptGPGPrefsDlg.cpp:270
-#: Src/wptKeyEditDlgs.cpp:1713 Src/wptMainProc.cpp:419
-#: Src/wptPreferencesDlg.cpp:225 Src/wptPreferencesDlg.cpp:270
-#: Src/wptPreferencesDlg.cpp:282 Src/wptPreferencesDlg.cpp:295
-#: Src/wptPreferencesDlg.cpp:326 Src/wptRegistry.cpp:599
+#: Src/wptKeyEditDlgs.cpp:1739 Src/wptMainProc.cpp:419
+#: Src/wptPreferencesDlg.cpp:209 Src/wptPreferencesDlg.cpp:254
+#: Src/wptPreferencesDlg.cpp:266 Src/wptPreferencesDlg.cpp:287
+#: Src/wptPreferencesDlg.cpp:315 Src/wptRegistry.cpp:596
 msgid "Preferences"
 msgstr "ƒJƒXƒ^ƒ€Ý’è"
 
 # c:\oss\winpt\src\wptGPG.cpp:783
-#: Src/wptGPG.cpp:890
+#: Src/wptGPG.cpp:897
 #, c-format
 msgid ""
 "%s does not exit.\n"
@@ -2151,47 +2168,47 @@
 "‚±‚̃fƒBƒŒƒNƒgƒŠ[‚ðì¬‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptGPG.cpp:863
-#: Src/wptGPG.cpp:918
+#: Src/wptGPG.cpp:925
 msgid "Please choose your Public Keyring"
 msgstr "ŒöŠJƒL[ƒŠƒ“ƒO‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptGPG.cpp:866 c:\oss\winpt\src\wptGPG.cpp:886
-#: Src/wptGPG.cpp:921 Src/wptGPG.cpp:943
+#: Src/wptGPG.cpp:928 Src/wptGPG.cpp:950
 msgid "No keyring was chosen. Exit."
 msgstr "ƒL[ƒŠƒ“ƒO‚ª‘I‘ð‚³‚ê‚Ä‚Ü‚¹‚ñBI—¹B"
 
 # c:\oss\winpt\src\wptGPG.cpp:872
-#: Src/wptGPG.cpp:928
+#: Src/wptGPG.cpp:935
 msgid "Overwrite old public keyring?"
 msgstr "ŒÃ‚¢ŒöŠJŒ®‚ðã‘‚«‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptGPG.cpp:877 c:\oss\winpt\src\wptGPG.cpp:896
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:955
+#: Src/wptGPG.cpp:941 Src/wptGPG.cpp:962
 msgid "Could not copy file."
 msgstr "ƒtƒ@ƒCƒ‹‚ðƒRƒs[‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptGPG.cpp:883
-#: Src/wptGPG.cpp:940
+#: Src/wptGPG.cpp:947
 msgid "Please choose your Secret Keyring"
 msgstr "”é–§ƒL[ƒŠƒ“ƒO‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptGPG.cpp:891
-#: Src/wptGPG.cpp:949
+#: Src/wptGPG.cpp:956
 msgid "Overwrite old secret keyring?"
 msgstr "ŒÃ‚¢”é–§ƒL[ƒŠƒ“ƒO‚ðã‘‚«‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptGPG.cpp:942 c:\oss\winpt\src\wptGPG.cpp:1004
-#: Src/wptGPG.cpp:995 Src/wptGPG.cpp:1088 Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1002 Src/wptGPG.cpp:1095 Src/wptGPG.cpp:1111
 msgid "Backup"
 msgstr "ƒoƒbƒNƒAƒbƒv"
 
 # c:\oss\winpt\src\wptGPG.cpp:942
-#: Src/wptGPG.cpp:995
+#: Src/wptGPG.cpp:1002
 #, c-format
 msgid "Backup keyring \"%s\" failed"
 msgstr "ˆÈ‰º‚̃oƒbƒNƒAƒbƒvƒL[ƒŠƒ“ƒO‚ª \"%s\" Ž¸”s‚µ‚Ü‚µ‚½B"
 
-#: Src/wptGPG.cpp:1089
+#: Src/wptGPG.cpp:1096
 #, c-format
 msgid ""
 "The backup drive '%s' does not seems to be accessable.\n"
@@ -2201,7 +2218,7 @@
 "‘±‚¯‚é‚̂Ƀhƒ‰ƒCƒu‚ð‘}“ü‚Ü‚½‚̓`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptGPG.cpp:1004
-#: Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1111
 #, c-format
 msgid "Invalid backup mode %d"
 msgstr "–³Œø‚ȃoƒbƒNƒAƒbƒvƒ‚[ƒh %d"
@@ -2254,50 +2271,55 @@
 msgstr "—LŒø‚ȏ–¼iŠúŒÀØ‚êƒL[j"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:44
-#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:42
 msgid "Could not load GnuPG config file!"
 msgstr "GnuPG‚±‚¤‚¹‚¢ƒtƒ@ƒCƒ‹‚ðŽæ“¾‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptGPG.cpp:762
-#: Src/wptGPGOptDlg.cpp:51 Src/wptGPGOptDlg.cpp:72 Src/wptGPGOptDlg.cpp:78
-#: Src/wptGPGOptDlg.cpp:83 Src/wptGPGOptDlg.cpp:87 Src/wptGPGOptDlg.cpp:94
-#: Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:43 Src/wptGPGOptDlg.cpp:62 Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:78 Src/wptGPGOptDlg.cpp:85 Src/wptGPGOptDlg.cpp:88
+#: Src/wptGPGOptDlg.cpp:95 Src/wptGPGOptDlg.cpp:102
 msgid "GPG Config"
 msgstr "GPG‚±‚¤‚¹‚¢"
 
 # c:\oss\winpt\src\wptGPG.cpp:737
-#: Src/wptGPGOptDlg.cpp:56
+#: Src/wptGPGOptDlg.cpp:48
 msgid "GnuPG Configuration File"
 msgstr "GnuPG‚±‚¤‚¹‚¢ƒtƒ@ƒCƒ‹"
 
 # c:\oss\winpt\src\wptClipEditDlg.cpp:48 c:\oss\winpt\src\wptGPGOptDlg.cpp:49
 # c:\oss\winpt\src\wptTextInputDlg.cpp:83
-#: Src/wptGPGOptDlg.cpp:58 Src/wptTextInputDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:50 Src/wptTextInputDlg.cpp:87
 msgid "&Load"
 msgstr "ƒ[ƒh(&L)"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:68
-#: Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:61
 msgid "The 'gpg.conf' file is not loaded."
 msgstr "'gpg.conf' ƒtƒ@ƒCƒ‹‚ªƒ[ƒh‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:74
-#: Src/wptGPGOptDlg.cpp:78
-msgid "File contains invalid GnuPG keywords!"
+#: Src/wptGPGOptDlg.cpp:71
+#, fuzzy
+msgid "Config contains invalid GnuPG keywords."
 msgstr "ƒtƒ@ƒCƒ‹‚É–³Œø‚ÈGnuPGƒL[ƒ[ƒh‚ª“ü‚Á‚Ä‚¢‚Ü‚·I"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:44
-#: Src/wptGPGOptDlg.cpp:83
+#: Src/wptGPGOptDlg.cpp:77
 msgid "Could not save GnuPG config file."
 msgstr "GnuPG‚±‚¤‚¹‚¢ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:83
-#: Src/wptGPGOptDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:85
 msgid "Successfully saved."
 msgstr "³‚µ‚­•Û‘¶‚³‚ê‚Ü‚µ‚½B"
 
+#: Src/wptGPGOptDlg.cpp:87
+msgid "GnuPG returned an error while parsing the config file."
+msgstr ""
+
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:89
-#: Src/wptGPGOptDlg.cpp:93
+#: Src/wptGPGOptDlg.cpp:94
 msgid ""
 "Current data will be lost!\n"
 "Are you sure?"
@@ -2305,10 +2327,16 @@
 "Œ»Ý‚̃f[ƒ^‚ÍŽ¸‚í‚ê‚Ü‚·I\n"
 "‚æ‚낵‚¢‚Å‚µ‚傤‚©H"
 
+# c:\oss\winpt\src\wptGPGOptDlg.cpp:44
+#: Src/wptGPGOptDlg.cpp:101
+#, fuzzy
+msgid "Could not load GnuPG config file."
+msgstr "GnuPG‚±‚¤‚¹‚¢ƒtƒ@ƒCƒ‹‚ðŽæ“¾‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+
 # c:\oss\winpt\src\wptGPGPrefsDlg.cpp:61
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1071
 # c:\oss\winpt\src\wptMainProc.cpp:572
-#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1812
+#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1865
 #: Src/wptMainProc.cpp:580
 msgid "GnuPG Preferences"
 msgstr "GnuPGƒJƒXƒ^ƒ€Ý’è"
@@ -2354,8 +2382,8 @@
 msgstr "GPGˆê”ʃIƒvƒVƒ‡ƒ“"
 
 #: Src/wptGPGPrefsDlg.cpp:164 Src/wptGPGPrefsDlg.cpp:165
-#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:130
-#: Src/wptPreferencesDlg.cpp:131
+#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:117
 msgid "Browse..."
 msgstr "ŠJ‚­..."
 
@@ -2489,16 +2517,16 @@
 #: Src/wptKeyManager.cpp:838 Src/wptKeyManager.cpp:898
 #: Src/wptKeyManager.cpp:903 Src/wptKeyManager.cpp:960
 #: Src/wptKeyManager.cpp:993 Src/wptKeyManager.cpp:1077
-#: Src/wptKeyManagerDlg.cpp:1308 Src/wptKeyManagerDlg.cpp:1319
-#: Src/wptKeyManagerDlg.cpp:1329 Src/wptKeyManagerDlg.cpp:1635
-#: Src/wptKeyManagerDlg.cpp:1658 Src/wptKeyManagerDlg.cpp:1673
-#: Src/wptKeyManagerDlg.cpp:1683 Src/wptKeyManagerDlg.cpp:1691
-#: Src/wptKeyManagerDlg.cpp:1701 Src/wptKeyManagerDlg.cpp:1712
-#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1744
-#: Src/wptKeyManagerDlg.cpp:1776 Src/wptKeyManagerDlg.cpp:1841
-#: Src/wptKeyManagerDlg.cpp:1859 Src/wptKeyManagerDlg.cpp:1864
-#: Src/wptKeyManagerDlg.cpp:1869 Src/wptKeyManagerDlg.cpp:1945
-#: Src/wptKeyManagerDlg.cpp:1950 Src/wptKeyManagerDlg.cpp:2064
+#: Src/wptKeyManagerDlg.cpp:1357 Src/wptKeyManagerDlg.cpp:1368
+#: Src/wptKeyManagerDlg.cpp:1378 Src/wptKeyManagerDlg.cpp:1688
+#: Src/wptKeyManagerDlg.cpp:1711 Src/wptKeyManagerDlg.cpp:1726
+#: Src/wptKeyManagerDlg.cpp:1736 Src/wptKeyManagerDlg.cpp:1744
+#: Src/wptKeyManagerDlg.cpp:1754 Src/wptKeyManagerDlg.cpp:1765
+#: Src/wptKeyManagerDlg.cpp:1780 Src/wptKeyManagerDlg.cpp:1797
+#: Src/wptKeyManagerDlg.cpp:1829 Src/wptKeyManagerDlg.cpp:1894
+#: Src/wptKeyManagerDlg.cpp:1912 Src/wptKeyManagerDlg.cpp:1917
+#: Src/wptKeyManagerDlg.cpp:1922 Src/wptKeyManagerDlg.cpp:1998
+#: Src/wptKeyManagerDlg.cpp:2003 Src/wptKeyManagerDlg.cpp:2117
 #: Src/wptKeysigDlg.cpp:94 Src/wptKeysigDlg.cpp:106 Src/wptKeysigDlg.cpp:317
 #: Src/wptKeysigDlg.cpp:389 Src/wptKeysigDlg.cpp:399 Src/wptKeysigDlg.cpp:442
 #: Src/wptMainProc.cpp:394 Src/wptMainProc.cpp:543 Src/wptMainProc.cpp:551
@@ -2599,12 +2627,12 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1273
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1303
 # c:\oss\winpt\src\wptKeysigDlg.cpp:191
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:257
-#: Src/wptKeyEditDlgs.cpp:1129 Src/wptKeyEditDlgs.cpp:1179
-#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1444
-#: Src/wptKeyEditDlgs.cpp:1483 Src/wptKeyEditDlgs.cpp:1514
-#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1758
-#: Src/wptKeyEditDlgs.cpp:1960 Src/wptKeylist.cpp:424 Src/wptKeylist.cpp:458
+#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:257
+#: Src/wptKeyEditDlgs.cpp:1134 Src/wptKeyEditDlgs.cpp:1184
+#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1470
+#: Src/wptKeyEditDlgs.cpp:1509 Src/wptKeyEditDlgs.cpp:1540
+#: Src/wptKeyEditDlgs.cpp:1618 Src/wptKeyEditDlgs.cpp:1784
+#: Src/wptKeyEditDlgs.cpp:1986 Src/wptKeylist.cpp:425 Src/wptKeylist.cpp:459
 #: Src/wptKeyPropsDlg.cpp:152 Src/wptKeysigDlg.cpp:158
 #: Src/wptKeysigDlg.cpp:215
 msgid "Revoked"
@@ -2615,26 +2643,26 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:886
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1141
 # c:\oss\winpt\src\wptKeysigDlg.cpp:192
-#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:1127 Src/wptKeyEditDlgs.cpp:1346
-#: Src/wptKeylist.cpp:426 Src/wptKeylist.cpp:456 Src/wptKeyPropsDlg.cpp:150
+#: Src/wptImportList.cpp:270 Src/wptKeyEditDlgs.cpp:259
+#: Src/wptKeyEditDlgs.cpp:1132 Src/wptKeyEditDlgs.cpp:1372
+#: Src/wptKeylist.cpp:427 Src/wptKeylist.cpp:457 Src/wptKeyPropsDlg.cpp:150
 #: Src/wptKeysigDlg.cpp:157 Src/wptKeysigDlg.cpp:216
 msgid "Expired"
 msgstr "ŠúŒÀØ‚ê"
 
 # c:\oss\winpt\src\wptImportList.cpp:55
-#: Src/wptImportList.cpp:272
+#: Src/wptImportList.cpp:274
 msgid "secret key"
 msgstr "ӎФΨ"
 
 # c:\oss\winpt\src\wptImportList.cpp:57
-#: Src/wptImportList.cpp:274 Src/wptKeylist.cpp:462
+#: Src/wptImportList.cpp:276 Src/wptKeylist.cpp:463
 msgid "public key"
 msgstr "ŒöŠJŒ®"
 
 # c:\oss\winpt\src\wptImportList.cpp:84
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:967
-#: Src/wptImportList.cpp:304 Src/wptKeyEditDlgs.cpp:1187
+#: Src/wptImportList.cpp:306 Src/wptKeyEditDlgs.cpp:1192
 msgid "Invalid user ID"
 msgstr "–³Œø‚ȃ†[ƒU[ID"
 
@@ -2644,7 +2672,7 @@
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:45
 # c:\oss\winpt\src\wptSigList.cpp:41 c:\oss\winpt\src\wptVerifyList.cpp:79
 # c:\oss\winpt\src\wptVerifyList.cpp:88
-#: Src/wptImportList.cpp:345 Src/wptKeylist.cpp:579 Src/wptKeylist.cpp:587
+#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588
 #: Src/wptKeyManagerDlg.cpp:910 Src/wptKeyManagerDlg.cpp:980
 #: Src/wptKeyserverSearchDlg.cpp:58 Src/wptSigList.cpp:53
 #: Src/wptVerifyList.cpp:173
@@ -2655,7 +2683,7 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:474 c:\oss\winpt\src\wptKeylist.cpp:40
 # c:\oss\winpt\src\wptKeylist.cpp:51
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:42
-#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:590
+#: Src/wptImportList.cpp:347 Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591
 #: Src/wptKeyManagerDlg.cpp:913 Src/wptKeyserverSearchDlg.cpp:54
 msgid "Size"
 msgstr "ƒTƒCƒY"
@@ -2666,8 +2694,8 @@
 # c:\oss\winpt\src\wptKeylist.cpp:39 c:\oss\winpt\src\wptKeylist.cpp:49
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:43
 # c:\oss\winpt\src\wptSigList.cpp:45 c:\oss\winpt\src\wptVerifyList.cpp:87
-#: Src/wptImportList.cpp:347 Src/wptKeyEditDlgs.cpp:1072
-#: Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588 Src/wptKeyManagerDlg.cpp:911
+#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1077
+#: Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:589 Src/wptKeyManagerDlg.cpp:911
 #: Src/wptKeyManagerDlg.cpp:1004 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:56 Src/wptSigList.cpp:57
 #: Src/wptVerifyList.cpp:172
@@ -2679,21 +2707,21 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:920 c:\oss\winpt\src\wptKeylist.cpp:55
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:44
 # c:\oss\winpt\src\wptSigList.cpp:44
-#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1073
-#: Src/wptKeyEditDlgs.cpp:1158 Src/wptKeylist.cpp:594
+#: Src/wptImportList.cpp:349 Src/wptKeyEditDlgs.cpp:1078
+#: Src/wptKeyEditDlgs.cpp:1163 Src/wptKeylist.cpp:595
 #: Src/wptKeyManagerDlg.cpp:917 Src/wptKeyManagerDlg.cpp:1007
 #: Src/wptKeyserverSearchDlg.cpp:57 Src/wptSigList.cpp:56
 msgid "Creation"
 msgstr "ì¬"
 
 # c:\oss\winpt\src\wptImportList.cpp:135 c:\oss\winpt\src\wptKeylist.cpp:50
-#: Src/wptImportList.cpp:349 Src/wptKeylist.cpp:589
+#: Src/wptImportList.cpp:350 Src/wptKeylist.cpp:590
 #: Src/wptKeyManagerDlg.cpp:912 Src/wptKeyManagerDlg.cpp:1006
 msgid "Type"
 msgstr "Ží—Þ"
 
 # c:\oss\winpt\src\wptImportList.cpp:216
-#: Src/wptImportList.cpp:419
+#: Src/wptImportList.cpp:421
 msgid ""
 "It is possible that the ASCII-Armor is damaged\n"
 "and thus causing a CRC error."
@@ -2708,37 +2736,37 @@
 msgstr "GPGƒL[ƒŠƒ“ƒO‚ðƒ[ƒh‚·‚é..."
 
 # c:\oss\winpt\src\wptKeyCacheDlg.cpp:48
-#: Src/wptKeyCacheDlg.cpp:54
+#: Src/wptKeyCacheDlg.cpp:50
 msgid "WinPT Key Caching"
 msgstr "WinPT ƒL[ƒLƒƒƒbƒVƒ“ƒO"
 
 # c:\oss\winpt\src\wptKeyCacheDlg.cpp:51
-#: Src/wptKeyCacheDlg.cpp:57
+#: Src/wptKeyCacheDlg.cpp:53
 msgid "Caching keyrings, please wait..."
 msgstr "ƒL[ƒŠƒ“ƒO‚ªƒLƒƒƒbƒVƒ“ƒO’†‚Å‚·B‚µ‚΂炭‚¨‘Ò‚¿‚­‚¾‚³‚¢..."
 
 # c:\oss\winpt\src\wptKeyCacheDlg.cpp:65
-#: Src/wptKeyCacheDlg.cpp:72
+#: Src/wptKeyCacheDlg.cpp:70
 msgid "Key Cache"
 msgstr "ƒL[ƒLƒƒƒbƒVƒ…"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:142
-#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:391
+#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:392
 msgid "Ultimate"
 msgstr "ÅI“I"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:155
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:883 c:\oss\winpt\src\wptKeylist.cpp:154
 # c:\oss\winpt\src\wptKeylist.cpp:703
-#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1125
-#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:385
+#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1130
+#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:386
 msgid "Never"
 msgstr "‚Í‚¸‚Í‚È‚¢"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:144
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:166
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:890
-#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1131
+#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1136
 msgid "OK"
 msgstr "OK"
 
@@ -2803,7 +2831,7 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:695
 #: Src/wptKeyEditDlgs.cpp:371 Src/wptKeyEditDlgs.cpp:382
 #: Src/wptKeyEditDlgs.cpp:388 Src/wptKeyEditDlgs.cpp:400
-#: Src/wptKeyEditDlgs.cpp:899
+#: Src/wptKeyEditDlgs.cpp:903
 msgid "Add Photo"
 msgstr "ƒtƒHƒg‚ð’ljÁ‚·‚é"
 
@@ -2848,11 +2876,11 @@
 # c:\oss\winpt\src\wptOwnertrustDlg.cpp:75
 # c:\oss\winpt\src\wptOwnertrustDlg.cpp:89
 #: Src/wptKeyEditDlgs.cpp:406 Src/wptKeyEditDlgs.cpp:469
-#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:722
-#: Src/wptKeyEditDlgs.cpp:1446 Src/wptKeyEditDlgs.cpp:1516
-#: Src/wptKeyEditDlgs.cpp:1566 Src/wptKeyEditDlgs.cpp:1614
-#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeygenDlg.cpp:499
-#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:380
+#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:725
+#: Src/wptKeyEditDlgs.cpp:1472 Src/wptKeyEditDlgs.cpp:1542
+#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1640
+#: Src/wptKeyEditDlgs.cpp:1838 Src/wptKeygenDlg.cpp:499
+#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:386
 #: Src/wptOwnertrustDlg.cpp:119 Src/wptOwnertrustDlg.cpp:131
 msgid "GnuPG Status"
 msgstr "GnuPG‚̏ó‘Ô"
@@ -2872,7 +2900,7 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:358
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:708
 #: Src/wptKeyEditDlgs.cpp:441 Src/wptKeyEditDlgs.cpp:450
-#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:934
 msgid "Add Revoker"
 msgstr "–³Œø‰»‚«‚Ì‚¤‚ð’ljÁ‚·‚é"
 
@@ -2881,10 +2909,10 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1324
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1365
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1415
-#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1535 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1786
-#: Src/wptKeyEditDlgs.cpp:1956
+#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1561 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1982
 msgid "Please select a user ID."
 msgstr "ƒ†[ƒU[ID‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
@@ -2948,7 +2976,7 @@
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:472
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:656
-#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:836
+#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:839
 msgid "Add new Subkey"
 msgstr "V‚µ‚¢ƒTƒuƒL[‚ð’ljÁ‚·‚é"
 
@@ -2968,7 +2996,7 @@
 msgstr "ƒL[‚Ì—LŒøŠúŒÀ"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:508
-#: Src/wptKeyEditDlgs.cpp:681
+#: Src/wptKeyEditDlgs.cpp:684
 msgid "Please select one entry."
 msgstr "‘I‘ð€–Ú‚©‚çˆê‚‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
@@ -2981,18 +3009,18 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:540
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:637
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:676
-#: Src/wptKeyEditDlgs.cpp:682 Src/wptKeyEditDlgs.cpp:688
-#: Src/wptKeyEditDlgs.cpp:719 Src/wptKeyEditDlgs.cpp:819
+#: Src/wptKeyEditDlgs.cpp:685 Src/wptKeyEditDlgs.cpp:691
+#: Src/wptKeyEditDlgs.cpp:722 Src/wptKeyEditDlgs.cpp:822
 msgid "Add Subkey"
 msgstr "ƒTƒuƒL[‚ð’ljÁ‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:521
-#: Src/wptKeyEditDlgs.cpp:687
+#: Src/wptKeyEditDlgs.cpp:690
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr "DSS‚͌ŒèƒL[ƒTƒCƒY1024‚ªŽg—p‚µ‚Ü‚·BƒTƒCƒY‚ª•ÏX‚³‚ê‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:678
-#: Src/wptKeyEditDlgs.cpp:721
+#: Src/wptKeyEditDlgs.cpp:724
 msgid "Subkey successfully added."
 msgstr "ƒTƒuƒL[‚ª³‚µ‚­’ljÁ‚³‚ê‚Ü‚µ‚½B"
 
@@ -3005,40 +3033,40 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1196
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1258
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:918
-#: Src/wptKeyEditDlgs.cpp:749 Src/wptKeyEditDlgs.cpp:818
-#: Src/wptKeyEditDlgs.cpp:898 Src/wptKeyEditDlgs.cpp:930
-#: Src/wptKeyEditDlgs.cpp:1011 Src/wptKeyEditDlgs.cpp:1334
-#: Src/wptKeyEditDlgs.cpp:1407 Src/wptKeyEditDlgs.cpp:1467
-#: Src/wptKeyManagerDlg.cpp:1690
+#: Src/wptKeyEditDlgs.cpp:752 Src/wptKeyEditDlgs.cpp:821
+#: Src/wptKeyEditDlgs.cpp:902 Src/wptKeyEditDlgs.cpp:934
+#: Src/wptKeyEditDlgs.cpp:1016 Src/wptKeyEditDlgs.cpp:1360
+#: Src/wptKeyEditDlgs.cpp:1433 Src/wptKeyEditDlgs.cpp:1493
+#: Src/wptKeyManagerDlg.cpp:1743
 msgid "There is no secret key available!"
 msgstr "”é–§Œ®‚ª‚ ‚è‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:579
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:599
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:613
-#: Src/wptKeyEditDlgs.cpp:750 Src/wptKeyEditDlgs.cpp:769
+#: Src/wptKeyEditDlgs.cpp:753 Src/wptKeyEditDlgs.cpp:772
 msgid "Add user ID"
 msgstr "ƒ†[ƒU[ID‚ð’ljÁ‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1177
-#: Src/wptKeyEditDlgs.cpp:877
+#: Src/wptKeyEditDlgs.cpp:880
 msgid "Preferred keyserver successfully set."
 msgstr "Šó–]‚̃L[ƒT[ƒo[‚ª³‚µ‚­Ý’è‚Å‚«‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditOwnertrustDlg.cpp:58
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:189
-#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditOwnertrustDlg.cpp:55
-#: Src/wptKeyPropsDlg.cpp:371
+#: Src/wptKeyEditDlgs.cpp:969 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyPropsDlg.cpp:377
 msgid "Change Ownertrust"
 msgstr "Š—LŽÒ‚̐M—Š(ownertrust)‚̕ύX"
 
 # c:\oss\winpt\src\wptKeyManager.cpp:156
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyManager.cpp:238
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyManager.cpp:238
 msgid "Key status changed."
 msgstr "ƒL[‚̏ó‘Ô‚ª•ÏX‚³‚ê‚Ä‚¢‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:753
-#: Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1022
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -3047,16 +3075,16 @@
 "IDEAˆÃ†‰»ƒAƒ‹ƒSƒŠƒYƒ€‚ŕی삳‚ê‚Ä‚¢‚é‚©‚ç‚Å‚·B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:760
-#: Src/wptKeyEditDlgs.cpp:1024
+#: Src/wptKeyEditDlgs.cpp:1029
 msgid "Current (old) Passphrase"
 msgstr "ƒJƒŒƒ“ƒg(ŒÃ‚¢)ƒpƒXƒtƒŒ[ƒY"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:764
-#: Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1034
 msgid "New Passphrase"
 msgstr "V‚µ‚¢ƒpƒXƒtƒŒ[ƒY"
 
-#: Src/wptKeyEditDlgs.cpp:1037
+#: Src/wptKeyEditDlgs.cpp:1042
 msgid ""
 "Are you sure that you really don't want a passphrase?\n"
 "This is propably a bad idea, continue?"
@@ -3065,39 +3093,40 @@
 "‚±‚ê‚Í‚ ‚Ü‚è—Ç‚¢‘I‘ð‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‘±‚¯‚Ü‚·‚©?"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:116
-#: Src/wptKeyEditDlgs.cpp:1053
+#: Src/wptKeyEditDlgs.cpp:1058
 msgid "Change Password"
 msgstr "ƒpƒXƒ[ƒh‚̕ύX"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:791
-#: Src/wptKeyEditDlgs.cpp:1055
+#: Src/wptKeyEditDlgs.cpp:1060
 msgid "Passphrase successfully changed."
 msgstr "ƒpƒXƒtƒŒ[ƒY‚̕ύX‚͐³‚µ‚­‚Å‚«‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:806
-#: Src/wptKeyEditDlgs.cpp:1071 Src/wptKeyManagerDlg.cpp:918
+#: Src/wptKeyEditDlgs.cpp:1076 Src/wptKeyManagerDlg.cpp:918
 msgid "Description"
 msgstr "Ú×"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:809
-#: Src/wptKeyEditDlgs.cpp:1074
+#: Src/wptKeyEditDlgs.cpp:1079
 msgid "Expires"
 msgstr "ŠúŒÀØ‚ê‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:918 c:\oss\winpt\src\wptKeylist.cpp:42
 # c:\oss\winpt\src\wptKeylist.cpp:53
-#: Src/wptKeyEditDlgs.cpp:1155 Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592
+#: Src/wptKeyEditDlgs.cpp:1160 Src/wptKeylist.cpp:584 Src/wptKeylist.cpp:593
 #: Src/wptKeyManagerDlg.cpp:915
 msgid "Validity"
 msgstr "—LŒø«"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:396
-#: Src/wptKeyEditDlgs.cpp:1157
+#: Src/wptKeyEditDlgs.cpp:1162
 msgid "Email"
 msgstr "“dŽqƒ[ƒ‹"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1043
-#: Src/wptKeyEditDlgs.cpp:1245
+#: Src/wptKeyEditDlgs.cpp:1250
+#, fuzzy
 msgid ""
 "ADDUID      add a user ID\r\n"
 "ADDPHOTO    add a photo ID\r\n"
@@ -3107,8 +3136,7 @@
 "ADDREVOKER  add a revocation key\r\n"
 "EXPIRE      change the expire date\r\n"
 "SHOWPREF    list preferences (verbose)\r\n"
-"SETPREF     set preference list\r\n"
-"UPDPREF     updated preferences\r\n"
+"SETPREF     update specific algorithm preferences\r\n"
 "PASSWD      change the passphrase\r\n"
 "PRIMARY     flag user ID as primary\r\n"
 "TRUST       change the ownertrust\r\n"
@@ -3144,44 +3172,52 @@
 "MINIMIZE  ‘S‚Ă̏–¼‚ðƒL[‚©‚çŠO‚·\r\n"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1064
-#: Src/wptKeyEditDlgs.cpp:1267
+#: Src/wptKeyEditDlgs.cpp:1271
 msgid "Key Edit Help"
 msgstr "ƒL[•ÒW‚̃wƒ‹ƒv"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1078
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1310
 msgid "Primary key can not be deleted!"
 msgstr "ƒvƒ‰ƒCƒ}ƒŠ[ƒL[‚ªíœ‚Å‚«‚Ü‚¹‚ñI"
 
-# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1092
-#: Src/wptKeyEditDlgs.cpp:1300
-#, c-format
+#: Src/wptKeyEditDlgs.cpp:1318
 msgid ""
+"Anything encrypted to the selected subkey cannot be\n"
+"decrypted any longer."
+msgstr ""
+
+#: Src/wptKeyEditDlgs.cpp:1321
+msgid ""
+"Anything signed by the selected subkey cannot be\n"
+"verified any longer."
+msgstr ""
+
+# c:\oss\winpt\src\wptKeyManager.cpp:1092
+#: Src/wptKeyEditDlgs.cpp:1327
+#, fuzzy, c-format
+msgid ""
 "\"Subkey %s.\"\n"
 "\n"
-"Anything encrypted to the selected subkey will no longer\n"
-"be able to be decrypted.\n"
+"%s\n"
 "\n"
 "Do you really want to delete this subkey?"
 msgstr ""
-"\"ƒTƒuƒL[ %sB\"\n"
+"‚±‚̍€–Ú‚ð–{“–‚ɍ폜‚µ‚Ü‚·‚©H\n"
 "\n"
-"ƒTƒuƒL[‚Ɉ͆‰»‚µ‚½‚à‚͍̂ĂÑ\n"
-"•œ†‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB\n"
-"\n"
-"‚±‚̃TƒuƒL[‚ð–{“–‚ɍ폜‚µ‚Ü‚·‚©H"
+"%s"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1109
-#: Src/wptKeyEditDlgs.cpp:1310
+#: Src/wptKeyEditDlgs.cpp:1336
 msgid "Delete Subkey"
 msgstr "ƒTƒuƒL[‚̍폜"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1113
-#: Src/wptKeyEditDlgs.cpp:1314
+#: Src/wptKeyEditDlgs.cpp:1340
 msgid "Subkey successfully deleted."
 msgstr "ƒTƒuƒL[‚𐳂µ‚­íœ‚³‚ê‚Ü‚µ‚½B"
 
-#: Src/wptKeyEditDlgs.cpp:1347
+#: Src/wptKeyEditDlgs.cpp:1373
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -3194,22 +3230,22 @@
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1146
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1149
 # c:\oss\winpt\src\wptKeygenDlg.cpp:303 c:\oss\winpt\src\wptKeygenDlg.cpp:306
-#: Src/wptKeyEditDlgs.cpp:1356 Src/wptKeyEditDlgs.cpp:1359
+#: Src/wptKeyEditDlgs.cpp:1382 Src/wptKeyEditDlgs.cpp:1385
 msgid "Key Expiration Date"
 msgstr "ƒL[‚Ì—LŒøŠúŒÀ"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1173
-#: Src/wptKeyEditDlgs.cpp:1380
+#: Src/wptKeyEditDlgs.cpp:1406
 msgid "Expire Subkey"
 msgstr "ŠúŒÀ‚̐؂ꂽƒTƒuƒL["
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1177
-#: Src/wptKeyEditDlgs.cpp:1385
+#: Src/wptKeyEditDlgs.cpp:1411
 msgid "Subkey expire date successfully set."
 msgstr "ƒTƒuƒL[‚ÌŽ¸Œø“ú‚ª³‚µ‚­Ý’è‚Å‚«‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1206
-#: Src/wptKeyEditDlgs.cpp:1416
+#: Src/wptKeyEditDlgs.cpp:1442
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -3222,37 +3258,37 @@
 "‚±‚̃Rƒ}ƒ“ƒh‚̓Vƒ“ƒOƒ‹ƒTƒuƒL[‚݂̂𖳌ø‚É‚·‚邽‚ߎg‚¦‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1215
-#: Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1451
 msgid "Key already revoked."
 msgstr "ƒL[‚ªŠù‚É–³Œø‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1235
-#: Src/wptKeyEditDlgs.cpp:1442
+#: Src/wptKeyEditDlgs.cpp:1468
 msgid "Revoke Subkey"
 msgstr "ƒTƒuƒL[‚𖳌ø‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1239
-#: Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1472
 msgid "Subkey successfully revoked."
 msgstr "ƒTƒuƒL[‚𐳂µ‚­–³Œø‚É‚µ‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1258
-#: Src/wptKeyEditDlgs.cpp:1468
+#: Src/wptKeyEditDlgs.cpp:1494
 msgid "Revoke user ID"
 msgstr "ƒ†[ƒU[ID‚𖳌ø‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1263
-#: Src/wptKeyEditDlgs.cpp:1473
+#: Src/wptKeyEditDlgs.cpp:1499
 msgid "Key has only one user ID."
 msgstr "ƒL[‚̃†[ƒU[ID‚ª‚ЂƂ‚µ‚©‚ ‚è‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1274
-#: Src/wptKeyEditDlgs.cpp:1484
+#: Src/wptKeyEditDlgs.cpp:1510
 msgid "This user ID has been already revoked."
 msgstr "‚±‚̃†[ƒU[ID‚ª–³Œø‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1279
-#: Src/wptKeyEditDlgs.cpp:1490
+#: Src/wptKeyEditDlgs.cpp:1516
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -3264,60 +3300,60 @@
 "‚±‚̃†[ƒU[ID‚ð–{“–‚É–³Œø‚É‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1258
-#: Src/wptKeyEditDlgs.cpp:1512
+#: Src/wptKeyEditDlgs.cpp:1538
 msgid "Revoke User ID"
 msgstr "ƒ†[ƒU[ID‚𖳌ø‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1305
-#: Src/wptKeyEditDlgs.cpp:1516
+#: Src/wptKeyEditDlgs.cpp:1542
 msgid "User ID successfully revoked"
 msgstr "ƒ†[ƒU[ID‚𖳌ø‚É‚·‚邱‚Æ‚ª¬Œ÷‚µ‚Ü‚µ‚½"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1535
-#: Src/wptKeyEditDlgs.cpp:1563
+#: Src/wptKeyEditDlgs.cpp:1589
 msgid "Set user ID preferences"
 msgstr "ƒ†[ƒU[IDƒIƒvƒVƒ‡ƒ“‚ðƒZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1442
-#: Src/wptKeyEditDlgs.cpp:1566
+#: Src/wptKeyEditDlgs.cpp:1592
 msgid "User ID preferences successfully updated"
 msgstr "ƒ†[ƒU[IDƒIƒvƒVƒ‡ƒ“‚̍XV‚ɐ¬Œ÷‚µ‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1388
-#: Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1637
 msgid "Primary"
 msgstr "ƒvƒ‰ƒCƒ}ƒŠ["
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1391
-#: Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1640
 msgid "User ID successfully flagged"
 msgstr "ƒ†[ƒU[ID‚ɐ³‚µ‚­ƒtƒ‰ƒO‚ð‚‚¯‚Ü‚µ‚½B"
 
-#: Src/wptKeyEditDlgs.cpp:1708
+#: Src/wptKeyEditDlgs.cpp:1734
 msgid "No preferences available."
 msgstr "ƒJƒXƒ^ƒ€Ý’肪‚ ‚è‚Ü‚¹‚ñB"
 
-#: Src/wptKeyEditDlgs.cpp:1712
+#: Src/wptKeyEditDlgs.cpp:1738
 msgid "MDC feature"
 msgstr "MDC‚«‚Ì‚¤"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:186
-#: Src/wptKeyEditDlgs.cpp:1714
+#: Src/wptKeyEditDlgs.cpp:1740
 msgid "user ID:"
 msgstr "ƒ†[ƒU[IDF"
 
 # c:\oss\winpt\src\wptKeyeditSetPrefDlg.cpp:112
-#: Src/wptKeyEditDlgs.cpp:1715 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1741 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "ƒL[‚̃JƒXƒ^ƒ€Ý’è"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1411
-#: Src/wptKeyEditDlgs.cpp:1780
+#: Src/wptKeyEditDlgs.cpp:1806
 msgid "Primary user ID can not be deleted!"
 msgstr "ƒvƒ‰ƒCƒ}ƒŠ[ƒ†[ƒU[ID‚ªíœ‚Å‚«‚Ü‚¹‚ñI"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1420
-#: Src/wptKeyEditDlgs.cpp:1791
+#: Src/wptKeyEditDlgs.cpp:1817
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -3333,30 +3369,30 @@
 "‚±‚̃†[ƒU[ID‚ð–{“–‚ɍ폜‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1438
-#: Src/wptKeyEditDlgs.cpp:1808
+#: Src/wptKeyEditDlgs.cpp:1834
 msgid "Delete User ID"
 msgstr "ƒ†[ƒU[ID‚ðíœ‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1442
-#: Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1838
 msgid "User ID successfully deleted"
 msgstr "ƒ†[ƒU[ID‚𐳂µ‚­íœ‚µ‚Ü‚µ‚½B"
 
-#: Src/wptKeyEditDlgs.cpp:1903 Src/wptKeyEditDlgs.cpp:1921
+#: Src/wptKeyEditDlgs.cpp:1929 Src/wptKeyEditDlgs.cpp:1947
 msgid "Finished to compact key."
 msgstr "ƒL[‚ðƒRƒ“ƒpƒNƒg‚·‚邱‚Æ‚ªŠ®¬‚µ‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyManager.cpp:1064
-#: Src/wptKeyEditDlgs.cpp:1963
+#: Src/wptKeyEditDlgs.cpp:1989
 msgid "Do you really want to make this sig exportable?"
 msgstr "‚±‚̏–¼‚ð–{“–‚ɃGƒLƒXƒ|[ƒg‚Å—ˆ‚é‚à‚Ì‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeysignDlg.cpp:325
-#: Src/wptKeyEditDlgs.cpp:1994 Src/wptKeysignDlg.cpp:460
+#: Src/wptKeyEditDlgs.cpp:2020 Src/wptKeysignDlg.cpp:463
 msgid "Key successfully signed."
 msgstr "ƒL[‚ð–¼‚·‚邱‚Ƃɐ¬Œ÷‚µ‚Ü‚µ‚½B"
 
-#: Src/wptKeyEditDlgs.cpp:2057
+#: Src/wptKeyEditDlgs.cpp:2083
 #, c-format
 msgid ""
 "Your keys is listed as a designated revoker for the key\n"
@@ -3373,32 +3409,32 @@
 "ã‹L‚̃ŠƒXƒg‚É‚ ‚éƒL[‚𖳌ø‰»‚·‚邽‚ß\n"
 "–³Œø‰»‚·‚éØ–¾‘‚ð–{“–‚ɍ쐬‚µ‚Ü‚·‚©?"
 
-#: Src/wptKeyEditDlgs.cpp:2095
+#: Src/wptKeyEditDlgs.cpp:2121
 msgid "Capabilties: C = Certify, S = Sign, E = Encrypt, A = Authenticate"
 msgstr "‚«‚Ì‚¤: C = Ø–¾‚·‚éA S = –¼A E = ˆÃ†‰»AA = Ø–¾‚·‚é"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:397
-#: Src/wptKeyEditDlgs.cpp:2150
+#: Src/wptKeyEditDlgs.cpp:2176
 msgid "Command>"
 msgstr "ƒRƒ}ƒ“ƒh"
 
-#: Src/wptKeyEditDlgs.cpp:2151 Src/wptKeyserverDlg.cpp:689
+#: Src/wptKeyEditDlgs.cpp:2177 Src/wptKeyserverDlg.cpp:689
 #: Src/wptMDSumDlg.cpp:208 Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
 msgstr "•Â‚¶‚é(&C)"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:115
-#: Src/wptKeyEditDlgs.cpp:2153
+#: Src/wptKeyEditDlgs.cpp:2179
 msgid "&Revoke..."
 msgstr "–³Œø‰»‚«‚Ì‚¤(&R)"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1561
-#: Src/wptKeyEditDlgs.cpp:2197
+#: Src/wptKeyEditDlgs.cpp:2223
 msgid "Please select a command."
 msgstr "ƒRƒ}ƒ“ƒh‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:1566
-#: Src/wptKeyEditDlgs.cpp:2201
+#: Src/wptKeyEditDlgs.cpp:2227
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "‚±‚̃Rƒ}ƒ“ƒh‚Í PGP 2 (v3) ‚̃L[‚ÆŽg‚¦‚Ü‚¹‚ñB\n"
 
@@ -3459,7 +3495,7 @@
 # c:\oss\winpt\src\wptOwnertrustDlg.cpp:86
 #: Src/wptKeyEditOwnertrustDlg.cpp:83 Src/wptKeyEditOwnertrustDlg.cpp:89
 #: Src/wptKeyEditOwnertrustDlg.cpp:98 Src/wptKeyManagerDlg.cpp:974
-#: Src/wptKeyManagerDlg.cpp:1911 Src/wptKeyPropsDlg.cpp:286
+#: Src/wptKeyManagerDlg.cpp:1964 Src/wptKeyPropsDlg.cpp:298
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:116
 #: Src/wptOwnertrustDlg.cpp:128
 msgid "Ownertrust"
@@ -3497,7 +3533,7 @@
 #: Src/wptKeygenDlg.cpp:424 Src/wptKeygenDlg.cpp:429 Src/wptKeygenDlg.cpp:436
 #: Src/wptKeygenDlg.cpp:444 Src/wptKeygenDlg.cpp:458 Src/wptKeygenDlg.cpp:465
 #: Src/wptKeygenDlg.cpp:475 Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:579
-#: Src/wptKeyManagerDlg.cpp:1767 Src/wptPassphraseDlg.cpp:147
+#: Src/wptKeyManagerDlg.cpp:1820 Src/wptPassphraseDlg.cpp:147
 #: Src/wptPassphraseDlg.cpp:157
 msgid "Key Generation"
 msgstr "ƒL[‚̍쐬"
@@ -3684,7 +3720,7 @@
 # c:\oss\winpt\src\wptKeygenDlg.cpp:389 c:\oss\winpt\src\wptKeygenDlg.cpp:413
 #: Src/wptKeygenDlg.cpp:546 Src/wptKeygenDlg.cpp:557 Src/wptKeygenDlg.cpp:562
 #: Src/wptKeygenDlg.cpp:569 Src/wptKeygenDlg.cpp:575 Src/wptKeygenDlg.cpp:596
-#: Src/wptKeyManagerDlg.cpp:1790
+#: Src/wptKeyManagerDlg.cpp:1843
 msgid "Key Generation Wizard"
 msgstr "ƒL[ì¬‚̃EƒBƒU[ƒh"
 
@@ -3769,37 +3805,37 @@
 msgid "Public Key"
 msgstr "ŒöŠJŒ®"
 
-#: Src/wptKeylist.cpp:383
+#: Src/wptKeylist.cpp:384
 msgid "None"
 msgstr "‚È‚µ"
 
 # c:\oss\winpt\src\wptMAPI.cpp:396 c:\oss\winpt\src\wptMAPI.cpp:404
-#: Src/wptKeylist.cpp:387
+#: Src/wptKeylist.cpp:388
 msgid "Marginal"
 msgstr "‚Ù‚ñ‚̂킸‚©‚΂©‚è"
 
-#: Src/wptKeylist.cpp:389
+#: Src/wptKeylist.cpp:390
 msgid "Full"
 msgstr "ƒtƒ‹"
 
-#: Src/wptKeylist.cpp:428 Src/wptKeylist.cpp:454 Src/wptKeyPropsDlg.cpp:154
+#: Src/wptKeylist.cpp:429 Src/wptKeylist.cpp:455 Src/wptKeyPropsDlg.cpp:154
 msgid "Disabled"
 msgstr "–³Œø‰»‚È‚Á‚½"
 
 # c:\oss\winpt\src\wptKeylist.cpp:167
-#: Src/wptKeylist.cpp:464
+#: Src/wptKeylist.cpp:465
 msgid "key pair"
 msgstr "ƒL[ƒyƒA"
 
 # c:\oss\winpt\src\wptKeylist.cpp:41 c:\oss\winpt\src\wptKeylist.cpp:52
-#: Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591 Src/wptKeyManagerDlg.cpp:914
+#: Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592 Src/wptKeyManagerDlg.cpp:914
 #: Src/wptKeyManagerDlg.cpp:1005
 msgid "Cipher"
 msgstr "ˆÃ†"
 
 # c:\oss\winpt\src\wptKeylist.cpp:54 c:\oss\winpt\src\wptVerifyList.cpp:78
 # c:\oss\winpt\src\wptVerifyList.cpp:86
-#: Src/wptKeylist.cpp:593 Src/wptKeyManagerDlg.cpp:916
+#: Src/wptKeylist.cpp:594 Src/wptKeyManagerDlg.cpp:916
 #: Src/wptVerifyList.cpp:171
 msgid "Trust"
 msgstr "M—p"
@@ -3808,12 +3844,12 @@
 # c:\oss\winpt\src\wptFileManager.cpp:1030
 # c:\oss\winpt\src\wptKeylist.cpp:569 c:\oss\winpt\src\wptPassphraseCB.cpp:75
 # c:\oss\winpt\src\wptVerifyList.cpp:160
-#: Src/wptKeylist.cpp:766 Src/wptPassphraseCB.cpp:126
+#: Src/wptKeylist.cpp:782 Src/wptPassphraseCB.cpp:126
 msgid "Invalid User ID"
 msgstr "–³Œø‚ȃ†[ƒU[ID"
 
 # c:\oss\winpt\src\wptKeylist.cpp:745
-#: Src/wptKeylist.cpp:1035
+#: Src/wptKeylist.cpp:1051
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -3829,12 +3865,12 @@
 "‚Ç‚¤‚¹‚±‚ê‚ð \"%s\" Žg—p‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeylist.cpp:753 c:\oss\winpt\src\wptKeylist.cpp:820
-#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
+#: Src/wptKeylist.cpp:1059 Src/wptKeylist.cpp:1122
 msgid "Recipients"
 msgstr "ŽóMŽÒ"
 
 # c:\oss\winpt\src\wptKeylist.cpp:819
-#: Src/wptKeylist.cpp:1107
+#: Src/wptKeylist.cpp:1123
 #, c-format
 msgid ""
 "KeyID %s.\n"
@@ -3844,7 +3880,7 @@
 "–{“–‚É–³Œø‚ȃL[‚ðƒGƒLƒXƒ|[ƒg‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptKeylist.cpp:1209
+#: Src/wptKeylist.cpp:1225
 msgid "Secret Key List"
 msgstr "”é–§Œ®‚̈ꗗ‚Ђ傤"
 
@@ -4090,7 +4126,7 @@
 
 # c:\oss\winpt\src\wptGroupsDlg.cpp:49
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1180
-#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1347
+#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1397
 msgid "Groups"
 msgstr "ƒOƒ‹[ƒv"
 
@@ -4148,7 +4184,7 @@
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:578
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:958
 # c:\oss\winpt\src\wptKeyTrustPathDlg.cpp:126
-#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1707
+#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1760
 #: Src/wptKeyTrustPathDlg.cpp:129
 msgid "List Trust Path"
 msgstr "ƒgƒ‰ƒXƒgƒpƒXˆê——‚Ђ傤"
@@ -4335,7 +4371,7 @@
 msgid "Send to Keyserver"
 msgstr "ƒL[ƒT[ƒo[‚É‘—M‚·‚é"
 
-#: Src/wptKeyManagerDlg.cpp:1317
+#: Src/wptKeyManagerDlg.cpp:1366
 msgid ""
 "No ultimately trusted key found.\n"
 "Please set at least one secret key to ultimate trust."
@@ -4344,61 +4380,61 @@
 "­‚È‚­‚Ä‚àˆê‚‚̃L[‚ðÅ‚M—pŽÒƒL[‚Æ‚µ‚Đݒ肵‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:765
-#: Src/wptKeyManagerDlg.cpp:1348
+#: Src/wptKeyManagerDlg.cpp:1398
 msgid "&Show"
 msgstr "‚Ђ傤‚¶(&S)"
 
 # c:\oss\winpt\src\wptFileManagerDlg.cpp:354
-#: Src/wptKeyManagerDlg.cpp:1349
+#: Src/wptKeyManagerDlg.cpp:1399
 msgid "&New..."
 msgstr "ŠJ‚­(&N)..."
 
 # c:\oss\winpt\src\wptFirstRunDlg.cpp:42
-#: Src/wptKeyManagerDlg.cpp:1460
+#: Src/wptKeyManagerDlg.cpp:1510
 msgid "Generate new key pair"
 msgstr "V‚µ‚¢ƒL[ƒyƒA‚ðì¬‚·‚é"
 
-#: Src/wptKeyManagerDlg.cpp:1464
+#: Src/wptKeyManagerDlg.cpp:1514
 msgid "Search for a specific key"
 msgstr "“Á’è‚ȃL[‚ðƒT[ƒ`‚·‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:724
-#: Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1518
 msgid "Delete key from keyring"
 msgstr "ƒL[ƒŠƒ“ƒO‚©‚çƒL[‚ðíœ‚·‚éB"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:728
-#: Src/wptKeyManagerDlg.cpp:1472
+#: Src/wptKeyManagerDlg.cpp:1522
 msgid "Show key properties"
 msgstr "ƒL[‚Ì‘®«‚ðŒ©‚¹‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:732
-#: Src/wptKeyManagerDlg.cpp:1476
+#: Src/wptKeyManagerDlg.cpp:1526
 msgid "Sign key"
 msgstr "ƒVƒOƒjƒ`ƒƒ[ƒL["
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:762
-#: Src/wptKeyManagerDlg.cpp:1480
+#: Src/wptKeyManagerDlg.cpp:1530
 msgid "Copy key to clipboard"
 msgstr "ƒL[‚ðƒNƒŠƒbƒvƒ{[ƒh‚É“]‘—‚·‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:272
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:763
-#: Src/wptKeyManagerDlg.cpp:1484
+#: Src/wptKeyManagerDlg.cpp:1534
 msgid "Paste key from clipboard"
 msgstr "ƒNƒŠƒbƒvƒ{[ƒh‚©‚çƒL[‚ð‚Í‚è•t‚¯‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:736
-#: Src/wptKeyManagerDlg.cpp:1488
+#: Src/wptKeyManagerDlg.cpp:1538
 msgid "Import key to keyring"
 msgstr "ƒL[ƒŠƒ“ƒO‚ɃL[‚ðƒCƒ“ƒ|[ƒg‚·‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:740
-#: Src/wptKeyManagerDlg.cpp:1492
+#: Src/wptKeyManagerDlg.cpp:1542
 msgid "Export key to a file"
 msgstr "ƒL[‚ðƒtƒ@ƒCƒ‹‚ɃGƒLƒXƒ|[ƒg‚Æ‚·‚é"
 
-#: Src/wptKeyManagerDlg.cpp:1626
+#: Src/wptKeyManagerDlg.cpp:1679
 msgid "New"
 msgstr "V‹Kì¬"
 
@@ -4422,12 +4458,12 @@
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:270
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:317
 # c:\oss\winpt\src\wptRegistry.cpp:492
-#: Src/wptKeyManagerDlg.cpp:1628
+#: Src/wptKeyManagerDlg.cpp:1681
 msgid "Preferences..."
 msgstr "ƒJƒXƒ^ƒ€Ý’è"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:869
-#: Src/wptKeyManagerDlg.cpp:1634
+#: Src/wptKeyManagerDlg.cpp:1687
 msgid "Could not access public keyring"
 msgstr "ŒöŠJƒL[ƒŠƒ“ƒO‚ðƒAƒNƒZƒX‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
@@ -4439,15 +4475,15 @@
 # c:\oss\winpt\src\wptKeysignDlg.cpp:318
 # c:\oss\winpt\src\wptKeysignDlg.cpp:320
 # c:\oss\winpt\src\wptKeysignDlg.cpp:322
-#: Src/wptKeyManagerDlg.cpp:1666 Src/wptKeysignDlg.cpp:351
+#: Src/wptKeyManagerDlg.cpp:1719 Src/wptKeysignDlg.cpp:351
 #: Src/wptKeysignDlg.cpp:365 Src/wptKeysignDlg.cpp:426
-#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:458
-#: Src/wptKeysignDlg.cpp:460
+#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:461
+#: Src/wptKeysignDlg.cpp:463
 msgid "Key Signing"
 msgstr "ƒL[‚ð–¼‚·‚é"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:926
-#: Src/wptKeyManagerDlg.cpp:1682
+#: Src/wptKeyManagerDlg.cpp:1735
 msgid "Key already revoked!"
 msgstr "ƒL[‚ª‚·‚Å‚É–³Œø‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B"
 
@@ -4458,7 +4494,7 @@
 # c:\oss\winpt\src\wptKeyRevokeDlg.cpp:118
 # c:\oss\winpt\src\wptKeyRevokeDlg.cpp:140
 # c:\oss\winpt\src\wptKeyRevokeDlg.cpp:151
-#: Src/wptKeyManagerDlg.cpp:1696 Src/wptKeyRevokeDlg.cpp:68
+#: Src/wptKeyManagerDlg.cpp:1749 Src/wptKeyRevokeDlg.cpp:68
 #: Src/wptKeyRevokeDlg.cpp:78 Src/wptKeyRevokeDlg.cpp:162
 #: Src/wptKeyRevokeDlg.cpp:167 Src/wptKeyRevokeDlg.cpp:172
 #: Src/wptKeyRevokeDlg.cpp:181 Src/wptKeyRevokeDlg.cpp:191
@@ -4467,18 +4503,18 @@
 msgstr "ƒL[‚Ì–³Œø‰»Ø–¾‘"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:973
-#: Src/wptKeyManagerDlg.cpp:1718
+#: Src/wptKeyManagerDlg.cpp:1771
 msgid "Key Signature List"
 msgstr "ƒL[–¼‚̈ꗗ‚Ђ傤"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:992
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:113
-#: Src/wptKeyManagerDlg.cpp:1735 Src/wptKeyPropsDlg.cpp:282
+#: Src/wptKeyManagerDlg.cpp:1788 Src/wptKeyPropsDlg.cpp:294
 msgid "Key Properties"
 msgstr "ƒL[‚Ì‘®«"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1007
-#: Src/wptKeyManagerDlg.cpp:1745
+#: Src/wptKeyManagerDlg.cpp:1798
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
@@ -4487,41 +4523,41 @@
 "–{“–‚ɃL[ƒLƒƒƒbƒVƒ…‚ðƒŠƒ[ƒh‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1045
-#: Src/wptKeyManagerDlg.cpp:1775
+#: Src/wptKeyManagerDlg.cpp:1828
 msgid "Smart Card support is not available."
 msgstr "ƒXƒ}[ƒgƒJ[ƒh‚ɑΉž‚µ‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1065
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:298
-#: Src/wptKeyManagerDlg.cpp:1798 Src/wptKeyserverDlg.cpp:680
+#: Src/wptKeyManagerDlg.cpp:1851 Src/wptKeyserverDlg.cpp:680
 msgid "Keyserver Access"
 msgstr "ƒL[ƒT[ƒo[‚̃AƒNƒZƒX"
 
 # c:\oss\winpt\src\wptMainProc.cpp:566
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:121
-#: Src/wptKeyManagerDlg.cpp:1806 Src/wptMainProc.cpp:574
-#: Src/wptPreferencesDlg.cpp:139
+#: Src/wptKeyManagerDlg.cpp:1859 Src/wptMainProc.cpp:574
+#: Src/wptPreferencesDlg.cpp:125
 msgid "WinPT Preferences"
 msgstr "WinPTƒJƒXƒ^ƒ€Ý’è"
 
 # c:\oss\winpt\src\wptGPGOptDlg.cpp:46
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1077
-#: Src/wptKeyManagerDlg.cpp:1821
+#: Src/wptKeyManagerDlg.cpp:1874
 msgid "GnuPG Options"
 msgstr "GnuPGƒIƒvƒVƒ‡ƒ“"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1119
-#: Src/wptKeyManagerDlg.cpp:1863
+#: Src/wptKeyManagerDlg.cpp:1916
 msgid "There is no corresponding secret key for this key."
 msgstr "‚±‚̃L[‚ɑ΂µ‚Ă̔閧Œ®‚ª‚ ‚è‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1124
-#: Src/wptKeyManagerDlg.cpp:1868
+#: Src/wptKeyManagerDlg.cpp:1921
 msgid "You can only export one secret key."
 msgstr "ˆêŒÂ‚̔閧Œ®‚µ‚©ƒGƒLƒXƒ|[ƒg‚Å‚«‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1128
-#: Src/wptKeyManagerDlg.cpp:1873
+#: Src/wptKeyManagerDlg.cpp:1926
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -4540,17 +4576,17 @@
 "‚±‚̃L[‚ð–{“–‚ɃGƒLƒXƒ|[ƒg‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1133
-#: Src/wptKeyManagerDlg.cpp:1878
+#: Src/wptKeyManagerDlg.cpp:1931
 msgid "WARNING"
 msgstr "Œx"
 
 # c:\oss\winpt\src\wptKeyManagerDlg.cpp:1205
-#: Src/wptKeyManagerDlg.cpp:1944
+#: Src/wptKeyManagerDlg.cpp:1997
 msgid "No key was selected, select all by default."
 msgstr "ƒL[‚ª‘I‘ð‚³‚ê‚Ä‚Ü‚¹‚ñB‹K’è‘I‘ð‚Í All ‚Å‚·B"
 
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:59
-#: Src/wptKeyManagerDlg.cpp:1949
+#: Src/wptKeyManagerDlg.cpp:2002
 msgid "Keyserver refresh finished."
 msgstr "ƒL[ƒT[ƒo[‚̃ŠƒtƒŒƒbƒVƒ…‚ªŠ®—¹‚µ‚Ü‚µ‚½B"
 
@@ -4576,7 +4612,7 @@
 msgid "Card-Type: %s\r\n"
 msgstr "ƒJ[ƒhƒ^ƒCƒv: %s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:244
+#: Src/wptKeyPropsDlg.cpp:256
 #, c-format
 msgid ""
 "Type: %s\r\n"
@@ -4600,35 +4636,26 @@
 "%s\r\n"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:114
-#: Src/wptKeyPropsDlg.cpp:283
+#: Src/wptKeyPropsDlg.cpp:295
 msgid "&Change"
 msgstr "•ÏX(&C)"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:115
-#: Src/wptKeyPropsDlg.cpp:284
+#: Src/wptKeyPropsDlg.cpp:296
 msgid "&Revokers"
 msgstr "–³Œø‰»‚«‚Ì‚¤(&R)"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:116
-#: Src/wptKeyPropsDlg.cpp:285
+#: Src/wptKeyPropsDlg.cpp:297
 msgid "Change &Password"
 msgstr "ƒpƒXƒ[ƒh‚̕ύX(&P)"
 
-#: Src/wptKeyPropsDlg.cpp:292
+#: Src/wptKeyPropsDlg.cpp:304
 msgid "Photo-ID not validated."
 msgstr "ƒtƒHƒgID—LŒø‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
 
-# c:\oss\winpt\src\wptKeyPropsDlg.cpp:171
-#: Src/wptKeyPropsDlg.cpp:355
-msgid ""
-"The status of this key is 'revoked' or 'expired'.\n"
-"You cannot change the ownertrust of such keys."
-msgstr ""
-"‚±‚̃L[‚̏󋵂͖³Œø 'revoked' ‚Ü‚½‚ÍŠúŒÀØ‚ê 'expired'‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B\n"
-"‚±‚ê‚ç‚̃L[‚̏Š—LŽÒ‚̐M—Š(ownertrust)‚ð•ÏX‚Å‚«‚Ü‚¹‚ñB"
-
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:177
-#: Src/wptKeyPropsDlg.cpp:361
+#: Src/wptKeyPropsDlg.cpp:367
 msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
@@ -4640,12 +4667,12 @@
 "–{“–‚ÉŒp‘±‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:208
-#: Src/wptKeyPropsDlg.cpp:379
+#: Src/wptKeyPropsDlg.cpp:385
 msgid "Ownertrust successfully changed."
 msgstr "Š—LŽÒ‚̐M—Š(ownertrust)‚͐³‚µ‚­•ÏX‚µ‚Ü‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:226
-#: Src/wptKeyPropsDlg.cpp:392 Src/wptKeyRevokersDlg.cpp:160
+#: Src/wptKeyPropsDlg.cpp:398 Src/wptKeyRevokersDlg.cpp:160
 msgid "Key Revokers"
 msgstr "ƒL[‚𖳌ø‰»‚«‚Ì‚¤"
 
@@ -4716,42 +4743,42 @@
 msgid "Do you want to retrieve %s via the default keyserver?"
 msgstr "‹K’èƒL[ƒT[ƒo[Œo—R‚Å %s ‚ðŽæ‚èo‚µ‚½‚¢‚Å‚·‚©H"
 
-#: Src/wptKeyserver.cpp:439
+#: Src/wptKeyserver.cpp:443
 msgid "Network unreachable"
 msgstr "ƒlƒbƒgƒ[ƒN‚ªŒ©‚‚©‚ç‚È‚¢"
 
-#: Src/wptKeyserver.cpp:442
+#: Src/wptKeyserver.cpp:446
 msgid "Host unreachable"
 msgstr "ƒzƒXƒg‚ªŒ©‚‚©‚ç‚È‚¢"
 
 # c:\oss\winpt\src\wptErrors.cpp:84
-#: Src/wptKeyserver.cpp:445
+#: Src/wptKeyserver.cpp:449
 msgid "Could not resolve host name"
 msgstr "ƒzƒXƒg–¼‚ð‘ÅŠJ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
-#: Src/wptKeyserver.cpp:448
+#: Src/wptKeyserver.cpp:452
 msgid "Connection refused"
 msgstr "Ú‘±‚ª‹‘”Û‚³‚ê‚Ü‚µ‚½B"
 
-#: Src/wptKeyserver.cpp:452
+#: Src/wptKeyserver.cpp:456
 msgid "Connection timeout"
 msgstr "Ú‘±ƒ^ƒCƒ€ƒAƒEƒg"
 
-#: Src/wptKeyserver.cpp:456
+#: Src/wptKeyserver.cpp:460
 msgid "Connection resetted by peer"
 msgstr "“¯”yŽÒ‚͐ڑ±‚ð‰Šú‰»‚µ‚Ü‚µ‚½"
 
-#: Src/wptKeyserver.cpp:459
+#: Src/wptKeyserver.cpp:463
 msgid "Socket has been shutdown"
 msgstr "¿¹¯Ä‚ª¼¬¯ÄÀ޳݂³‚ê‚Ä‚¢‚Ü‚·"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:221
-#: Src/wptKeyserver.cpp:637
+#: Src/wptKeyserver.cpp:641
 msgid "Could not save keyserver.conf file"
 msgstr "keyserver.confƒtƒ@ƒCƒ‹‚ð•Û‘¶‚·‚邱‚Æ‚ªo—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyserver.cpp:436
-#: Src/wptKeyserver.cpp:722
+#: Src/wptKeyserver.cpp:727
 msgid ""
 "Invalid proxy configuration. You need to set a user and a password to use "
 "proxy authentication!"
@@ -4760,12 +4787,12 @@
 "ƒvƒƒNƒV[‚Ì”FØI"
 
 # c:\oss\winpt\src\wptKeyserver.cpp:438
-#: Src/wptKeyserver.cpp:725
+#: Src/wptKeyserver.cpp:730
 msgid "Proxy Error"
 msgstr "ƒvƒƒNƒV[ƒGƒ‰["
 
 # c:\oss\winpt\src\wptKeyserver.cpp:462
-#: Src/wptKeyserver.cpp:750
+#: Src/wptKeyserver.cpp:755
 msgid ""
 "All entries of this file must have a valid prefix.\n"
 "Currently HKP/HTTP, LDAP and FINGER are supported.\n"
@@ -4788,17 +4815,17 @@
 # c:\oss\winpt\src\wptKeyserverDlg.cpp:420
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:72
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:115
-#: Src/wptKeyserver.cpp:752
+#: Src/wptKeyserver.cpp:757
 msgid "Keyserver Error"
 msgstr "ƒL[ƒT[ƒo[ƒGƒ‰["
 
 # c:\oss\winpt\src\wptKeyserver.cpp:473
-#: Src/wptKeyserver.cpp:771
+#: Src/wptKeyserver.cpp:776
 msgid "The keyserver limit is exceeded"
 msgstr "ƒL[ƒT[ƒo[‚̐§ŒÀ‚ª’´‚¦‚Ä‚¢‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:59
-#: Src/wptKeyserver.cpp:772
+#: Src/wptKeyserver.cpp:777
 msgid "Keyserver Warning"
 msgstr "ƒL[ƒT[ƒo[Œx"
 
@@ -5033,11 +5060,11 @@
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:52
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:57
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:61
-#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:103
-#: Src/wptProxySettingsDlg.cpp:113 Src/wptProxySettingsDlg.cpp:118
-#: Src/wptProxySettingsDlg.cpp:125 Src/wptProxySettingsDlg.cpp:130
-#: Src/wptProxySettingsDlg.cpp:135 Src/wptProxySettingsDlg.cpp:194
-#: Src/wptProxySettingsDlg.cpp:229
+#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:105
+#: Src/wptProxySettingsDlg.cpp:115 Src/wptProxySettingsDlg.cpp:120
+#: Src/wptProxySettingsDlg.cpp:127 Src/wptProxySettingsDlg.cpp:132
+#: Src/wptProxySettingsDlg.cpp:137 Src/wptProxySettingsDlg.cpp:198
+#: Src/wptProxySettingsDlg.cpp:233
 msgid "Proxy Settings"
 msgstr "ƒvƒƒNƒV[Ý’è"
 
@@ -5080,13 +5107,13 @@
 msgstr "ƒL[ƒT[ƒo[‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·B"
 
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:59
-#: Src/wptKeyserverSearchDlg.cpp:96 Src/wptKeyserverSearchDlg.cpp:101
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyserverSearchDlg.cpp:97 Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Keyserver Search"
 msgstr "ƒL[ƒT[ƒo[ŒŸõ"
 
 # c:\oss\winpt\src\wptKeyPropsDlg.cpp:177
-#: Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:103
 #, c-format
 msgid ""
 "The search result contains a lot of keys: %d\n"
@@ -5344,7 +5371,7 @@
 msgstr "¡“ú‚Ì“ú•t‚ð—LŒøŠúŒÀ“ú‚Æ‚µ‚Ä‘I‘ð‚Å‚«‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptKeysignDlg.cpp:318
-#: Src/wptKeysignDlg.cpp:457
+#: Src/wptKeysignDlg.cpp:460
 msgid "This key is already signed by your key"
 msgstr "ƒL[‚ª‚ ‚È‚½‚̃L[‚ÆŠù‚ɏ–¼‚µ‚Ä‚¢‚Ü‚·B"
 
@@ -5637,62 +5664,58 @@
 msgstr "ƒ†[ƒU[ˆÃØ”ԍ†'User PIN'‚Ì’·‚³‚͍Œá6•¶Žš‚Å‚·B"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:122
-#: Src/wptPreferencesDlg.cpp:114
+#: Src/wptPreferencesDlg.cpp:101
 msgid "Do not use any &temporary files"
 msgstr "ˆêŽž“I‚ȃtƒ@ƒCƒ‹‚ðŽg‚í‚È‚¢(&T)"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:123
-#: Src/wptPreferencesDlg.cpp:115
+#: Src/wptPreferencesDlg.cpp:102
 msgid "Use clipboard &viewer to display the plaintext"
 msgstr "ƒvƒŒ[ƒ“ƒeƒLƒXƒg‚ð‚Ђイ‚¶‚³‚¹‚é‚̂ɃNƒŠƒbƒvƒ{[ƒhƒrƒ…[ƒA[‚ðŽg‚¤(&V)"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:124
-#: Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:103
 msgid "Word wrap cleartext &signatures at column"
 msgstr "ƒeƒLƒXƒg–¼‚ð—ñ‚я[ƒhƒ‰ƒbƒv‚·‚é(&S)"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:125
-#: Src/wptPreferencesDlg.cpp:117
+#: Src/wptPreferencesDlg.cpp:104
 msgid "&Disable hotkeys (Not recommended!)"
 msgstr "ƒzƒbƒgƒL[‚𖳌ø‚É‚·‚éu‚µ‚È‚¢‚Ù‚¤‚ª—Ç‚¢v (&D)"
 
-#: Src/wptPreferencesDlg.cpp:118
+#: Src/wptPreferencesDlg.cpp:105
 msgid "Skip key validation and assume that keys are always fully trusted"
 msgstr "ƒL[‚ÌŠm”F’iŠK‚ð”ò‚΂µ‚āAƒL[‚ª‚¢‚‚àM—p‚Å‚«‚é‚ÆŽv‚¤"
 
-#: Src/wptPreferencesDlg.cpp:119
+#: Src/wptPreferencesDlg.cpp:106
 msgid "&Automatic keyring backup when WinPT closes"
 msgstr "WinPT‚ðI—¹‚·‚é‚Æ‚«ƒL[ƒŠƒ“ƒO‚ðŽ©“®“IƒoƒbƒNƒAƒbƒv‚·‚é(&A)"
 
 # c:\oss\winpt\src\wptGPG.cpp:942
-#: Src/wptPreferencesDlg.cpp:120
+#: Src/wptPreferencesDlg.cpp:107
 msgid "Backup to &keyring folder"
 msgstr "ƒL[ƒŠƒ“ƒO‚ɃoƒbƒNƒAƒbƒv‚·‚éB(&K)"
 
 # c:\oss\winpt\src\wptGPG.cpp:942 c:\oss\winpt\src\wptGPG.cpp:1004
-#: Src/wptPreferencesDlg.cpp:121
+#: Src/wptPreferencesDlg.cpp:108
 msgid "Backup to:"
 msgstr "ƒoƒbƒNƒAƒbƒvæF"
 
 # c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptPreferencesDlg.cpp:122
+#: Src/wptPreferencesDlg.cpp:109
 msgid "Select &key list mode"
 msgstr "ƒL[ƒŠƒXƒgƒ‚[ƒh‘I‘ð(&K)"
 
-#: Src/wptPreferencesDlg.cpp:123
-msgid "Select &wipe mode"
-msgstr "Žæ‚èÁ‚·uwipevƒ‚[ƒh‘I‘ð(&W)"
-
 # c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:59
-#: Src/wptPreferencesDlg.cpp:124
+#: Src/wptPreferencesDlg.cpp:110
 msgid "Keyserver &config"
 msgstr "ƒL[ƒT[ƒo[‚±‚¤‚¹‚¢(&C)"
 
-#: Src/wptPreferencesDlg.cpp:125
+#: Src/wptPreferencesDlg.cpp:111
 msgid "Cache &passphrases for 'n' minutes"
 msgstr "ƒpƒXƒtƒŒ[ƒY‚ð 'n' •bŠÔƒLƒƒƒbƒVƒ…‚·‚é(&P)"
 
-#: Src/wptPreferencesDlg.cpp:126
+#: Src/wptPreferencesDlg.cpp:112
 msgid "(CTRL+ALT+F to clear the cache)"
 msgstr "(CTRL+ALT+F ƒLƒƒƒbƒVƒ…‚ð‰Šú‰»‚·‚é)"
 
@@ -5706,7 +5729,7 @@
 # c:\oss\winpt\src\wptKeygenDlg.cpp:244 c:\oss\winpt\src\wptKeygenDlg.cpp:252
 # c:\oss\winpt\src\wptKeygenDlg.cpp:289 c:\oss\winpt\src\wptKeygenDlg.cpp:311
 # c:\oss\winpt\src\wptKeygenDlg.cpp:392
-#: Src/wptPreferencesDlg.cpp:127
+#: Src/wptPreferencesDlg.cpp:113
 msgid "General options"
 msgstr "ˆê”ʃIƒvƒVƒ‡ƒ“"
 
@@ -5720,26 +5743,26 @@
 # c:\oss\winpt\src\wptMainProc.cpp:171 c:\oss\winpt\src\wptMainProc.cpp:241
 # c:\oss\winpt\src\wptMainProc.cpp:284 c:\oss\winpt\src\wptMainProc.cpp:489
 # c:\oss\winpt\src\wptMainProc.cpp:493
-#: Src/wptPreferencesDlg.cpp:128
+#: Src/wptPreferencesDlg.cpp:114
 msgid "Clipboard hotkeys"
 msgstr "ƒNƒŠƒbƒvƒ{[ƒhƒzƒbƒgƒL["
 
-#: Src/wptPreferencesDlg.cpp:129
+#: Src/wptPreferencesDlg.cpp:115
 msgid "Current window hotkeys"
 msgstr "Œ»Ý‚̃EƒBƒ“ƒhƒE‚̃zƒbƒgƒL["
 
 # c:\oss\winpt\src\wptFileManager.cpp:825
-#: Src/wptPreferencesDlg.cpp:132
+#: Src/wptPreferencesDlg.cpp:118
 msgid "Default extension for encrypted files"
 msgstr "ˆÃ†‰»‚µ‚½ƒtƒ@ƒCƒ‹‚Ì‹K’èŠg’£Žq"
 
 # c:\oss\winpt\src\wptMainProc.cpp:211
-#: Src/wptPreferencesDlg.cpp:133
+#: Src/wptPreferencesDlg.cpp:119
 msgid "&Backup includes secret keyring"
 msgstr "ƒoƒbƒNƒAƒbƒvƒtƒ@ƒCƒ‹‚É‚ª”é–§ƒL[ƒŠƒ“ƒO‚àŠÜ‚ß‚Ä‚¢‚Ü‚·(&B)B"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:182
-#: Src/wptPreferencesDlg.cpp:222
+#: Src/wptPreferencesDlg.cpp:206
 msgid ""
 "In most cases it is not a good idea to enable this setting.\n"
 "If you know what you are doing, you can enable this flag, otherwise\n"
@@ -5749,12 +5772,12 @@
 "‰½‚ð‚µ‚½‚¢‚©‚ð‚Í‚Á‚«‚è‚í‚©‚éê‡‚Í‚±‚̃tƒ‰ƒO‚ð—LŒø‚É‚µ‚Ä‚à‚¢‚¢‚Å‚·‚ªA\n"
 "‚»‚¤‚Å‚Í‚È‚¢ê‡‚́A‚±‚̃tƒ‰ƒO‚ðG‚ç‚È‚¢‚Ù‚¤‚ªˆÀ‘S‚Å‚·B"
 
-#: Src/wptPreferencesDlg.cpp:256
+#: Src/wptPreferencesDlg.cpp:240
 msgid "Select GPG backup path"
 msgstr "GPGƒoƒbƒNƒAƒbƒvƒpƒX‚ð‘I‘ð‚·‚é"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:232
-#: Src/wptPreferencesDlg.cpp:268
+#: Src/wptPreferencesDlg.cpp:252
 msgid ""
 "Please enter a value that is between 1-720.\n"
 "It is not a good idea to cache the passphrase more than 12 hours."
@@ -5763,17 +5786,17 @@
 "ƒpƒXƒtƒŒ[ƒY‚ð‚P‚QŽžŠÔˆÈãƒLƒƒƒbƒVƒ…‚·‚邱‚Æ‚ª—Ç‚­‚ ‚è‚Ü‚¹‚ñB"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:245
-#: Src/wptPreferencesDlg.cpp:281
+#: Src/wptPreferencesDlg.cpp:265
 msgid "Please enter a value between 1-80."
 msgstr "‚P`‚W‚O‚͈̔͂̒l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:256
-#: Src/wptPreferencesDlg.cpp:294
+#: Src/wptPreferencesDlg.cpp:286
 msgid "The specified backup folder is invalid."
 msgstr "Žw’肳‚ꂽƒoƒbƒNƒAƒbƒv—pƒtƒHƒ‹ƒ_‚ª–³Œø‚Å‚·B"
 
 # c:\oss\winpt\src\wptPreferencesDlg.cpp:323
-#: Src/wptPreferencesDlg.cpp:332
+#: Src/wptPreferencesDlg.cpp:321
 msgid "Hotkeys"
 msgstr "ƒzƒbƒgƒL["
 
@@ -5783,63 +5806,64 @@
 msgstr "isƒXƒŒƒbƒh‚ðì¬‚»‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:427
-#: Src/wptProxySettingsDlg.cpp:103
-msgid "Invalid host/IP address."
+#: Src/wptProxySettingsDlg.cpp:105
+#, fuzzy
+msgid "Invalid host or IP address."
 msgstr "–³Œø‚ȃzƒXƒg‚Ü‚½‚ÍIPƒAƒhƒŒƒXB"
 
 # c:\oss\winpt\src\wptKeygenDlg.cpp:200 c:\oss\winpt\src\wptKeygenDlg.cpp:377
-#: Src/wptProxySettingsDlg.cpp:112
+#: Src/wptProxySettingsDlg.cpp:114
 msgid "Please enter the proxy hostname."
 msgstr "ƒvƒƒNƒV[ƒzƒXƒg–¼‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptImportList.cpp:84
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:967
-#: Src/wptProxySettingsDlg.cpp:118
+#: Src/wptProxySettingsDlg.cpp:120
 msgid "Invalid port number."
 msgstr "–³Œø‚ȃ|[ƒg”ԍ†"
 
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:52
-#: Src/wptProxySettingsDlg.cpp:124
+#: Src/wptProxySettingsDlg.cpp:126
 msgid "Please select a value from 0-65535 for the port"
 msgstr "‚O`‚U‚T‚T‚R‚T‚͈̔͂̒l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:56
-#: Src/wptProxySettingsDlg.cpp:129
+#: Src/wptProxySettingsDlg.cpp:131
 msgid "When you want to use authentication, please fill out both fields."
 msgstr "”FØ‚ðŽg—p‚·‚éê‡‚́A—¼•û‚̃tƒB[ƒ‹ƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B"
 
 # c:\oss\winpt\src\wptProxySettingsDlg.cpp:61
-#: Src/wptProxySettingsDlg.cpp:134
+#: Src/wptProxySettingsDlg.cpp:136
 msgid "Please enter a host name and a port."
 msgstr "ƒzƒXƒg–¼‚ƃ|[ƒg‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
-#: Src/wptProxySettingsDlg.cpp:188
+#: Src/wptProxySettingsDlg.cpp:192
 msgid "Proxy host name or IP address"
 msgstr "ƒvƒƒbƒNƒV[ƒzƒXƒg–¼‚Ü‚½‚ÍIPƒAƒhƒŒƒX"
 
-#: Src/wptProxySettingsDlg.cpp:189
+#: Src/wptProxySettingsDlg.cpp:193
 msgid "Server requires &authentication"
 msgstr "ƒT[ƒo[‚É”FØ‚ª•K—v‚Å‚·(&A)"
 
 # c:\oss\winpt\src\wptKeygenDlg.cpp:147
-#: Src/wptProxySettingsDlg.cpp:190
+#: Src/wptProxySettingsDlg.cpp:194
 msgid "User name"
 msgstr "ƒ†[ƒU[–¼"
 
-#: Src/wptProxySettingsDlg.cpp:191
+#: Src/wptProxySettingsDlg.cpp:195
 msgid "Password"
 msgstr "ƒpƒXƒ[ƒh"
 
 # c:\oss\winpt\src\wptKeyEditDlgs.cpp:473
-#: Src/wptProxySettingsDlg.cpp:192
+#: Src/wptProxySettingsDlg.cpp:196
 msgid "Proxy type"
 msgstr "ƒvƒƒNƒV[‚ÌŽí—Þ"
 
-#: Src/wptProxySettingsDlg.cpp:193
+#: Src/wptProxySettingsDlg.cpp:197
 msgid "Authentication"
 msgstr "”FØ"
 
-#: Src/wptProxySettingsDlg.cpp:228
+#: Src/wptProxySettingsDlg.cpp:232
 msgid "Please fill out all required fields for authentication."
 msgstr "”FØ‚·‚邽‚É‚ß‘S€–Ú‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
 
@@ -5884,7 +5908,7 @@
 "‚»‚ê‚ðã‘‚«‚µ‚Ü‚·‚©H"
 
 # c:\oss\winpt\src\wptRegistry.cpp:492
-#: Src/wptRegistry.cpp:599
+#: Src/wptRegistry.cpp:596
 msgid "Could not write to Registry."
 msgstr "ƒŒƒMƒXƒgƒŠ‚ɏ‘‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
 
@@ -5949,6 +5973,33 @@
 msgid "Signed"
 msgstr "–¼‚µ‚Ü‚µ‚½"
 
+#~ msgid "Select &wipe mode"
+#~ msgstr "Žæ‚èÁ‚·uwipevƒ‚[ƒh‘I‘ð(&W)"
+
+# c:\oss\winpt\src\wptKeyPropsDlg.cpp:171
+#~ msgid ""
+#~ "The status of this key is 'revoked' or 'expired'.\n"
+#~ "You cannot change the ownertrust of such keys."
+#~ msgstr ""
+#~ "‚±‚̃L[‚̏󋵂͖³Œø 'revoked' ‚Ü‚½‚ÍŠúŒÀØ‚ê 'expired'‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B\n"
+#~ "‚±‚ê‚ç‚̃L[‚̏Š—LŽÒ‚̐M—Š(ownertrust)‚ð•ÏX‚Å‚«‚Ü‚¹‚ñB"
+
+# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1092
+#~ msgid ""
+#~ "\"Subkey %s.\"\n"
+#~ "\n"
+#~ "Anything encrypted to the selected subkey will no longer\n"
+#~ "be able to be decrypted.\n"
+#~ "\n"
+#~ "Do you really want to delete this subkey?"
+#~ msgstr ""
+#~ "\"ƒTƒuƒL[ %sB\"\n"
+#~ "\n"
+#~ "ƒTƒuƒL[‚Ɉ͆‰»‚µ‚½‚à‚͍̂ĂÑ\n"
+#~ "•œ†‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB\n"
+#~ "\n"
+#~ "‚±‚̃TƒuƒL[‚ð–{“–‚ɍ폜‚µ‚Ü‚·‚©H"
+
 # c:\oss\winpt\src\wptErrors.cpp:102
 #~ msgid "Could not lock or unlock volume"
 #~ msgstr "ƒ{ƒŠƒ…[ƒ€‚ðƒƒbƒN‚Ü‚½‚̓Aƒ“ƒƒbƒN‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"

Modified: trunk/Po/pt_BR.po
===================================================================
--- trunk/Po/pt_BR.po	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Po/pt_BR.po	2006-12-08 10:22:17 UTC (rev 273)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: WinPT 1.0.0\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-11-04 14:17+0100\n"
+"POT-Creation-Date: 2006-12-07 14:51+0100\n"
 "PO-Revision-Date: 2006-06-14 22:00-0300\n"
 "Last-Translator: Eduardo S. Dobay <edudobay at gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldp-br at bazar.conectiva.com.br>\n"
@@ -24,29 +24,33 @@
 msgid "Could not create GPG home directory"
 msgstr "Não foi possível criar o diretório pessoal GPG"
 
-#: Src/WinPT.cpp:197 Src/WinPT.cpp:276 Src/WinPT.cpp:280 Src/WinPT.cpp:521
-#: Src/WinPT.cpp:530 Src/WinPT.cpp:537 Src/WinPT.cpp:566 Src/WinPT.cpp:582
-#: Src/WinPT.cpp:591 Src/WinPT.cpp:595 Src/WinPT.cpp:612 Src/WinPT.cpp:681
-#: Src/WinPT.cpp:694 Src/WinPT.cpp:741 Src/WinPT.cpp:784 Src/WinPT.cpp:803
-#: Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144 Src/wptGPG.cpp:922
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:944 Src/wptGPG.cpp:955
+#: Src/WinPT.cpp:197 Src/WinPT.cpp:298 Src/WinPT.cpp:302 Src/WinPT.cpp:543
+#: Src/WinPT.cpp:552 Src/WinPT.cpp:559 Src/WinPT.cpp:582 Src/WinPT.cpp:592
+#: Src/WinPT.cpp:608 Src/WinPT.cpp:617 Src/WinPT.cpp:621 Src/WinPT.cpp:638
+#: Src/WinPT.cpp:707 Src/WinPT.cpp:720 Src/WinPT.cpp:767 Src/WinPT.cpp:810
+#: Src/WinPT.cpp:828 Src/wptCommonDlg.cpp:224 Src/wptErrors.cpp:144
+#: Src/wptGPG.cpp:929 Src/wptGPG.cpp:941 Src/wptGPG.cpp:951 Src/wptGPG.cpp:962
 #: Src/wptMainProc.cpp:346 Src/wptMainProc.cpp:519
 msgid "WinPT Error"
 msgstr "Erro WinPT"
 
-#: Src/WinPT.cpp:225
+#: Src/WinPT.cpp:233
 msgid "No useable secret key found."
 msgstr "Não foi encontrada nenhuma chave secreta utilizável."
 
-#: Src/WinPT.cpp:226 Src/wptKeyPropsDlg.cpp:357 Src/wptKeyPropsDlg.cpp:364
+#: Src/WinPT.cpp:234 Src/WinPT.cpp:245 Src/wptKeyPropsDlg.cpp:370
 msgid "WinPT Warning"
 msgstr "Aviso do WinPT"
 
-#: Src/WinPT.cpp:275
+#: Src/WinPT.cpp:244
+msgid "Default secret key is unuseable"
+msgstr ""
+
+#: Src/WinPT.cpp:297
 msgid "Could not read GnuPG version."
 msgstr "Não foi possível ler a versão do GnuPG"
 
-#: Src/WinPT.cpp:281
+#: Src/WinPT.cpp:303
 #, c-format
 msgid ""
 "Sorry, you need a newer GPG version.\n"
@@ -55,12 +59,12 @@
 "Desculpe, você precisa de uma versão mais nova do GPG.\n"
 "Versão GPG %d.%d.%d; versão requisitada do GPG "
 
-#: Src/WinPT.cpp:315
+#: Src/WinPT.cpp:337
 msgid "Failed to create WinPT directory"
 msgstr "Não foi possível criar o diretório do WinPT"
 
-#: Src/WinPT.cpp:316 Src/WinPT.cpp:333 Src/WinPT.cpp:344
-#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:638
+#: Src/WinPT.cpp:338 Src/WinPT.cpp:355 Src/WinPT.cpp:366
+#: Src/wptKeyManagerDlg.cpp:996 Src/wptKeyserver.cpp:642
 #: Src/wptKeyserverDlg.cpp:71 Src/wptKeyserverDlg.cpp:73
 #: Src/wptKeyserverDlg.cpp:190 Src/wptKeyserverDlg.cpp:198
 #: Src/wptKeyserverDlg.cpp:214 Src/wptKeyserverDlg.cpp:392
@@ -72,26 +76,33 @@
 msgid "Keyserver"
 msgstr "Servidor de chaves"
 
-#: Src/WinPT.cpp:332
+#: Src/WinPT.cpp:354
 msgid "Failed to copy the keyserver.conf"
 msgstr "Não foi possível copiar keyserver.conf"
 
-#: Src/WinPT.cpp:522
+#: Src/WinPT.cpp:544
 #, c-format
 msgid ""
 "The PTD.dll file has a different version than WinPT.exe\n"
 "Please update the PTD.dll to version %d.%d.%d"
 msgstr ""
 
-#: Src/WinPT.cpp:529
+#: Src/WinPT.cpp:551
 msgid "Cryptographic selftest failed."
 msgstr "Auto-teste criptográfico falhou."
 
-#: Src/WinPT.cpp:536
+#: Src/WinPT.cpp:558
 msgid "A newer GPGME version is needed; at least "
 msgstr "Uma versão mais nova do GPGME é necessária: pelo menos "
 
-#: Src/WinPT.cpp:567
+#: Src/WinPT.cpp:579
+msgid ""
+"The gpg.conf file contains the 'textmode' option\n"
+"which leads to broken binary output during decryption.\n"
+"If this is on purpose, just continue otherwise the option should be disabled."
+msgstr ""
+
+#: Src/WinPT.cpp:593
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -102,16 +113,16 @@
 "Por favor verifique as configurações de registro do GPG:\n"
 "%s."
 
-#: Src/WinPT.cpp:571
+#: Src/WinPT.cpp:597
 msgid "Select GPG Public Keyring"
 msgstr "Selecionar chaveiro público do GPG"
 
-#: Src/WinPT.cpp:581
+#: Src/WinPT.cpp:607
 #, fuzzy
 msgid "GPG home directory could not be determined."
 msgstr "O diretório pessoal do GPG não pôde ser determinado."
 
-#: Src/WinPT.cpp:589
+#: Src/WinPT.cpp:615
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
@@ -119,7 +130,7 @@
 "Não foi possível achar o executável do GPG (gpg.exe).\n"
 "Você deseja verificar as preferências do GPG para corrigir este problema?"
 
-#: Src/WinPT.cpp:604
+#: Src/WinPT.cpp:630
 #, fuzzy
 msgid ""
 "Could not access and/or find the public and secret keyring.\n"
@@ -132,20 +143,20 @@
 "\n"
 "Continue se você quiser que o WinPT ofereça mais opções.\n"
 
-#: Src/WinPT.cpp:637 Src/wptFileManagerDlg.cpp:520
-#: Src/wptFileManagerDlg.cpp:837
+#: Src/WinPT.cpp:663 Src/wptFileManagerDlg.cpp:520
+#: Src/wptFileManagerDlg.cpp:861
 msgid "Wipe Free Space"
 msgstr "Triturar espaço livre"
 
-#: Src/WinPT.cpp:680
+#: Src/WinPT.cpp:706
 msgid "Could not register window class"
 msgstr "Não foi possível registrar a classe de janela"
 
-#: Src/WinPT.cpp:694
+#: Src/WinPT.cpp:720
 msgid "Could not create window"
 msgstr "Não foi possível criar a janela"
 
-#: Src/WinPT.cpp:782
+#: Src/WinPT.cpp:808
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
@@ -153,7 +164,7 @@
 "O cache de chaves não foi inicializado ou está vazio.\n"
 "Por favor verifique sua configuração do GPG (chaveiros, diretórios...)"
 
-#: Src/WinPT.cpp:785
+#: Src/WinPT.cpp:811
 #, fuzzy
 msgid ""
 "It seems that GPG is not configured properly.\n"
@@ -162,13 +173,14 @@
 "Parece que o GPG não está configurado corretamente.\n"
 "Você deseja iniciar a janela de preferências do GPG?"
 
-#: Src/WinPT.cpp:804
-#, c-format
+#: Src/WinPT.cpp:829
+#, fuzzy, c-format
 msgid ""
-"Default key (from the GPG config file) could not be found.\n"
-"Please check your gpg.conf or set a new default key to correct it:\n"
+"Default key (from the GPG config file) could not be found or is unuseable.\n"
+"The default key will be resetted and can be set later in the Key Manager "
+"again.\n"
 "\n"
-"%s: public key not found."
+"%s: secret key not found."
 msgstr ""
 "Chave padrão (do arquivo de configuração do GPG) não pôde ser encontrada.\n"
 "Por favor verifique o arquivo gpg.conf ou especifique uma nova chave padrão "
@@ -184,7 +196,7 @@
 msgid "About GnuPG"
 msgstr "Sobre o GnuPG"
 
-#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1890
+#: Src/wptAboutDlgs.cpp:89 Src/wptKeyManagerDlg.cpp:1943
 #: Src/wptMainProc.cpp:568
 msgid "About WinPT"
 msgstr "Sobre o WinPT"
@@ -239,7 +251,7 @@
 msgid "&About GPG..."
 msgstr "&Sobre o GPG..."
 
-#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2152
+#: Src/wptAboutDlgs.cpp:110 Src/wptKeyEditDlgs.cpp:2178
 #: Src/wptKeyManagerDlg.cpp:1002
 msgid "&Help"
 msgstr "A&juda"
@@ -338,12 +350,12 @@
 msgid "&Sex"
 msgstr "&Salvar"
 
-#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2154
+#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:256 Src/wptKeyEditDlgs.cpp:2180
 #: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
 msgid "&OK"
 msgstr "&OX"
 
-#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:59
+#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:51
 #, fuzzy
 msgid "&Exit"
 msgstr "Sair"
@@ -400,7 +412,7 @@
 msgid "Make off-card backup of encryption key"
 msgstr "Fazer backup da chave de cifragem fora do cartão"
 
-#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1833
 msgid "Card Key Generation"
 msgstr "Geração da chave do cartão"
 
@@ -428,7 +440,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Por favor use caracteres ASCII puros para os campos."
 
-#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1389 Src/wptKeygenDlg.cpp:457
 #, fuzzy
 msgid "The date you have chosen has already passed."
 msgstr "A data escolhida está no passado."
@@ -491,33 +503,34 @@
 "Por favor insira o smart card do OpenPGP\n"
 "Pressione OK para continuar ou Cancelar"
 
-#: Src/wptClipDecryptDlg.cpp:60 Src/wptClipDecryptDlg.cpp:177
-#: Src/wptKeyRevokersDlg.cpp:129 Src/wptKeyRevokersDlg.cpp:173
-#: Src/wptVerifyList.cpp:257 Src/wptVerifyList.cpp:319
+#: Src/wptClipDecryptDlg.cpp:55 Src/wptClipDecryptDlg.cpp:136
+#: Src/wptClipDecryptDlg.cpp:179 Src/wptKeyRevokersDlg.cpp:129
+#: Src/wptKeyRevokersDlg.cpp:173 Src/wptVerifyList.cpp:257
+#: Src/wptVerifyList.cpp:319
 msgid "user ID not found"
 msgstr "ID de usuário não encontrada"
 
-#: Src/wptClipDecryptDlg.cpp:108
+#: Src/wptClipDecryptDlg.cpp:105
 #, fuzzy
 msgid "Signature status: created with a fully trusted key"
 msgstr "Estado da assinatura: criada com uma chave totalmente confiável"
 
-#: Src/wptClipDecryptDlg.cpp:110
+#: Src/wptClipDecryptDlg.cpp:107
 #, fuzzy
 msgid "Signature status: created with a marginal trusted key"
 msgstr "Estado da assinatura: criada com uma chave pouco confiável"
 
-#: Src/wptClipDecryptDlg.cpp:113
+#: Src/wptClipDecryptDlg.cpp:111
 #, fuzzy
 msgid "Signature status: created with an UNTRUSTED key"
 msgstr "Estado da assinatura: criada com uma chave NÃO CONFIÁVEL"
 
-#: Src/wptClipDecryptDlg.cpp:116
+#: Src/wptClipDecryptDlg.cpp:114
 #, fuzzy
 msgid "Signature status: created with an undefined trusted key"
 msgstr "Estado da assinatura: criada com uma chave de confiança indefinida"
 
-#: Src/wptClipDecryptDlg.cpp:126
+#: Src/wptClipDecryptDlg.cpp:124
 #, c-format
 msgid ""
 "*** PGP SIGNATURE VERIFICATION ***\r\n"
@@ -529,17 +542,17 @@
 "*** BEGIN PGP DECRYPTED TEXT ***\r\n"
 msgstr ""
 
-#: Src/wptClipDecryptDlg.cpp:133
+#: Src/wptClipDecryptDlg.cpp:131
 msgid ""
 "\r\n"
 "*** END PGP DECRYPTED TEXT ***"
 msgstr ""
 
-#: Src/wptClipDecryptDlg.cpp:181
+#: Src/wptClipDecryptDlg.cpp:183
 msgid "Decrypt Verify"
 msgstr "Verificação de decifragem"
 
-#: Src/wptClipDecryptDlg.cpp:182
+#: Src/wptClipDecryptDlg.cpp:184
 #, fuzzy, c-format
 msgid ""
 "%s\n"
@@ -553,25 +566,25 @@
 "Assinatura faita: %s\n"
 "De \"%s\" usando chave de ID 0x%s%s %s"
 
-#: Src/wptClipDecryptDlg.cpp:216 Src/wptClipVerifyDlg.cpp:159
+#: Src/wptClipDecryptDlg.cpp:218 Src/wptClipVerifyDlg.cpp:159
 #: Src/wptClipVerifyDlg.cpp:170 Src/wptClipVerifyDlg.cpp:186
 #: Src/wptClipVerifyDlg.cpp:203 Src/wptClipVerifyDlg.cpp:214
-#: Src/wptFileManager.cpp:1671 Src/wptFileManager.cpp:1736
-#: Src/wptFileManager.cpp:1756 Src/wptFileManagerDlg.cpp:597
+#: Src/wptFileManager.cpp:1670 Src/wptFileManager.cpp:1735
+#: Src/wptFileManager.cpp:1755 Src/wptFileManagerDlg.cpp:597
 #: Src/wptFileVerifyDlg.cpp:127 Src/wptKeyserverDlg.cpp:276
 #: Src/wptKeyserverDlg.cpp:284 Src/wptMainProc.cpp:208 Src/wptMainProc.cpp:224
 #: Src/wptMainProc.cpp:234 Src/wptMainProc.cpp:404
 msgid "Verify"
 msgstr "Verificar"
 
-#: Src/wptClipDecryptDlg.cpp:223 Src/wptClipDecryptDlg.cpp:236
-#: Src/wptClipDecryptDlg.cpp:244 Src/wptClipDecryptDlg.cpp:251
-#: Src/wptClipDecryptDlg.cpp:253 Src/wptFileManager.cpp:1378
-#: Src/wptFileManager.cpp:1429
+#: Src/wptClipDecryptDlg.cpp:225 Src/wptClipDecryptDlg.cpp:238
+#: Src/wptClipDecryptDlg.cpp:246 Src/wptClipDecryptDlg.cpp:253
+#: Src/wptClipDecryptDlg.cpp:255 Src/wptFileManager.cpp:1377
+#: Src/wptFileManager.cpp:1428
 msgid "Decryption"
 msgstr "Decifragem"
 
-#: Src/wptClipDecryptDlg.cpp:237 Src/wptFileManager.cpp:1430
+#: Src/wptClipDecryptDlg.cpp:239 Src/wptFileManager.cpp:1429
 #, fuzzy, c-format
 msgid ""
 "Encrypted with %s key, ID 0x%s.%s\n"
@@ -580,18 +593,18 @@
 "Cifrado com chave %s, ID %s.%s\n"
 "Decifragem falhou: chave privada indisponível."
 
-#: Src/wptClipDecryptDlg.cpp:244
+#: Src/wptClipDecryptDlg.cpp:246
 #, c-format
 msgid "Unsupported algorithm: %s"
 msgstr "Algoritmo não suportado: %s"
 
-#: Src/wptClipDecryptDlg.cpp:250
+#: Src/wptClipDecryptDlg.cpp:252
 msgid "Broken OpenPGP message (maybe: quoted printable character in armor)."
 msgstr ""
 "Mensagem OpenPGP quebrada (possivelmente: caracteres quoted-printable em "
 "guarda)."
 
-#: Src/wptClipDecryptDlg.cpp:260
+#: Src/wptClipDecryptDlg.cpp:262
 #, fuzzy
 msgid ""
 "WARNING: encrypted message has been manipulated!\n"
@@ -606,11 +619,11 @@
 "É possível que os dados tenham sidos corrompidos durante o transporte\n"
 "mas também é possível que isso seja parte de um ataque."
 
-#: Src/wptClipDecryptDlg.cpp:265
+#: Src/wptClipDecryptDlg.cpp:267
 msgid "*** IMPORTANT ***"
 msgstr "*** IMPORTANTE ***"
 
-#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
+#: Src/wptClipDecryptDlg.cpp:271 Src/wptClipEncryptDlg.cpp:221
 #: Src/wptClipSignDlg.cpp:118 Src/wptClipSignDlg.cpp:264
 #: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
 #: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:962 Src/wptSymEnc.cpp:94
@@ -685,26 +698,26 @@
 msgid "Clipboard Editor"
 msgstr "Editor da área de transferência"
 
-#: Src/wptClipEncryptDlg.cpp:99
+#: Src/wptClipEncryptDlg.cpp:104
 #, fuzzy
 msgid "key not found"
 msgstr "ID de usuário não encontrada"
 
-#: Src/wptClipEncryptDlg.cpp:118
+#: Src/wptClipEncryptDlg.cpp:123
 msgid "Recipients unsuable for encryption:\n"
 msgstr "Destinatários inutilizáveis para cifragem:\n"
 
-#: Src/wptClipEncryptDlg.cpp:134 Src/wptClipEncryptDlg.cpp:156
-#: Src/wptClipEncryptDlg.cpp:206 Src/wptClipEncryptDlg.cpp:213
-#: Src/wptClipEncryptDlg.cpp:239 Src/wptMainProc.cpp:172
+#: Src/wptClipEncryptDlg.cpp:139 Src/wptClipEncryptDlg.cpp:161
+#: Src/wptClipEncryptDlg.cpp:211 Src/wptClipEncryptDlg.cpp:218
+#: Src/wptClipEncryptDlg.cpp:244 Src/wptMainProc.cpp:172
 msgid "Encryption"
 msgstr "Cifragem"
 
-#: Src/wptClipEncryptDlg.cpp:157
+#: Src/wptClipEncryptDlg.cpp:162
 msgid "&Find"
 msgstr "&Localizar"
 
-#: Src/wptClipEncryptDlg.cpp:158 Src/wptClipSignEncDlg.cpp:112
+#: Src/wptClipEncryptDlg.cpp:163 Src/wptClipSignEncDlg.cpp:112
 #: Src/wptCommonDlg.cpp:80 Src/wptCommonDlg.cpp:257
 #: Src/wptFileManagerDlg.cpp:97 Src/wptFileManagerDlg.cpp:226
 #: Src/wptFileManagerDlg.cpp:288 Src/wptFileSaveDlg.cpp:59
@@ -716,15 +729,15 @@
 #: Src/wptKeyserverDlg.cpp:549 Src/wptKeyserverSearchDlg.cpp:66
 #: Src/wptKeysignDlg.cpp:362 Src/wptPassphraseCB.cpp:95
 #: Src/wptPassphraseDlg.cpp:104 Src/wptPINDlg.cpp:54
-#: Src/wptPreferencesDlg.cpp:134 Src/wptTextInputDlg.cpp:86
+#: Src/wptPreferencesDlg.cpp:120 Src/wptTextInputDlg.cpp:86
 msgid "&Cancel"
 msgstr "&Cancelar"
 
-#: Src/wptClipEncryptDlg.cpp:205 Src/wptClipSignEncDlg.cpp:150
+#: Src/wptClipEncryptDlg.cpp:210 Src/wptClipSignEncDlg.cpp:150
 msgid "You must select at least one key."
 msgstr "Você deve selecionar pelo menos uma chave."
 
-#: Src/wptClipEncryptDlg.cpp:240
+#: Src/wptClipEncryptDlg.cpp:245
 #, c-format
 msgid "No recipient found with '%s'"
 msgstr "Nenhum destinatário encontrado com '%s'"
@@ -743,8 +756,8 @@
 #: Src/wptClipSignDlg.cpp:156 Src/wptClipSignDlg.cpp:224
 #: Src/wptClipSignDlg.cpp:228 Src/wptClipSignDlg.cpp:248
 #: Src/wptClipSignDlg.cpp:259 Src/wptClipSignEncDlg.cpp:159
-#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1188
-#: Src/wptFileManager.cpp:1204 Src/wptFileManager.cpp:1494
+#: Src/wptClipSignEncDlg.cpp:170 Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1203 Src/wptFileManager.cpp:1493
 #: Src/wptMainProc.cpp:179
 msgid "Signing"
 msgstr "Assinar"
@@ -776,7 +789,7 @@
 msgid "Signing key:"
 msgstr "Chave para assinatura:"
 
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1225
 msgid "No key was selected."
 msgstr "Nenhuma chave foi selecionada."
 
@@ -785,7 +798,7 @@
 msgstr "Informações da assinatura"
 
 #: Src/wptClipVerifyDlg.cpp:160 Src/wptFileVerifyDlg.cpp:52
-#: Src/wptGPGOptDlg.cpp:57
+#: Src/wptGPGOptDlg.cpp:49
 msgid "&Save"
 msgstr "&Salvar"
 
@@ -818,35 +831,35 @@
 msgid "Enter URL to retrieve the public key"
 msgstr "Coloque a URL para recuperar a chave pública"
 
-#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:755
-#: Src/wptKeyEditDlgs.cpp:823 Src/wptKeyEditDlgs.cpp:864
-#: Src/wptKeyEditDlgs.cpp:877 Src/wptKeyEditDlgs.cpp:879
-#: Src/wptKeyEditDlgs.cpp:905 Src/wptKeyEditDlgs.cpp:935
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyEditDlgs.cpp:1012
-#: Src/wptKeyEditDlgs.cpp:1019 Src/wptKeyEditDlgs.cpp:1039
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1292 Src/wptKeyEditDlgs.cpp:1299
-#: Src/wptKeyEditDlgs.cpp:1334 Src/wptKeyEditDlgs.cpp:1339
-#: Src/wptKeyEditDlgs.cpp:1349 Src/wptKeyEditDlgs.cpp:1364
-#: Src/wptKeyEditDlgs.cpp:1368 Src/wptKeyEditDlgs.cpp:1407
-#: Src/wptKeyEditDlgs.cpp:1412 Src/wptKeyEditDlgs.cpp:1419
-#: Src/wptKeyEditDlgs.cpp:1425 Src/wptKeyEditDlgs.cpp:1430
-#: Src/wptKeyEditDlgs.cpp:1473 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1485 Src/wptKeyEditDlgs.cpp:1492
-#: Src/wptKeyEditDlgs.cpp:1495 Src/wptKeyEditDlgs.cpp:1535
-#: Src/wptKeyEditDlgs.cpp:1543 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1599 Src/wptKeyEditDlgs.cpp:1708
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1781
-#: Src/wptKeyEditDlgs.cpp:1786 Src/wptKeyEditDlgs.cpp:1796
-#: Src/wptKeyEditDlgs.cpp:1901 Src/wptKeyEditDlgs.cpp:1903
-#: Src/wptKeyEditDlgs.cpp:1919 Src/wptKeyEditDlgs.cpp:1921
-#: Src/wptKeyEditDlgs.cpp:1956 Src/wptKeyEditDlgs.cpp:1964
-#: Src/wptKeyEditDlgs.cpp:1980 Src/wptKeyEditDlgs.cpp:1994
-#: Src/wptKeyEditDlgs.cpp:1998 Src/wptKeyEditDlgs.cpp:2065
-#: Src/wptKeyEditDlgs.cpp:2128 Src/wptKeyEditDlgs.cpp:2142
-#: Src/wptKeyEditDlgs.cpp:2157 Src/wptKeyEditDlgs.cpp:2197
-#: Src/wptKeyEditDlgs.cpp:2202 Src/wptKeyManagerDlg.cpp:1031
-#: Src/wptKeyManagerDlg.cpp:1919
+#: Src/wptCommonDlg.cpp:138 Src/wptKeyEditDlgs.cpp:758
+#: Src/wptKeyEditDlgs.cpp:826 Src/wptKeyEditDlgs.cpp:867
+#: Src/wptKeyEditDlgs.cpp:881 Src/wptKeyEditDlgs.cpp:883
+#: Src/wptKeyEditDlgs.cpp:909 Src/wptKeyEditDlgs.cpp:939
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1024 Src/wptKeyEditDlgs.cpp:1044
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1310 Src/wptKeyEditDlgs.cpp:1326
+#: Src/wptKeyEditDlgs.cpp:1360 Src/wptKeyEditDlgs.cpp:1365
+#: Src/wptKeyEditDlgs.cpp:1375 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptKeyEditDlgs.cpp:1394 Src/wptKeyEditDlgs.cpp:1433
+#: Src/wptKeyEditDlgs.cpp:1438 Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyEditDlgs.cpp:1451 Src/wptKeyEditDlgs.cpp:1456
+#: Src/wptKeyEditDlgs.cpp:1499 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1518
+#: Src/wptKeyEditDlgs.cpp:1521 Src/wptKeyEditDlgs.cpp:1561
+#: Src/wptKeyEditDlgs.cpp:1569 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1625 Src/wptKeyEditDlgs.cpp:1734
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1807
+#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeyEditDlgs.cpp:1822
+#: Src/wptKeyEditDlgs.cpp:1927 Src/wptKeyEditDlgs.cpp:1929
+#: Src/wptKeyEditDlgs.cpp:1945 Src/wptKeyEditDlgs.cpp:1947
+#: Src/wptKeyEditDlgs.cpp:1982 Src/wptKeyEditDlgs.cpp:1990
+#: Src/wptKeyEditDlgs.cpp:2006 Src/wptKeyEditDlgs.cpp:2020
+#: Src/wptKeyEditDlgs.cpp:2024 Src/wptKeyEditDlgs.cpp:2091
+#: Src/wptKeyEditDlgs.cpp:2154 Src/wptKeyEditDlgs.cpp:2168
+#: Src/wptKeyEditDlgs.cpp:2183 Src/wptKeyEditDlgs.cpp:2223
+#: Src/wptKeyEditDlgs.cpp:2228 Src/wptKeyManagerDlg.cpp:1031
+#: Src/wptKeyManagerDlg.cpp:1972
 msgid "Key Edit"
 msgstr "Editar chave"
 
@@ -1033,10 +1046,10 @@
 #: Src/wptFileManager.cpp:131 Src/wptFileManager.cpp:153
 #: Src/wptFileManager.cpp:159 Src/wptFileManager.cpp:199
 #: Src/wptFileManager.cpp:325 Src/wptFileManager.cpp:747
-#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1030
-#: Src/wptFileManager.cpp:1580 Src/wptFileManager.cpp:1607
-#: Src/wptFileManager.cpp:1626 Src/wptFileManager.cpp:1911
-#: Src/wptFileManager.cpp:1973 Src/wptFileManagerDlg.cpp:530
+#: Src/wptFileManager.cpp:915 Src/wptFileManager.cpp:1045
+#: Src/wptFileManager.cpp:1579 Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1625 Src/wptFileManager.cpp:1910
+#: Src/wptFileManager.cpp:1972 Src/wptFileManagerDlg.cpp:530
 #: Src/wptFileManagerDlg.cpp:640 Src/wptFileStatDlg.cpp:152
 #: Src/wptMainProc.cpp:393 Src/wptMDSumDlg.cpp:276 Src/wptMDSumDlg.cpp:281
 msgid "File Manager"
@@ -1077,12 +1090,12 @@
 "É possível desativar a compressão para esses arquivos.\n"
 "Você deseja desabilitá-la?"
 
-#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1075
+#: Src/wptFileManager.cpp:415 Src/wptKeyEditDlgs.cpp:1080
 #: Src/wptVerifyList.cpp:169
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1156
+#: Src/wptFileManager.cpp:416 Src/wptKeyEditDlgs.cpp:1161
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:190
 #: Src/wptVerifyList.cpp:168
 msgid "Name"
@@ -1105,64 +1118,64 @@
 "\"%s\" não parece ser um arquivo de texto.\n"
 "Você realmente deseja fazer uma assinatura de texto puro?"
 
-#: Src/wptFileManager.cpp:1031
+#: Src/wptFileManager.cpp:1046
 #, c-format
 msgid "\"%s\" does not exist"
 msgstr "\"%s\" não existe"
 
-#: Src/wptFileManager.cpp:1114 Src/wptFileStatDlg.cpp:282
+#: Src/wptFileManager.cpp:1113 Src/wptFileStatDlg.cpp:282
 #: Src/wptFileStatDlg.cpp:286
 msgid "File Status"
 msgstr "Estado do arquivo"
 
-#: Src/wptFileManager.cpp:1157
+#: Src/wptFileManager.cpp:1156
 #, fuzzy
 msgid "Enter Filename for Encrypted File"
 msgstr "Insira o nome para o arquivo cifrado"
 
-#: Src/wptFileManager.cpp:1187
+#: Src/wptFileManager.cpp:1186
 msgid "Could not get default secret key."
 msgstr "Não foi possível obter a chave secreta padrão."
 
-#: Src/wptFileManager.cpp:1218 Src/wptFileManager.cpp:1530
+#: Src/wptFileManager.cpp:1217 Src/wptFileManager.cpp:1529
 #: Src/wptFileManagerDlg.cpp:595 Src/wptMainProc.cpp:156
 #: Src/wptMainProc.cpp:401 Src/wptMainProc.cpp:408
 msgid "Sign"
 msgstr "Assinar"
 
-#: Src/wptFileManager.cpp:1231 Src/wptFileManagerDlg.cpp:593
+#: Src/wptFileManager.cpp:1230 Src/wptFileManagerDlg.cpp:593
 #: Src/wptMainProc.cpp:400 Src/wptMainProc.cpp:405
 msgid "Encrypt"
 msgstr "Cifrar"
 
-#: Src/wptFileManager.cpp:1258 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
+#: Src/wptFileManager.cpp:1257 Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:92
 msgid "Symmetric Encryption"
 msgstr "Cifragem simétrica"
 
-#: Src/wptFileManager.cpp:1291 Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1290 Src/wptFileManager.cpp:1295
 #: Src/wptMainProc.cpp:399 Src/wptMainProc.cpp:409
 msgid "Symmetric"
 msgstr "Simétrica"
 
-#: Src/wptFileManager.cpp:1296
+#: Src/wptFileManager.cpp:1295
 msgid "Encryption failed."
 msgstr "Cifragem falhou."
 
-#: Src/wptFileManager.cpp:1387
+#: Src/wptFileManager.cpp:1386
 msgid "Choose Filename for Output"
 msgstr "Escolha nome de arquivo para saída"
 
-#: Src/wptFileManager.cpp:1396
+#: Src/wptFileManager.cpp:1395
 #, fuzzy
 msgid "Enter Filename for Plaintext File"
 msgstr "Insira nome de arquivo de texto puro"
 
-#: Src/wptFileManager.cpp:1438 Src/wptFileManager.cpp:1458
+#: Src/wptFileManager.cpp:1437 Src/wptFileManager.cpp:1457
 #: Src/wptFileManagerDlg.cpp:594
 msgid "Decrypt"
 msgstr "Decifrar"
 
-#: Src/wptFileManager.cpp:1444
+#: Src/wptFileManager.cpp:1443
 #, c-format
 msgid ""
 "Decryption failed.\n"
@@ -1171,7 +1184,7 @@
 "Decifragem falhou.\n"
 "%s: não existe."
 
-#: Src/wptFileManager.cpp:1459
+#: Src/wptFileManager.cpp:1458
 #, c-format
 msgid ""
 "The original file name is '%s'.\n"
@@ -1182,42 +1195,42 @@
 "\n"
 "Você deseja usá-lo em vez de '%s'?"
 
-#: Src/wptFileManager.cpp:1507
+#: Src/wptFileManager.cpp:1506
 #, fuzzy
 msgid "Enter Filename for Signed File"
 msgstr "Insira nome para arquivo assinado"
 
-#: Src/wptFileManager.cpp:1606
+#: Src/wptFileManager.cpp:1605
 msgid "Could not find detached signature in the clipboard."
 msgstr "Não foi possível achar assinatura destacada na área de transferéncia."
 
-#: Src/wptFileManager.cpp:1626
+#: Src/wptFileManager.cpp:1625
 msgid "No files to check."
 msgstr "Sem arquivos para verificar."
 
-#: Src/wptFileManager.cpp:1643
+#: Src/wptFileManager.cpp:1642
 msgid "Select Data File"
 msgstr "Selecionar arquivo de dados"
 
-#: Src/wptFileManager.cpp:1645
+#: Src/wptFileManager.cpp:1644
 msgid "Selected Output File"
 msgstr "Selecionar arquivo de saída"
 
-#: Src/wptFileManager.cpp:1671
+#: Src/wptFileManager.cpp:1670
 msgid "Invalid file name. Exit"
 msgstr "Nome de arquivo inválido. Saindo"
 
-#: Src/wptFileManager.cpp:1804 Src/wptFileManager.cpp:1815
-#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:404
-#: Src/wptImportList.cpp:411 Src/wptImportList.cpp:421
-#: Src/wptImportList.cpp:429 Src/wptImportList.cpp:438
+#: Src/wptFileManager.cpp:1803 Src/wptFileManager.cpp:1814
+#: Src/wptFileManagerDlg.cpp:245 Src/wptImportList.cpp:406
+#: Src/wptImportList.cpp:413 Src/wptImportList.cpp:423
+#: Src/wptImportList.cpp:431 Src/wptImportList.cpp:440
 #: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
 #: Src/wptKeyManager.cpp:567 Src/wptKeyManager.cpp:586
 #: Src/wptKeyserverDlg.cpp:220
 msgid "Import"
 msgstr "Importar"
 
-#: Src/wptFileManager.cpp:1812
+#: Src/wptFileManager.cpp:1811
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -1229,58 +1242,58 @@
 "\n"
 "Não foi possível importar essa(s) chave(s)!"
 
-#: Src/wptFileManager.cpp:1838 Src/wptKeyManager.cpp:282
+#: Src/wptFileManager.cpp:1837 Src/wptKeyManager.cpp:282
 #: Src/wptKeyManager.cpp:325 Src/wptKeyManager.cpp:360
 msgid "No key was selected for export."
 msgstr "Nenhuma chave selecionada para exportação."
 
-#: Src/wptFileManager.cpp:1839 Src/wptFileManager.cpp:1862
+#: Src/wptFileManager.cpp:1838 Src/wptFileManager.cpp:1861
 #: Src/wptKeyserverDlg.cpp:93
 msgid "Export"
 msgstr "Exportar"
 
-#: Src/wptFileManager.cpp:1847 Src/wptKeyManagerDlg.cpp:1850
-#: Src/wptKeyManagerDlg.cpp:1882
+#: Src/wptFileManager.cpp:1846 Src/wptKeyManagerDlg.cpp:1903
+#: Src/wptKeyManagerDlg.cpp:1935
 msgid "Choose Name for Key File"
 msgstr "Escolher nome para arquivo de chaves"
 
-#: Src/wptFileManager.cpp:1866 Src/wptKeyEditDlgs.cpp:1055
-#: Src/wptKeyEditDlgs.cpp:1314 Src/wptKeyEditDlgs.cpp:1386
+#: Src/wptFileManager.cpp:1865 Src/wptKeyEditDlgs.cpp:1060
+#: Src/wptKeyEditDlgs.cpp:1340 Src/wptKeyEditDlgs.cpp:1412
 #: Src/wptKeyserverDlg.cpp:105
 msgid "GnuPG status"
 msgstr "Estado do GnuPG"
 
-#: Src/wptFileManager.cpp:1866
+#: Src/wptFileManager.cpp:1865
 #, c-format
 msgid "Finished (Output: %s)"
 msgstr "Concluído (Saída: %s)"
 
-#: Src/wptFileManager.cpp:1912
+#: Src/wptFileManager.cpp:1911
 #, c-format
 msgid "%s: no valid OpenPGP data found."
 msgstr "%s: nenhum dado OpenPGP válido encontrado."
 
-#: Src/wptFileManager.cpp:1972
+#: Src/wptFileManager.cpp:1971
 msgid "Encrypting into a ZIP archive makes sense with multiple files"
 msgstr "Cifrar para um arquivo ZIP faz sentido com mais de um arquivo"
 
-#: Src/wptFileManager.cpp:1977
+#: Src/wptFileManager.cpp:1976
 msgid "Choose File Name for Output"
 msgstr "Escolher nome de arquivo para saída"
 
-#: Src/wptFileManager.cpp:2049
+#: Src/wptFileManager.cpp:2048
 msgid "Choose a Name for the Archive"
 msgstr "Escolher nome para arquivo comprimido"
 
-#: Src/wptFileManager.cpp:2052
+#: Src/wptFileManager.cpp:2051
 msgid "Invalid archive name. Exit."
 msgstr "Nome de arquivo inválido. Saindo."
 
-#: Src/wptFileManager.cpp:2053 Src/wptFileManager.cpp:2061
+#: Src/wptFileManager.cpp:2052 Src/wptFileManager.cpp:2060
 msgid "Encrypt Directory"
 msgstr "Cifrar diretório"
 
-#: Src/wptFileManager.cpp:2060
+#: Src/wptFileManager.cpp:2059
 msgid "Could not create zip archive."
 msgstr "Não foi possível criar o arquivo zip."
 
@@ -1364,14 +1377,14 @@
 msgid "Signature mode"
 msgstr "Modo de assinatura"
 
-#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
-#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
+#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1306
+#: Src/wptKeyEditDlgs.cpp:1365 Src/wptKeyEditDlgs.cpp:1438
 #: Src/wptKeyManager.cpp:690 Src/wptKeyManager.cpp:791
-#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1657
-#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1701
-#: Src/wptKeyManagerDlg.cpp:1712 Src/wptKeyManagerDlg.cpp:1727
-#: Src/wptKeyManagerDlg.cpp:1840 Src/wptKeyManagerDlg.cpp:1859
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyManager.cpp:824 Src/wptKeyManagerDlg.cpp:1710
+#: Src/wptKeyManagerDlg.cpp:1726 Src/wptKeyManagerDlg.cpp:1754
+#: Src/wptKeyManagerDlg.cpp:1765 Src/wptKeyManagerDlg.cpp:1780
+#: Src/wptKeyManagerDlg.cpp:1893 Src/wptKeyManagerDlg.cpp:1912
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Please select a key."
 msgstr "Por favor selecione uma chave."
 
@@ -1476,27 +1489,31 @@
 msgid "This command requires admin privileges.\n"
 msgstr "Esse comando requer privilégios de administrador.\n"
 
-#: Src/wptFileManagerDlg.cpp:789
+#: Src/wptFileManagerDlg.cpp:790
 msgid "Are you sure you want to secure delete these files?"
 msgstr "Tem certeza de que deseja triturar esses arquivos?"
 
-#: Src/wptFileManagerDlg.cpp:790 Src/wptMainProc.cpp:110
+#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:110
 msgid "&Yes"
 msgstr "&Sim"
 
-#: Src/wptFileManagerDlg.cpp:791 Src/wptMainProc.cpp:111
+#: Src/wptFileManagerDlg.cpp:792 Src/wptMainProc.cpp:111
 msgid "&No"
 msgstr "&Não"
 
-#: Src/wptFileManagerDlg.cpp:834
+#: Src/wptFileManagerDlg.cpp:793
+msgid "passes"
+msgstr ""
+
+#: Src/wptFileManagerDlg.cpp:858
 msgid "Operation Status: Error"
 msgstr "Estado da operação: erro"
 
-#: Src/wptFileManagerDlg.cpp:835
+#: Src/wptFileManagerDlg.cpp:859
 msgid "Operation Status: Done."
 msgstr "Estado da operação: concluída."
 
-#: Src/wptFileManagerDlg.cpp:878
+#: Src/wptFileManagerDlg.cpp:902
 #, c-format
 msgid ""
 "Total Capacity: %12sk\n"
@@ -1549,7 +1566,7 @@
 msgid "WinPT First Start"
 msgstr "Primeira execução do WinPT"
 
-#: Src/wptGPG.cpp:836
+#: Src/wptGPG.cpp:843
 msgid ""
 "The selected keyring has the read-only file\n"
 "attribute. In this state you do not have write\n"
@@ -1559,19 +1576,19 @@
 "somente-leitura. Nesse estado você não tem acesso de\n"
 "escrita. Você deseja remover o atributo?"
 
-#: Src/wptGPG.cpp:839
+#: Src/wptGPG.cpp:846
 msgid "GPG Information"
 msgstr "Informação do GPG"
 
-#: Src/wptGPG.cpp:843
+#: Src/wptGPG.cpp:850
 msgid "Could not reset read-only state."
 msgstr "Não foi possível remover o estado somente-leitura."
 
-#: Src/wptGPG.cpp:844
+#: Src/wptGPG.cpp:851
 msgid "GPG Error"
 msgstr "Erro do GPG"
 
-#: Src/wptGPG.cpp:856
+#: Src/wptGPG.cpp:863
 msgid ""
 "You do not have file access to modify the contents of\n"
 "one or both of the selected keyrings.\n"
@@ -1585,22 +1602,22 @@
 "Os chaveiros estão num estado somente-leitura que é provavelmente\n"
 "causado por outro programa que já abriu os arquivos.\n"
 
-#: Src/wptGPG.cpp:861
+#: Src/wptGPG.cpp:868
 msgid "GPG Warning"
 msgstr "Aviso do GPG"
 
-#: Src/wptGPG.cpp:889 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
+#: Src/wptGPG.cpp:896 Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
 #: Src/wptGPGPrefsDlg.cpp:234 Src/wptGPGPrefsDlg.cpp:240
 #: Src/wptGPGPrefsDlg.cpp:245 Src/wptGPGPrefsDlg.cpp:250
 #: Src/wptGPGPrefsDlg.cpp:256 Src/wptGPGPrefsDlg.cpp:270
-#: Src/wptKeyEditDlgs.cpp:1713 Src/wptMainProc.cpp:419
-#: Src/wptPreferencesDlg.cpp:225 Src/wptPreferencesDlg.cpp:270
-#: Src/wptPreferencesDlg.cpp:282 Src/wptPreferencesDlg.cpp:295
-#: Src/wptPreferencesDlg.cpp:326 Src/wptRegistry.cpp:599
+#: Src/wptKeyEditDlgs.cpp:1739 Src/wptMainProc.cpp:419
+#: Src/wptPreferencesDlg.cpp:209 Src/wptPreferencesDlg.cpp:254
+#: Src/wptPreferencesDlg.cpp:266 Src/wptPreferencesDlg.cpp:287
+#: Src/wptPreferencesDlg.cpp:315 Src/wptRegistry.cpp:596
 msgid "Preferences"
 msgstr "Preferências"
 
-#: Src/wptGPG.cpp:890
+#: Src/wptGPG.cpp:897
 #, c-format
 msgid ""
 "%s does not exit.\n"
@@ -1609,40 +1626,40 @@
 "%s não existe.\n"
 "Você deseja criar esse diretório?"
 
-#: Src/wptGPG.cpp:918
+#: Src/wptGPG.cpp:925
 msgid "Please choose your Public Keyring"
 msgstr "Por favor escolha seu chaveiro público"
 
-#: Src/wptGPG.cpp:921 Src/wptGPG.cpp:943
+#: Src/wptGPG.cpp:928 Src/wptGPG.cpp:950
 msgid "No keyring was chosen. Exit."
 msgstr "Nenhum chaveiro foi escolhido. Saindo."
 
-#: Src/wptGPG.cpp:928
+#: Src/wptGPG.cpp:935
 msgid "Overwrite old public keyring?"
 msgstr "Sobrescrever antigo chaveiro público?"
 
-#: Src/wptGPG.cpp:934 Src/wptGPG.cpp:955
+#: Src/wptGPG.cpp:941 Src/wptGPG.cpp:962
 msgid "Could not copy file."
 msgstr "Não foi possível copiar o arquivo."
 
-#: Src/wptGPG.cpp:940
+#: Src/wptGPG.cpp:947
 msgid "Please choose your Secret Keyring"
 msgstr "Por favor escolha seu chaveiro privado"
 
-#: Src/wptGPG.cpp:949
+#: Src/wptGPG.cpp:956
 msgid "Overwrite old secret keyring?"
 msgstr "Sobrescrever antigo chaveiro privado?"
 
-#: Src/wptGPG.cpp:995 Src/wptGPG.cpp:1088 Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1002 Src/wptGPG.cpp:1095 Src/wptGPG.cpp:1111
 msgid "Backup"
 msgstr "Backup"
 
-#: Src/wptGPG.cpp:995
+#: Src/wptGPG.cpp:1002
 #, c-format
 msgid "Backup keyring \"%s\" failed"
 msgstr "Backup do chaveiro \"%s\" falhou"
 
-#: Src/wptGPG.cpp:1089
+#: Src/wptGPG.cpp:1096
 #, fuzzy, c-format
 msgid ""
 "The backup drive '%s' does not seems to be accessable.\n"
@@ -1651,7 +1668,7 @@
 "O drive de backup '%s' não parece estar acessível.\n"
 "Por favor insira/verifique o drive para continuar."
 
-#: Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1111
 #, c-format
 msgid "Invalid backup mode %d"
 msgstr "Modo de backup %d inválido"
@@ -1699,41 +1716,46 @@
 msgid "Good signature (Expired)"
 msgstr "Assinatura boa (chave expirada)"
 
-#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:42
 msgid "Could not load GnuPG config file!"
 msgstr "Não foi possível carregar o arquivo de configuração do GnuPG!"
 
-#: Src/wptGPGOptDlg.cpp:51 Src/wptGPGOptDlg.cpp:72 Src/wptGPGOptDlg.cpp:78
-#: Src/wptGPGOptDlg.cpp:83 Src/wptGPGOptDlg.cpp:87 Src/wptGPGOptDlg.cpp:94
-#: Src/wptGPGOptDlg.cpp:100
+#: Src/wptGPGOptDlg.cpp:43 Src/wptGPGOptDlg.cpp:62 Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:78 Src/wptGPGOptDlg.cpp:85 Src/wptGPGOptDlg.cpp:88
+#: Src/wptGPGOptDlg.cpp:95 Src/wptGPGOptDlg.cpp:102
 msgid "GPG Config"
 msgstr "Configuração do GPG"
 
-#: Src/wptGPGOptDlg.cpp:56
+#: Src/wptGPGOptDlg.cpp:48
 msgid "GnuPG Configuration File"
 msgstr "Arquivo de configuração do GnuPG"
 
-#: Src/wptGPGOptDlg.cpp:58 Src/wptTextInputDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:50 Src/wptTextInputDlg.cpp:87
 msgid "&Load"
 msgstr "Ca&rregar"
 
-#: Src/wptGPGOptDlg.cpp:72
+#: Src/wptGPGOptDlg.cpp:61
 msgid "The 'gpg.conf' file is not loaded."
 msgstr "O arquivo 'gpg.conf' não foi carregado."
 
-#: Src/wptGPGOptDlg.cpp:78
-msgid "File contains invalid GnuPG keywords!"
+#: Src/wptGPGOptDlg.cpp:71
+#, fuzzy
+msgid "Config contains invalid GnuPG keywords."
 msgstr "Arquivo contém palavras-chave GnuPG inválidas!"
 
-#: Src/wptGPGOptDlg.cpp:83
+#: Src/wptGPGOptDlg.cpp:77
 msgid "Could not save GnuPG config file."
 msgstr "Não foi possível salvar o arquivo de configuração do GnuPG."
 
-#: Src/wptGPGOptDlg.cpp:87
+#: Src/wptGPGOptDlg.cpp:85
 msgid "Successfully saved."
 msgstr "Salvo com sucesso."
 
-#: Src/wptGPGOptDlg.cpp:93
+#: Src/wptGPGOptDlg.cpp:87
+msgid "GnuPG returned an error while parsing the config file."
+msgstr ""
+
+#: Src/wptGPGOptDlg.cpp:94
 msgid ""
 "Current data will be lost!\n"
 "Are you sure?"
@@ -1741,7 +1763,12 @@
 "Dados atuais serão perdidos!\n"
 "Tem certeza?"
 
-#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1812
+#: Src/wptGPGOptDlg.cpp:101
+#, fuzzy
+msgid "Could not load GnuPG config file."
+msgstr "Não foi possível carregar o arquivo de configuração do GnuPG!"
+
+#: Src/wptGPGPrefsDlg.cpp:152 Src/wptKeyManagerDlg.cpp:1865
 #: Src/wptMainProc.cpp:580
 msgid "GnuPG Preferences"
 msgstr "Preferências do GnuPG"
@@ -1780,8 +1807,8 @@
 msgstr "Opções gerais do GPG"
 
 #: Src/wptGPGPrefsDlg.cpp:164 Src/wptGPGPrefsDlg.cpp:165
-#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:130
-#: Src/wptPreferencesDlg.cpp:131
+#: Src/wptGPGPrefsDlg.cpp:166 Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:117
 msgid "Browse..."
 msgstr "Localizar..."
 
@@ -1839,16 +1866,16 @@
 #: Src/wptKeyManager.cpp:838 Src/wptKeyManager.cpp:898
 #: Src/wptKeyManager.cpp:903 Src/wptKeyManager.cpp:960
 #: Src/wptKeyManager.cpp:993 Src/wptKeyManager.cpp:1077
-#: Src/wptKeyManagerDlg.cpp:1308 Src/wptKeyManagerDlg.cpp:1319
-#: Src/wptKeyManagerDlg.cpp:1329 Src/wptKeyManagerDlg.cpp:1635
-#: Src/wptKeyManagerDlg.cpp:1658 Src/wptKeyManagerDlg.cpp:1673
-#: Src/wptKeyManagerDlg.cpp:1683 Src/wptKeyManagerDlg.cpp:1691
-#: Src/wptKeyManagerDlg.cpp:1701 Src/wptKeyManagerDlg.cpp:1712
-#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1744
-#: Src/wptKeyManagerDlg.cpp:1776 Src/wptKeyManagerDlg.cpp:1841
-#: Src/wptKeyManagerDlg.cpp:1859 Src/wptKeyManagerDlg.cpp:1864
-#: Src/wptKeyManagerDlg.cpp:1869 Src/wptKeyManagerDlg.cpp:1945
-#: Src/wptKeyManagerDlg.cpp:1950 Src/wptKeyManagerDlg.cpp:2064
+#: Src/wptKeyManagerDlg.cpp:1357 Src/wptKeyManagerDlg.cpp:1368
+#: Src/wptKeyManagerDlg.cpp:1378 Src/wptKeyManagerDlg.cpp:1688
+#: Src/wptKeyManagerDlg.cpp:1711 Src/wptKeyManagerDlg.cpp:1726
+#: Src/wptKeyManagerDlg.cpp:1736 Src/wptKeyManagerDlg.cpp:1744
+#: Src/wptKeyManagerDlg.cpp:1754 Src/wptKeyManagerDlg.cpp:1765
+#: Src/wptKeyManagerDlg.cpp:1780 Src/wptKeyManagerDlg.cpp:1797
+#: Src/wptKeyManagerDlg.cpp:1829 Src/wptKeyManagerDlg.cpp:1894
+#: Src/wptKeyManagerDlg.cpp:1912 Src/wptKeyManagerDlg.cpp:1917
+#: Src/wptKeyManagerDlg.cpp:1922 Src/wptKeyManagerDlg.cpp:1998
+#: Src/wptKeyManagerDlg.cpp:2003 Src/wptKeyManagerDlg.cpp:2117
 #: Src/wptKeysigDlg.cpp:94 Src/wptKeysigDlg.cpp:106 Src/wptKeysigDlg.cpp:317
 #: Src/wptKeysigDlg.cpp:389 Src/wptKeysigDlg.cpp:399 Src/wptKeysigDlg.cpp:442
 #: Src/wptMainProc.cpp:394 Src/wptMainProc.cpp:543 Src/wptMainProc.cpp:551
@@ -1926,69 +1953,69 @@
 msgid "Unknown Hotkey"
 msgstr "Tecla de atalho desconhecida"
 
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:257
-#: Src/wptKeyEditDlgs.cpp:1129 Src/wptKeyEditDlgs.cpp:1179
-#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1444
-#: Src/wptKeyEditDlgs.cpp:1483 Src/wptKeyEditDlgs.cpp:1514
-#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1758
-#: Src/wptKeyEditDlgs.cpp:1960 Src/wptKeylist.cpp:424 Src/wptKeylist.cpp:458
+#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:257
+#: Src/wptKeyEditDlgs.cpp:1134 Src/wptKeyEditDlgs.cpp:1184
+#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1470
+#: Src/wptKeyEditDlgs.cpp:1509 Src/wptKeyEditDlgs.cpp:1540
+#: Src/wptKeyEditDlgs.cpp:1618 Src/wptKeyEditDlgs.cpp:1784
+#: Src/wptKeyEditDlgs.cpp:1986 Src/wptKeylist.cpp:425 Src/wptKeylist.cpp:459
 #: Src/wptKeyPropsDlg.cpp:152 Src/wptKeysigDlg.cpp:158
 #: Src/wptKeysigDlg.cpp:215
 msgid "Revoked"
 msgstr "Revogada"
 
-#: Src/wptImportList.cpp:268 Src/wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:1127 Src/wptKeyEditDlgs.cpp:1346
-#: Src/wptKeylist.cpp:426 Src/wptKeylist.cpp:456 Src/wptKeyPropsDlg.cpp:150
+#: Src/wptImportList.cpp:270 Src/wptKeyEditDlgs.cpp:259
+#: Src/wptKeyEditDlgs.cpp:1132 Src/wptKeyEditDlgs.cpp:1372
+#: Src/wptKeylist.cpp:427 Src/wptKeylist.cpp:457 Src/wptKeyPropsDlg.cpp:150
 #: Src/wptKeysigDlg.cpp:157 Src/wptKeysigDlg.cpp:216
 msgid "Expired"
 msgstr "Expirada"
 
-#: Src/wptImportList.cpp:272
+#: Src/wptImportList.cpp:274
 msgid "secret key"
 msgstr "chave privada"
 
-#: Src/wptImportList.cpp:274 Src/wptKeylist.cpp:462
+#: Src/wptImportList.cpp:276 Src/wptKeylist.cpp:463
 msgid "public key"
 msgstr "chave pública"
 
-#: Src/wptImportList.cpp:304 Src/wptKeyEditDlgs.cpp:1187
+#: Src/wptImportList.cpp:306 Src/wptKeyEditDlgs.cpp:1192
 msgid "Invalid user ID"
 msgstr "ID de usuário inválida"
 
-#: Src/wptImportList.cpp:345 Src/wptKeylist.cpp:579 Src/wptKeylist.cpp:587
+#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588
 #: Src/wptKeyManagerDlg.cpp:910 Src/wptKeyManagerDlg.cpp:980
 #: Src/wptKeyserverSearchDlg.cpp:58 Src/wptSigList.cpp:53
 #: Src/wptVerifyList.cpp:173
 msgid "User ID"
 msgstr "ID de usuário"
 
-#: Src/wptImportList.cpp:346 Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:590
+#: Src/wptImportList.cpp:347 Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591
 #: Src/wptKeyManagerDlg.cpp:913 Src/wptKeyserverSearchDlg.cpp:54
 msgid "Size"
 msgstr "Tamanho"
 
-#: Src/wptImportList.cpp:347 Src/wptKeyEditDlgs.cpp:1072
-#: Src/wptKeylist.cpp:580 Src/wptKeylist.cpp:588 Src/wptKeyManagerDlg.cpp:911
+#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1077
+#: Src/wptKeylist.cpp:581 Src/wptKeylist.cpp:589 Src/wptKeyManagerDlg.cpp:911
 #: Src/wptKeyManagerDlg.cpp:1004 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:56 Src/wptSigList.cpp:57
 #: Src/wptVerifyList.cpp:172
 msgid "Key ID"
 msgstr "ID da chave"
 
-#: Src/wptImportList.cpp:348 Src/wptKeyEditDlgs.cpp:1073
-#: Src/wptKeyEditDlgs.cpp:1158 Src/wptKeylist.cpp:594
+#: Src/wptImportList.cpp:349 Src/wptKeyEditDlgs.cpp:1078
+#: Src/wptKeyEditDlgs.cpp:1163 Src/wptKeylist.cpp:595
 #: Src/wptKeyManagerDlg.cpp:917 Src/wptKeyManagerDlg.cpp:1007
 #: Src/wptKeyserverSearchDlg.cpp:57 Src/wptSigList.cpp:56
 msgid "Creation"
 msgstr "Criação"
 
-#: Src/wptImportList.cpp:349 Src/wptKeylist.cpp:589
+#: Src/wptImportList.cpp:350 Src/wptKeylist.cpp:590
 #: Src/wptKeyManagerDlg.cpp:912 Src/wptKeyManagerDlg.cpp:1006
 msgid "Type"
 msgstr "Tipo"
 
-#: Src/wptImportList.cpp:419
+#: Src/wptImportList.cpp:421
 #, fuzzy
 msgid ""
 "It is possible that the ASCII-Armor is damaged\n"
@@ -2001,28 +2028,28 @@
 msgid "Load GPG Keyrings..."
 msgstr "Carregar chaveiros GPG..."
 
-#: Src/wptKeyCacheDlg.cpp:54
+#: Src/wptKeyCacheDlg.cpp:50
 msgid "WinPT Key Caching"
 msgstr "Cache de chaves do WinPT"
 
-#: Src/wptKeyCacheDlg.cpp:57
+#: Src/wptKeyCacheDlg.cpp:53
 msgid "Caching keyrings, please wait..."
 msgstr "Guardando chaveiros no cache, por favor aguarde..."
 
-#: Src/wptKeyCacheDlg.cpp:72
+#: Src/wptKeyCacheDlg.cpp:70
 msgid "Key Cache"
 msgstr "Cache de chaves"
 
-#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:391
+#: Src/wptKeyEditDlgs.cpp:228 Src/wptKeylist.cpp:392
 msgid "Ultimate"
 msgstr "Definitiva"
 
-#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1125
-#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:385
+#: Src/wptKeyEditDlgs.cpp:243 Src/wptKeyEditDlgs.cpp:1130
+#: Src/wptKeylist.cpp:244 Src/wptKeylist.cpp:386
 msgid "Never"
 msgstr "Nunca"
 
-#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1131
+#: Src/wptKeyEditDlgs.cpp:261 Src/wptKeyEditDlgs.cpp:1136
 msgid "OK"
 msgstr "OK"
 
@@ -2073,7 +2100,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:371 Src/wptKeyEditDlgs.cpp:382
 #: Src/wptKeyEditDlgs.cpp:388 Src/wptKeyEditDlgs.cpp:400
-#: Src/wptKeyEditDlgs.cpp:899
+#: Src/wptKeyEditDlgs.cpp:903
 msgid "Add Photo"
 msgstr "Adicionar foto"
 
@@ -2099,11 +2126,11 @@
 msgstr "Foto adicionada com sucesso."
 
 #: Src/wptKeyEditDlgs.cpp:406 Src/wptKeyEditDlgs.cpp:469
-#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:722
-#: Src/wptKeyEditDlgs.cpp:1446 Src/wptKeyEditDlgs.cpp:1516
-#: Src/wptKeyEditDlgs.cpp:1566 Src/wptKeyEditDlgs.cpp:1614
-#: Src/wptKeyEditDlgs.cpp:1812 Src/wptKeygenDlg.cpp:499
-#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:380
+#: Src/wptKeyEditDlgs.cpp:551 Src/wptKeyEditDlgs.cpp:725
+#: Src/wptKeyEditDlgs.cpp:1472 Src/wptKeyEditDlgs.cpp:1542
+#: Src/wptKeyEditDlgs.cpp:1592 Src/wptKeyEditDlgs.cpp:1640
+#: Src/wptKeyEditDlgs.cpp:1838 Src/wptKeygenDlg.cpp:499
+#: Src/wptKeygenDlg.cpp:600 Src/wptKeyPropsDlg.cpp:386
 #: Src/wptOwnertrustDlg.cpp:119 Src/wptOwnertrustDlg.cpp:131
 msgid "GnuPG Status"
 msgstr "Estado do GnuPG"
@@ -2117,14 +2144,14 @@
 msgstr "Chave pública"
 
 #: Src/wptKeyEditDlgs.cpp:441 Src/wptKeyEditDlgs.cpp:450
-#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:463 Src/wptKeyEditDlgs.cpp:934
 msgid "Add Revoker"
 msgstr "Adicionar revogador"
 
-#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1478
-#: Src/wptKeyEditDlgs.cpp:1535 Src/wptKeyEditDlgs.cpp:1588
-#: Src/wptKeyEditDlgs.cpp:1746 Src/wptKeyEditDlgs.cpp:1786
-#: Src/wptKeyEditDlgs.cpp:1956
+#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1504
+#: Src/wptKeyEditDlgs.cpp:1561 Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1772 Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1982
 msgid "Please select a user ID."
 msgstr "Por favor selecione uma ID de usuário."
 
@@ -2172,7 +2199,7 @@
 msgid "user ID successfully added."
 msgstr "ID de usuário adicionada com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:836
+#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:839
 msgid "Add new Subkey"
 msgstr "Adicionar nova subchave"
 
@@ -2188,49 +2215,49 @@
 msgid "Key expiration"
 msgstr "Expiração da data"
 
-#: Src/wptKeyEditDlgs.cpp:681
+#: Src/wptKeyEditDlgs.cpp:684
 msgid "Please select one entry."
 msgstr "Por favor selecione uma entrada."
 
-#: Src/wptKeyEditDlgs.cpp:682 Src/wptKeyEditDlgs.cpp:688
-#: Src/wptKeyEditDlgs.cpp:719 Src/wptKeyEditDlgs.cpp:819
+#: Src/wptKeyEditDlgs.cpp:685 Src/wptKeyEditDlgs.cpp:691
+#: Src/wptKeyEditDlgs.cpp:722 Src/wptKeyEditDlgs.cpp:822
 msgid "Add Subkey"
 msgstr "Adicionar subchave"
 
-#: Src/wptKeyEditDlgs.cpp:687
+#: Src/wptKeyEditDlgs.cpp:690
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr "DSS usa um tamanho de chave fixo em 1024. Tamanho alterado."
 
-#: Src/wptKeyEditDlgs.cpp:721
+#: Src/wptKeyEditDlgs.cpp:724
 msgid "Subkey successfully added."
 msgstr "Subchave adicionada com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:749 Src/wptKeyEditDlgs.cpp:818
-#: Src/wptKeyEditDlgs.cpp:898 Src/wptKeyEditDlgs.cpp:930
-#: Src/wptKeyEditDlgs.cpp:1011 Src/wptKeyEditDlgs.cpp:1334
-#: Src/wptKeyEditDlgs.cpp:1407 Src/wptKeyEditDlgs.cpp:1467
-#: Src/wptKeyManagerDlg.cpp:1690
+#: Src/wptKeyEditDlgs.cpp:752 Src/wptKeyEditDlgs.cpp:821
+#: Src/wptKeyEditDlgs.cpp:902 Src/wptKeyEditDlgs.cpp:934
+#: Src/wptKeyEditDlgs.cpp:1016 Src/wptKeyEditDlgs.cpp:1360
+#: Src/wptKeyEditDlgs.cpp:1433 Src/wptKeyEditDlgs.cpp:1493
+#: Src/wptKeyManagerDlg.cpp:1743
 msgid "There is no secret key available!"
 msgstr "Não há chave secreta disponível!"
 
-#: Src/wptKeyEditDlgs.cpp:750 Src/wptKeyEditDlgs.cpp:769
+#: Src/wptKeyEditDlgs.cpp:753 Src/wptKeyEditDlgs.cpp:772
 msgid "Add user ID"
 msgstr "Adicionar ID de usuário"
 
-#: Src/wptKeyEditDlgs.cpp:877
+#: Src/wptKeyEditDlgs.cpp:880
 msgid "Preferred keyserver successfully set."
 msgstr "Servidor de chaves preferido selecionado com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditOwnertrustDlg.cpp:55
-#: Src/wptKeyPropsDlg.cpp:371
+#: Src/wptKeyEditDlgs.cpp:969 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyPropsDlg.cpp:377
 msgid "Change Ownertrust"
 msgstr "Alterar confiança no proprietário"
 
-#: Src/wptKeyEditDlgs.cpp:968 Src/wptKeyManager.cpp:238
+#: Src/wptKeyEditDlgs.cpp:972 Src/wptKeyManager.cpp:238
 msgid "Key status changed."
 msgstr "Estado da chave alterado."
 
-#: Src/wptKeyEditDlgs.cpp:1017
+#: Src/wptKeyEditDlgs.cpp:1022
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2238,47 +2265,47 @@
 "Não é possível mudar a frase secreta porque a chave\n"
 "está protegida com o algoritmo IDEA de cifragem."
 
-#: Src/wptKeyEditDlgs.cpp:1024
+#: Src/wptKeyEditDlgs.cpp:1029
 msgid "Current (old) Passphrase"
 msgstr "Atual (velha) frase secreta"
 
-#: Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1034
 msgid "New Passphrase"
 msgstr "Nova frase secreta"
 
-#: Src/wptKeyEditDlgs.cpp:1037
+#: Src/wptKeyEditDlgs.cpp:1042
 msgid ""
 "Are you sure that you really don't want a passphrase?\n"
 "This is propably a bad idea, continue?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1053
+#: Src/wptKeyEditDlgs.cpp:1058
 #, fuzzy
 msgid "Change Password"
 msgstr "Alterar &senha"
 
-#: Src/wptKeyEditDlgs.cpp:1055
+#: Src/wptKeyEditDlgs.cpp:1060
 msgid "Passphrase successfully changed."
 msgstr "Frase secreta alterada com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:1071 Src/wptKeyManagerDlg.cpp:918
+#: Src/wptKeyEditDlgs.cpp:1076 Src/wptKeyManagerDlg.cpp:918
 msgid "Description"
 msgstr "Descrição"
 
-#: Src/wptKeyEditDlgs.cpp:1074
+#: Src/wptKeyEditDlgs.cpp:1079
 msgid "Expires"
 msgstr "Expira"
 
-#: Src/wptKeyEditDlgs.cpp:1155 Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592
+#: Src/wptKeyEditDlgs.cpp:1160 Src/wptKeylist.cpp:584 Src/wptKeylist.cpp:593
 #: Src/wptKeyManagerDlg.cpp:915
 msgid "Validity"
 msgstr "Validade"
 
-#: Src/wptKeyEditDlgs.cpp:1157
+#: Src/wptKeyEditDlgs.cpp:1162
 msgid "Email"
 msgstr "E-mail"
 
-#: Src/wptKeyEditDlgs.cpp:1245
+#: Src/wptKeyEditDlgs.cpp:1250
 #, fuzzy
 msgid ""
 "ADDUID      add a user ID\r\n"
@@ -2289,8 +2316,7 @@
 "ADDREVOKER  add a revocation key\r\n"
 "EXPIRE      change the expire date\r\n"
 "SHOWPREF    list preferences (verbose)\r\n"
-"SETPREF     set preference list\r\n"
-"UPDPREF     updated preferences\r\n"
+"SETPREF     update specific algorithm preferences\r\n"
 "PASSWD      change the passphrase\r\n"
 "PRIMARY     flag user ID as primary\r\n"
 "TRUST       change the ownertrust\r\n"
@@ -2325,40 +2351,48 @@
 "CLEAN     \t\tremover assinaturas inutilizáveis da chave\r\n"
 "MINIMIZE  \t\tremover todas as assinaturas da chave\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1267
+#: Src/wptKeyEditDlgs.cpp:1271
 msgid "Key Edit Help"
 msgstr "Ajuda de edição de chave"
 
-#: Src/wptKeyEditDlgs.cpp:1283 Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1310
 msgid "Primary key can not be deleted!"
 msgstr "A chave primária não pode ser deletada!"
 
-#: Src/wptKeyEditDlgs.cpp:1300
-#, c-format
+#: Src/wptKeyEditDlgs.cpp:1318
 msgid ""
+"Anything encrypted to the selected subkey cannot be\n"
+"decrypted any longer."
+msgstr ""
+
+#: Src/wptKeyEditDlgs.cpp:1321
+msgid ""
+"Anything signed by the selected subkey cannot be\n"
+"verified any longer."
+msgstr ""
+
+#: Src/wptKeyEditDlgs.cpp:1327
+#, fuzzy, c-format
+msgid ""
 "\"Subkey %s.\"\n"
 "\n"
-"Anything encrypted to the selected subkey will no longer\n"
-"be able to be decrypted.\n"
+"%s\n"
 "\n"
 "Do you really want to delete this subkey?"
 msgstr ""
-"\"Subchave %s.\"\n"
+"Você realmente deseja excluir esta chave?\n"
 "\n"
-"Qualquer coisa cifrada com a subchave selecionada não poderá\n"
-"mais ser decifrada.\n"
-"\n"
-"Você realmente deseja excluir essa subchave?"
+"%s"
 
-#: Src/wptKeyEditDlgs.cpp:1310
+#: Src/wptKeyEditDlgs.cpp:1336
 msgid "Delete Subkey"
 msgstr "Excluir subchave"
 
-#: Src/wptKeyEditDlgs.cpp:1314
+#: Src/wptKeyEditDlgs.cpp:1340
 msgid "Subkey successfully deleted."
 msgstr "Subchave excluída com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:1347
+#: Src/wptKeyEditDlgs.cpp:1373
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -2368,19 +2402,19 @@
 "\n"
 "Você deseja alterar a data de expiração?"
 
-#: Src/wptKeyEditDlgs.cpp:1356 Src/wptKeyEditDlgs.cpp:1359
+#: Src/wptKeyEditDlgs.cpp:1382 Src/wptKeyEditDlgs.cpp:1385
 msgid "Key Expiration Date"
 msgstr "Data de expiração da chave"
 
-#: Src/wptKeyEditDlgs.cpp:1380
+#: Src/wptKeyEditDlgs.cpp:1406
 msgid "Expire Subkey"
 msgstr "Expirar subchave"
 
-#: Src/wptKeyEditDlgs.cpp:1385
+#: Src/wptKeyEditDlgs.cpp:1411
 msgid "Subkey expire date successfully set."
 msgstr "Data de expiração da subchave definida com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:1416
+#: Src/wptKeyEditDlgs.cpp:1442
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2393,31 +2427,31 @@
 "\n"
 "Este comando está disponível apenas para revogar subchaves sozinhas"
 
-#: Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1451
 msgid "Key already revoked."
 msgstr "Chave já revogada."
 
-#: Src/wptKeyEditDlgs.cpp:1442
+#: Src/wptKeyEditDlgs.cpp:1468
 msgid "Revoke Subkey"
 msgstr "Revogar subchave"
 
-#: Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1472
 msgid "Subkey successfully revoked."
 msgstr "Subchave revogada com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:1468
+#: Src/wptKeyEditDlgs.cpp:1494
 msgid "Revoke user ID"
 msgstr "Revogar ID de usuário"
 
-#: Src/wptKeyEditDlgs.cpp:1473
+#: Src/wptKeyEditDlgs.cpp:1499
 msgid "Key has only one user ID."
 msgstr "A chave tem apenas uma ID de usuário."
 
-#: Src/wptKeyEditDlgs.cpp:1484
+#: Src/wptKeyEditDlgs.cpp:1510
 msgid "This user ID has been already revoked."
 msgstr "Esta ID de usuário já foi revogada."
 
-#: Src/wptKeyEditDlgs.cpp:1490
+#: Src/wptKeyEditDlgs.cpp:1516
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2428,53 +2462,53 @@
 "\n"
 "Você realmente deseja revogar essa ID de usuário?"
 
-#: Src/wptKeyEditDlgs.cpp:1512
+#: Src/wptKeyEditDlgs.cpp:1538
 msgid "Revoke User ID"
 msgstr "Revogar ID de usuário"
 
-#: Src/wptKeyEditDlgs.cpp:1516
+#: Src/wptKeyEditDlgs.cpp:1542
 msgid "User ID successfully revoked"
 msgstr "ID de usuário revogada com sucesso"
 
-#: Src/wptKeyEditDlgs.cpp:1563
+#: Src/wptKeyEditDlgs.cpp:1589
 #, fuzzy
 msgid "Set user ID preferences"
 msgstr "Não foi possível definir as preferências da ID de usuário"
 
-#: Src/wptKeyEditDlgs.cpp:1566
+#: Src/wptKeyEditDlgs.cpp:1592
 #, fuzzy
 msgid "User ID preferences successfully updated"
 msgstr "ID de usuário excluída com sucesso"
 
-#: Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1637
 msgid "Primary"
 msgstr "Primária"
 
-#: Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1640
 msgid "User ID successfully flagged"
 msgstr "ID de usuário marcada com sucesso"
 
-#: Src/wptKeyEditDlgs.cpp:1708
+#: Src/wptKeyEditDlgs.cpp:1734
 msgid "No preferences available."
 msgstr "Nenhuma preferência disponível."
 
-#: Src/wptKeyEditDlgs.cpp:1712
+#: Src/wptKeyEditDlgs.cpp:1738
 msgid "MDC feature"
 msgstr "Funcionalidade MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1714
+#: Src/wptKeyEditDlgs.cpp:1740
 msgid "user ID:"
 msgstr "ID do usuário"
 
-#: Src/wptKeyEditDlgs.cpp:1715 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1741 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "Preferências da chave"
 
-#: Src/wptKeyEditDlgs.cpp:1780
+#: Src/wptKeyEditDlgs.cpp:1806
 msgid "Primary user ID can not be deleted!"
 msgstr "A ID de usuário primária não pode ser excluída!"
 
-#: Src/wptKeyEditDlgs.cpp:1791
+#: Src/wptKeyEditDlgs.cpp:1817
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2489,28 +2523,28 @@
 "\n"
 "Você realmente deseja excluir esta ID de usuário?"
 
-#: Src/wptKeyEditDlgs.cpp:1808
+#: Src/wptKeyEditDlgs.cpp:1834
 #, fuzzy
 msgid "Delete User ID"
 msgstr "Excluir ID de usuário"
 
-#: Src/wptKeyEditDlgs.cpp:1812
+#: Src/wptKeyEditDlgs.cpp:1838
 msgid "User ID successfully deleted"
 msgstr "ID de usuário excluída com sucesso"
 
-#: Src/wptKeyEditDlgs.cpp:1903 Src/wptKeyEditDlgs.cpp:1921
+#: Src/wptKeyEditDlgs.cpp:1929 Src/wptKeyEditDlgs.cpp:1947
 msgid "Finished to compact key."
 msgstr "Compactação da chave concluída."
 
-#: Src/wptKeyEditDlgs.cpp:1963
+#: Src/wptKeyEditDlgs.cpp:1989
 msgid "Do you really want to make this sig exportable?"
 msgstr "Você realmente deseja tornar esta assinatura exportável?"
 
-#: Src/wptKeyEditDlgs.cpp:1994 Src/wptKeysignDlg.cpp:460
+#: Src/wptKeyEditDlgs.cpp:2020 Src/wptKeysignDlg.cpp:463
 msgid "Key successfully signed."
 msgstr "Chave assinada com sucesso."
 
-#: Src/wptKeyEditDlgs.cpp:2057
+#: Src/wptKeyEditDlgs.cpp:2083
 #, fuzzy, c-format
 msgid ""
 "Your keys is listed as a designated revoker for the key\n"
@@ -2527,28 +2561,28 @@
 "Você tem certeza de que deseja criar um certificado de revogação\n"
 "que permita revogar a chave listada acima?"
 
-#: Src/wptKeyEditDlgs.cpp:2095
+#: Src/wptKeyEditDlgs.cpp:2121
 msgid "Capabilties: C = Certify, S = Sign, E = Encrypt, A = Authenticate"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:2150
+#: Src/wptKeyEditDlgs.cpp:2176
 msgid "Command>"
 msgstr "Comando>"
 
-#: Src/wptKeyEditDlgs.cpp:2151 Src/wptKeyserverDlg.cpp:689
+#: Src/wptKeyEditDlgs.cpp:2177 Src/wptKeyserverDlg.cpp:689
 #: Src/wptMDSumDlg.cpp:208 Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
 msgstr "&Fechar"
 
-#: Src/wptKeyEditDlgs.cpp:2153
+#: Src/wptKeyEditDlgs.cpp:2179
 msgid "&Revoke..."
 msgstr "&Revogar..."
 
-#: Src/wptKeyEditDlgs.cpp:2197
+#: Src/wptKeyEditDlgs.cpp:2223
 msgid "Please select a command."
 msgstr "Por favor selecione um comando."
 
-#: Src/wptKeyEditDlgs.cpp:2201
+#: Src/wptKeyEditDlgs.cpp:2227
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "Esse comando não pode ser usado com chaves PGP 2 (v3).\n"
 
@@ -2589,7 +2623,7 @@
 
 #: Src/wptKeyEditOwnertrustDlg.cpp:83 Src/wptKeyEditOwnertrustDlg.cpp:89
 #: Src/wptKeyEditOwnertrustDlg.cpp:98 Src/wptKeyManagerDlg.cpp:974
-#: Src/wptKeyManagerDlg.cpp:1911 Src/wptKeyPropsDlg.cpp:286
+#: Src/wptKeyManagerDlg.cpp:1964 Src/wptKeyPropsDlg.cpp:298
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:116
 #: Src/wptOwnertrustDlg.cpp:128
 msgid "Ownertrust"
@@ -2612,7 +2646,7 @@
 #: Src/wptKeygenDlg.cpp:424 Src/wptKeygenDlg.cpp:429 Src/wptKeygenDlg.cpp:436
 #: Src/wptKeygenDlg.cpp:444 Src/wptKeygenDlg.cpp:458 Src/wptKeygenDlg.cpp:465
 #: Src/wptKeygenDlg.cpp:475 Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:579
-#: Src/wptKeyManagerDlg.cpp:1767 Src/wptPassphraseDlg.cpp:147
+#: Src/wptKeyManagerDlg.cpp:1820 Src/wptPassphraseDlg.cpp:147
 #: Src/wptPassphraseDlg.cpp:157
 msgid "Key Generation"
 msgstr "Geração de chave"
@@ -2769,7 +2803,7 @@
 
 #: Src/wptKeygenDlg.cpp:546 Src/wptKeygenDlg.cpp:557 Src/wptKeygenDlg.cpp:562
 #: Src/wptKeygenDlg.cpp:569 Src/wptKeygenDlg.cpp:575 Src/wptKeygenDlg.cpp:596
-#: Src/wptKeyManagerDlg.cpp:1790
+#: Src/wptKeyManagerDlg.cpp:1843
 msgid "Key Generation Wizard"
 msgstr "Assistente de geração de chave"
 
@@ -2837,41 +2871,41 @@
 msgid "Public Key"
 msgstr "Chave pública"
 
-#: Src/wptKeylist.cpp:383
+#: Src/wptKeylist.cpp:384
 msgid "None"
 msgstr "Nenhuma"
 
-#: Src/wptKeylist.cpp:387
+#: Src/wptKeylist.cpp:388
 msgid "Marginal"
 msgstr "Pouca"
 
-#: Src/wptKeylist.cpp:389
+#: Src/wptKeylist.cpp:390
 msgid "Full"
 msgstr "Total"
 
-#: Src/wptKeylist.cpp:428 Src/wptKeylist.cpp:454 Src/wptKeyPropsDlg.cpp:154
+#: Src/wptKeylist.cpp:429 Src/wptKeylist.cpp:455 Src/wptKeyPropsDlg.cpp:154
 msgid "Disabled"
 msgstr "Desativada"
 
-#: Src/wptKeylist.cpp:464
+#: Src/wptKeylist.cpp:465
 msgid "key pair"
 msgstr "par de chaves"
 
-#: Src/wptKeylist.cpp:582 Src/wptKeylist.cpp:591 Src/wptKeyManagerDlg.cpp:914
+#: Src/wptKeylist.cpp:583 Src/wptKeylist.cpp:592 Src/wptKeyManagerDlg.cpp:914
 #: Src/wptKeyManagerDlg.cpp:1005
 msgid "Cipher"
 msgstr "Cifragem"
 
-#: Src/wptKeylist.cpp:593 Src/wptKeyManagerDlg.cpp:916
+#: Src/wptKeylist.cpp:594 Src/wptKeyManagerDlg.cpp:916
 #: Src/wptVerifyList.cpp:171
 msgid "Trust"
 msgstr "Confiança"
 
-#: Src/wptKeylist.cpp:766 Src/wptPassphraseCB.cpp:126
+#: Src/wptKeylist.cpp:782 Src/wptPassphraseCB.cpp:126
 msgid "Invalid User ID"
 msgstr "ID de usuário inválida"
 
-#: Src/wptKeylist.cpp:1035
+#: Src/wptKeylist.cpp:1051
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -2886,11 +2920,11 @@
 "\n"
 "Usar \"%s\" de qualquer jeito?"
 
-#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
+#: Src/wptKeylist.cpp:1059 Src/wptKeylist.cpp:1122
 msgid "Recipients"
 msgstr "Destinatários"
 
-#: Src/wptKeylist.cpp:1107
+#: Src/wptKeylist.cpp:1123
 #, c-format
 msgid ""
 "KeyID %s.\n"
@@ -2899,7 +2933,7 @@
 "ID de chave %s.\n"
 "Você realmente deseja exportar uma chave revogada?"
 
-#: Src/wptKeylist.cpp:1209
+#: Src/wptKeylist.cpp:1225
 msgid "Secret Key List"
 msgstr "Lista de chaves privadas"
 
@@ -3100,7 +3134,7 @@
 msgid "Key"
 msgstr "Chave"
 
-#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1347
+#: Src/wptKeyManagerDlg.cpp:970 Src/wptKeyManagerDlg.cpp:1397
 msgid "Groups"
 msgstr "Grupos"
 
@@ -3149,7 +3183,7 @@
 msgid "&List Signatures"
 msgstr "&Listar assinaturas"
 
-#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1707
+#: Src/wptKeyManagerDlg.cpp:989 Src/wptKeyManagerDlg.cpp:1760
 #: Src/wptKeyTrustPathDlg.cpp:129
 msgid "List Trust Path"
 msgstr "Listar caminho de confiança"
@@ -3287,7 +3321,7 @@
 msgid "Send to Keyserver"
 msgstr "Enviar a servidor de chaves"
 
-#: Src/wptKeyManagerDlg.cpp:1317
+#: Src/wptKeyManagerDlg.cpp:1366
 msgid ""
 "No ultimately trusted key found.\n"
 "Please set at least one secret key to ultimate trust."
@@ -3295,77 +3329,77 @@
 "Nenhuma chave com confiança definitiva encontrada.\n"
 "Por favor marque ao menos uma chave privada com confiança definitiva."
 
-#: Src/wptKeyManagerDlg.cpp:1348
+#: Src/wptKeyManagerDlg.cpp:1398
 #, fuzzy
 msgid "&Show"
 msgstr "&Mostrar a fotografia"
 
-#: Src/wptKeyManagerDlg.cpp:1349
+#: Src/wptKeyManagerDlg.cpp:1399
 #, fuzzy
 msgid "&New..."
 msgstr "&Abrir..."
 
-#: Src/wptKeyManagerDlg.cpp:1460
+#: Src/wptKeyManagerDlg.cpp:1510
 msgid "Generate new key pair"
 msgstr "Gerar novo par de chaves"
 
-#: Src/wptKeyManagerDlg.cpp:1464
+#: Src/wptKeyManagerDlg.cpp:1514
 msgid "Search for a specific key"
 msgstr "Localizar chave específica"
 
-#: Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1518
 msgid "Delete key from keyring"
 msgstr "Excluir chave do chaveiro"
 
-#: Src/wptKeyManagerDlg.cpp:1472
+#: Src/wptKeyManagerDlg.cpp:1522
 msgid "Show key properties"
 msgstr "Exibir propriedades da chave"
 
-#: Src/wptKeyManagerDlg.cpp:1476
+#: Src/wptKeyManagerDlg.cpp:1526
 msgid "Sign key"
 msgstr "Assinar chave"
 
-#: Src/wptKeyManagerDlg.cpp:1480
+#: Src/wptKeyManagerDlg.cpp:1530
 msgid "Copy key to clipboard"
 msgstr "Copiar chave para área de transferência"
 
-#: Src/wptKeyManagerDlg.cpp:1484
+#: Src/wptKeyManagerDlg.cpp:1534
 msgid "Paste key from clipboard"
 msgstr "Colar chave da área de transferência"
 
-#: Src/wptKeyManagerDlg.cpp:1488
+#: Src/wptKeyManagerDlg.cpp:1538
 msgid "Import key to keyring"
 msgstr "Importar chave para o chaveiro"
 
-#: Src/wptKeyManagerDlg.cpp:1492
+#: Src/wptKeyManagerDlg.cpp:1542
 msgid "Export key to a file"
 msgstr "Exportar chave para um arquivo"
 
-#: Src/wptKeyManagerDlg.cpp:1626
+#: Src/wptKeyManagerDlg.cpp:1679
 msgid "New"
 msgstr "Nova"
 
-#: Src/wptKeyManagerDlg.cpp:1628
+#: Src/wptKeyManagerDlg.cpp:1681
 #, fuzzy
 msgid "Preferences..."
 msgstr "Preferências"
 
-#: Src/wptKeyManagerDlg.cpp:1634
+#: Src/wptKeyManagerDlg.cpp:1687
 msgid "Could not access public keyring"
 msgstr "Não foi possível acessar o chaveiro público"
 
-#: Src/wptKeyManagerDlg.cpp:1666 Src/wptKeysignDlg.cpp:351
+#: Src/wptKeyManagerDlg.cpp:1719 Src/wptKeysignDlg.cpp:351
 #: Src/wptKeysignDlg.cpp:365 Src/wptKeysignDlg.cpp:426
-#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:458
-#: Src/wptKeysignDlg.cpp:460
+#: Src/wptKeysignDlg.cpp:455 Src/wptKeysignDlg.cpp:461
+#: Src/wptKeysignDlg.cpp:463
 msgid "Key Signing"
 msgstr "Assinar chave"
 
-#: Src/wptKeyManagerDlg.cpp:1682
+#: Src/wptKeyManagerDlg.cpp:1735
 msgid "Key already revoked!"
 msgstr "Chave já revogada!"
 
-#: Src/wptKeyManagerDlg.cpp:1696 Src/wptKeyRevokeDlg.cpp:68
+#: Src/wptKeyManagerDlg.cpp:1749 Src/wptKeyRevokeDlg.cpp:68
 #: Src/wptKeyRevokeDlg.cpp:78 Src/wptKeyRevokeDlg.cpp:162
 #: Src/wptKeyRevokeDlg.cpp:167 Src/wptKeyRevokeDlg.cpp:172
 #: Src/wptKeyRevokeDlg.cpp:181 Src/wptKeyRevokeDlg.cpp:191
@@ -3373,15 +3407,15 @@
 msgid "Key Revocation Cert"
 msgstr "Certificado de revogação da chave"
 
-#: Src/wptKeyManagerDlg.cpp:1718
+#: Src/wptKeyManagerDlg.cpp:1771
 msgid "Key Signature List"
 msgstr "Lista de assinaturas da chave"
 
-#: Src/wptKeyManagerDlg.cpp:1735 Src/wptKeyPropsDlg.cpp:282
+#: Src/wptKeyManagerDlg.cpp:1788 Src/wptKeyPropsDlg.cpp:294
 msgid "Key Properties"
 msgstr "Propriedades da chave"
 
-#: Src/wptKeyManagerDlg.cpp:1745
+#: Src/wptKeyManagerDlg.cpp:1798
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
@@ -3390,32 +3424,32 @@
 "chave...).\n"
 "Você realmente quer recarregar o cache de chaves?"
 
-#: Src/wptKeyManagerDlg.cpp:1775
+#: Src/wptKeyManagerDlg.cpp:1828
 msgid "Smart Card support is not available."
 msgstr "Suporte a Smart Card indisponível."
 
-#: Src/wptKeyManagerDlg.cpp:1798 Src/wptKeyserverDlg.cpp:680
+#: Src/wptKeyManagerDlg.cpp:1851 Src/wptKeyserverDlg.cpp:680
 msgid "Keyserver Access"
 msgstr "Acesso ao servidor de chaves"
 
-#: Src/wptKeyManagerDlg.cpp:1806 Src/wptMainProc.cpp:574
-#: Src/wptPreferencesDlg.cpp:139
+#: Src/wptKeyManagerDlg.cpp:1859 Src/wptMainProc.cpp:574
+#: Src/wptPreferencesDlg.cpp:125
 msgid "WinPT Preferences"
 msgstr "Preferências do WinPT"
 
-#: Src/wptKeyManagerDlg.cpp:1821
+#: Src/wptKeyManagerDlg.cpp:1874
 msgid "GnuPG Options"
 msgstr "Opções do GnuPG"
 
-#: Src/wptKeyManagerDlg.cpp:1863
+#: Src/wptKeyManagerDlg.cpp:1916
 msgid "There is no corresponding secret key for this key."
 msgstr "Não há chave privada correspondente a essa chave."
 
-#: Src/wptKeyManagerDlg.cpp:1868
+#: Src/wptKeyManagerDlg.cpp:1921
 msgid "You can only export one secret key."
 msgstr "Você só pode exportar uma chave secreta."
 
-#: Src/wptKeyManagerDlg.cpp:1873
+#: Src/wptKeyManagerDlg.cpp:1926
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -3433,15 +3467,15 @@
 "\n"
 "Você realmente deseja exportar essa chave?"
 
-#: Src/wptKeyManagerDlg.cpp:1878
+#: Src/wptKeyManagerDlg.cpp:1931
 msgid "WARNING"
 msgstr "ATENÇÃO"
 
-#: Src/wptKeyManagerDlg.cpp:1944
+#: Src/wptKeyManagerDlg.cpp:1997
 msgid "No key was selected, select all by default."
 msgstr "Nenhuma chave selecionada, selecionando todas por padrão."
 
-#: Src/wptKeyManagerDlg.cpp:1949
+#: Src/wptKeyManagerDlg.cpp:2002
 #, fuzzy
 msgid "Keyserver refresh finished."
 msgstr "Procurando no servidor de chaves"
@@ -3465,7 +3499,7 @@
 msgid "Card-Type: %s\r\n"
 msgstr "Tipo de cartão: %s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:244
+#: Src/wptKeyPropsDlg.cpp:256
 #, fuzzy, c-format
 msgid ""
 "Type: %s\r\n"
@@ -3488,32 +3522,24 @@
 "Cifra: %s\r\n"
 "%s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:283
+#: Src/wptKeyPropsDlg.cpp:295
 msgid "&Change"
 msgstr "&Alterar"
 
-#: Src/wptKeyPropsDlg.cpp:284
+#: Src/wptKeyPropsDlg.cpp:296
 msgid "&Revokers"
 msgstr "&Revogadores"
 
-#: Src/wptKeyPropsDlg.cpp:285
+#: Src/wptKeyPropsDlg.cpp:297
 msgid "Change &Password"
 msgstr "Alterar &senha"
 
-#: Src/wptKeyPropsDlg.cpp:292
+#: Src/wptKeyPropsDlg.cpp:304
 msgid "Photo-ID not validated."
 msgstr "Foto-ID não validado."
 
-#: Src/wptKeyPropsDlg.cpp:355
+#: Src/wptKeyPropsDlg.cpp:367
 msgid ""
-"The status of this key is 'revoked' or 'expired'.\n"
-"You cannot change the ownertrust of such keys."
-msgstr ""
-"O estado dessa chave é 'revogada' ou 'expirada'.\n"
-"Você não pode alterar a confiança dessas chaves."
-
-#: Src/wptKeyPropsDlg.cpp:361
-msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
 "\n"
@@ -3524,11 +3550,11 @@
 "\n"
 "Você realmente deseja continuar?"
 
-#: Src/wptKeyPropsDlg.cpp:379
+#: Src/wptKeyPropsDlg.cpp:385
 msgid "Ownertrust successfully changed."
 msgstr "Confiança alterada com sucesso."
 
-#: Src/wptKeyPropsDlg.cpp:392 Src/wptKeyRevokersDlg.cpp:160
+#: Src/wptKeyPropsDlg.cpp:398 Src/wptKeyRevokersDlg.cpp:160
 msgid "Key Revokers"
 msgstr "Revogadores de chave"
 
@@ -3591,41 +3617,41 @@
 msgid "Do you want to retrieve %s via the default keyserver?"
 msgstr "Você deseja obter %s pelo servidor de chaves padrão?"
 
-#: Src/wptKeyserver.cpp:439
+#: Src/wptKeyserver.cpp:443
 msgid "Network unreachable"
 msgstr ""
 
-#: Src/wptKeyserver.cpp:442
+#: Src/wptKeyserver.cpp:446
 #, fuzzy
 msgid "Host unreachable"
 msgstr "Servidor:"
 
-#: Src/wptKeyserver.cpp:445
+#: Src/wptKeyserver.cpp:449
 #, fuzzy
 msgid "Could not resolve host name"
 msgstr "Não foi possível resolver o nome de host"
 
-#: Src/wptKeyserver.cpp:448
+#: Src/wptKeyserver.cpp:452
 msgid "Connection refused"
 msgstr ""
 
-#: Src/wptKeyserver.cpp:452
+#: Src/wptKeyserver.cpp:456
 msgid "Connection timeout"
 msgstr ""
 
-#: Src/wptKeyserver.cpp:456
+#: Src/wptKeyserver.cpp:460
 msgid "Connection resetted by peer"
 msgstr ""
 
-#: Src/wptKeyserver.cpp:459
+#: Src/wptKeyserver.cpp:463
 msgid "Socket has been shutdown"
 msgstr ""
 
-#: Src/wptKeyserver.cpp:637
+#: Src/wptKeyserver.cpp:641
 msgid "Could not save keyserver.conf file"
 msgstr "Não foi possível salvar o arquivo keyserver.conf"
 
-#: Src/wptKeyserver.cpp:722
+#: Src/wptKeyserver.cpp:727
 #, fuzzy
 msgid ""
 "Invalid proxy configuration. You need to set a user and a password to use "
@@ -3634,11 +3660,11 @@
 "Configuração de proxy inválida. Você precisa definir um usuário e uma senha "
 "para usar a autenticação de proxy!"
 
-#: Src/wptKeyserver.cpp:725
+#: Src/wptKeyserver.cpp:730
 msgid "Proxy Error"
 msgstr "Erro do proxy"
 
-#: Src/wptKeyserver.cpp:750
+#: Src/wptKeyserver.cpp:755
 msgid ""
 "All entries of this file must have a valid prefix.\n"
 "Currently HKP/HTTP, LDAP and FINGER are supported.\n"
@@ -3646,15 +3672,15 @@
 "Todas as entradas deste arquivo devem ter um prefixo válido.\n"
 "Atualmente, são suportados HKP/HTTP, LDAP e FINGER.\n"
 
-#: Src/wptKeyserver.cpp:752
+#: Src/wptKeyserver.cpp:757
 msgid "Keyserver Error"
 msgstr "Erro do servidor de chaves"
 
-#: Src/wptKeyserver.cpp:771
+#: Src/wptKeyserver.cpp:776
 msgid "The keyserver limit is exceeded"
 msgstr "O limite do servidor de chaves foi excedido"
 
-#: Src/wptKeyserver.cpp:772
+#: Src/wptKeyserver.cpp:777
 msgid "Keyserver Warning"
 msgstr "Aviso do servidor de chaves"
 
@@ -3810,11 +3836,11 @@
 msgid "&Edit"
 msgstr "&Editar"
 
-#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:103
-#: Src/wptProxySettingsDlg.cpp:113 Src/wptProxySettingsDlg.cpp:118
-#: Src/wptProxySettingsDlg.cpp:125 Src/wptProxySettingsDlg.cpp:130
-#: Src/wptProxySettingsDlg.cpp:135 Src/wptProxySettingsDlg.cpp:194
-#: Src/wptProxySettingsDlg.cpp:229
+#: Src/wptKeyserverDlg.cpp:750 Src/wptProxySettingsDlg.cpp:105
+#: Src/wptProxySettingsDlg.cpp:115 Src/wptProxySettingsDlg.cpp:120
+#: Src/wptProxySettingsDlg.cpp:127 Src/wptProxySettingsDlg.cpp:132
+#: Src/wptProxySettingsDlg.cpp:137 Src/wptProxySettingsDlg.cpp:198
+#: Src/wptProxySettingsDlg.cpp:233
 msgid "Proxy Settings"
 msgstr "Configurações de proxy"
 
@@ -3847,12 +3873,12 @@
 msgid "Keyserver Searching"
 msgstr "Procurando no servidor de chaves"
 
-#: Src/wptKeyserverSearchDlg.cpp:96 Src/wptKeyserverSearchDlg.cpp:101
-#: Src/wptKeyserverSearchDlg.cpp:145
+#: Src/wptKeyserverSearchDlg.cpp:97 Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:146
 msgid "Keyserver Search"
 msgstr "Busca no servidor de chaves"
 
-#: Src/wptKeyserverSearchDlg.cpp:102
+#: Src/wptKeyserverSearchDlg.cpp:103
 #, fuzzy, c-format
 msgid ""
 "The search result contains a lot of keys: %d\n"
@@ -4077,7 +4103,7 @@
 msgid "You cannot select today as the expiration date."
 msgstr "Você não pode selecionar o dia de hoje como data de expiração."
 
-#: Src/wptKeysignDlg.cpp:457
+#: Src/wptKeysignDlg.cpp:460
 msgid "This key is already signed by your key"
 msgstr "Essa chave já está assinada pela sua chave"
 
@@ -4328,83 +4354,79 @@
 msgid "'User PIN' must be at least 6 characters long."
 msgstr "'PIN do usuário' deve ter pelo menos 6 caracteres."
 
-#: Src/wptPreferencesDlg.cpp:114
+#: Src/wptPreferencesDlg.cpp:101
 msgid "Do not use any &temporary files"
 msgstr "Não usar arquivos &temporários"
 
-#: Src/wptPreferencesDlg.cpp:115
+#: Src/wptPreferencesDlg.cpp:102
 msgid "Use clipboard &viewer to display the plaintext"
 msgstr "Usar o &visualizador da área de transferência para exibir texto"
 
-#: Src/wptPreferencesDlg.cpp:116
+#: Src/wptPreferencesDlg.cpp:103
 msgid "Word wrap cleartext &signatures at column"
 msgstr "Quebrar assinaturas em texto na coluna"
 
-#: Src/wptPreferencesDlg.cpp:117
+#: Src/wptPreferencesDlg.cpp:104
 msgid "&Disable hotkeys (Not recommended!)"
 msgstr "&Desativar teclas de atalho (Não recomendado!)"
 
-#: Src/wptPreferencesDlg.cpp:118
+#: Src/wptPreferencesDlg.cpp:105
 msgid "Skip key validation and assume that keys are always fully trusted"
 msgstr ""
 "Pular a validação de chaves e assumir que elas são sempre totalmente "
 "confiáveis"
 
-#: Src/wptPreferencesDlg.cpp:119
+#: Src/wptPreferencesDlg.cpp:106
 msgid "&Automatic keyring backup when WinPT closes"
 msgstr "Backup &automático do chaveiro ao fechar o WinPT"
 
-#: Src/wptPreferencesDlg.cpp:120
+#: Src/wptPreferencesDlg.cpp:107
 msgid "Backup to &keyring folder"
 msgstr "Salvar no diretório do &chaveiro"
 
-#: Src/wptPreferencesDlg.cpp:121
+#: Src/wptPreferencesDlg.cpp:108
 msgid "Backup to:"
 msgstr "Salvar em:"
 
-#: Src/wptPreferencesDlg.cpp:122
+#: Src/wptPreferencesDlg.cpp:109
 msgid "Select &key list mode"
 msgstr "Modo de listagem das c&haves"
 
-#: Src/wptPreferencesDlg.cpp:123
-msgid "Select &wipe mode"
-msgstr "Modo de &trituração"
-
-#: Src/wptPreferencesDlg.cpp:124
+#: Src/wptPreferencesDlg.cpp:110
 msgid "Keyserver &config"
 msgstr "&Configuração do servidor de chaves"
 
-#: Src/wptPreferencesDlg.cpp:125
+#: Src/wptPreferencesDlg.cpp:111
 msgid "Cache &passphrases for 'n' minutes"
 msgstr "Manter &frase secreta em cache por 'n' minutos"
 
-#: Src/wptPreferencesDlg.cpp:126
+#: Src/wptPreferencesDlg.cpp:112
 msgid "(CTRL+ALT+F to clear the cache)"
 msgstr "(CTRL+ALT+F para limpar o cache)"
 
-#: Src/wptPreferencesDlg.cpp:127
+#: Src/wptPreferencesDlg.cpp:113
 msgid "General options"
 msgstr "Opções gerais"
 
-#: Src/wptPreferencesDlg.cpp:128
+#: Src/wptPreferencesDlg.cpp:114
 msgid "Clipboard hotkeys"
 msgstr "Atalhos da área de transferência"
 
-#: Src/wptPreferencesDlg.cpp:129
+#: Src/wptPreferencesDlg.cpp:115
 msgid "Current window hotkeys"
 msgstr "Atalhos da janela atual"
 
-#: Src/wptPreferencesDlg.cpp:132
+#: Src/wptPreferencesDlg.cpp:118
 #, fuzzy
 msgid "Default extension for encrypted files"
 msgstr "Insira o nome para o arquivo cifrado"
 
-#: Src/wptPreferencesDlg.cpp:133
+#: Src/wptPreferencesDlg.cpp:119
 #, fuzzy
 msgid "&Backup includes secret keyring"
 msgstr "Não foi possível acessar o chaveiro secreto."
 
-#: Src/wptPreferencesDlg.cpp:222
+#: Src/wptPreferencesDlg.cpp:206
 #, fuzzy
 msgid ""
 "In most cases it is not a good idea to enable this setting.\n"
@@ -4415,11 +4437,11 @@
 "Se você sabe o que está fazendo, deixe esta opção ativada; caso\n"
 "contrário, é seguro deixar esta opção intocada."
 
-#: Src/wptPreferencesDlg.cpp:256
+#: Src/wptPreferencesDlg.cpp:240
 msgid "Select GPG backup path"
 msgstr "Diretório de backup do GPG"
 
-#: Src/wptPreferencesDlg.cpp:268
+#: Src/wptPreferencesDlg.cpp:252
 msgid ""
 "Please enter a value that is between 1-720.\n"
 "It is not a good idea to cache the passphrase more than 12 hours."
@@ -4427,15 +4449,15 @@
 "Por favor insira um valor entre 1 e 720.\n"
 "Não é uma boa idéia manter a frase secreta em cache por mais de 12 horas."
 
-#: Src/wptPreferencesDlg.cpp:281
+#: Src/wptPreferencesDlg.cpp:265
 msgid "Please enter a value between 1-80."
 msgstr "Por favor insira um valor entre 1 e 80."
 
-#: Src/wptPreferencesDlg.cpp:294
+#: Src/wptPreferencesDlg.cpp:286
 msgid "The specified backup folder is invalid."
 msgstr "O diretório de backup especificado é inválido."
 
-#: Src/wptPreferencesDlg.cpp:332
+#: Src/wptPreferencesDlg.cpp:321
 msgid "Hotkeys"
 msgstr "Teclas de atalho"
 
@@ -4443,56 +4465,57 @@
 msgid "Could not create progress thread."
 msgstr ""
 
-#: Src/wptProxySettingsDlg.cpp:103
-msgid "Invalid host/IP address."
+#: Src/wptProxySettingsDlg.cpp:105
+#, fuzzy
+msgid "Invalid host or IP address."
 msgstr "Servidor/endereço IP inválido."
 
-#: Src/wptProxySettingsDlg.cpp:112
+#: Src/wptProxySettingsDlg.cpp:114
 msgid "Please enter the proxy hostname."
 msgstr "Por favor insira o nome do servidor proxy."
 
-#: Src/wptProxySettingsDlg.cpp:118
+#: Src/wptProxySettingsDlg.cpp:120
 msgid "Invalid port number."
 msgstr "Número de porta inválido."
 
-#: Src/wptProxySettingsDlg.cpp:124
+#: Src/wptProxySettingsDlg.cpp:126
 msgid "Please select a value from 0-65535 for the port"
 msgstr "Por favor insira um valor entre 0 e 65535 para a porta"
 
-#: Src/wptProxySettingsDlg.cpp:129
+#: Src/wptProxySettingsDlg.cpp:131
 msgid "When you want to use authentication, please fill out both fields."
 msgstr ""
 "Quando você desejar usar autenticação, por favor preencha ambos os campos."
 
-#: Src/wptProxySettingsDlg.cpp:134
+#: Src/wptProxySettingsDlg.cpp:136
 msgid "Please enter a host name and a port."
 msgstr "Por favor insira um endereço e uma porta."
 
-#: Src/wptProxySettingsDlg.cpp:188
+#: Src/wptProxySettingsDlg.cpp:192
 msgid "Proxy host name or IP address"
 msgstr "Nome ou endereço IP do proxy"
 
-#: Src/wptProxySettingsDlg.cpp:189
+#: Src/wptProxySettingsDlg.cpp:193
 msgid "Server requires &authentication"
 msgstr "Servidor requer &autenticação"
 
-#: Src/wptProxySettingsDlg.cpp:190
+#: Src/wptProxySettingsDlg.cpp:194
 msgid "User name"
 msgstr "Nome de usuário"
 
-#: Src/wptProxySettingsDlg.cpp:191
+#: Src/wptProxySettingsDlg.cpp:195
 msgid "Password"
 msgstr "Senha"
 
-#: Src/wptProxySettingsDlg.cpp:192
+#: Src/wptProxySettingsDlg.cpp:196
 msgid "Proxy type"
 msgstr "Tipo de proxy"
 
-#: Src/wptProxySettingsDlg.cpp:193
+#: Src/wptProxySettingsDlg.cpp:197
 msgid "Authentication"
 msgstr "Autenticação"
 
-#: Src/wptProxySettingsDlg.cpp:228
+#: Src/wptProxySettingsDlg.cpp:232
 msgid "Please fill out all required fields for authentication."
 msgstr "Por favor preencha todos os campos requeridos para autenticação."
 
@@ -4532,7 +4555,7 @@
 "Parece que já há um tipo de arquivo '%s' registrado por outra aplicação.\n"
 "Você deseja sobrescrevê-lo?"
 
-#: Src/wptRegistry.cpp:599
+#: Src/wptRegistry.cpp:596
 msgid "Could not write to Registry."
 msgstr "Não foi possível escrever no Registro."
 
@@ -4585,6 +4608,31 @@
 msgid "Signed"
 msgstr "Assinada"
 
+#~ msgid "Select &wipe mode"
+#~ msgstr "Modo de &trituração"
+
+#~ msgid ""
+#~ "The status of this key is 'revoked' or 'expired'.\n"
+#~ "You cannot change the ownertrust of such keys."
+#~ msgstr ""
+#~ "O estado dessa chave é 'revogada' ou 'expirada'.\n"
+#~ "Você não pode alterar a confiança dessas chaves."
+
+#~ msgid ""
+#~ "\"Subkey %s.\"\n"
+#~ "\n"
+#~ "Anything encrypted to the selected subkey will no longer\n"
+#~ "be able to be decrypted.\n"
+#~ "\n"
+#~ "Do you really want to delete this subkey?"
+#~ msgstr ""
+#~ "\"Subchave %s.\"\n"
+#~ "\n"
+#~ "Qualquer coisa cifrada com a subchave selecionada não poderá\n"
+#~ "mais ser decifrada.\n"
+#~ "\n"
+#~ "Você realmente deseja excluir essa subchave?"
+
 #~ msgid "Could not lock or unlock volume"
 #~ msgstr "Não foi possível travar ou destravar o volume"
 

Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/ChangeLog	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,3 +1,31 @@
+2006-12-05  Timo Schulz  <twoaday at freakmail.de>
+
+	* wptClipDecryptDlg.cpp (verify_get_clip_info): If
+	there is no pubkey available, issue a hint and not BUG.
+	
+2006-12-02  Timo Schulz  <twoaday at freakmail.de>
+
+	* WinPT-en.rc: Remove wipe free space menu item.
+	* wptRegistry.cpp (get_reg_winpt_prefs): Remove wipemode.
+	* wptFileManageRDlg.cpp (file_secdel_confirm_dlg_proc):
+	Allow to set the passes here.
+	* wptFileManager.cpp (fm_encrypt): change all callers
+	for the wipe functions.
+	* wptListview.cpp (listview_sort_items): Extract code
+	to change the column image.
+	* wptKeylist.cpp (key_get_image_id): New.
+	(keylist_build): Change return type and all callers.
+	* wptGPG.cpp (gnupg_load_config): Kludge to detect
+	the 'textmode' option.
+	* wptPassCache.cpp (wipe_data): replaced with wipememory().	
+
+2006-11-12  Timo Schulz  <twoaday at freakmail.de>
+
+	* wptGPG.cpp (check_gnupg_options): Fix sizeof != DIM problem.
+	* wptGPGOptDlg.cpp (gpg_opt_dlg_proc): Better checks to
+	avoid invalid gpg.conf entries.
+	Thanks to Ralf Latz.
+	
 2006-11-04  Timo Schulz  <twoaday at freakmail.de>
 
 	* wptW32API.cpp (set_clip_text2): Make sure enough memory

Modified: trunk/Src/Makefile.am
===================================================================
--- trunk/Src/Makefile.am	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/Makefile.am	2006-12-08 10:22:17 UTC (rev 273)
@@ -80,7 +80,7 @@
 code_files = \
 	WinPT.cpp \
 	wptCardManager.cpp \
-	wptCardPCSC.c \
+	wptCardPCSC.cpp \
 	wptCryptdisk.cpp \
 	wptCurrWnd.cpp \
 	wptErrors.cpp \
@@ -98,7 +98,7 @@
 	wptListView.cpp \
 	wptMainProc.cpp \
 	wptMAPI.cpp \
-	wptNLS.c \
+	wptNLS.cpp \
 	wptPassCache.cpp \
 	wptPassphraseCB.cpp \
 	wptRegistry.cpp \
@@ -121,7 +121,8 @@
 	wptGroupManager.cpp \
 	wptGPGMEWrapper.cpp \
 	wptSOCKS.cpp \
-	wptSafeEditCtrl.cpp
+	wptSafeEditCtrl.cpp \
+	wptMisc.c
 
 
 WinPT_SOURCES = $(resource_files) $(dialog_files) $(code_files)

Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/WinPT-en.rc	2006-12-08 10:22:17 UTC (rev 273)
@@ -267,6 +267,9 @@
 IDI_KEYPAIR             ICON    DISCARDABLE     "keypair.ico"
 IDI_SIG_GOOD            ICON    DISCARDABLE     "sig_good.ico"
 IDI_SIG_BAD             ICON    DISCARDABLE     "sig_bad.ico"
+IDI_REV_KEYPAIR         ICON    DISCARDABLE     "rev_keypair.ico"
+IDI_EXP_KEYPAIR         ICON    DISCARDABLE     "exp_keypair.ico"
+IDI_REV_PUBKEY          ICON    DISCARDABLE     "exp_pubkey.ico"
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -363,7 +366,8 @@
     GROUPBOX        "",IDC_STATIC,5,128,171,36
     LTEXT           "Key ID or email address you want to search for",
                     IDC_KEYSERVER_INFO,8,136,166,8
-    EDITTEXT        IDC_KEYSERVER_SEARCH,8,148,162,12,ES_AUTOHSCROLL
+    COMBOBOX        IDC_KEYSERVER_SEARCH,8,148,160,51,CBS_DROPDOWN | 
+                    WS_VSCROLL | WS_TABSTOP
     DEFPUSHBUTTON   "&Receive",IDC_KEYSERVER_RECV,5,169,46,14
     PUSHBUTTON      "&Search",IDC_KEYSERVER_INDEX,53,169,36,14
     PUSHBUTTON      "&Close",IDCANCEL,130,167,45,14
@@ -429,7 +433,7 @@
 STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | 
     WS_THICKFRAME
 CAPTION "Key Management"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "List1",IDC_KEYMISC_KEYLIST,"SysListView32",LVS_REPORT | 
                     LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | 
@@ -540,7 +544,8 @@
 FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "List1",IDC_IMPORT_KEYLIST,"SysListView32",LVS_REPORT | 
-                    WS_BORDER | WS_TABSTOP,6,6,306,73
+                    LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | 
+                    WS_TABSTOP,6,6,306,73
     LTEXT           "",IDC_IMPORT_INFO,6,81,307,8
     PUSHBUTTON      "&Import",IDC_IMPORT_DOIT,204,97,54,14
     PUSHBUTTON      "&Cancel",IDCANCEL,262,97,50,14
@@ -632,12 +637,12 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,119,107,50,14
 END
 
-IDD_WINPT_PREFS DIALOG DISCARDABLE  0, 0, 286, 277
+IDD_WINPT_PREFS DIALOG DISCARDABLE  0, 0, 286, 268
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "WinPT Preferences"
 FONT 8, "MS Sans Serif"
 BEGIN
-    GROUPBOX        "General options",IDC_PREFS_ALLOPTINF,8,2,271,101
+    GROUPBOX        "General options",IDC_PREFS_ALLOPTINF,8,2,271,90
     CONTROL         "Use clipboard &viewer to display the plaintext",
                     IDC_PREFS_VIEWER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
                     13,13,229,10
@@ -652,49 +657,45 @@
     EDITTEXT        IDC_PREFS_CACHETIME,155,71,25,13
     LTEXT           "(CTRL+ALT+F to clear cache)",IDC_PREFS_CACHEHINT,182,73,
                     96,8
-    LTEXT           "Select &wipe mode",IDC_PREFS_WIPEINF,14,88,79,8
-    COMBOBOX        IDC_PREFS_WIPEMODE,155,87,64,40,CBS_DROPDOWNLIST | 
-                    WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Clipboard hotkeys",IDC_PREFS_CLIPINF,8,105,112,70
-    LTEXT           "Encrypt CTRL+ALT+",IDC_STATIC,13,120,67,8
-    EDITTEXT        IDC_PREFS_CLIP_ENCRYPT,83,118,10,12
-    LTEXT           "Decrypt/verify CTRL+ALT+",IDC_STATIC,13,132,88,8
-    EDITTEXT        IDC_PREFS_CLIP_DECRYPT_VERIFY,103,130,9,12
-    LTEXT           "Sign CTRL+ALT+",IDC_STATIC,13,145,57,8
-    EDITTEXT        IDC_PREFS_CLIP_SIGNENC,73,143,9,12
-    LTEXT           "Sign && Encrypt CTRL+ALT+",IDC_STATIC,13,159,89,8
-    EDITTEXT        IDC_PREFS_CLIP_SIGN,103,157,9,13
-    GROUPBOX        "Current window hotkeys",IDC_PREFS_CURRINF,127,105,152,
-                    70
-    LTEXT           "Encrypt ALT+SHIFT+",IDC_STATIC,134,120,69,8
-    EDITTEXT        IDC_PREFS_CWS_ENCRYPT,210,118,9,12
-    LTEXT           "Decrypt/verify ALT+SHIFT+",IDC_STATIC,134,133,90,8
-    EDITTEXT        IDC_PREFS_CWS_DECRYPT_VERIFY,227,132,9,12
-    LTEXT           "Sign ALT+SHIFT+",IDC_STATIC,134,146,59,8
-    EDITTEXT        IDC_PREFS_CWS_SIGN,196,145,9,12
-    LTEXT           "Sign && Encrypt ALT+SHIFT+",IDC_STATIC,134,159,91,8
-    EDITTEXT        IDC_PREFS_CWS_SIGNENC,227,157,10,12
+    GROUPBOX        "Clipboard hotkeys",IDC_PREFS_CLIPINF,8,92,112,70
+    LTEXT           "Encrypt CTRL+ALT+",IDC_STATIC,13,107,67,8
+    EDITTEXT        IDC_PREFS_CLIP_ENCRYPT,83,105,10,12
+    LTEXT           "Decrypt/verify CTRL+ALT+",IDC_STATIC,13,119,88,8
+    EDITTEXT        IDC_PREFS_CLIP_DECRYPT_VERIFY,103,117,9,12
+    LTEXT           "Sign CTRL+ALT+",IDC_STATIC,13,132,57,8
+    EDITTEXT        IDC_PREFS_CLIP_SIGNENC,73,130,9,12
+    LTEXT           "Sign && Encrypt CTRL+ALT+",IDC_STATIC,13,146,89,8
+    EDITTEXT        IDC_PREFS_CLIP_SIGN,103,144,9,13
+    GROUPBOX        "Current window hotkeys",IDC_PREFS_CURRINF,127,92,152,70
+    LTEXT           "Encrypt ALT+SHIFT+",IDC_STATIC,134,107,69,8
+    EDITTEXT        IDC_PREFS_CWS_ENCRYPT,210,105,9,12
+    LTEXT           "Decrypt/verify ALT+SHIFT+",IDC_STATIC,134,120,90,8
+    EDITTEXT        IDC_PREFS_CWS_DECRYPT_VERIFY,227,119,9,12
+    LTEXT           "Sign ALT+SHIFT+",IDC_STATIC,134,133,59,8
+    EDITTEXT        IDC_PREFS_CWS_SIGN,196,132,9,12
+    LTEXT           "Sign && Encrypt ALT+SHIFT+",IDC_STATIC,134,146,91,8
+    EDITTEXT        IDC_PREFS_CWS_SIGNENC,227,144,10,12
     CONTROL         "&Disable hotkeys (Not recommended!)",
                     IDC_PREFS_DISABLE_HOTKEYS,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,8,178,159,10
-    GROUPBOX        "",IDC_STATIC,8,197,271,41
+                    WS_TABSTOP,8,165,159,10
+    GROUPBOX        "",IDC_STATIC,8,184,271,41
     CONTROL         "&Automatic keyring backup when WinPT closes",
                     IDC_PREFS_AUTOBACKUP,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,14,196,195,11
+                    WS_TABSTOP,14,183,195,11
     CONTROL         "Backup to &keyring folder",IDC_PREFS_BAKHOME,"Button",
-                    BS_AUTORADIOBUTTON,24,208,150,10
+                    BS_AUTORADIOBUTTON,24,195,150,10
     CONTROL         "Backup to:",IDC_PREFS_BAKUSER,"Button",
-                    BS_AUTORADIOBUTTON,24,220,55,10
-    EDITTEXT        IDC_PREFS_BAKPATH,80,219,130,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "Browse...",IDC_PREFS_BAKSELECT,212,218,47,14
-    DEFPUSHBUTTON   "&OK",IDOK,176,261,50,14
-    PUSHBUTTON      "&Cancel",IDCANCEL,228,261,50,14
+                    BS_AUTORADIOBUTTON,24,207,55,10
+    EDITTEXT        IDC_PREFS_BAKPATH,80,206,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse...",IDC_PREFS_BAKSELECT,212,205,47,14
+    DEFPUSHBUTTON   "&OK",IDOK,176,248,50,14
+    PUSHBUTTON      "&Cancel",IDCANCEL,228,248,50,14
     LTEXT           "Default extension for encrypted files",IDC_PREFS_EXTINF,
                     14,42,138,9
     COMBOBOX        IDC_PREFS_DEFEXT,155,40,76,47,CBS_DROPDOWNLIST | 
                     WS_VSCROLL | WS_TABSTOP
     CONTROL         "&Backup includes secret keyring",IDC_PREFS_BAKSECRING,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,241,164,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,228,164,10
 END
 
 IDD_WINPT_HKPSEARCH DIALOG DISCARDABLE  0, 0, 359, 157
@@ -704,7 +705,8 @@
 BEGIN
     LTEXT           "Info",IDC_HKPSEARCH_INFO,6,7,340,11
     CONTROL         "List1",IDC_HKPSEARCH_LIST,"SysListView32",LVS_REPORT | 
-                    LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,5,22,346,111
+                    LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
+                    WS_TABSTOP,5,22,346,111
     PUSHBUTTON      "&Receive",IDC_HKPSEARCH_RECV,251,136,47,14
     DEFPUSHBUTTON   "&Cancel",IDOK,301,136,50,14
 END
@@ -859,7 +861,7 @@
 FONT 8, "MS Sans Serif"
 BEGIN
     GROUPBOX        "",IDC_STATIC,5,4,226,52
-    LTEXT           "Passphrase info",IDC_DECRYPT_SIGN_MSG,13,14,210,40
+    LTEXT           "Passphrase info",IDC_DECRYPT_SIGN_MSG,9,14,216,40
     LTEXT           "Please enter your passphrase",IDC_DECRYPT_SIGN_PWDINFO,
                     7,63,211,8
     EDITTEXT        IDC_DECRYPT_SIGN_PWD,7,75,219,12,ES_PASSWORD | 
@@ -1027,13 +1029,15 @@
     GROUPBOX        "Designated Revoker Keys",IDC_KEYREVOKERS_INF,9,5,209,79
 END
 
-IDD_WINPT_FILES_SECDEL DIALOG DISCARDABLE  0, 0, 233, 135
+IDD_WINPT_FILES_SECDEL DIALOG DISCARDABLE  0, 0, 233, 154
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
 CAPTION "Are you sure you want to secure delete these files?"
 FONT 8, "MS Sans Serif"
 BEGIN
-    DEFPUSHBUTTON   "&Yes",IDYES,122,115,50,14
-    PUSHBUTTON      "&No",IDNO,176,115,50,14
+    DEFPUSHBUTTON   "&Yes",IDYES,122,135,50,14
+    PUSHBUTTON      "&No",IDNO,176,135,50,14
+    EDITTEXT        IDC_SECDEL_PASSES,156,110,19,12
+    LTEXT           "passes",IDC_SECDEL_PASSESINF,179,111,43,8
     LISTBOX         IDC_SECDEL_FILES,8,10,218,97,LBS_SORT | 
                     LBS_NOINTEGRALHEIGHT | WS_HSCROLL | WS_TABSTOP
 END
@@ -1605,7 +1609,7 @@
         LEFTMARGIN, 3
         RIGHTMARGIN, 280
         TOPMARGIN, 3
-        BOTTOMMARGIN, 275
+        BOTTOMMARGIN, 266
     END
 
     IDD_WINPT_HKPSEARCH, DIALOG
@@ -1773,7 +1777,7 @@
         LEFTMARGIN, 2
         RIGHTMARGIN, 226
         TOPMARGIN, 2
-        BOTTOMMARGIN, 130
+        BOTTOMMARGIN, 149
     END
 
     IDD_WINPT_SPACE_SECDEL, DIALOG
@@ -2036,7 +2040,6 @@
         MENUITEM "&Verify",                     ID_FILEMISC_VERIFY
         MENUITEM SEPARATOR
         MENUITEM "&Wipe",                       ID_FILEMISC_WIPE
-        MENUITEM "Wipe Free Space",             ID_FILEMISC_WIPE_FREES
         MENUITEM SEPARATOR
         MENUITEM "&Reset",                      ID_FILEMISC_CLEAR
         MENUITEM "E&xit",                       ID_FILEMISC_QUIT

Modified: trunk/Src/WinPT.cpp
===================================================================
--- trunk/Src/WinPT.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/WinPT.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -44,7 +44,7 @@
 
 void remove_crit_file_attrs (const char *fname, int force);
 BOOL user_is_admin (void);
-extern "C" int  pcsc_available (void);
+int  pcsc_available (void);
 
 /* Global variables. */
 HINSTANCE glob_hinst;	/* global instance for the dialogs */
@@ -62,11 +62,11 @@
 update_keycache (HWND hwnd)
 {
     int err;
+    refresh_cache_s rcs;
 
-    refresh_cache_s rcs = {0};
-    rcs.kr_reload = 0; 
-    rcs.kr_update = 1;
-    rcs.tr_update = 1;
+    /* no need to rebuild the sig cache each time. */
+    memset (&rcs, 0, sizeof (rcs));
+    rcs.kring_update = 1;
     err = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, hwnd,
 		    keycache_dlg_proc, (LPARAM)&rcs);
     if (err) {
@@ -212,26 +212,48 @@
 /* check if the default key from the gpg.conf file is available in the
    keyring. if not, bail out because encryption won't work properly then. */
 static int
-check_default_key (gpg_keycache_t kc)
+check_default_key (void)
 {
     gpgme_key_t key;
     gpgme_error_t err = gpg_error (GPG_ERR_NO_ERROR);
+    gpg_keycache_t kc;
     char *defkey;
 
+    kc = keycache_get_ctx (0);
     defkey = get_gnupg_default_key ();
-    if (defkey)
+    if (defkey) {
 	err = gpg_keycache_find_key (kc, defkey, 0, &key);
-    else
+	if (err) {
+	    free_if_alloc (defkey);
+	    return -1;
+	}
+    }
+    else {
+	/* Actually this is just a warning but we still continue. */
 	msg_box (NULL, _("No useable secret key found."), 
 		 _("WinPT Warning"), MB_WARN);
+	free_if_alloc (defkey);
+	return 0;
+    }
+
+    /* Because the secret key listing has no information
+       about the validity/status, we need to check the public key. */
+    kc = keycache_get_ctx (1);
+    if (!gpg_keycache_find_key (kc, defkey, 0, &key) &&
+	(key->revoked || key->expired)) {
+	msg_box (NULL, _("Default secret key is unuseable"), 
+		 _("WinPT Warning"), MB_ERR);
+	free_if_alloc (defkey);
+	return -1;
+    }
     free_if_alloc (defkey);
-    return err? -1 : 0;
+    return 0;
 }
 
 
 /* Return the WinPT program file name (with full pathname). */
 static const char*
-get_prog_part (const char * fname, int use_cwd)
+get_prog_part (const char *fname, int use_cwd)
 {
     static char program[2*MAX_PATH+1];
     char currdir[MAX_PATH+1];
@@ -553,7 +575,11 @@
 	memset (&reg_prefs, 0, sizeof (reg_prefs));
 	get_reg_winpt_prefs (&reg_prefs);
 	reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */
-	gnupg_load_config ();
+	if (gnupg_load_config () == -2)
+	    msg_box (NULL, _("The gpg.conf file contains the 'textmode' option\n"
+			     "which leads to broken binary output during decryption.\n"
+			     "If this is on purpose, just continue otherwise the option should be disabled."),
+			    _("WinPT Error"), MB_ERR);
     }
 
     if (is_gpg4win_installed ())
@@ -769,7 +795,7 @@
 	}
     }
     else {
-	gpg_keycache_t c, sec_c;
+	gpg_keycache_t c;
 	if (update_keycache (hwnd)) {
 	    DestroyWindow (hwnd);
 	    free_gnupg_table ();
@@ -796,15 +822,15 @@
 		keycache_release (1);
 		return 0;
 	    }
-	}
-	sec_c = keycache_get_ctx (0);
-	if (check_default_key (sec_c)) {
+	}	
+	if (check_default_key ()) {
 	    char *p = get_gnupg_default_key ();
-	    log_box (_("WinPT Error"), MB_ERR, 
-		     _("Default key (from the GPG config file) could not be found.\n"
-		       "Please check your gpg.conf or set a new default key to correct it:\n\n"
-		       "%s: public key not found."), p? p : "[null]");
+	    log_box (_("WinPT Error"), MB_ERR,
+		     _("Default key (from the GPG config file) could not be found or is unuseable.\n"
+		       "The default key will be resetted and can be set later in the Key Manager again.\n\n"
+		       "%s: secret key not found."), p? p : "?");
 	    set_gnupg_default_key (NULL);
+	    free_if_alloc (p);
 	}
 	if (count_insecure_elgkeys ())
 	    DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_ELGWARN, glob_hwnd,

Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/resource.h	2006-12-08 10:22:17 UTC (rev 273)
@@ -169,6 +169,9 @@
 #define IDD_WINPT_SHOWPHOTO             247
 #define IDI_SIG_GOOD                    248
 #define IDI_SIG_BAD                     249
+#define IDI_REV_KEYPAIR                 251
+#define IDI_EXP_KEYPAIR                 252
+#define IDI_REV_PUBKEY                  253
 #define IDC_CLIPEDIT_SEND               1000
 #define IDC_CLIPEDIT_CLEAR              1001
 #define IDC_CLIPEDIT_CLIPTEXT           1002
@@ -670,6 +673,8 @@
 #define IDC_CEDIT_KURLINF               1543
 #define IDC_CEDIT_LOGINF                1544
 #define IDC_CEDIT_SEXINF                1545
+#define IDC_SECDEL_PASSES               1547
+#define IDC_SECDEL_PASSESINF            1548
 #define ID_GPG_ENCRYPT                  40003
 #define ID_GPG_DECRYPT                  40004
 #define ID_GPG_SIGN                     40005
@@ -862,9 +867,9 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        251
+#define _APS_NEXT_RESOURCE_VALUE        254
 #define _APS_NEXT_COMMAND_VALUE         40200
-#define _APS_NEXT_CONTROL_VALUE         1546
+#define _APS_NEXT_CONTROL_VALUE         1549
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Deleted: trunk/Src/wptCardPCSC.c
===================================================================
--- trunk/Src/wptCardPCSC.c	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptCardPCSC.c	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,104 +0,0 @@
-/* wptCardPCSC.cpp - PC/SC card API interface
- *	Copyright (C) 2003, 2006 Timo Schulz
- *
- * This file is part of WinPT.
- *
- * WinPT is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * WinPT is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with WinPT; if not, write to the Free Software Foundation, 
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <windows.h>
-#ifndef __MINGW32__
-#include <winscard.h>
-#else
-/* mingw32 has no win32 smartcard API definitions. */
-typedef ULONG_PTR SCARDCONTEXT;
-#define SCARD_SCOPE_SYSTEM 2
-#define SCARD_S_SUCCESS NO_ERROR
-#endif
-
-#include "gpgme.h"
-#include "wptTypes.h"
-#include "wptCard.h"
-
-
-static LONG (WINAPI *pcsc_establish_context) (unsigned long scope,
-                                const void *reserved1,
-                                const void *reserved2,
-                                unsigned long *r_context);
-static LONG (WINAPI *pcsc_release_context) (unsigned long context);
-
-static int pcsc_init = 0;
-
-
-#define load_one_fnc(ptr, hlib, name) do {			    \
-    a = ptr = (void *)GetProcAddress (hlib, name);		    \
-    if (!a) {							    \
-	char msg[256];						    \
-	_snprintf (msg, sizeof msg-1, "Could not load '%s'", name); \
-	MessageBox (NULL, msg, "PC/SC Driver", MB_ICONERROR|MB_OK); \
-	goto fail;						    \
-    } \
-} while (0)
-
-
-static int
-pcsc_loadlib (void)
-{
-    HMODULE hlib;
-    FARPROC a;    
-
-    if (pcsc_init)
-	return 0;
-    hlib = LoadLibrary ("WINSCARD");
-    if (!hlib)
-	goto fail;
-    load_one_fnc (pcsc_establish_context, hlib, "SCardEstablishContext");
-    load_one_fnc (pcsc_release_context, hlib, "SCardReleaseContext");
-    goto success;
-
-fail:
-    if (hlib != NULL)
-	FreeLibrary (hlib);
-    return -1;
-
-success:
-    pcsc_init = 1;
-    return 0;
-}
-
-
-/* Return != 0 if the PC/SC smart card interface is available.
-   The purpose of the function is to disable smart card releation
-   commands on systems with no scard readers. */
-int
-pcsc_available (void)
-{
-    SCARDCONTEXT ctx;
-    LONG err;
-
-    if (pcsc_loadlib ())
-	return 0;
-
-    err = pcsc_establish_context (SCARD_SCOPE_SYSTEM, NULL, NULL, &ctx);
-    if (err == SCARD_S_SUCCESS) {
-	pcsc_release_context (ctx);
-	return -1;
-    }
-    return 0;
-}

Modified: trunk/Src/wptClipDecryptDlg.cpp
===================================================================
--- trunk/Src/wptClipDecryptDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptClipDecryptDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -13,12 +13,7 @@
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with WinPT; if not, write to the Free Software Foundation, 
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -103,13 +98,16 @@
 {
     const char *s;
 
+    if (novalid)
+	*novalid = 0; /* reset */
     if (key_ot == GPGME_VALIDITY_FULL ||
 	key_ot == GPGME_VALIDITY_ULTIMATE)
 	s = _("Signature status: created with a fully trusted key");	
     else if (key_ot == GPGME_VALIDITY_MARGINAL)    
 	s = _("Signature status: created with a marginal trusted key");
     else if (key_ot == GPGME_VALIDITY_NEVER) {
-	if (novalid) *novalid = 1;
+	if (novalid) 
+	    *novalid = 1;
 	s =  _("Signature status: created with an UNTRUSTED key");	
     }
     else
@@ -131,23 +129,27 @@
 		         "*** Signer: %s (0x%s)\r\n"
 		         "*** BEGIN PGP DECRYPTED TEXT ***\r\n");
     const char *foot = _("\r\n*** END PGP DECRYPTED TEXT ***");
-    const char *s, *ver, *ot;
+    const char *s, *ver, *ot, *uid;
     char *p, *made;
 
-    if (winpt_get_pubkey (sig->fpr, &pk))
-	BUG (0);
-
-    ot = verify_get_key_ownertrust (pk.ctx->owner_trust, NULL);
+    if (winpt_get_pubkey (sig->fpr, &pk)) {
+	uid = _("user ID not found");
+	ot = verify_get_key_ownertrust (GPGME_VALIDITY_UNDEFINED, NULL);
+    }
+    else {
+	uid = pk.ext->uids->uid;
+	ot = verify_get_key_ownertrust (pk.ctx->owner_trust, NULL);
+    }
+    
     made = m_strdup (strtimestamp (sig->timestamp));
     ver = strtimestamp (time (NULL));
     s = get_gpg_sigstat (sig->summary);
     p = new char[strlen (head) + strlen (s) + strlen (made) + 
 		 strlen (sig->fpr) + strlen (ot) + strlen (ver) +
-		 strlen (pk.ext->uids->uid) + 1];
+		 strlen (uid) + 1];
     if (!p)
 	BUG (0);
-    sprintf (p, head, made, ver, ot, s, 
-		pk.ext->uids->uid, get_keyid_from_fpr (sig->fpr));
+    sprintf (p, head, made, ver, ot, s, uid, get_keyid_from_fpr (sig->fpr));
     *r_header = p;
     *r_footer = m_strdup (foot);
     free_if_alloc (made);

Modified: trunk/Src/wptClipEncryptDlg.cpp
===================================================================
--- trunk/Src/wptClipEncryptDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptClipEncryptDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -57,9 +57,14 @@
     err = gpgme_new (&ctx);
     if (err)
         return err;
-    
+
+    /* Recently a lot of users got in trouble because they enabled
+       the textmode even for non-text (binary) data. This leads to
+       serious trouble. But because our clipboard functions only support
+       the text format, the returned data is pure text or at least a 
+       conversion of it so we can safely use the textmode here. */
+    gpgme_set_textmode (ctx, 1);
     gpgme_set_armor (ctx, 1);
-    gpgme_set_textmode (ctx, 1);
     
     err = gpg_data_new_from_clipboard (&plain, 0);
     if (err)

Modified: trunk/Src/wptClipboard.cpp
===================================================================
--- trunk/Src/wptClipboard.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptClipboard.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,5 +1,5 @@
-/* wptClipboard.cpp
- *	Copyright (C) 2001, 2002, 2003, 2005 Timo Schulz
+/* wptClipboard.cpp - GPG related clipboard functions
+ *	Copyright (C) 2001, 2002, 2003, 2005, 2006 Timo Schulz
  *	Copyright (C) 2005 g10 Code GmbH
  *
  * This file is part of WinPT.
@@ -190,13 +190,12 @@
     if (!private_clip)
         goto leave;
     size = strlen (private_clip);
-    clip = (char*)malloc (size + 1);
+    clip = (char*)calloc (1, size + 1);
     if (!clip) {
         GlobalUnlock (cb);
         goto leave;
     }
     memcpy (clip, private_clip, size);
-    clip[size] = '\0';
     GlobalUnlock(cb);
     
 leave:

Modified: trunk/Src/wptCurrWnd.cpp
===================================================================
--- trunk/Src/wptCurrWnd.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptCurrWnd.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -29,9 +29,8 @@
 #include "wptVersion.h"
 
 #define KEYDOWN(vcode, scode) keybd_event ((vcode), (scode), 0, 0)
-#define KEYUP(vcode, scode)	keybd_event ((vcode), (scode), KEYEVENTF_KEYUP, 0)
+#define KEYUP(vcode, scode)   keybd_event ((vcode), (scode), KEYEVENTF_KEYUP, 0)
 
-    
 extern "C" HWND PTD_get_curr_hwnd (void);
 extern "C" BOOL PTD_keyb_send (UINT *keys, UINT n_keys);
 extern "C" int PTD_is_used (void);
@@ -74,7 +73,7 @@
 static void
 wnd_msg_selectall (void)
 {
-    unsigned keys[4] = {0};
+    unsigned int keys[4] = {0};
 
     if (PTD_is_used ()) {
 	keys[0] = VK_CONTROL | 0x8000;
@@ -97,7 +96,7 @@
 static void
 wnd_msg_paste (void)
 {
-    unsigned keys[4] = {0};
+    unsigned int keys[4] = {0};
 
     if (PTD_is_used ()) {
 	keys[0] = VK_CONTROL | 0x8000;
@@ -119,20 +118,20 @@
 static void
 wnd_msg_copy (void)
 {
-    unsigned keys[4] = {0};
+    unsigned int keys[4] = {0};
 
     if (PTD_is_used ()) {
 	keys[0] = VK_CONTROL | 0x8000;
 	keys[1] = 'C' | 0x8000;
 	keys[2] = 'C';
 	keys[3] = VK_CONTROL;
-	PTD_keyb_send( keys, 4 );	
+	PTD_keyb_send (keys, 4);
     }
     else {
-	KEYDOWN( VK_CONTROL, 0x1d );
-	KEYDOWN( (BYTE)'C', 0x2e );
-	KEYUP( (BYTE)'C', 0x2e );
-	KEYUP( VK_CONTROL, 0x1d );	
+	KEYDOWN (VK_CONTROL, 0x1d);
+	KEYDOWN ((BYTE)'C', 0x2e);
+	KEYUP ((BYTE)'C', 0x2e);
+	KEYUP (VK_CONTROL, 0x1d);
     }
 }
 
@@ -175,6 +174,10 @@
 }
 
 
+/* Retrieve the contents of the current window based on
+   the old window handle @old_hwnd and store the information
+   in @ctx. 
+   A return value of 0 indicates a problem. */
 int
 get_window_contents (HWND old_hwnd, curr_wnd_ctx *ctx, int *r_hotkey)
 {
@@ -225,6 +228,8 @@
 }
 
 
+/* Restore the clipboard contents to the window handle given
+   in @ctx and reset the current window to @old_hwnd if possible. */
 int
 set_window_contents (HWND old_hwnd, curr_wnd_ctx *ctx)
 {
@@ -245,11 +250,11 @@
     wnd_msg_paste ();
     wnd_msg_em_set_pos (hwnd, 1);
 	
-    AttachThreadInput( GetCurrentThreadId(),
-			GetWindowThreadProcessId( hwnd, NULL ),
-			FALSE );
+    AttachThreadInput (GetCurrentThreadId(),
+		       GetWindowThreadProcessId (hwnd, NULL),
+		       FALSE);
 	
-    SetForegroundWindow( lost );
+    SetForegroundWindow (lost);
 
     return 0;
 }

Modified: trunk/Src/wptFileCBS.cpp
===================================================================
--- trunk/Src/wptFileCBS.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptFileCBS.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -56,7 +56,7 @@
     }
 
     /* XXX: there is a sync problem with the progress dialog. */
-    if (pfx)
+    if (pfx != NULL)
 	progress_callback (pfx, NULL, 0, cb->off, cb->size);
     cb->off += nread;
     return (long)nread;
@@ -174,8 +174,10 @@
 	CloseHandle (cb->handle);
 	cb->handle = NULL;
     }
-    if (cb->dat)
+    if (cb->dat) {
 	gpgme_data_release (cb->dat);
+	cb->dat = NULL;
+    }
     free_if_alloc (cb->name);
     free_if_alloc (cb);
 }

Deleted: trunk/Src/wptFileDisk.c
===================================================================
--- trunk/Src/wptFileDisk.c	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptFileDisk.c	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,390 +0,0 @@
-/*
-    Control program for a virtual disk driver for Windows NT/2000/XP.
-    Copyright (C) 1999, 2000, 2001, 2002 Bo Brantén.
-
-    Heavily modified for the use with Cryptdisk by Timo Schulz
-    (C) 2004 Timo Schulz
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <windows.h>
-#include <windows.h>
-#include <winioctl.h>
-#include <stdio.h>
-#include <sys/types.h>
-
-#include "openpgp.h"
-
-/* remember to change the values in wptErrors.h also */
-#define CDISK_ERR_LOCK	 201
-#define CDISK_ERR_MOUNT  202
-#define CDISK_ERR_UMOUNT 203
-#define CDISK_ERR_OPEN   204
-#define CDISK_ERR_BUSY	 205
-#define CDISK_ERR_QUERY  206
-
-#define MAX_KEYS		64
-#define MAX_KEYHASH		32
-#define MAX_KEY_LENGTH		50
-#define CCVERSION		0x04
-
-#define DEVICE_BASE_NAME    "\\FileDisk"
-#define DEVICE_DIR_NAME     "\\Device"		DEVICE_BASE_NAME
-#define DEVICE_NAME_PREFIX  DEVICE_DIR_NAME     DEVICE_BASE_NAME
-
-#define FILE_DEVICE_FILE_DISK       0x8000
-
-#define IOCTL_FILE_DISK_OPEN_FILE   CTL_CODE(FILE_DEVICE_FILE_DISK, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_FILE_DISK_CLOSE_FILE  CTL_CODE(FILE_DEVICE_FILE_DISK, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_FILE_DISK_QUERY_FILE  CTL_CODE(FILE_DEVICE_FILE_DISK, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-typedef struct _OPEN_FILE_INFORMATION {
-    USHORT	    version;
-    LARGE_INTEGER   FileSize;
-    BOOLEAN         ReadOnly;
-    USHORT	    KeyType;		//0 None 1 2Fish 2 AES256
-    USHORT	    KeyNum;
-    USHORT	    KeyLength;
-    USHORT          FileNameLength;
-    UCHAR	    Key[MAX_KEYS][MAX_KEYHASH];
-    UCHAR	    DriveLetter;
-    UCHAR           FileName[1];
-} OPEN_FILE_INFORMATION, *POPEN_FILE_INFORMATION;
-
-static void 
-print_lasterr (char * prefix)
-{
-    LPVOID msg;
-
-    FormatMessage(
-        FORMAT_MESSAGE_ALLOCATE_BUFFER |
-        FORMAT_MESSAGE_FROM_SYSTEM |
-        FORMAT_MESSAGE_IGNORE_INSERTS,
-        NULL,
-        GetLastError(),
-        0,
-        (LPTSTR) &msg,
-        0,
-        NULL
-        );
-    MessageBox (NULL, (LPTSTR)msg, prefix, MB_ICONERROR|MB_OK);
-    LocalFree (msg);
-}
-
-
-static void
-add_key (POPEN_FILE_INFORMATION ka, const char * key, size_t len)
-{
-    gpg_md_t md;
-
-    if (ka->KeyNum >= MAX_KEYS) 
-	return;
-
-    switch (ka->KeyType) {
-    case 1: /* 2fish */
-	md = gpg_md_open (MD_RMD160);
-	ka->KeyLength=20;
-	break;
-    case 2: /* AES256 */
-	md = gpg_md_open (MD_SHA512);
-	ka->KeyLength=32;	
-	break;
-    case 3: /* AES128 */
-	md = gpg_md_open (MD_SHA256);
-	ka->KeyLength=16;
-	break;
-    case 4: /* AES192 */
-	ka->KeyLength=24;
-	md = gpg_md_open (MD_SHA384);
-	break;
-    }
-    gpg_md_write (md, (char *)key, len);
-    gpg_md_final (md);
-    memcpy (ka->Key[ka->KeyNum++], gpg_md_read (md), ka->KeyLength);
-    gpg_md_close (md);
-}
-
-
-int
-filedisk_mount (int                     DeviceNumber,
-		POPEN_FILE_INFORMATION  ofi,
-		char                    drivelet,
-		BOOLEAN                 CdImage)
-{
-    char    VolumeName[] = "\\\\.\\ :";
-    char    DeviceName[255];
-    HANDLE  Device;
-    DWORD   BytesReturned;
-
-    VolumeName[4] = drivelet;
-
-    Device = CreateFile (VolumeName,
-			 GENERIC_READ | GENERIC_WRITE,
-			 FILE_SHARE_READ | FILE_SHARE_WRITE,
-			 NULL,
-			 OPEN_EXISTING,
-			 FILE_FLAG_NO_BUFFERING,
-			 NULL);
-    if (Device != INVALID_HANDLE_VALUE) {
-        SetLastError (ERROR_BUSY);
-        print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_BUSY;
-    }
-
-    if (CdImage)
-        sprintf (DeviceName, DEVICE_NAME_PREFIX "Cd" "%u", DeviceNumber);
-    else
-        sprintf (DeviceName, DEVICE_NAME_PREFIX "%u", DeviceNumber);
-
-    if (!DefineDosDevice (DDD_RAW_TARGET_PATH,
-			  &VolumeName[4],
-			  DeviceName)) {
-        print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_OPEN;
-    }
-
-    Device = CreateFile (VolumeName,
-			 GENERIC_READ | GENERIC_WRITE,
-			 FILE_SHARE_READ | FILE_SHARE_WRITE,
-			 NULL,
-			 OPEN_EXISTING,
-			 FILE_FLAG_NO_BUFFERING,
-			 NULL);
-
-    if (Device == INVALID_HANDLE_VALUE) {
-        print_lasterr (&VolumeName[4]);
-        DefineDosDevice (DDD_REMOVE_DEFINITION, &VolumeName[4], NULL);
-        return CDISK_ERR_OPEN;
-    }
-
-    if (!DeviceIoControl (Device,
-			  IOCTL_FILE_DISK_OPEN_FILE,
-			  ofi,
-			  sizeof(OPEN_FILE_INFORMATION) + ofi->FileNameLength - 1,
-			  NULL, 0, &BytesReturned, NULL)) {
-        print_lasterr ("Cryptdisk Error");
-        DefineDosDevice (DDD_REMOVE_DEFINITION, &VolumeName[4], NULL);
-        return CDISK_ERR_MOUNT;
-    }
-
-    return 0;
-}
-
-
-static int 
-filedisk_unmount2 (char drivelet, int flags, int forced)
-{
-    char    VolumeName[60] = "\\\\.\\ :";
-    HANDLE  Device;
-    DWORD   BytesReturned;
-
-    if (!flags)
-	VolumeName[4] = drivelet;
-    else if (flags & 1)
-	sprintf(VolumeName,"\\\\.\\FileDisk%d", drivelet);
-    else if (flags & 2)
-	sprintf(VolumeName,"\\\\.\\FileDiskCd%d",drivelet);
-
-    Device = CreateFile (VolumeName,
-			 GENERIC_READ | GENERIC_WRITE,
-			 FILE_SHARE_READ | FILE_SHARE_WRITE,
-			 NULL,
-			 OPEN_EXISTING,
-			 FILE_FLAG_NO_BUFFERING,
-			 NULL);
-    if (Device == INVALID_HANDLE_VALUE) {
-	if (forced)
-	    print_lasterr(&VolumeName[4]);
-        return CDISK_ERR_OPEN;
-    }
-
-    if (!DeviceIoControl (Device, 
-			  FSCTL_LOCK_VOLUME,
-			  NULL, 0, NULL, 0,
-			  &BytesReturned, NULL)) {
-	if (forced) {
-	    print_lasterr(&VolumeName[4]);
-	    return CDISK_ERR_LOCK;
-	}
-    }
-
-    if (!DeviceIoControl (Device,
-			  IOCTL_FILE_DISK_CLOSE_FILE,
-			  NULL, 0, NULL, 0, 
-			  &BytesReturned, NULL )) {
-	if (forced)
-	    print_lasterr ("Cryptdisk Error");
-        return CDISK_ERR_UMOUNT;
-    }
-
-    if (!DeviceIoControl (
-        Device, FSCTL_DISMOUNT_VOLUME,
-        NULL, 0, NULL, 0,
-        &BytesReturned, NULL)) {
-	if (forced)
-	    print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_UMOUNT;
-    }
-
-    if (!DeviceIoControl (Device, 
-			  FSCTL_UNLOCK_VOLUME,
-			  NULL, 0, NULL, 0,
-			  &BytesReturned, NULL)) {
-	if (forced) {
-	    print_lasterr (&VolumeName[4]);
-	    return CDISK_ERR_LOCK;
-	}
-    }
-
-    CloseHandle (Device);
-
-    if (!DefineDosDevice (
-        DDD_REMOVE_DEFINITION,
-        &VolumeName[4], NULL)) {
-	if (forced)
-	    print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_UMOUNT;
-    }
-
-    return 0;
-}
-
-int 
-filedisk_unmount (char drivelet, int forced)
-{	    
-    char i;
-
-    if (drivelet) {
-	int rc = filedisk_unmount2 (drivelet, 0, forced);
-	if (rc) 
-	    print_lasterr ("Unmount´");
-	return rc;
-    }
-    for (i=0; i<20;i++) {
-	if (filedisk_unmount2 (i, 1, 0) == CDISK_ERR_OPEN)
-	    break;
-    }
-    for (i=0; i<20;i++) {
-	if (filedisk_unmount2 (i, 2, 0) == CDISK_ERR_OPEN)
-	    break;
-    }
-    return 0;
-}
-
-
-int
-filedisk_status (char drivelet, LARGE_INTEGER * size, int * rdonly)
-{
-    char                    VolumeName[] = "\\\\.\\ :";
-    HANDLE                  Device;
-    POPEN_FILE_INFORMATION  ofi;
-    DWORD                   BytesReturned;
-
-    VolumeName[4] = drivelet;
-
-    Device = CreateFile (VolumeName,
-			 GENERIC_READ,
-			 FILE_SHARE_READ | FILE_SHARE_WRITE,
-			 NULL,
-			 OPEN_EXISTING,
-			 FILE_FLAG_NO_BUFFERING,
-			NULL);
-
-    if (Device == INVALID_HANDLE_VALUE) {
-        print_lasterr(&VolumeName[4]);
-        return CDISK_ERR_OPEN;
-    }
-
-    ofi = malloc (sizeof(OPEN_FILE_INFORMATION) + MAX_PATH);
-
-    if (!DeviceIoControl (Device,
-			  IOCTL_FILE_DISK_QUERY_FILE,
-			  NULL,
-			  0,
-			  ofi,
-			  sizeof(OPEN_FILE_INFORMATION) + MAX_PATH,
-			  &BytesReturned, NULL)) {
-        print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_QUERY;
-    }
-
-    if (BytesReturned < sizeof(OPEN_FILE_INFORMATION)) {
-        SetLastError (ERROR_INSUFFICIENT_BUFFER);
-        print_lasterr (&VolumeName[4]);
-        return CDISK_ERR_QUERY;
-    }
-
-    if (size)
-	*size = ofi->FileSize;
-    if (rdonly)
-	*rdonly = ofi->ReadOnly;
-
-    return 0;
-}
-
-
-POPEN_FILE_INFORMATION
-filedisk_init_info (int devnum, char drivelet, const char * file,
-		    int ro, int cd_img, unsigned long size, const char * key,
-		    int keyalgo)
-{
-    POPEN_FILE_INFORMATION pfi;
-
-    pfi = calloc (1, sizeof(OPEN_FILE_INFORMATION) + strlen (file) + 7);
-
-    pfi->version = CCVERSION;
-    if (file[0] == '\\') {
-	if (file[1] == '\\' && file[2] != '.') {
-	    /* \\server\share\path\filedisk.img */
-	    strcpy(pfi->FileName, "\\??\\UNC");
-	    strcat(pfi->FileName, file + 1);
-	}
-	else /* \Device\Harddisk0\Partition1\path\filedisk.img */
-	    strcpy(pfi->FileName, file);
-    }	
-    else { // c:\path\filedisk.img
-	strcpy (pfi->FileName, "\\??\\");
-	strcat (pfi->FileName, file);
-    }
-
-    pfi->FileNameLength = (USHORT) strlen (pfi->FileName);
-    pfi->ReadOnly = ro? TRUE : FALSE;
-    if (cd_img)
-	pfi->ReadOnly = TRUE;
-    if (size)
-	pfi->FileSize.QuadPart = size * 1024;
-    if (key) {
-	if (keyalgo < 1 || keyalgo > 4)
-	    pfi->KeyType = 1;
-	else
-	    pfi->KeyType = keyalgo;
-	add_key (pfi, key, strlen (key));
-    }
-
-    return pfi;
-}
-
-
-void
-filedisk_free_info (POPEN_FILE_INFORMATION pfi)
-{
-    if (!pfi)
-	return;
-    free (pfi);
-}
-

Modified: trunk/Src/wptFileManager.cpp
===================================================================
--- trunk/Src/wptFileManager.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptFileManager.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -921,6 +921,21 @@
 }
 
 
+/* Wipe the given file @name with the delete mode
+   from the configuration.
+   Return value: 0 on success. */
+static int
+fm_wipe (const char *name, int mode, int passes)
+{
+    int rc;
+
+    SetCursor (LoadCursor (NULL, IDC_WAIT));
+    remove_crit_file_attrs (name, 1);
+    rc = secure_unlink (name, mode, passes);
+    SetCursor (LoadCursor (NULL, IDC_ARROW));
+    return rc;
+}
+
 int
 fm_parse_files (listview_ctrl_t lv, HWND dlg, int cmd)
 {
@@ -1038,7 +1053,7 @@
         sig_detached = fm_check_detached_sig (lv, i);
         switch (fm_cmd) {
         case FM_LIST:        rc = fm_list( fname, dlg );       break;
-        case FM_WIPE:        rc = fm_wipe( fname );            break;
+        case FM_WIPE:        rc = fm_wipe (fname, confirm.mode, confirm.passes);break;
         case FM_ENCRYPT:     rc = fm_encrypt( ctx, fname, 0 ); break;
 	case FM_ENCRYPT_DIR: rc = fm_encrypt_directory( ctx, fname ); break;
         case FM_SIGNENCRYPT: rc = fm_encrypt( ctx, fname, 1 ); break;
@@ -1090,22 +1105,6 @@
 }
 
 
-/* Wipe the given file @name with the delete mode
-   from the configuration.
-   Return value: 0 on success. */
-int
-fm_wipe (const char *name)
-{
-    int rc;
-
-    SetCursor (LoadCursor (NULL, IDC_WAIT));
-    remove_crit_file_attrs (name, 1);
-    rc = secure_unlink (name, reg_prefs.wipe_mode);
-    SetCursor (LoadCursor (NULL, IDC_ARROW));
-    return rc;
-}
-
-
 /* Dump out the given PGP packets from file @name in a dialog. */
 int
 fm_list (const char *name, HWND dlg)
@@ -1241,7 +1240,7 @@
 	gpg_file_data_release (out);
     free_if_alloc (keyid);
     if (!rc && c->wipe)
-	secure_unlink (name, WIPE_MODE_SIMPLE);
+	secure_unlink (name, WIPE_MODE_SIMPLE, 0);
     return rc;
 }
 

Modified: trunk/Src/wptFileManagerDlg.cpp
===================================================================
--- trunk/Src/wptFileManagerDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptFileManagerDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -778,7 +778,8 @@
 BOOL CALLBACK
 file_secdel_confirm_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static secdel_confirm_s * ctx;
+    static secdel_confirm_s *ctx;
+    char *passes, tmp[32];
 
     switch (msg) {
     case WM_INITDIALOG:
@@ -789,17 +790,40 @@
 	SetWindowText (dlg, _("Are you sure you want to secure delete these files?"));
 	SetDlgItemText (dlg, IDYES, _("&Yes"));
 	SetDlgItemText (dlg, IDNO, _("&No"));
+	SetDlgItemText (dlg, IDC_SECDEL_PASSESINF, _("passes"));
+
+	/* Try to load the passes from the registry or use the default value. */
+	passes = get_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "RandomPasses");
+	if (passes != NULL && atol (passes) != 0) {
+	    SetDlgItemInt (dlg, IDC_SECDEL_PASSES, atol (passes), FALSE);
+	    free_if_alloc (passes);
+	}
+	else
+	    SetDlgItemInt (dlg, IDC_SECDEL_PASSES, 2, FALSE);
 	break;
 
     case WM_COMMAND:
 	switch (LOWORD (wparam)) {
 	case IDYES:
+	    ctx->passes = (int)GetDlgItemInt (dlg, IDC_SECDEL_PASSES, NULL, FALSE);
+	    if (ctx->passes < 1)
+		ctx->passes = 2;
+	    // XXX: warn the user about the maximum allowed value
+	    /* The maximum is 16 which is an arbitrary value. */
+	    if (ctx->passes > 16)
+		ctx->passes = 16;
+	    ctx->mode = WIPE_MODE_PASSES;
 	    ctx->yes = 1;
+	    /* Save the value to the registry for later use. */
+	    _snprintf (tmp, DIM (tmp)-1, "%d", ctx->passes);
+	    set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", 
+			   "RandomPasses", tmp);
 	    EndDialog (dlg, TRUE);
 	    break;
 
 	case IDNO:
 	    ctx->yes = 0;
+	    ctx->passes = 0;
 	    EndDialog (dlg, FALSE);
 	    break;
 	}

Modified: trunk/Src/wptGPG.cpp
===================================================================
--- trunk/Src/wptGPG.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptGPG.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -233,6 +233,7 @@
 {    
     config_file_t opt;
     char *conf;
+    int rc = 0;
     
     conf = get_gnupg_cfgfile ();
     if (!conf)
@@ -241,13 +242,19 @@
 	free_if_alloc (conf);
 	return -1;
     }
+    free_if_alloc (conf);
     if (conf_find_option (opt, "ask-cert-level"))
 	reg_prefs.gpg.ask_cert_level = 1;
     if (conf_find_option (opt, "ask-cert-expire"))
 	reg_prefs.gpg.ask_cert_expire = 1;
+    /* The 'textmode' option for GPG is useful for text files
+       but it breaks the output of any binary data. Thus we return
+       a warning here to inform the user that binary output is broken. */
+    if (conf_find_option (opt, "textmode"))
+	rc = -2;
     release_config (opt);
-    free_if_alloc (conf);
-    return 0;
+
+    return rc;
 }
 
 
@@ -666,7 +673,7 @@
     int nbytes = 0, lineno=0;
     unsigned j;
 	
-    for  (j = 0; j < strlen (buf) && j < sizeof (line); j++) {
+    for  (j = 0; j < strlen (buf) && j < DIM (line); j++) {
 	line[nbytes++] = buf[j];
 	if (buf[j] == '\n' || j == (strlen (buf) - 1)) {
 	    line[nbytes] = '\0';

Modified: trunk/Src/wptGPGOptDlg.cpp
===================================================================
--- trunk/Src/wptGPGOptDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptGPGOptDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,5 +1,5 @@
 /* wptGPGOptDlg.cpp - WinPT GnuPG GPG Config
- *	Copyright (C) 2001, 2002, 2003, 2005 Timo Schulz
+ *	Copyright (C) 2001-2003, 2005, 2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -12,10 +12,6 @@
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with WinPT; if not, write to the Free Software Foundation, 
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -27,24 +23,20 @@
 #include "wptNLS.h"
 #include "wptGPG.h"
 #include "wptCommonCtl.h"
-#include "wptContext.h" /* for passphrase_s */
-#include "wptDlgs.h"
 #include "wptW32API.h"
 #include "wptErrors.h"
 #include "resource.h"
 
 
-#define DEF_CFGSIZE 2048
-
 /* Dialog box procedure for manipulating the GPG config file. */
 BOOL CALLBACK
 gpgopt_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    int id, nbytes = DEF_CFGSIZE;
-    char t[4], *optbuf = NULL;
+    int nbytes;
+    char *optbuf;
     
     switch (msg)  {
-    case WM_INITDIALOG:	  
+    case WM_INITDIALOG:
 	optbuf = get_gnupg_config ();
 	if (!optbuf) {
 	    msg_box (dlg,  _("Could not load GnuPG config file!"),
@@ -62,49 +54,61 @@
 	return TRUE;
         
     case WM_COMMAND:
-        switch( LOWORD( wparam ) ) {
-        case IDC_GPGOPT_SAVE:		    
-            optbuf = new char[nbytes + 1];
+        switch (LOWORD (wparam)) {
+        case IDC_GPGOPT_SAVE:
+	    nbytes = item_get_text_length (dlg, IDC_GPGOPT_FILE);
+	    if (nbytes < 1) {
+		msg_box (dlg, _("The 'gpg.conf' file is not loaded."), 
+			 _("GPG Config"), MB_ERR);
+		return TRUE;
+	    }
+            optbuf = new char[nbytes + 2];
             if (!optbuf)
 		BUG (0);
-            nbytes = GetDlgItemText (dlg, IDC_GPGOPT_FILE, optbuf, nbytes);
-            if (!nbytes) {
-                msg_box (dlg, _("The 'gpg.conf' file is not loaded."), _("GPG Config"), MB_ERR);
-                free_if_alloc (optbuf);
-                return FALSE;		
-            }
-            optbuf[nbytes] = '\0';
+	    memset (optbuf, 0, nbytes + 2);
+            nbytes = GetDlgItemText (dlg, IDC_GPGOPT_FILE, optbuf, nbytes+1);
             if (check_gnupg_options (optbuf, 1)) {
-                msg_box (dlg, _("File contains invalid GnuPG keywords!"), _("GPG Config"), MB_ERR);
+                msg_box (dlg, _("Config contains invalid GnuPG keywords."),
+			 _("GPG Config"), MB_ERR);
                 free_if_alloc (optbuf);
-                return FALSE;
+                return TRUE;
             }
             if (set_gnupg_options (optbuf, strlen (optbuf))) {
-                msg_box (dlg, _("Could not save GnuPG config file."), _("GPG Config"), MB_ERR);
+                msg_box (dlg, _("Could not save GnuPG config file."), 
+			 _("GPG Config"), MB_ERR);
                 free_if_alloc (optbuf);
-                return FALSE;
+                return TRUE;
             }
-            msg_box (dlg, _("Successfully saved."), _("GPG Config"), MB_OK);
+	    /* We need to call gpg after the gpg.conf is stored, otherwise
+	       it would still check the old content. */
+	    if (!gpg_check_return_code ("--gpgconf-list"))
+		msg_box (dlg, _("Successfully saved."), _("GPG Config"), MB_OK);
+	    else
+		msg_box (dlg, _("GnuPG returned an error while parsing the config file."),
+			 _("GPG Config"), MB_ERR);
             free_if_alloc (optbuf);
             return TRUE;
             
-        case IDC_GPGOPT_LOAD:			
-            if (GetDlgItemText(dlg, IDC_GPGOPT_FILE, t, sizeof (t) - 1)) {
-                id = msg_box (dlg, _("Current data will be lost!\n"
-                                     "Are you sure?"), _("GPG Config"), MB_INFO|MB_YESNO);
-                if (id == IDNO)
+        case IDC_GPGOPT_LOAD:
+	    if (item_get_text_length (dlg, IDC_GPGOPT_FILE) > 2) {
+                if (msg_box (dlg, _("Current data will be lost!\n"
+                                    "Are you sure?"), _("GPG Config"), 
+				    MB_WARN|MB_YESNO) == IDNO)
                     return TRUE;
             }
             optbuf = get_gnupg_config ();
             if (!optbuf)
-                msg_box (dlg, _("Could not load GnuPG config file!"), _("GPG Config"), MB_ERR);
-            SetDlgItemText (dlg, IDC_GPGOPT_FILE, optbuf);
-            free_if_alloc (optbuf);
+                msg_box (dlg, _("Could not load GnuPG config file."), 
+			 _("GPG Config"), MB_ERR);
+	    else {
+		SetDlgItemText (dlg, IDC_GPGOPT_FILE, optbuf);
+		free_if_alloc (optbuf);
+	    }
             return TRUE;
             
         case IDCANCEL:
             EndDialog (dlg, FALSE);
-            return FALSE;
+            return TRUE;
         }
         break;
     }

Modified: trunk/Src/wptGPGUtil.cpp
===================================================================
--- trunk/Src/wptGPGUtil.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptGPGUtil.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -13,10 +13,6 @@
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with WinPT; if not, write to the Free Software Foundation, 
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 
 #ifdef HAVE_CONFIG_H
@@ -33,16 +29,18 @@
 #include "wptErrors.h"
 #include "wptW32API.h"
 #include "wptGPG.h"
+#include "wptRegistry.h"
 #include "openpgp.h"
 
-
-/* safe wrapper around calloc. */
-static void*
-xcalloc (size_t n, size_t m)
+static char*
+char_alloc (size_t n)
 {
-    void *p = calloc (n, m);
+    char *p;
+
+    p = new char[n];
     if (!p)
 	BUG (0);
+    memset (p, 0, n);
     return p;
 }
 
@@ -90,9 +88,9 @@
 	  return gpg_error (GPG_ERR_TOO_SHORT);
       dest = *destp;
   }
-  else {      
+  else {
   /* The converted string will never be larger than the original string.  */
-      dest = (char*)xcalloc (1,strlen (src) + 1);
+      dest = char_alloc (strlen (src) + 1);
       *destp = dest;
   }
 
@@ -156,70 +154,11 @@
 }
 
 
-
-/* Replace %foo% entries with its real values.
-   Return value: expanded path or NULL on error. */
-static char *
-expand_path (const char *path)
-{
-    DWORD len;
-    char *p;
-
-    len = ExpandEnvironmentStrings (path, NULL, 0);
-    if (!len)
-	return NULL;
-    len += 1;
-    p = (char*)xcalloc (1, len+1);
-    len = ExpandEnvironmentStrings (path, p, len);
-    if (!len) {
-	safe_free (p);
-	return NULL;
-    }
-    return p; 
-}
-
-
-/* Read a string from the W32 registry. The directory is given
-   in @dir and the name of the value in @name, */
-static char *
-read_w32_registry (HKEY root_key, const char *dir, const char *name)
-{
-    HKEY key_handle;
-    DWORD n1, nbytes;
-    DWORD type;
-    char *result = NULL;
-    
-    if (RegOpenKeyEx (root_key, dir, 0, KEY_READ, &key_handle)) {
-	log_debug ("read_w32_registry (%s, %s) failed.\r\n", dir, name);
-        return NULL; /* no need for a RegClose, so return direct */
-    }
-    
-    nbytes = 1;
-    if (RegQueryValueEx (key_handle, name, 0, NULL, NULL, &nbytes))
-        goto leave;
-    result = (char*)xcalloc (1, (n1=nbytes+1));    
-    if (RegQueryValueEx (key_handle, name, 0, &type, (BYTE*)result, &n1)) {
-        safe_free (result); 
-	result = NULL;
-        goto leave;
-    }
-    if (type == REG_EXPAND_SZ && strchr (result, '%')) {
-	char *p = expand_path (result);
-	safe_free (result);
-	result = p;
-    }
-    
-leave:
-    RegCloseKey (key_handle);
-    return result;
-}
-
-
 static char*
 read_gpg_program (void)
 {
-    return read_w32_registry (HKEY_CURRENT_USER, 
-			      "Software\\GNU\\GnuPG", "gpgProgram");
+    return get_reg_entry (HKEY_CURRENT_USER, 
+			  "Software\\GNU\\GnuPG", "gpgProgram");
 }
 
 
@@ -232,10 +171,10 @@
     SECURITY_ATTRIBUTES sec_attr;
     char tmp[MAX_PATH+64];
 
-    memset (&sec_attr, 0, sizeof sec_attr);
+    memset (&sec_attr, 0, sizeof (sec_attr));
     sec_attr.bInheritHandle = TRUE;
     sec_attr.lpSecurityDescriptor = NULL;
-    sec_attr.nLength = sizeof sec_attr;
+    sec_attr.nLength = sizeof (sec_attr);
 
     get_temp_name (tmp, DIM (tmp)-1, name);
     out = CreateFile (tmp, GENERIC_READ|GENERIC_WRITE, 
@@ -286,7 +225,7 @@
     FlushFileBuffers (out);
     SetFilePointer (out, 0, NULL, FILE_BEGIN);
     n = GetFileSize (out, NULL);
-    p = (char*)xcalloc (1, n+1);
+    p = char_alloc (n+1);
     ReadFile (out, p, n, &n, NULL);
     p[n] = 0;
     if (nread)
@@ -331,6 +270,45 @@
 }
 
 
+
+/* We execute gpg and check the process return code.
+   A return code != 0 indicates a problem (error). */
+int
+gpg_check_return_code (const char *args)
+{
+    STARTUPINFO si;
+    PROCESS_INFORMATION pi;
+    const char *fmt;
+    char *p, *cmd;
+    DWORD ec;
+
+    memset (&si, 0, sizeof (si));
+    si.cb = sizeof (si);
+    si.dwFlags = STARTF_USESHOWWINDOW;
+    si.wShowWindow = SW_HIDE;
+
+    p = read_gpg_program ();
+    if (!p)
+	return 1; /* general error */
+    fmt = "%s %s";
+    cmd = char_alloc (strlen (p) + strlen (args)+strlen (fmt)+1);
+    sprintf (cmd, fmt, p, args);
+    free_if_alloc (p);
+    if (!CreateProcess (NULL, cmd, NULL, NULL,
+			FALSE, 0, NULL, NULL, &si, &pi)) {
+	free_if_alloc (cmd);
+	return 1; /* general error */
+    }
+    WaitForSingleObject (pi.hProcess, INFINITE);
+    GetExitCodeProcess (pi.hProcess, &ec);
+
+    CloseHandle (pi.hProcess);
+    CloseHandle (pi.hThread);
+    free_if_alloc (cmd);
+    return (int)ec;
+}
+
+
 /* Export a GPG secret key given by @keyid into the file @outfile.
    Return value: 0 on success. */
 gpgme_error_t
@@ -346,17 +324,17 @@
     if (!p)
 	return gpg_error (GPG_ERR_INV_ARG);
     fmt = "%s --armor --yes --output \"%s\" --export-secret-key %s";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (keyid) 
-			    + strlen (outfile) + strlen (fmt) + 2);
+    cmd = char_alloc (strlen (p) + strlen (keyid) 
+		   + strlen (outfile) + strlen (fmt) + 2);
     sprintf (cmd, fmt, p, outfile, keyid);
     if (create_process (cmd, NULL, NULL, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
     if (stat (outfile, &st) == -1 || st.st_size == 0)
 	err = gpg_error (GPG_ERR_NO_DATA);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
     return err;
 }
 
@@ -369,6 +347,7 @@
 {
     gpgme_error_t err = gpg_error (GPG_ERR_NO_ERROR);
     HANDLE out = NULL, in = NULL;
+    const char *fmt, *opt;
     char *p;
     char *cmd;
 
@@ -376,23 +355,25 @@
     if (!p)
 	return gpg_error (GPG_ERR_INV_ARG);
 
-    cmd = (char*)xcalloc (1, strlen (p) + 64 + 1);
-    sprintf (cmd, "%s %s", p,
-	     do_export? "--export-ownertrust" : "--import-ownertrust");
+    opt = do_export? "--export-ownertrust" : "--import-ownertrust";
+    fmt = "%s %s";
+    cmd = char_alloc (strlen (p) + strlen (opt) + strlen (fmt) + 1);
+    sprintf (cmd, fmt, p, opt);
 
     if (do_export)
-	out = create_tmpfile ("gpg_ot_out");
+	out = create_tmpfile ("tmp_gpg_ot_out");
     else {
 	DWORD nw;
-	in = create_tmpfile ("gpg_ot_in");
+
+	in = create_tmpfile ("tmp_gpg_ot_in");
 	WriteFile (in, *data, strlen (*data), &nw, NULL);
 	FlushFileBuffers (in);
     }
     if (create_process (cmd, in, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     if (in)
 	CloseHandle (in);
@@ -419,21 +400,21 @@
     if (!p)
 	return gpg_error (GPG_ERR_INV_ARG);
     fmt = "%s --logger-fd=1 --batch --rebuild-keydb-caches";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (fmt) + 32);
+    cmd = char_alloc (strlen (p) + strlen (fmt) + 1);
     sprintf (cmd, fmt, p);
 
     if (r_inf)
-	out = create_tmpfile ("gpg_rebuild_cache");
+	out = create_tmpfile ("tmp_gpg_rebuild_cache");
 
     if (create_process (cmd, NULL, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
     if (r_inf)
 	*r_inf = map_tmpfile (out, NULL);
     if (out)
 	CloseHandle (out);
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
     return err;
 }
 
@@ -442,7 +423,7 @@
 gpgme_error_t
 gpg_get_version (char **r_inf)
 {
-    gpgme_error_t err= gpg_error (GPG_ERR_NO_ERROR);
+    gpgme_error_t err = gpg_error (GPG_ERR_NO_ERROR);
     HANDLE out;
     const char *fmt;
     char *p, *cmd;
@@ -451,15 +432,15 @@
     if (!p)
 	return gpg_error (GPG_ERR_INV_ARG);
     fmt = "%s --version";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (fmt) + 1);
+    cmd = char_alloc (strlen (p) + strlen (fmt) + 1);
     sprintf (cmd, fmt, p);
-
-    out = create_tmpfile ("gpg_out");
+    
+    out = create_tmpfile ("tmp_gpg_out");
     if (create_process (cmd, NULL, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     *r_inf = map_tmpfile (out, NULL);
     CloseHandle (out);    
@@ -482,15 +463,15 @@
 	return gpg_error (GPG_ERR_INV_ARG);
 
     fmt = "%s --fixed-list-mode --with-colons \"%s\"";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (fname) + strlen (fmt) + 2);
+    cmd = char_alloc (strlen (p) + strlen (fname) + strlen (fmt) + 2);
     sprintf (cmd, fmt, p, fname);
 
-    out = create_tmpfile ("gpg_keys");
+    out = create_tmpfile ("tmp_gpg_keys");
     if (create_process (cmd, NULL, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     *r_out = map_tmpfile (out, NULL);
     CloseHandle (out);
@@ -520,15 +501,15 @@
 
     revcmd = desig_revoke? "--desig-revoke" : "--gen-revoke";
     fmt = "%s --pgp7 --command-fd=0 --status-fd=2 %s %s";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (revcmd) + 
-			     strlen (keyid) + strlen (fmt) + 2);
+    cmd = char_alloc (strlen (p) + strlen (revcmd) + 
+		   strlen (keyid) + strlen (fmt) + 2);
     sprintf (cmd, fmt, p, revcmd, keyid);
 
     in = create_in_pipe (inp_data);
-    out = create_tmpfile ("gpg_revcert");
+    out = create_tmpfile ("tmp_gpg_revcert");
     if (create_process (cmd, in, out, NULL)) {
 	*r_revcert = NULL;
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
     }
     else {
 	rcrt = map_tmpfile (out, NULL);
@@ -537,8 +518,8 @@
 	    err = gpg_error (GPG_ERR_BAD_PASSPHRASE);
     }
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     CloseHandle (in);
     CloseHandle (out);
@@ -569,17 +550,17 @@
     n = strlen (p) + strlen (fmt) + 1;
     if (keyid)
 	n += strlen (keyid) + 1;
-    cmd = (char*)xcalloc (1, n+1);
+    cmd = char_alloc (n+1);
     /* XXX: add --list-options show-unsuable-uid to display
 	    revoked attribute IDs */
-    hdat = create_tmpfile ("gpg_uat_data");
-    herr = create_tmpfile ("gpg_uat_status");
+    hdat = create_tmpfile ("tmp_gpg_uat_data");
+    herr = create_tmpfile ("tmp_gpg_uat_status");
     sprintf (cmd, fmt, p, (int)hdat, keyid? keyid : "");
     if (create_process (cmd, NULL, NULL, herr))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     *r_data = (BYTE*)map_tmpfile (hdat, ndata);
     *r_status_data = map_tmpfile (herr, NULL);
@@ -613,7 +594,7 @@
     *new_keyfile = new char[MAX_PATH];
     if (!*new_keyfile)
 	BUG (NULL);
-    get_temp_name (*new_keyfile, MAX_PATH-1, "sel_keys");
+    get_temp_name (*new_keyfile, MAX_PATH-1, "tmp_sel_keys");
 
     p = read_gpg_program ();
     if (!p)
@@ -626,7 +607,7 @@
     n += strlen (*new_keyfile)+1;
     for (i=0; i < (int)nkeys; i++)
 	n += strlen (keys[i])+1+2;
-    cmd = (char*)xcalloc (1, n+1);
+    cmd = char_alloc (n+1);
     sprintf (cmd, fmt, p, *new_keyfile, tmpdir, tmpnam);
     for (i=0; i < (int)nkeys; i++) {
 	strcat (cmd, keys[i]);
@@ -634,11 +615,11 @@
     }
 
     if (create_process (cmd, NULL, NULL, NULL))
-	err = gpgme_error (GPG_ERR_INTERNAL);
+	err = gpgme_error (GPG_ERR_MODULE_NOT_FOUND);
 
     DeleteFile (tmpnam);
-    safe_free (cmd);
-    safe_free (p);
+    free_if_alloc (cmd);
+    free_if_alloc (p);
     return err;
 }
 
@@ -660,15 +641,15 @@
 	return gpg_error (GPG_ERR_INV_ARG);
 
     fmt = "%s --with-colons --fixed-list-mode --list-keys \"%s\"";
-    cmd = (char*)xcalloc (1, strlen (p) + strlen (keyid) + strlen (fmt) + 2);
+    cmd = char_alloc (strlen (p) + strlen (keyid) + strlen (fmt) + 2);
     sprintf (cmd, fmt, p, keyid);
 
-    out = create_tmpfile ("gpg_keys");
+    out = create_tmpfile ("tmp_gpg_keys");
     if (create_process (cmd, NULL, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
     
     p = map_tmpfile (out, NULL);
     if ((uat = strstr (p, "uat:"))) {
@@ -680,7 +661,7 @@
 	}
     }
 
-    safe_free (p);
+    free_if_alloc (p);
     CloseHandle (out);
     return err;
 }
@@ -727,7 +708,7 @@
 	memset (&afx, 0, sizeof (afx));
 	gpg_iobuf_push_filter (inp, gpg_armor_filter, &afx);
     }
-    pkt = (PACKET *)xcalloc(1, sizeof *pkt);
+    pkt = (PACKET *)calloc(1, sizeof *pkt);
     gpg_init_packet (pkt);
     while (!quit && (rc = gpg_parse_packet (inp, pkt)) != -1) {
 	switch (pkt->pkttype) {
@@ -735,8 +716,8 @@
 	    enc = pkt->pkt.pubkey_enc;
 	    if (!enc)
 		break;
-	    l = (gpgme_recipient_t)xcalloc (1, sizeof *l);
-	    l->keyid = (char*)xcalloc (1, 16+1);
+	    l = (gpgme_recipient_t)calloc (1, sizeof *l);
+	    l->keyid = char_alloc (16+1);
 	    _snprintf (l->keyid, 16, "%08lX%08lX", 
 		       enc->keyid[0], enc->keyid[1]);
 	    l->pubkey_algo = (gpgme_pubkey_algo_t)enc->pubkey_algo;
@@ -801,27 +782,27 @@
     *value = NULL;
     p = read_gpg_program ();
     fmt = "%s --with-colons --no-options --list-options show-sig-subpackets=%d --list-sigs %s";
-    cmd = (char*)xcalloc (1, strlen (fmt) + strlen (p) + strlen (key) + 32 + 1);
+    cmd = char_alloc (strlen (fmt) + strlen (p) + strlen (key) + 32 + 1);
     sprintf (cmd, fmt, p, subpktid, key);
 
-    out = create_tmpfile ("gpg_subpackets");
+    out = create_tmpfile ("tmp_gpg_subpackets");
     if (create_process (cmd, NULL, out, NULL))
-	err = gpg_error (GPG_ERR_INTERNAL);
+	err = gpg_error (GPG_ERR_MODULE_NOT_FOUND);
 
-    safe_free (p);
-    safe_free (cmd);
+    free_if_alloc (p);
+    free_if_alloc (cmd);
 
     p = map_tmpfile (out, NULL);
     if (p && (spk=strstr (p, "spk"))) {
 	char *end = strstr (spk, "\n");
 	
 	if (end) {
-	    *value = (char*)xcalloc (1, (end-spk)+1);
+	    *value = char_alloc ((end-spk)+1);
 	    memcpy (*value, spk, (end-spk)-1);
 	}
     }
 
-    safe_free (p);
+    free_if_alloc (p);
     CloseHandle (out);
     return err;
 }

Modified: trunk/Src/wptImportList.cpp
===================================================================
--- trunk/Src/wptImportList.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptImportList.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -27,6 +27,7 @@
 #include <sys/types.h>
 #include <ctype.h>
 
+#include "resource.h"
 #include "wptTypes.h"
 #include "wptGPG.h"
 #include "wptCommonCtl.h"
@@ -36,6 +37,7 @@
 #include "wptUTF8.h"
 #include "wptW32API.h"
 #include "wptRegistry.h"
+#include "wptVersion.h"
 #include "openpgp.h"
 
 
@@ -208,7 +210,7 @@
     import_key_t key;
     int in_cert, got_block = 0;
     char buf[384];
-    int n=0;
+    int n;
 
     if (!r_key)
 	return gpg_error (GPG_ERR_INV_ARG);
@@ -279,10 +281,10 @@
 	BUG (NULL);
 
     if (!subalgo)
-	_snprintf (p, 64, "%s %s %s", state,
+	_snprintf (p, n, "%s %s %s", state,
 		   get_key_pubalgo (pkalgo),type);
     else
-	_snprintf (p, 64, "%s %s/%s %s", state,
+	_snprintf (p, n, "%s %s/%s %s", state,
 		    get_key_pubalgo (pkalgo),
 		    get_key_pubalgo (subalgo), type);
     return p;
@@ -293,11 +295,11 @@
 static int
 implist_add_key (listview_ctrl_t lv, int pos, import_key_t key)
 {
-    char buf[128], * desc;
+    char buf[64], *desc;
     const char *t;
     u32 tt, tt2=0;
 	
-    if (listview_add_item( lv, " " ))
+    if (listview_add_item_image (lv, " ", key->secret? 1 : 0))
 	return WPTERR_GENERAL;
     t = key->uid;
     if (!t || strlen (t) < 5)
@@ -307,7 +309,7 @@
     tt = key->length;
     if (key->subkey_length > 0)
 	tt2 = key->subkey_length;
-    if (tt && tt2)
+    if (tt > 0 && tt2 > 0)
 	_snprintf (buf, DIM (buf) - 1, "%d/%d", tt, tt2);
     else
 	_snprintf (buf, DIM (buf)-1, "%d", tt);
@@ -319,10 +321,8 @@
     _snprintf (buf, DIM (buf) -1, "0x%s", t+8);
     listview_add_sub_item (lv, pos, IMPL_COL_KEYID, buf);
 
-	
-    tt = key->timestamp;
-    t = get_key_created (tt);
-    if( !t )
+    t = get_key_created (key->timestamp);
+    if (!t)
 	t = "????" "-??" "-??";
     listview_add_sub_item (lv, pos, IMPL_COL_CREATION, (char *)t);
 
@@ -337,9 +337,10 @@
 
 
 /* Create a list view for list keys. */
-int
+void
 implist_build (listview_ctrl_t *lv, HWND ctrl)
 {
+    HICON ico[2];
     struct listview_ctrl_s *c;
     struct listview_column_s implist[] = {
 	{0, 190, (char *)_("User ID")},	
@@ -348,38 +349,39 @@
 	{3,  72, (char *)_("Creation")},
 	{4, 132, (char *)_("Type")},
 	{0,   0, NULL}
-	};	
-    int j;
+	};    
+    int i;
 	
     listview_new (&c, ctrl);
-    for (j = 0; implist[j].fieldname != NULL; j++)
-	listview_add_column (c, &implist[j]);
+    for (i = 0; implist[i].fieldname != NULL; i++)
+	listview_add_column (c, &implist[i]);
     listview_set_ext_style (c);
+    ico[0] = LoadIcon (glob_hinst, (LPCTSTR)IDI_PUBKEY);
+    ico[1] = LoadIcon (glob_hinst, (LPCTSTR)IDI_KEYPAIR);
+    listview_set_image_list (c, 22, 14, ico, 2);
     *lv = c;
-    return 0;
 }
 
 
 static int
 check_import_data (const char *fname, int *r_revcert)
 {
-    FILE *f;
+    FILE *fp;
     char buf[512];
     int n;
 
-    f = fopen (fname, "rb");
-    if (!f)
+    fp = fopen (fname, "rb");
+    if (!fp)
 	return -1;
 
     *r_revcert = 0;
-    n = fread (buf, 1, 511, f);
-    if (n > 0) {
-	buf[n] = 0;
-	if (strstr (buf, "A revocation certificate should follow"))
-	    *r_revcert = 1;
-    }
-
-    fclose (f);
+    n = fread (buf, 1, DIM (buf)-1, fp);
+    fclose (fp);
+    if (!n)
+	return 0;
+    buf[n] = 0;
+    if (strstr (buf, "A revocation certificate should follow"))
+	*r_revcert = 1;
     return 0;
 }
 
@@ -394,9 +396,9 @@
     gpgme_data_t list;
     gpgme_error_t err;    
     import_key_t key;
+    char *pending_line = NULL;
+    char fname[MAX_PATH+32+1], *out;
     int rc = 0, is_tmp=0;
-    char *pending_line = NULL;
-    char fname[300], *out;
     
     if (!file) {
 	err = gpg_data_new_from_clipboard (&list, 0);

Modified: trunk/Src/wptKeyCacheDlg.cpp
===================================================================
--- trunk/Src/wptKeyCacheDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyCacheDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -13,10 +13,6 @@
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with WinPT; if not, write to the Free Software Foundation, 
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -62,13 +58,15 @@
 	secring = get_gnupg_keyring (0, NO_STRICT);
 	if (!secring)
 	    BUG (0);
-        if (rcs->tr_update)
+        if (rcs->sig_update)
             gpg_rebuild_cache (NULL);
-        if (rcs->kr_update)
+        if (rcs->kring_update)
             err = keycache_init (pubring, secring);
 	free_if_alloc (pubring);
 	free_if_alloc (secring);
 	if (err) {
+	    /* XXX: should we use gpg_check_return_code() to suggest
+	            to check the config file in case of errors?? */
 	    msg_box (dlg, gpgme_strerror (err), _("Key Cache"), MB_ERR);
 	    EndDialog (dlg, 1);
 	}

Modified: trunk/Src/wptKeyEditCB.cpp
===================================================================
--- trunk/Src/wptKeyEditCB.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyEditCB.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -395,6 +395,7 @@
 } 
 
 
+/* 'setpref' command handler. */
 static const char*
 cmd_setpref_handler (GpgKeyEdit *ctx, gpgme_status_code_t code, const char *key)
 {

Modified: trunk/Src/wptKeyEditDlgs.cpp
===================================================================
--- trunk/Src/wptKeyEditDlgs.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyEditDlgs.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -328,9 +328,9 @@
     fp = fopen (fname, "rb");
     if (!fp)
 	return false;
-    n = fread (buf, 1, 10, fp);
+    n = fread (buf, 1, DIM (buf), fp);
     fclose (fp);
-    if (n < 10)
+    if (n < DIM (buf))
 	return false;
     return buf[6] == 'J' && buf[7] == 'F' &&
 	   buf[8] == 'I' && buf[9] == 'F';
@@ -348,7 +348,7 @@
     char file[128];
     int id;
 
-    switch( msg ) {
+    switch (msg) {
     case WM_INITDIALOG:
 	cb = (keyedit_cb_t)lparam;
 	if (!cb)
@@ -662,6 +662,8 @@
 	}
 	if (HIWORD (wparam) == LBN_SELCHANGE && 
 	    LOWORD (wparam) == IDC_ADDSUBKEY_ALGO) {
+	    /* If the selected algorithm is DSA, automatically set the
+	       size to 1024, otherwise use the default keysize. */
 	    index = SendMessage ((HWND)lparam, LB_GETCURSEL, 0, 0);
 	    SendDlgItemMessage (dlg, IDC_ADDSUBKEY_SIZE, CB_SETCURSEL, 
 				index==0? 0 : 2, 0);
@@ -672,6 +674,7 @@
 	    keygen = (keygen_cb_t)ctx->opaque;
 	    assert (keygen);
             hwnd = GetDlgItem (dlg, IDC_ADDSUBKEY_ALGO);
+	    /* Map combo box numbers to GPG answers. */
 	    switch (listbox_get_cursel (hwnd)) {
 	    case 0: index = 2; break;
 	    case 1: index = 4; break;
@@ -874,7 +877,8 @@
 	ke->setNoPassphrase (true);
     err = ke->setPreferredKeyserver (-1, url->url);
     if (!err)
-	msg_box (dlg, _("Preferred keyserver successfully set."), _("Key Edit"), MB_OK);
+	msg_box (dlg, _("Preferred keyserver successfully set."), 
+		 _("Key Edit"), MB_OK);
     else
 	msg_box (dlg, gpgme_strerror (err), _("Key Edit"), MB_ERR);
 
@@ -987,9 +991,10 @@
     if (!k.is_v3)
 	return 0;
     sym_prefs = k.ext->sym_prefs;
+    /* Assume that only v3 keys have no symmetric cipher 
+       preferences and thus IDEA is explicit. */
     if (!sym_prefs)
-	return 1; /* assume that only v3 keys have no symmetric cipher preferences
-		     and thus IDEA is explicit. */
+	return 1; 
     for (n = 0; sym_prefs[n]; n++)
 	;
     if ((n == 0 || n == 1) && *sym_prefs == 0x01)
@@ -1134,9 +1139,9 @@
 	if (sub->can_certify) t = "*"; else t = "";
 	listview_add_sub_item (lv, i, SUBK_COL_C_FLAG, t);
 	if (sub->can_sign) t = "*"; else t = "";
-	listview_add_sub_item( lv, i, SUBK_COL_S_FLAG, t );
+	listview_add_sub_item (lv, i, SUBK_COL_S_FLAG, t);
 	if (sub->can_encrypt) t = "*"; else t = "";
-	listview_add_sub_item( lv, i, SUBK_COL_E_FLAG, t );
+	listview_add_sub_item (lv, i, SUBK_COL_E_FLAG, t);
 	if (sub->can_authenticate) t = "*"; else t = "";
 	listview_add_sub_item (lv, i, SUBK_COL_A_FLAG, t);
     }
@@ -1205,7 +1210,7 @@
 do_init_cmdlist (HWND dlg, int is_keypair)
 {    
     const char *s;
-    int i = 0;
+    int i;
 
     for (i = 0; (s=cmdlist[i].name); i++) {
 	if (is_keypair)
@@ -1250,8 +1255,7 @@
 	 "ADDREVOKER  add a revocation key\r\n"
 	 "EXPIRE      change the expire date\r\n"
 	 "SHOWPREF    list preferences (verbose)\r\n"
-	 "SETPREF     set preference list\r\n"
-	 "UPDPREF     updated preferences\r\n"
+	 "SETPREF     update specific algorithm preferences\r\n"
 	 "PASSWD      change the passphrase\r\n"
 	 "PRIMARY     flag user ID as primary\r\n"
 	 "TRUST       change the ownertrust\r\n"
@@ -1268,12 +1272,26 @@
 }
 
 
+static gpgme_subkey_t
+get_subkey_bypos (const char *keyid, int idx)
+{
+    gpgme_key_t key;
+
+    if (get_pubkey (keyid, &key))
+	return NULL;
+    return get_nth_key (key, idx);
+}
+
+
+
 static int
 do_editkey_delkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv)
 {
     gpgme_error_t err;
+    gpgme_subkey_t subk;
     GpgKeyEdit *ke;
     int pos, id;
+    const char *warn;
     char tmp[64];
 
     if (!k->key_pair)
@@ -1292,15 +1310,23 @@
 	msg_box (dlg, _("Primary key can not be deleted!"), _("Key Edit"), MB_ERR);
         return FALSE;
     }
-     
-    /* XXX: change the warning to make clear that verification won't work
-	    any longer if this is a sign-only key. */
+
     listview_get_item_text (lv, pos, 0, tmp, sizeof (tmp) -1);
-    id = log_box (_("Key Edit"), MB_YESNO|MB_ICONWARNING,
-		    _("\"Subkey %s.\"\n\n"
-		      "Anything encrypted to the selected subkey will no longer\n"
-		      "be able to be decrypted.\n\n"
-		      "Do you really want to delete this subkey?"), tmp);
+    subk = get_subkey_bypos (k->keyid, pos);
+    /* Issue different warning for the different key capabilities. */
+    if (subk->can_encrypt)
+	warn = _("Anything encrypted to the selected subkey cannot be\n"
+	         "decrypted any longer.");
+    else if (subk->can_sign || subk->can_certify)
+	warn = _("Anything signed by the selected subkey cannot be\n"
+		 "verified any longer.");
+    else
+	warn = ""; /* just get rid of the warning. */
+
+    id = log_box (_("Key Edit"), MB_YESNO|MB_ICONWARNING, 
+		  _("\"Subkey %s.\"\n\n%s\n\n"
+		    "Do you really want to delete this subkey?"), 
+		  tmp, warn);
     if (id == IDNO)
 	return FALSE;
 

Modified: trunk/Src/wptKeyManagerDlg.cpp
===================================================================
--- trunk/Src/wptKeyManagerDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyManagerDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1051,6 +1051,55 @@
 }
 
 
+static int
+km_gui_adjust_column_images (listview_ctrl_t ctx, int sortby)
+{
+    HWND hheader;
+    HDITEM hdi;
+    int idx, sort_desc = 0;  
+
+    hheader = ListView_GetHeader (ctx->ctrl);
+    if (!hheader)
+        return 0;
+
+    /* Remove image from all header fields */
+    memset (&hdi, 0, sizeof(hdi));
+
+    for (int i=0; i < 7; i++) {
+        hdi.mask = HDI_FORMAT;
+        Header_GetItem (hheader, i, &hdi);
+        hdi.fmt &= ~HDF_IMAGE;
+        Header_SetItem (hheader, i, &hdi);
+    }
+
+    switch (sortby & ~KEYLIST_SORT_DESC) {
+    case KEY_SORT_USERID:    idx = 0; break;
+    case KEY_SORT_KEYID:     idx = 1; break;
+    case KEY_SORT_IS_SECRET: idx = 2; break;
+    case KEY_SORT_LEN:       idx = 3; break;
+    case KEY_SORT_VALIDITY:  idx = 5; break;
+    case KEY_SORT_OTRUST:    idx = 6; break;
+    case KEY_SORT_CREATED:   idx = 7; break;
+    case KEY_SORT_ALGO:      idx = 8; break;
+    default:                 idx = 0; break;
+    }
+
+    sort_desc = sortby & KEYLIST_SORT_DESC;
+    /* Set image to currently sorted field */
+    memset (&hdi, 0, sizeof(hdi));
+    hdi.mask = HDI_IMAGE | HDI_FORMAT;
+    Header_GetItem (hheader, idx, &hdi);   
+    hdi.fmt |= HDF_IMAGE | HDF_BITMAP_ON_RIGHT;
+    if (!ctx->ext_chkbox)
+	hdi.iImage = imagelist_getindex (sort_desc? IMI_SORT_DOWNARROW :
+						    IMI_SORT_UPARROW);
+    else
+	hdi.iImage = sort_desc? KEY_IMG_SORT_DOWN : KEY_IMG_SORT_UP;
+    Header_SetItem (hheader, idx, &hdi);
+    return 0;
+}
+
+
 /* Return true if the cache contain marked keys. */
 static bool
 updated_keys_avail (void)
@@ -1102,6 +1151,7 @@
 	}
     }
     keylist_sort (kmi->lv, kmi->keylist_sortby);
+    km_gui_adjust_column_images (kmi->lv, kmi->keylist_sortby);
     update_status_bar (kmi->statbar, kmi->lv);
     keyring_check_last_access ();
     SetForegroundWindow (kmi->dlg);
@@ -1115,8 +1165,7 @@
     refresh_cache_s rcs;
 
     memset (&rcs, 0, sizeof rcs);
-    rcs.kr_reload = rcs.kr_update = 1;
-    rcs.tr_update = 0;
+    rcs.kring_update = 1;
     DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg,					
 		    keycache_dlg_proc, (LPARAM)&rcs);
 }
@@ -1341,6 +1390,7 @@
         update_ui_items (dlg, kmi->lv);
 	restore_column_info (kmi);
 	keylist_sort (kmi->lv, kmi->keylist_sortby);
+	km_gui_adjust_column_images (kmi->lv, kmi->keylist_sortby);
 
 	SendMessage (dlg, WM_SETICON, (WPARAM)ICON_SMALL, 
 		     (LPARAM)LoadIcon (glob_hinst, (LPCTSTR)IDI_WINPT));
@@ -1514,7 +1564,8 @@
 		popup = GetSubMenu (hm, 0);
 		translate_popupmenu_strings (popup);
 
-		if (km_check_for_seckey (kmi->lv, l_idx, &i))
+		if (km_check_for_seckey (kmi->lv, l_idx, &i) &&
+		    !(km_get_key_status (kmi->lv, l_idx) & KM_FLAG_REVOKED))
 		    set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED);
 		if (i == 0)
 		    set_menu_state (popup, ID_KEYCTX_MAXTRUST, MF_ENABLED);
@@ -1593,6 +1644,8 @@
                 else
                     kmi->keylist_sortby = sortby;
                 keylist_sort (kmi->lv, kmi->keylist_sortby);
+		km_gui_adjust_column_images (kmi->lv, kmi->keylist_sortby);
+
                 return TRUE;
             }
             break;

Modified: trunk/Src/wptKeyPropsDlg.cpp
===================================================================
--- trunk/Src/wptKeyPropsDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyPropsDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -42,7 +42,7 @@
 static int
 do_check_key (gpgme_key_t key)
 {
-    int invalid = 0;
+    int invalid;
 
     invalid = key->expired;
     if (!invalid)
@@ -221,7 +221,19 @@
 }
 
 
+/* Return extended algorithm information. */
+const char*
+props_get_key_algo (gpgme_key_t key, int idx)
+{
+    /* PGP calls the old RSAv3 keys 'RSA Legacy' and because this
+       is a good method to differ between OpenPGP v4 cert-only keys
+       and v3 RSA keys, we use the same notation. */
+    if (key->subkeys != NULL && strlen (key->subkeys->fpr) == 32)
+	return "RSA Legacy";
+    return get_key_algo (key, idx);
+}
 
+
 /* Display the key information for key @k.
    Return value: gpgme key on success. */
 static void
@@ -252,7 +264,7 @@
 	       "%s\r\n"),
                get_key_type (key),
                k->keyid,
-               get_key_algo (key, 0),
+               props_get_key_algo (key, 0),
                get_key_size (key, 0),
                get_key_created (created),
 	       get_key_expire_date (expires),
@@ -290,7 +302,7 @@
 	k->has_photo = 1;
 	if (valid < GPGME_VALIDITY_MARGINAL)
 	    SetDlgItemText (dlg, IDC_KEYPROPS_IMGINF, _("Photo-ID not validated."));
-    }    
+    }
     if (k->key_pair)
         EnableWindow (GetDlgItem (dlg, IDC_KEYPROPS_CHANGE_PWD), TRUE);
     if (check_for_desig_rev (k->ctx))
@@ -351,12 +363,6 @@
 	    return TRUE;
             
         case IDC_KEYPROPS_OT_CHANGE:
-	    if (do_check_key (prop->key->ctx)) {
-		msg_box (dlg, _("The status of this key is 'revoked' or 'expired'.\n"
-				"You cannot change the ownertrust of such keys."),
-				_("WinPT Warning"), MB_ERR);
-		return TRUE;
-	    }
 	    if (!prop->key->key_pair && !key_is_valid (prop->key->ctx)) {
 		rc = msg_box (dlg, _("This is a non-valid key.\n"
 				     "Modifying the ownertrust has no effect on such keys.\n\n"

Modified: trunk/Src/wptKeylist.cpp
===================================================================
--- trunk/Src/wptKeylist.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeylist.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -321,6 +321,7 @@
     return "???";
 }
 
+
 const char*
 get_key_fpr (gpgme_key_t key)
 {
@@ -572,7 +573,7 @@
 
 /* Create a listview for listing keys. Use the mode given in @mode
    and the control is given in @ctrl. */
-static int
+static void
 keylist_build (listview_ctrl_t *r_lv, HWND ctrl, int mode)
 {
     struct listview_column_s klist_enc[] = {
@@ -594,7 +595,7 @@
     {7, 72, (char *)_("Creation")},
     {0, 0, NULL}
     };
-    HICON ico[4];
+    HICON ico[6];
     listview_ctrl_t lv;
     listview_column_t col;
     int j, n = 0, ext_chk = 0;
@@ -619,16 +620,17 @@
 	listview_add_column (lv, &col[j]);
     listview_set_ext_style (lv);
     if (ext_chk)
-	listview_set_chkbox_style (lv);    
+	listview_set_chkbox_style (lv);
     ico[0] = LoadIcon (glob_hinst, (LPCTSTR)IDI_PUBKEY);
     ico[1] = LoadIcon (glob_hinst, (LPCTSTR)IDI_KEYPAIR);
-    ico[2] = LoadIcon (glob_hinst, (LPCTSTR)IDI_SORT_DOWNARROW);
-    ico[3] = LoadIcon (glob_hinst, (LPCTSTR)IDI_SORT_UPARROW);
-    listview_set_image_list (lv, 22, 14, ico, 4);
+    ico[2] = LoadIcon (glob_hinst, (LPCTSTR)IDI_REV_KEYPAIR);
+    ico[3] = LoadIcon (glob_hinst, (LPCTSTR)IDI_REV_PUBKEY);
+    ico[4] = LoadIcon (glob_hinst, (LPCTSTR)IDI_SORT_DOWNARROW);
+    ico[5] = LoadIcon (glob_hinst, (LPCTSTR)IDI_SORT_UPARROW);
+    listview_set_image_list (lv, 22, 14, ico, DIM (ico));
     listview_del_all_items (lv);
 
     *r_lv = lv;
-    return 0;
 }
 
 
@@ -667,11 +669,8 @@
 	      int mode, int sortby)
 {    
     listview_ctrl_t lv;
-    int rc = 0;    
 
-    rc = keylist_build (&lv, ctrl, mode);
-    if (rc)
-	return NULL;    	
+    keylist_build (&lv, ctrl, mode);  
     keylist_load_keycache (lv, mode, pubkc, seckc);
     keylist_sort (lv, sortby);
     if (mode & KEYLIST_ENCRYPT_MIN)
@@ -705,31 +704,48 @@
 static int
 find_secret_key (gpgme_key_t key)
 {
-    const char *keyid;
     winpt_key_s skey;
     
+    if (!key->subkeys->keyid)
+	return 0;
     memset (&skey, 0, sizeof (skey));
-    keyid = key->subkeys->keyid;
-    if (!keyid)
-	return 0;
-    winpt_get_seckey (keyid, &skey);
+    winpt_get_seckey (key->subkeys->keyid, &skey);
     if (skey.ext && skey.ext->gloflags.divert_to_card)
 	return 2;
     return skey.ctx? 1 : 0;
 }
 
 
+/* Enumeration for possible key icons. */
+enum key_icontype_t {
+    IMG_KEY_PUB = 0,
+    IMG_KEY_PAIR = 1,
+    IMG_KEY_PAIR_REV = 2,
+    IMG_KEY_PUB_REV = 3
+};
+
+
 static int
+key_get_image_id (gpgme_key_t key)
+{
+    if (find_secret_key (key))	  
+	return key->revoked ? IMG_KEY_PAIR_REV :IMG_KEY_PAIR;
+    if (key->revoked)
+	return IMG_KEY_PUB_REV;
+    return IMG_KEY_PUB;
+}
+
+
+static int
 do_addkey (listview_ctrl_t lv, struct keycache_s *ctx, gpgme_key_t key, 
 	   int uididx, int keyidx, int list)
 {    
     LV_ITEM lvi;
     gpgme_user_id_t u;
     gpgme_subkey_t k;
-    char fmt[128], *p;
+    char *p;
     const char *attr;
-    u32 key_attr;
-    int idx = 0;    
+    int idx = 0;
 
     /* we check the pubkey algorithm here to make sure that no ElGamal
        sign+encrypt key is used in _any_ mode */
@@ -746,7 +762,7 @@
     memset (&lvi, 0, sizeof lvi);
     lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
     lvi.pszText = (char *)attr;
-    lvi.iImage = find_secret_key (key)? 1 : 0;
+    lvi.iImage = key_get_image_id (key);
     lvi.lParam = (LPARAM )ctx;
     if (ListView_SetItem (lv->ctrl, &lvi) == FALSE)
 	return WPTERR_GENERAL;
@@ -769,12 +785,14 @@
     else	
 	listview_add_sub_item (lv, 0, idx++, attr);
     k = get_nth_key (key, keyidx);
-    if (k && k->keyid) {
-	_snprintf (fmt, DIM (fmt) -1, "0x%s", k->keyid + 8);
-	listview_add_sub_item (lv, 0, idx++, fmt);
+    if (k && k->keyid != NULL) {
+	char keyid[16+1];
+
+	_snprintf (keyid, DIM (keyid) -1, "0x%s", k->keyid + 8);
+	listview_add_sub_item (lv, 0, idx++, keyid);
     }
     if (list > 0) {
-	key_attr = find_secret_key (key);
+	DWORD key_attr = find_secret_key (key);
 	if (!key_attr)
 	    attr = "pub";
 	else
@@ -783,32 +801,30 @@
     }
     if (lv->cols >= 2) {
 	attr = get_key_size (key, list == -1? keyidx+1 : 0);
-	if (attr)
+	if (attr != NULL)
 	    listview_add_sub_item (lv, 0, idx++, attr);
     }
     if (lv->cols >= 3) {
 	attr = get_key_algo (key, list == -1? keyidx+1 : 0);
-	if (attr) 
+	if (attr != NULL) 
 	    listview_add_sub_item( lv, 0, idx++, attr);
     }
     if (lv->cols >= 4) {
-	p = get_key_status( key, uididx, list > 0? 1 : 0 );
-	if (!p)
-	    return WPTERR_GENERAL;
-	listview_add_sub_item (lv, 0, idx++, p);
+	p = get_key_status (key, uididx, list > 0? 1 : 0);
+	if (p != NULL)
+	    listview_add_sub_item (lv, 0, idx++, p);
 	free_if_alloc (p);
     }
     if (lv->cols >= 5) {
 	attr = get_key_trust (key, uididx, list > 0? 1 : 0);
 	listview_add_sub_item (lv, 0, idx++, attr);
     }
-    if( lv->cols >= 6 ) {
+    if (lv->cols >= 6) {
 	k = get_nth_key (key, keyidx);
-	key_attr = k->timestamp;
-	if( key_attr ) {
-	    attr = get_key_created (key_attr);
-	    listview_add_sub_item( lv, 0, idx++, attr );
-	}	
+	if (k->timestamp > 0) {
+	    attr = get_key_created (k->timestamp);
+	    listview_add_sub_item (lv, 0, idx++, attr);
+	}
     }
 
     return 0;

Modified: trunk/Src/wptKeyserver.cpp
===================================================================
--- trunk/Src/wptKeyserver.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyserver.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -37,7 +37,9 @@
 #include "wptW32API.h"
 #include "wptRegistry.h"
 #include "wptUTF8.h"
+#include "wptVersion.h"
 
+
 /* Map net_errno to a winsock error. */
 #define net_errno ((int)WSAGetLastError ())
 
@@ -59,8 +61,8 @@
 char *default_keyserver = NULL;
 WORD default_keyserver_port = 0;
 
-/* Default socket timeout. */
-static int default_socket_timeout = 6;
+/* Default socket timeout (secs). */
+static size_t default_socket_timeout = 6;
 
 
 /* Wrapper for safe memory allocation. */
@@ -277,11 +279,12 @@
    returned in @nbytes.
    Return value: 0 on success. */
 static int
-sock_read (int fd, char *buf, int buflen, int *nbytes)
+sock_read (int fd, char *buf, size_t buflen, int *nbytes)
 {
-    DWORD nread;
-    int nleft = buflen;
-    int rc, n = 0;
+    int nread;
+    size_t nleft = buflen;
+    size_t n = 0;
+    int rc;
     
     if (nbytes)
 	*nbytes = 0;
@@ -315,7 +318,7 @@
 /* Helper to create a string from the gpgme data and
    then release the gpgme data object. */
 char*
-data_release_and_get_mem (gpgme_data_t in, int *r_bufferlen)
+data_release_and_get_mem (gpgme_data_t in, size_t *r_bufferlen)
 {
     size_t n;
     char *buffer, *p;
@@ -324,7 +327,7 @@
     p = gpgme_data_release_and_get_mem (in, &n);
     buffer = m_strdup (p);
     if (r_bufferlen)
-	*r_bufferlen = (int)n;
+	*r_bufferlen = n;
     gpgme_free (p);
     return buffer;
 }
@@ -334,23 +337,23 @@
    return the data in @buffer. Caller must free data.
    Return value: 0 on success. */
 int
-sock_read_ext (int fd, char **buffer, int *r_bufferlen)
+sock_read_ext (int fd, char **buffer, size_t *r_bufferlen)
 {
     gpgme_data_t dh;
     char buf[1024];
-    size_t n=0;
+    size_t timeout=0;
     int nread, rc;
 
     if (gpgme_data_new (&dh))
-	BUG (0);
-    while (n < 10) {
+	return SOCKET_ERROR;
+    while (timeout < default_socket_timeout) {
 	rc = sock_select (fd, 1);
 	if (rc == SOCKET_ERROR) {
 	    gpgme_data_release (dh);
 	    return rc;
 	}
 	else if (!rc)
-	    n++;
+	    timeout++; /* socket not ready yet. */
 	else {
 	    nread = recv (fd, buf, DIM (buf), 0);
 	    if (nread == SOCKET_ERROR)
@@ -360,7 +363,8 @@
 	    gpgme_data_write (dh, buf, nread);
 	}
     }
-
+    if (timeout >= default_socket_timeout)
+	return WPTERR_WINSOCK_TIMEOUT;
     *buffer = data_release_and_get_mem (dh, r_bufferlen);
     return 0;
 }
@@ -368,9 +372,9 @@
 
 /* Write the buffer @buf with the length @buflen to a socket @fd. */
 static int
-sock_write (int fd, const char *buf, int buflen)
+sock_write (int fd, const char *buf, size_t buflen)
 {
-    DWORD nwritten;
+    int nwritten;
     int nleft = buflen;
 
     while (nleft > 0) {
@@ -417,7 +421,7 @@
     free_if_alloc (p);
     free_if_alloc (default_keyserver);
     for (i=0; i < MAX_KEYSERVERS; i++) {
-	if (server[i].used && server[i].name != NULL)
+	if (server[i].name != NULL)
 	    free_if_alloc (server[i].name);
     }
     kserver_proxy_release (&proxy);
@@ -468,7 +472,7 @@
 
 /* Set default socket timeout for all reading operations. */
 void
-kserver_set_socket_timeout (int nsec)
+kserver_set_socket_timeout (size_t nsec)
 {
     if (nsec < 0 || nsec > 3600)
 	nsec = 0;
@@ -495,7 +499,7 @@
 	*port = default_keyserver_port;
 	return default_keyserver;
     }
-    else if (!type && idx < DIM (server_list)) {
+    else if (!type && (size_t)idx < DIM (server_list)) {
 	/* XXX: handle non HKP servers. */
 	*port = HKP_PORT;
 	return server_list[idx];
@@ -698,12 +702,13 @@
     FILE *fp;
     char buf[1024], *s, *p;
     char *user = NULL, *pass = NULL;    
-    int no_config=0, chk_pos=0;
+    int no_config=0, chk_pos;
     int pos;
     
     for (pos = 0; pos < MAX_KEYSERVERS; pos++) {
 	server[pos].used = 0;
 	server[pos].port = HKP_PORT;
+	server[pos].name = NULL;
     }
     
     fp = fopen (conf, "rb");
@@ -713,7 +718,7 @@
 	    server[pos].name = m_strdup (server_list[pos]);
 	    server[pos].proto = proto_from_URL (server_list[pos]);
 	}
-	no_config=1;
+	no_config = 1;
     }
     read_proxy_config (&proxy);
     if (user && pass)
@@ -776,7 +781,7 @@
     if (fp)
 	fclose (fp);
     if (!pos) {
-	/* only issue an error if the config file exist but 
+	/* Only issue an error if the config file exist but 
 	   it has no valid entries. */
 	keyserver_set_default (NULL, HKP_PORT);
 	if (!no_config)
@@ -811,10 +816,7 @@
     memset (&sock, 0, sizeof (sock));
     sock.sin_family = AF_INET;
     sock.sin_port = htons (port);
-    if (use_proxy)
-	strncpy (host, proxy.host, DIM (host)-1);
-    else
-	strncpy (host, hostname, DIM (host)-1);
+    strncpy (host, use_proxy? proxy.host : hostname, DIM (host)-1);
 
     if ((iaddr = inet_addr (host)) != INADDR_NONE)
 	memcpy (&sock.sin_addr, &iaddr, sizeof (iaddr));
@@ -871,8 +873,7 @@
 {
     gpgme_data_t hd;
     char numbuf[5], *p;
-    size_t i;
-    int nlen;
+    size_t i, nlen;
 
     if (gpgme_data_new (&hd))
 	BUG (0);
@@ -955,7 +956,7 @@
 /* Interface for receiving a public key. */
 int
 kserver_recvkey (const char *hostname, WORD port, const char *keyid,
-		 char **r_key, int *r_keylen)
+		 char **r_key, size_t *r_keylen)
 {
     const char *fmt;
     char *request = NULL;
@@ -1022,7 +1023,8 @@
 
 /* Interface to send a public key. */
 int
-kserver_sendkey (const char *hostname, WORD port, const char *pubkey, int len )
+kserver_sendkey (const char *hostname, WORD port, 
+		 const char *pubkey, size_t len)
 {
     char *request = NULL;
     char log[2048] = {0};
@@ -1035,11 +1037,6 @@
 	goto leave;
     
     request = kserver_send_request (hostname, port, pubkey, len);
-    if (request == NULL) {
-	rc = WPTERR_GENERAL;
-	goto leave;	
-    }
-    
     rc = sock_write (conn_fd, request, strlen (request));
     if (rc == SOCKET_ERROR) {
 	rc = WPTERR_WINSOCK_SENDKEY;
@@ -1058,7 +1055,7 @@
 	goto leave;
     
     WSASetLastError (0);
-    
+
 leave:
     closesocket (conn_fd);
     free_if_alloc (request);
@@ -1096,12 +1093,12 @@
 
 
 /* Extract the amount of keys from the info record. */
-static int
+static size_t
 count_keys_in_response (char *buf)
 {
     char *p;
     int recno = 0;
-    int n = 0;
+    size_t n = 0;
 
     /* info:1:4 */
     if (strncmp (buf, "info", 4))
@@ -1124,7 +1121,7 @@
    the amount of keys which were found. */
 int
 kserver_search_begin (const char *hostname, WORD port, 
-		      const char *pattern, int *conn_fd, int *nkeys)
+		      const char *pattern, int *conn_fd, size_t *nkeys)
 {
     const char *fmt;
     char *request = NULL;
@@ -1444,12 +1441,13 @@
     }
     fprintf (fp,
 	"VERSION 1\n"
-	"PROGRAM 1.4.3-cvs\n"
+	"PROGRAM %d.%d.%d\n"
 	"SCHEME ldap\n"
 	"HOST %s\n"
 	"COMMAND GET\n"
 	"\n"
 	"%s\n",
+	gpgver[0], gpgver[1], gpgver[2],
 	host? skip_type_prefix (host): "64.94.85.200", keyid);
     fclose (fp);
 
@@ -1476,7 +1474,7 @@
    @key contains the key on success. */
 int
 ldap_recvkey (const char *host, const char *keyid, 
-	      char **r_key, int *r_keylen)
+	      char **r_key, size_t *r_keylen)
 {   
     gpgme_data_t raw;
     FILE *fp;
@@ -1522,7 +1520,7 @@
    On success @key contains the key. */
 int
 finger_recvkey (const char *host, const char *user, 
-		char **r_key, int *r_keylen)
+		char **r_key, size_t *r_keylen)
 {
     gpgme_data_t raw;
     char buf[256+1];
@@ -1538,7 +1536,7 @@
     sock_write (fd, "\r\n", 2);
 
     if (gpgme_data_new (&raw))
-	BUG (0);
+	return WPTERR_WINSOCK_RECVKEY;
 
     for (;;) {
 	if (sock_getline (fd, buf, DIM (buf)-1, &nread))
@@ -1565,18 +1563,18 @@
 }
 
 
-/* Check if the given name @name is a valid hostname. */
+/* Check if the given name @name is a valid inernet address
+   which means an dotted IP or a valid DNS name.
+   Return value: 0 on success. */
 int
-check_IP_or_hostname (const char *name)
+check_inet_address (const char *addr)
 {
     const char *not_allowed = "=!§$%&@#*~\\/}][{<>|,;:'";
-    size_t i, j;
+    size_t i;
 
-    for (i=0; i < strlen (name); i++) {
-	for (j =0; j < strlen (not_allowed); j++) {
-	    if (name[i] == not_allowed[j])
-		return -1;
-	}
+    for (i=0; i < strlen (addr); i++) {
+	if (strchr (not_allowed, addr[i]))
+	    return -1;
     }
     return 0;
 }

Modified: trunk/Src/wptKeyserverDlg.cpp
===================================================================
--- trunk/Src/wptKeyserverDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyserverDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -178,7 +178,7 @@
     gpgme_error_t err;
     GPGME *gpg = NULL;
     char *rawkey = NULL;
-    int keylen = 0;
+    size_t keylen = 0;
     int rc;
 
     if (proto == KSPROTO_LDAP) {

Modified: trunk/Src/wptKeyserverSearchDlg.cpp
===================================================================
--- trunk/Src/wptKeyserverSearchDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeyserverSearchDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -87,8 +87,9 @@
     keyserver_key_s *key;
     const char *uid;
     char bits[32], algo[32], keyid[32];
+    size_t nkeys=0;
     int conn_fd = 0;    
-    int rc, nkeys = 0;
+    int rc;
 
     rc = kserver_search_begin (ksc->name, ksc->port, ksc->pattern, 
 			       &conn_fd, &nkeys);

Modified: trunk/Src/wptKeysignDlg.cpp
===================================================================
--- trunk/Src/wptKeysignDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptKeysignDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -451,8 +451,11 @@
 
 	    err = ke->signKey (type, sig_class, expires? keymsg : "0");
 	    sfree_if_alloc (pwd);
-	    if (err)
+	    if (err) {
 		msg_box (dlg, gpgme_strerror (err), _("Key Signing"), MB_ERR);
+		delete ke;
+		return TRUE;
+	    }
 	    else if (ke->getResult () != 0)
 		msg_box (dlg, _("This key is already signed by your key"), 
 			 _("Key Signing"), MB_INFO);

Modified: trunk/Src/wptListView.cpp
===================================================================
--- trunk/Src/wptListView.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptListView.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -46,11 +46,9 @@
     c = new struct listview_ctrl_s;
     if (!c)
 	BUG (NULL);
-    c->cols = 0;
-    c->items = 0;
+    memset (c, 0, sizeof *c);
     c->ctrl = ctrl? ctrl : NULL;
     c->hil = NULL;
-    c->ext_chkbox = 0;
     *ctx = c;
 }
 
@@ -89,13 +87,13 @@
     int rc = 0;
     LV_COLUMN lvc;
 
-    memset( &lvc, 0, sizeof lvc );
+    memset (&lvc, 0, sizeof lvc);
     lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
     lvc.pszText = col->fieldname;
     lvc.cx = col->width;
     lvc.fmt = LVCFMT_LEFT;
     lvc.iSubItem = col->pos;
-    if( ListView_InsertColumn (ctx->ctrl, col->pos, &lvc) == -1)
+    if (ListView_InsertColumn (ctx->ctrl, col->pos, &lvc) == -1)
 	rc = 1;
     ctx->cols++;
     return rc;
@@ -296,56 +294,14 @@
 
 int
 listview_sort_items (listview_ctrl_t ctx, int sortby, listview_cmp sort_cb)
-{	
-    HWND hheader;
-    HDITEM hdi;
-    int idx, sort_desc = 0;
-
+{
     ListView_SortItems (ctx->ctrl, sort_cb, sortby);
-    hheader = ListView_GetHeader (ctx->ctrl);
-    if (!hheader)
-        return 0;
-
-    /* Remove image from all header fields */
-    memset (&hdi, 0, sizeof(hdi));
-
-    for (int i=0; i < 7; i++) {
-        hdi.mask = HDI_FORMAT;
-        Header_GetItem (hheader, i, &hdi);
-        hdi.fmt &= ~HDF_IMAGE;
-        Header_SetItem (hheader, i, &hdi);
-    }
-
-    switch (sortby & ~KEYLIST_SORT_DESC) {
-    case KEY_SORT_USERID:    idx = 0; break;
-    case KEY_SORT_KEYID:     idx = 1; break;
-    case KEY_SORT_IS_SECRET: idx = 2; break;
-    case KEY_SORT_LEN:       idx = 3; break;
-    case KEY_SORT_VALIDITY:  idx = 5; break;
-    case KEY_SORT_OTRUST:    idx = 6; break;
-    case KEY_SORT_CREATED:   idx = 7; break;
-    case KEY_SORT_ALGO:      idx = 8; break;
-    default:                 idx = 0; break;
-    }
-
-    sort_desc = sortby & KEYLIST_SORT_DESC;
-    /* Set image to currently sorted field */
-    memset (&hdi, 0, sizeof(hdi));
-    hdi.mask = HDI_IMAGE | HDI_FORMAT;
-    Header_GetItem (hheader, idx, &hdi);   
-    hdi.fmt |= HDF_IMAGE | HDF_BITMAP_ON_RIGHT;
-    if (!ctx->ext_chkbox)
-	hdi.iImage = imagelist_getindex (sort_desc? IMI_SORT_DOWNARROW :
-						    IMI_SORT_UPARROW);
-    else
-	hdi.iImage = sort_desc? KEY_IMG_SORT_DOWN : KEY_IMG_SORT_UP;
-    Header_SetItem (hheader, idx, &hdi);
     return 0;
 }
 
 
 int
-listview_get_curr_pos( listview_ctrl_t ctx )
+listview_get_curr_pos (listview_ctrl_t ctx)
 {	
     return ListView_GetNextItem( ctx->ctrl, -1, LVNI_SELECTED );
 }
@@ -478,8 +434,8 @@
     HIMAGELIST hil;
     DWORD i;
 
-    if (cx == 0 || cy == 0)
-	cx = cy = 16;
+    if (cx <= 0 || cy <= 0)
+	cx = cy = 16; /* default size. */
 
     hil = ImageList_Create (cx, cy, ILC_COLOR8|ILC_MASK, nicons, 1);
     ImageList_SetBkColor (hil, CLR_NONE);

Added: trunk/Src/wptMisc.c
===================================================================
--- trunk/Src/wptMisc.c	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptMisc.c	2006-12-08 10:22:17 UTC (rev 273)
@@ -0,0 +1,38 @@
+/* wptMisc.c - Misc function that needs to be in pure C
+ *	Copyright (C) 2006 Timo Schulz
+ *
+ * This file is part of WinPT.
+ *
+ * WinPT is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation; either version 2 
+ * of the License, or (at your option) any later version.
+ *  
+ * WinPT is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License 
+ * along with WinPT; if not, write to the Free Software Foundation, 
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <shlobj.h>
+
+
+void 
+_SHFree (void *p) 
+{
+    IMalloc *pm;
+
+    SHGetMalloc (&pm);
+    if (pm) {
+	pm->lpVtbl->Free (pm,p);
+	pm->lpVtbl->Release (pm);
+    } 
+}

Deleted: trunk/Src/wptNLS.c
===================================================================
--- trunk/Src/wptNLS.c	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptNLS.c	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,398 +0,0 @@
-/* wptNLS.cpp - W32 Native Language Support
- *	Copyright (C) 2001, 2002, 2003, 2006 Timo Schulz
- *	Copyright (C) 1995-1999 Free Software Foundation, Inc.
- *
- * This code based on the simple-gettext.c code from the GnuPG 
- * by Ulrich Drepper.
- *
- * WinPT is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation; either version 2 
- * of the License, or (at your option) any later version.
- *  
- * WinPT is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License 
- * along with WinPT; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <windows.h>
-
-#include "wptNLS.h"
-
-
-/* The magic number of the GNU message catalog format.	*/
-#define MAGIC	      0x950412de
-#define MAGIC_SWAPPED 0xde120495
-
-/* Revision number of the currently used .mo (binary) file format.  */
-#define MO_REVISION_NUMBER 0
-
-#define SWAPIT(flag, data) ((flag) ? do_swap_u32(data) : (data) )
-
-
-/* We assume to have `unsigned long int' value with at least 32 bits.  */
-#define HASHWORDBITS 32
-
-/* Header for binary .mo file format.  */
-struct mo_file_header {
-    DWORD magic;	    /* The magic number.	*/
-    DWORD revision;	    /* The revision number of the file format.  */
-    DWORD nstrings;	    /* The number of strings pairs.  */
-    DWORD orig_tab_offset;  /* Offset of table with start offsets of original 
-				strings.  */
-    DWORD trans_tab_offset;   /* Offset of table with start offsets of translation
-			     strings.  */
-    DWORD hash_tab_size;	/* Size of hashing table.  */
-    DWORD hash_tab_offset;    /* Offset of first hashing entry.  */
-};
-
-struct string_desc {
-    DWORD length; /* Length of addressed string.  */  
-    DWORD offset; /* Offset of string in file.	*/
-};
-
-struct loaded_domain {
-  char *data;
-  int must_swap;
-  DWORD nstrings;
-  char *mapped;
-  struct string_desc *orig_tab;
-  struct string_desc *trans_tab;
-  DWORD hash_size;
-  DWORD *hash_tab;
-};
-
-/* List of all available languages. */
-struct lang_table_s lang_list[] = {
-    {"en", "English",	LANG_ENGLISH},
-    {"de", "German",	LANG_GERMAN},
-    {"fr", "French",	LANG_FRENCH},
-    {"jp", "Japanese",	LANG_JAPANESE},
-    {"pt_BR", "Portuguese (Brazil)", SUBLANG_PORTUGUESE_BRAZILIAN},
-    {NULL, 0}
-};
-
-/* The current domain. */
-static struct loaded_domain *the_domain;
-
-
-static DWORD
-do_swap_u32 (DWORD i)
-{
-    return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
-}
-
-
-/* The so called `hashpjw' function by P.J. Weinberger
-   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
-   1986, 1987 Bell Telephone Laboratories, Inc.]  */
-
-static DWORD
-hash_string (const char *str_param)
-{
-    unsigned long int hval, g;
-    const char *str = str_param;
-
-    hval = 0;
-    while (*str != '\0') {
-	hval <<= 4;
-	hval += (unsigned long int) *str++;	
-	g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
-	if (g != 0) {
-	    hval ^= g >> (HASHWORDBITS - 8);
-	    hval ^= g;	
-	}
-    }
-    return hval;
-}
-
-/* Missing W32 functions. */
-static char*
-w32_stpcpy (char *a,const char *b)
-{
-    while (*b)
-	*a++ = *b++;
-    *a = 0;
-    return (char*)a;
-}
-
-
-
-static struct loaded_domain *
-load_domain( const char *filename )
-{
-    FILE *fp;
-    size_t size;
-    struct stat st;
-    struct mo_file_header *data = NULL;
-    struct loaded_domain *domain = NULL;
-    size_t to_read;
-    char *read_ptr;
-
-    fp = fopen( filename, "rb" );
-    if( !fp )
-       return NULL; /* can't open the file */
-    /* we must know about the size of the file */
-    if( fstat( fileno(fp ), &st )
-	|| (size = (size_t)st.st_size) != (size_t)st.st_size
-	|| size < sizeof (struct mo_file_header) ) {
-	fclose( fp );	
-	return NULL;
-    }
-
-    data = (struct mo_file_header *) malloc( size );
-    if( !data ) {
-	fclose( fp );
-	return NULL; /* out of memory */
-    }
-
-    to_read = size;
-    read_ptr = (char *) data;
-    do {
-	size_t nb = fread( read_ptr, 1, to_read, fp );
-	if( nb < to_read ) {
-	    fclose (fp);
-	    free(data);	
-	    return NULL; /* read error */
-		
-	}
-	read_ptr += nb;	
-	to_read -= nb;
-    } while( to_read > 0 );
-    fclose (fp);
-
-    /* Using the magic number we can test whether it really is a message
-     * catalog file.  */
-    if( data->magic != MAGIC && data->magic != MAGIC_SWAPPED ) {
-	/* The magic number is wrong: not a message catalog file.  */
-	free( data );
-	return NULL;
-    }
-
-    domain = (struct loaded_domain *)calloc( 1, sizeof *domain );
-    if( !domain )  {
-	free( data );	
-	return NULL;
-    }
-    domain->data = (char *) data;
-    domain->must_swap = data->magic != MAGIC;
-
-    /* Fill in the information about the available tables.  */
-    switch( SWAPIT(domain->must_swap, data->revision) ) {
-      case 0:
-	  domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
-	  domain->orig_tab = (struct string_desc *)
-	      ((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
-	  domain->trans_tab = (struct string_desc *)
-	      ((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
-	  domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);	
-	  domain->hash_tab = (DWORD *)	
-	      ((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));	
-	  break;
-
-      default: /* This is an invalid revision.	*/
-	  free( data );
-	  free( domain );
-	  return NULL;
-    }
-
-    /* allocate an array to keep track of code page mappings */
-    domain->mapped = (char *)calloc( 1, domain->nstrings );
-    if( !domain->mapped ) {
-	free( data );
-	free( domain );	
-	return NULL;
-    }
-
-    return domain;
-} /* load_domain */
-
-
-/* Set the file used for translations. Pass a NULL to disable translation.
-   A new filename may be set at anytime. */
-int
-set_gettext_file( const char *filename, const char *nls_dir )
-{
-    struct loaded_domain *domain = NULL;
-
-    if( filename && *filename ) {
-	if( filename[0] == '/'	   
-	    || ( isalpha(filename[0])		 
-	    && filename[1] == ':'	
-	    && (filename[2] == '/' || filename[2] == '\\') )
-	   ) {
-	    /* absolute path - use it as is */	    
-	    domain = load_domain( filename );
-	}
-	else { /* relative path - append ".mo" and get dir from the environment */
-	    char *buf = NULL;
-	    char *dir;
-		
-	    dir = strdup( nls_dir );
-	    if( dir && (buf= (char *)malloc(strlen(dir)+strlen(filename)+1+3+1)) ) {
-		strcpy(w32_stpcpy(w32_stpcpy(w32_stpcpy( buf, dir),"/"), filename),".mo");
-		domain = load_domain( buf );			
-		free(buf);
-	    }
-	    free(dir);
-	}
-	if( !domain )
-	    return -1;
-    }
-
-    if( the_domain ) {
-	free( the_domain->data );
-	free( the_domain->mapped );
-	free( the_domain );	
-	the_domain = NULL;
-    }
-    the_domain = domain;
-    return 0;
-}
-
-
-static const char*
-get_string( struct loaded_domain *domain, DWORD idx )
-{
-    char *p = domain->data + SWAPIT(domain->must_swap,
-				    domain->trans_tab[idx].offset);
-    if( !domain->mapped[idx] ) {	
-	domain->mapped[idx] = 1;		
-    }
-    return (const char*)p;
-}
-
-
-const char *
-gettext( const char *msgid )
-{
-    struct loaded_domain *domain;
-    size_t act = 0;
-    size_t top, bottom;
-
-    if (!(domain = the_domain))
-	goto not_found;
-
-    /* Locate the MSGID and its translation.  */
-    if( domain->hash_size > 2 && domain->hash_tab ) {		
-	/* Use the hashing table.  */		
-	DWORD len = strlen (msgid);	
-	DWORD hash_val = hash_string (msgid);	
-	DWORD idx = hash_val % domain->hash_size;	
-	DWORD incr = 1 + (hash_val % (domain->hash_size - 2));	
-	DWORD nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx]);
-
-	if ( !nstr ) /* Hash table entry is empty.  */	
-	    goto not_found;
-
-		
-	if( SWAPIT(domain->must_swap,	
-	    domain->orig_tab[nstr - 1].length) == len	
-	    && !strcmp( msgid,	
-	    domain->data + SWAPIT(domain->must_swap,
-				    domain->orig_tab[nstr - 1].offset)) )
-				    return get_string( domain, nstr - 1 );
-	for(;;) {
-	    if (idx >= domain->hash_size - incr)
-		idx -= domain->hash_size - incr;
-	    else
-		idx += incr;
-	    nstr = SWAPIT(domain->must_swap, domain->hash_tab[idx]);
-	    if( !nstr )	
-		goto not_found; /* Hash table entry is empty.  */
-
-	    if ( SWAPIT(domain->must_swap,
-				domain->orig_tab[nstr - 1].length) == len
-				&& !strcmp (msgid,
-				domain->data + SWAPIT(domain->must_swap,
-					   domain->orig_tab[nstr - 1].offset)))
-			
-					   return get_string( domain, nstr-1 );
-	} /* NOTREACHED */
-    }
-
-    /* Now we try the default method:  binary search in the sorted
-       array of messages.  */
-    bottom = 0;
-    top = domain->nstrings;
-    while( bottom < top ) {		
-	int cmp_val;
-	
-	act = (bottom + top) / 2;	
-	cmp_val = strcmp(msgid, domain->data + SWAPIT(domain->must_swap,
-			domain->orig_tab[act].offset));
-	if (cmp_val < 0)
-	    top = act;
-	else if (cmp_val > 0)
-	    bottom = act + 1;
-	else	
-	    return get_string( domain, act );
-    }
-
-not_found:
-    return msgid;
-} /* gettext */
-
-
-/* Map the user specific language ID to a gettext conform language string.
-   Example: LANG_GERMAN -> "de" */
-const char*
-get_gettext_langid (void)
-{
-    LANGID lang;
-    int i;
-
-    lang = GetUserDefaultLangID ();
-    if (PRIMARYLANGID (lang) == LANG_ENGLISH)
-	return NULL;
-
-    for (i=0; lang_list[i].id; i++) {
-	if (PRIMARYLANGID (lang) == lang_list[i].langid)
-	    return lang_list[i].id;
-    }
-    return NULL;
-}
-
-
-/* Take a table with control item IDs and their translation
-   and set each text to the translated value. */
-void
-gettext_localize_dialog (HWND dlg, struct gettext_tab_s *tab,
-			 const char *title)
-{
-    int i;
-
-    for (i=0; tab[i].trans != NULL; i++)
-	SetDlgItemText (dlg, tab[i].ctlid, tab[i].trans);
-    if (title)
-	SetWindowText (dlg, title);
-}
-
-
-/* XXX: this has to be placed in a .c file but not here */
-#include <shlobj.h>
-
-void _SHFree (void *p) 
-{
-    IMalloc *pm; 
-    SHGetMalloc(&pm);
-    if (pm) {
-	pm->lpVtbl->Free(pm,p);
-	pm->lpVtbl->Release(pm);
-    } 
-}

Added: trunk/Src/wptNLS.cpp
===================================================================
--- trunk/Src/wptNLS.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptNLS.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -0,0 +1,384 @@
+/* wptNLS.cpp - W32 Native Language Support
+ *	Copyright (C) 2001, 2002, 2003, 2006 Timo Schulz
+ *	Copyright (C) 1995-1999 Free Software Foundation, Inc.
+ *
+ * This code based on the simple-gettext.c code from the GnuPG 
+ * by Ulrich Drepper.
+ *
+ * WinPT is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation; either version 2 
+ * of the License, or (at your option) any later version.
+ *  
+ * WinPT is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License 
+ * along with WinPT; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <windows.h>
+
+#include "wptNLS.h"
+
+
+/* The magic number of the GNU message catalog format.	*/
+#define MAGIC	      0x950412de
+#define MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format.  */
+#define MO_REVISION_NUMBER 0
+
+#define SWAPIT(flag, data) ((flag) ? do_swap_u32(data) : (data) )
+
+
+/* We assume to have `unsigned long int' value with at least 32 bits.  */
+#define HASHWORDBITS 32
+
+/* Header for binary .mo file format.  */
+struct mo_file_header {
+    DWORD magic;	    /* The magic number.	*/
+    DWORD revision;	    /* The revision number of the file format.  */
+    DWORD nstrings;	    /* The number of strings pairs.  */
+    DWORD orig_tab_offset;  /* Offset of table with start offsets of original 
+				strings.  */
+    DWORD trans_tab_offset;   /* Offset of table with start offsets of translation
+			     strings.  */
+    DWORD hash_tab_size;	/* Size of hashing table.  */
+    DWORD hash_tab_offset;    /* Offset of first hashing entry.  */
+};
+
+struct string_desc {
+    DWORD length; /* Length of addressed string.  */  
+    DWORD offset; /* Offset of string in file.	*/
+};
+
+struct loaded_domain {
+  char *data;
+  int must_swap;
+  DWORD nstrings;
+  char *mapped;
+  struct string_desc *orig_tab;
+  struct string_desc *trans_tab;
+  DWORD hash_size;
+  DWORD *hash_tab;
+};
+
+/* List of all available languages. */
+struct lang_table_s lang_list[] = {
+    {"en", "English",	LANG_ENGLISH},
+    {"de", "German",	LANG_GERMAN},
+    {"fr", "French",	LANG_FRENCH},
+    {"jp", "Japanese",	LANG_JAPANESE},
+    {"pt_BR", "Portuguese (Brazil)", SUBLANG_PORTUGUESE_BRAZILIAN},
+    {NULL, 0}
+};
+
+/* The current domain. */
+static struct loaded_domain *the_domain;
+
+
+static DWORD
+do_swap_u32 (DWORD i)
+{
+    return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+
+
+/* The so called `hashpjw' function by P.J. Weinberger
+   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+   1986, 1987 Bell Telephone Laboratories, Inc.]  */
+
+static DWORD
+hash_string (const char *str_param)
+{
+    DWORD hval, g;
+    const char *str = str_param;
+
+    hval = 0;
+    while (*str != '\0') {
+	hval <<= 4;
+	hval += (DWORD) *str++;	
+	g = hval & ((DWORD) 0xf << (HASHWORDBITS - 4));
+	if (g != 0) {
+	    hval ^= g >> (HASHWORDBITS - 8);
+	    hval ^= g;	
+	}
+    }
+    return hval;
+}
+
+/* Missing W32 functions. */
+static char*
+w32_stpcpy (char *a,const char *b)
+{
+    while (*b)
+	*a++ = *b++;
+    *a = 0;
+    return (char*)a;
+}
+
+
+
+static struct loaded_domain *
+load_domain( const char *filename )
+{
+    FILE *fp;
+    size_t size;
+    struct stat st;
+    struct mo_file_header *data = NULL;
+    struct loaded_domain *domain = NULL;
+    size_t to_read;
+    char *read_ptr;
+
+    fp = fopen( filename, "rb" );
+    if( !fp )
+       return NULL; /* can't open the file */
+    /* we must know about the size of the file */
+    if( fstat( fileno(fp ), &st )
+	|| (size = (size_t)st.st_size) != (size_t)st.st_size
+	|| size < sizeof (struct mo_file_header) ) {
+	fclose( fp );	
+	return NULL;
+    }
+
+    data = (struct mo_file_header *) malloc( size );
+    if( !data ) {
+	fclose( fp );
+	return NULL; /* out of memory */
+    }
+
+    to_read = size;
+    read_ptr = (char *) data;
+    do {
+	size_t nb = fread( read_ptr, 1, to_read, fp );
+	if( nb < to_read ) {
+	    fclose (fp);
+	    free(data);	
+	    return NULL; /* read error */
+		
+	}
+	read_ptr += nb;	
+	to_read -= nb;
+    } while( to_read > 0 );
+    fclose (fp);
+
+    /* Using the magic number we can test whether it really is a message
+     * catalog file.  */
+    if( data->magic != MAGIC && data->magic != MAGIC_SWAPPED ) {
+	/* The magic number is wrong: not a message catalog file.  */
+	free( data );
+	return NULL;
+    }
+
+    domain = (struct loaded_domain *)calloc( 1, sizeof *domain );
+    if( !domain )  {
+	free( data );	
+	return NULL;
+    }
+    domain->data = (char *) data;
+    domain->must_swap = data->magic != MAGIC;
+
+    /* Fill in the information about the available tables.  */
+    switch( SWAPIT(domain->must_swap, data->revision) ) {
+      case 0:
+	  domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
+	  domain->orig_tab = (struct string_desc *)
+	      ((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
+	  domain->trans_tab = (struct string_desc *)
+	      ((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
+	  domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);	
+	  domain->hash_tab = (DWORD *)	
+	      ((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));	
+	  break;
+
+      default: /* This is an invalid revision.	*/
+	  free( data );
+	  free( domain );
+	  return NULL;
+    }
+
+    /* allocate an array to keep track of code page mappings */
+    domain->mapped = (char *)calloc( 1, domain->nstrings );
+    if( !domain->mapped ) {
+	free( data );
+	free( domain );	
+	return NULL;
+    }
+
+    return domain;
+} /* load_domain */
+
+
+/* Set the file used for translations. Pass a NULL to disable translation.
+   A new filename may be set at anytime. */
+int
+set_gettext_file( const char *filename, const char *nls_dir )
+{
+    struct loaded_domain *domain = NULL;
+
+    if( filename && *filename ) {
+	if( filename[0] == '/'	   
+	    || ( isalpha(filename[0])		 
+	    && filename[1] == ':'	
+	    && (filename[2] == '/' || filename[2] == '\\') )
+	   ) {
+	    /* absolute path - use it as is */	    
+	    domain = load_domain( filename );
+	}
+	else { /* relative path - append ".mo" and get dir from the environment */
+	    char *buf = NULL;
+	    char *dir;
+		
+	    dir = strdup( nls_dir );
+	    if( dir && (buf= (char *)malloc(strlen(dir)+strlen(filename)+1+3+1)) ) {
+		strcpy(w32_stpcpy(w32_stpcpy(w32_stpcpy( buf, dir),"/"), filename),".mo");
+		domain = load_domain( buf );			
+		free(buf);
+	    }
+	    free(dir);
+	}
+	if( !domain )
+	    return -1;
+    }
+
+    if( the_domain ) {
+	free( the_domain->data );
+	free( the_domain->mapped );
+	free( the_domain );	
+	the_domain = NULL;
+    }
+    the_domain = domain;
+    return 0;
+}
+
+
+static const char*
+get_string( struct loaded_domain *domain, DWORD idx )
+{
+    char *p = domain->data + SWAPIT(domain->must_swap,
+				    domain->trans_tab[idx].offset);
+    if( !domain->mapped[idx] ) {	
+	domain->mapped[idx] = 1;		
+    }
+    return (const char*)p;
+}
+
+
+const char *
+gettext( const char *msgid )
+{
+    struct loaded_domain *domain;
+    size_t act = 0;
+    size_t top, bottom;
+
+    if (!(domain = the_domain))
+	goto not_found;
+
+    /* Locate the MSGID and its translation.  */
+    if( domain->hash_size > 2 && domain->hash_tab ) {		
+	/* Use the hashing table.  */		
+	DWORD len = strlen (msgid);	
+	DWORD hash_val = hash_string (msgid);	
+	DWORD idx = hash_val % domain->hash_size;	
+	DWORD incr = 1 + (hash_val % (domain->hash_size - 2));	
+	DWORD nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx]);
+
+	if ( !nstr ) /* Hash table entry is empty.  */	
+	    goto not_found;
+
+		
+	if( SWAPIT(domain->must_swap,	
+	    domain->orig_tab[nstr - 1].length) == len	
+	    && !strcmp( msgid,	
+	    domain->data + SWAPIT(domain->must_swap,
+				    domain->orig_tab[nstr - 1].offset)) )
+				    return get_string( domain, nstr - 1 );
+	for(;;) {
+	    if (idx >= domain->hash_size - incr)
+		idx -= domain->hash_size - incr;
+	    else
+		idx += incr;
+	    nstr = SWAPIT(domain->must_swap, domain->hash_tab[idx]);
+	    if( !nstr )	
+		goto not_found; /* Hash table entry is empty.  */
+
+	    if ( SWAPIT(domain->must_swap,
+				domain->orig_tab[nstr - 1].length) == len
+				&& !strcmp (msgid,
+				domain->data + SWAPIT(domain->must_swap,
+					   domain->orig_tab[nstr - 1].offset)))
+			
+					   return get_string( domain, nstr-1 );
+	} /* NOTREACHED */
+    }
+
+    /* Now we try the default method:  binary search in the sorted
+       array of messages.  */
+    bottom = 0;
+    top = domain->nstrings;
+    while( bottom < top ) {		
+	int cmp_val;
+	
+	act = (bottom + top) / 2;	
+	cmp_val = strcmp(msgid, domain->data + SWAPIT(domain->must_swap,
+			domain->orig_tab[act].offset));
+	if (cmp_val < 0)
+	    top = act;
+	else if (cmp_val > 0)
+	    bottom = act + 1;
+	else	
+	    return get_string( domain, act );
+    }
+
+not_found:
+    return msgid;
+}
+
+
+/* Map the user specific language ID to a gettext conform language string.
+   Example: LANG_GERMAN -> "de" */
+const char*
+get_gettext_langid (void)
+{
+    LANGID lang;
+    int i;
+
+    lang = GetUserDefaultLangID ();
+    if (PRIMARYLANGID (lang) == LANG_ENGLISH)
+	return NULL;
+
+    for (i=0; lang_list[i].id; i++) {
+	if (PRIMARYLANGID (lang) == lang_list[i].langid)
+	    return lang_list[i].id;
+    }
+    return NULL;
+}
+
+
+/* Take a table with control item IDs and their translation
+   and set each text to the translated value. */
+void
+gettext_localize_dialog (HWND dlg, struct gettext_tab_s *tab,
+			 const char *title)
+{
+    int i;
+
+    for (i=0; tab[i].trans != NULL; i++)
+	SetDlgItemText (dlg, tab[i].ctlid, tab[i].trans);
+    if (title)
+	SetWindowText (dlg, title);
+}

Modified: trunk/Src/wptPassCache.cpp
===================================================================
--- trunk/Src/wptPassCache.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptPassCache.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,6 +1,6 @@
-/* wptPassCache.c - keep a cache of passphrases
+/* wptPassCache.cpp - keep a cache of passphrases
  *	Copyright (C) 2002 Free Software Foundation, Inc.
- *	Copyright (C) 2003 Timo Schulz
+ *	Copyright (C) 2003, 2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -18,6 +18,7 @@
  * along with WinPT; if not, write to the Free Software Foundation, 
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -57,22 +58,12 @@
 
 
 static void
-release_data (struct secret_data_s * data)
+release_data (struct secret_data_s *data)
 {
     free (data);
 }
 
 
-static void
-wipe_data (void * data, size_t dlen)
-{
-    memset (data, 0xff, dlen);
-    memset (data, 0xaa, dlen);
-    memset (data, 0x55, dlen);
-    memset (data, 0x00, dlen);
-}
-
-
 static struct secret_data_s *
 new_data (const void * data, size_t length)
 {
@@ -105,8 +96,8 @@
     /* first expire the actual data */
     for( r=thecache; r; r = r->next ) {
         if( !r->lockcount && r->pw && r->accessed + r->ttl < current ) {
-	    wipe_data( r->pw, r->pwlen );
-            release_data( r->pw );
+	    wipememory (r->pw, r->pwlen);
+            release_data (r->pw);
             r->pw = NULL;
             r->accessed = current;
         }
@@ -116,8 +107,8 @@
        that the user has to enter it from time to time.  We do this every hour */
     for( r=thecache; r; r = r->next ) {
         if( !r->lockcount && r->pw && r->created + 60*60 < current ) {
-	    wipe_data( r->pw, r->pwlen );
-            release_data( r->pw );
+	    wipememory (r->pw, r->pwlen);
+            release_data (r->pw);
             r->pw = NULL;
             r->accessed = current;
         }
@@ -158,7 +149,7 @@
 
     for (r=thecache; r; r = r->next) {
         if( !r->lockcount && r->pw ) {
-	    wipe_data (r->pw, r->pwlen);
+	    wipememory (r->pw, r->pwlen);
             release_data (r->pw);
             r->pw = NULL;
             r->accessed = 0;
@@ -212,7 +203,7 @@
     }
     if( r ) { /* replace */
         if( r->pw ) {
-	    wipe_data( r->pw, r->pwlen );
+	    wipememory (r->pw, r->pwlen);
             release_data( r->pw );
             r->pw = NULL;
         }

Modified: trunk/Src/wptPreferencesDlg.cpp
===================================================================
--- trunk/Src/wptPreferencesDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptPreferencesDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -93,19 +93,6 @@
     EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), mode);
 }
 
-
-/* Initialize the combobox in the dialog @dlg with the valid wipe modes. */
-static void
-init_wipe_modes (HWND dlg)
-{
-    HWND cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
-    combox_add_string (cb, (char *)"Simple");
-    combox_add_string (cb, (char *)"DoD");
-    combox_add_string (cb, (char *)"Gutmann");
-    SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.wipe_mode, 0);
-}
-
-
 /* Helper function to prepare dialog. */
 static void
 on_init_dialog (HWND dlg)
@@ -120,7 +107,6 @@
 	{IDC_PREFS_BAKHOME, _("Backup to &keyring folder")},
 	{IDC_PREFS_BAKUSER, _("Backup to:")},
 	{IDC_PREFS_KEYLISTINF, _("Select &key list mode")},
-	{IDC_PREFS_WIPEINF, _("Select &wipe mode")},
 	{IDC_PREFS_KSINF, _("Keyserver &config")},
 	{IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' minutes")},
 	{IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)")},
@@ -180,7 +166,6 @@
 		      reg_prefs.backup.mode==1?FALSE : TRUE);
     EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
 		      reg_prefs.backup.mode==1? FALSE : TRUE);
-    init_wipe_modes (dlg);
     center_window (dlg, NULL);    
     SetForegroundWindow (dlg);
 }
@@ -194,7 +179,6 @@
     int i;
     char t[3];
     char path[256], *p;
-    HWND cb;
     
     switch (msg) {
     case WM_INITDIALOG:
@@ -288,7 +272,15 @@
 	    reg_prefs.backup.mode = IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME ) ? 1 :
 				    IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER)? 2 : 0;
 	    reg_prefs.backup.include_secr = IsDlgButtonChecked (dlg, IDC_PREFS_BAKSECRING)? 1 : 0;
+#ifdef WINPT_MOBILE
+	    /* We cannot allow backups to a specific path outside
+	       the USB disk, so we disable it. */
 	    if (reg_prefs.backup.mode == 2) {
+		reg_prefs.backup.mode = 1;
+		reg_prefs.backup.include_secr = 0;
+	    }
+#endif
+	    if (reg_prefs.backup.mode == 2) {
 		if (!GetDlgItemText (dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1)
 		    || dir_exist_check (path)) {
 		    msg_box (dlg, _("The specified backup folder is invalid."), 
@@ -300,9 +292,6 @@
 		if (!p)
 		    BUG (0);
 	    }
-
-	    cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
-	    reg_prefs.wipe_mode = SendMessage (cb, CB_GETCURSEL, 0, 0);
             
             if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {
                 hotkeys_unregister (glob_hwnd);

Modified: trunk/Src/wptProxySettingsDlg.cpp
===================================================================
--- trunk/Src/wptProxySettingsDlg.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptProxySettingsDlg.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -89,8 +89,8 @@
 read_proxy (HWND dlg, keyserver_proxy_t ctx)
 {
     char t[512];
-    int ncount = 0, pos = 0;
-    
+    int ncount;
+
     ncount = GetDlgItemText (dlg, IDC_PROXY_PWD, t, DIM (t)-1);
     if (ncount > 0)
         ctx->pass = m_strdup (t);
@@ -99,8 +99,10 @@
         ctx->user = m_strdup (t);
     ncount = GetDlgItemText (dlg, IDC_PROXY_HOST, t, DIM (t)-1);
     if (ncount > 0) {
-	if (check_IP_or_hostname (t)) {
-	    msg_box (dlg, _("Invalid host/IP address."), _("Proxy Settings"), MB_ERR);
+	int pos = 0;
+
+	if (check_inet_address (t)) {
+	    msg_box (dlg, _("Invalid host or IP address."), _("Proxy Settings"), MB_ERR);
 	    return -1;
 	}
 	/* XXX: check prefix */
@@ -146,6 +148,7 @@
 enable_proxy_auth (HWND dlg, int val)
 {
     int mode = val? TRUE : FALSE;
+
     EnableWindow (GetDlgItem (dlg, IDC_PROXY_PWD), mode);
     EnableWindow (GetDlgItem (dlg, IDC_PROXY_USER), mode);
 }
@@ -156,6 +159,7 @@
 init_proxy_protocols (HWND dlg)
 {
     HWND cb = GetDlgItem (dlg, IDC_PROXY_PROTO);
+
     combox_add_string (cb, (char *)"NONE");
     combox_add_string (cb, (char *)"HTTP");
     /*XXX: combox_add_string (cb, (char *)"SOCKS5");*/

Modified: trunk/Src/wptRegistry.cpp
===================================================================
--- trunk/Src/wptRegistry.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptRegistry.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -533,9 +533,6 @@
 	case CFG_WORDWRAP:
 	    sprintf (buf, "%d", opt->word_wrap);
 	    break;
-	case CFG_WIPEMODE:
-	    sprintf (buf, "%d", opt->wipe_mode);
-	    break;
 	case CFG_FILEEXT:
 	    sprintf (buf, "%d", opt->default_ext);
 	    break;
@@ -655,9 +652,6 @@
 	case CFG_VIEWER:
 	    opt->use_viewer = atoi (val);
 	    break;
-	case CFG_WIPEMODE:
-	    opt->wipe_mode = atoi (val);
-	    break;
 	case CFG_DISHOTKEYS:
 	    opt->no_hotkeys = atoi (val);
 	    break;
@@ -719,4 +713,4 @@
 {
     return set_reg_entry (HKEY_CURRENT_USER, WINPT_REG"\\Keyserver", name, val);
 }
-#endif
+#endif
\ No newline at end of file

Modified: trunk/Src/wptSOCKS.cpp
===================================================================
--- trunk/Src/wptSOCKS.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptSOCKS.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -83,7 +83,7 @@
     pkt[1] = 0x02;
     pkt[2] = METH_NOAUTH;
     pkt[3] = METH_USERPASS;
-    if (send (conn_fd, (const char*)pkt, 4, 0) == SOCKET_ERROR) {
+    if (send (conn_fd, (const char*)pkt, DIM (pkt), 0) == SOCKET_ERROR) {
 	log_debug ("send_methods failed ec=%d\n", (int)WSAGetLastError ());
 	return -1;
     }
@@ -97,7 +97,7 @@
 {
     BYTE pkt[2];
 
-    if (recv (conn_fd, (char*)pkt, 2, 0) == SOCKET_ERROR) {
+    if (recv (conn_fd, (char*)pkt, DIM (pkt), 0) == SOCKET_ERROR) {
 	log_debug ("recv_method failed ec=%d\n", (int)WSAGetLastError ());
 	return -1;
     }
@@ -205,7 +205,7 @@
     pkt[7] = (BYTE)addr >>  0;
     pkt[8] = (BYTE)port >>  8;
     pkt[9] = (BYTE)port >>  0;
-    if (send (conn_fd, (const char*)pkt, 9, 0) == SOCKET_ERROR) {
+    if (send (conn_fd, (const char*)pkt, 10, 0) == SOCKET_ERROR) {
 	log_debug ("send_connect_request failed ec=%d\n", (int)WSAGetLastError ());
 	return -1;
     }
@@ -230,8 +230,11 @@
     int ndomain;
 
     *err = 0;
-    if (recv (conn_fd, (char*)pkt, 4, 0) == SOCKET_ERROR)
+    if (recv (conn_fd, (char*)pkt, DIM (pkt), 0) == SOCKET_ERROR) {
+	log_debug ("recv_connect_reply: recv() failed ec=%d\n", 
+		    (int)WSAGetLastError ());
 	return -1;
+    }
     if (pkt[0] != 0x05 || pkt[2] != 0x00) {
 	log_debug ("recv_connect_reply: protocol violation.\n");
 	return -1;
@@ -248,16 +251,17 @@
     case ADDR_DOMAIN:
 	recv (conn_fd, (char*)addr, 1, 0);
 	ndomain = addr[0];
+	/* Ignore the output, just empty the socket buffer. */
 	while (ndomain-- > 0)
 	    recv (conn_fd, (char*)addr, 1, 0);
 	break;
 
     case ADDR_IPV6:
-	if ( recv (conn_fd, (char*)addr, 16, 0) == SOCKET_ERROR)
+	if (recv (conn_fd, (char*)addr, DIM (addr), 0) == SOCKET_ERROR)
 	    return -1;
 	break;
     }
-    if (recv (conn_fd, (char*)port, 2, 0) == SOCKET_ERROR)
+    if (recv (conn_fd, (char*)port, DIM (port), 0) == SOCKET_ERROR)
 	return -1;
     return 0;
 }
@@ -279,18 +283,21 @@
     }
     if (do_auth (conn_fd, method, ctx, &err)) {
 	if (!err)
-	    msg_box (NULL, _("Authentication failed or unspported"), _("SOCKS Proxy"), MB_ERR);
+	    msg_box (NULL, _("Authentication failed or unspported"), 
+		     _("SOCKS Proxy"), MB_ERR);
 	else
 	    msg_box (NULL, socks_strerror (err), _("SOCKS Proxy"), MB_ERR);
 	return -1;
     }
     if (send_connect_request (conn_fd, hostname, port)) {
-	msg_box (NULL, _("Could not send SOCKS request"), _("SOCKS Proxy"), MB_ERR);
+	msg_box (NULL, _("Could not send SOCKS request"), 
+		 _("SOCKS Proxy"), MB_ERR);
 	return -1;
     }
     if (recv_connect_reply (conn_fd, &err)) {
 	if (!err)
-	    msg_box (NULL, _("Error while parsing SOCKS reply"), _("SOCKS Proxy"), MB_ERR);
+	    msg_box (NULL, _("Error while parsing SOCKS reply"), 
+		     _("SOCKS Proxy"), MB_ERR);
 	else
 	    msg_box (NULL, socks_strerror (err), _("SOCKS Proxy"), MB_ERR);
 	return -1;

Modified: trunk/Src/wptUtil.cpp
===================================================================
--- trunk/Src/wptUtil.cpp	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/Src/wptUtil.cpp	2006-12-08 10:22:17 UTC (rev 273)
@@ -1,5 +1,5 @@
 /* wptUtil.cpp - Helper functions
- *	Copyright (C) 2005 Timo Schulz
+ *	Copyright (C) 2005, 2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -150,8 +150,7 @@
 
     p = new char[end-begin+1];
     if (!p)
-	abort ();
-
+	BUG (0);
     for (i = begin, pos=0; i < end; i++)
 	p[pos++] = str[i];
     p[pos] = '\0';
@@ -188,12 +187,14 @@
     *r_out = out;
 }
 
+
+/* Safe strdup version (C++ version). */
 char*
 m_strdup (const char *str)
 {
-    char *p = new char[strlen (str)+1];
+    char *p = new char[strlen (str) + 1];
     if (!p)
-	BUG (0);
+	BUG (NULL);
     strcpy (p, str);
     return p;
 }

Modified: trunk/THANKS
===================================================================
--- trunk/THANKS	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/THANKS	2006-12-08 10:22:17 UTC (rev 273)
@@ -76,6 +76,7 @@
 Peter Gerwinski     peter.gerwinski at g-n-u.de
 Philip Chase        pbc at hp.ufl.edu
 PPLF                pgpenfrancias at bigfoot.com
+Ralf Latz
 Ralf Kreutzmann     ralf.kreutzmann at equipmente.de
 Richard V. Wielgosz rich at cnylug.org
 Sebastian Rose-Indorf

Modified: trunk/TODO
===================================================================
--- trunk/TODO	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/TODO	2006-12-08 10:22:17 UTC (rev 273)
@@ -2,7 +2,7 @@
 
     * change the file manager verify error message when an expired
       key has been used to sign a file.
-     * set imported private keys automatically to "ultimate" ownertrust?
+    * set imported private keys automatically to "ultimate" ownertrust?
     * there is a problem with the +E hotkey in EURO countries.
     - migrate keyserver code to use the HTTP class.
       Implement proxy authentication into the HTTP class.

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/configure.ac	2006-12-08 10:22:17 UTC (rev 273)
@@ -15,8 +15,8 @@
 
 # Version number: Remember to change it immediately *after* a release.
 #                 Add a "-cvs" prefix for non-released code.
-AC_INIT(WinPT, 1.1.0, http://wald.intevation.org/projects/winpt)
-NEED_GPG_VERSION=1.4.2
+AC_INIT(WinPT, 1.2.0, http://wald.intevation.org/projects/winpt)
+NEED_GPG_VERSION=1.4.4
 NEED_GPGME_API=1
 NEED_GPGME_VERSION=1.1.1
 NEED_GPG_ERROR_VERSION=1.2

Modified: trunk/icons/Makefile.am
===================================================================
--- trunk/icons/Makefile.am	2006-11-05 08:59:05 UTC (rev 272)
+++ trunk/icons/Makefile.am	2006-12-08 10:22:17 UTC (rev 273)
@@ -11,12 +11,15 @@
 
 ## Process this file with automake to produce Makefile.in
 
+# icons to include
+
 EXTRA_DIST= \
       key_delete.ico key_export.ico key_import.ico key_props.ico \
       key_sign.ico sort_downarrow.ico sort_uparrow.ico \
       key_file_export.ico key_file_import.ico key_new.ico \
       key_search.ico computer.ico keysig.ico userid.ico \
-      sig_good.ico sig_bad.ico
+      sig_good.ico sig_bad.ico rev_keypair.ico exp_keypair.ico \
+      exp_pubkey.ico
       
       
 

Added: trunk/icons/exp_keypair.ico
===================================================================
(Binary files differ)


Property changes on: trunk/icons/exp_keypair.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/exp_pubkey.ico
===================================================================
(Binary files differ)


Property changes on: trunk/icons/exp_pubkey.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/rev_keypair.ico
===================================================================
(Binary files differ)


Property changes on: trunk/icons/rev_keypair.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream



More information about the Winpt-commits mailing list