[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 "gpÅ«é駮ª©Â©èܹñŵ½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 "GnuPGo[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 @@
"KvƳêÄ¢é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 "WinPTfBNgð쬷é±ÆªÅ«Ü¹ñŵ½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@CRs[ɸ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ÉXVµÄ¾³¢B"
# c:\oss\winpt\src\WinPT.cpp:223
-#: Src/WinPT.cpp:529
+#: Src/WinPT.cpp:551
msgid "Cryptographic selftest failed."
msgstr "Ã@ZteXgª¸sµÜµ½B"
-#: Src/WinPT.cpp:536
+#: Src/WinPT.cpp:558
msgid "A newer GPGME version is needed; at least "
msgstr "ÈÄàGPMEÌVµ¢o[WªKvÅ·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öJL[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 "GPGz[fBNgª©Â©èܹñŵ½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 @@
"GPGoCi(gpg.exe)ª©Â©èܹñŵ½B\n"
"GPG JX^Ýèð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 "EBhÌNXðo^·é±ÆªÅ«Ü¹ñŵ½B"
# c:\oss\winpt\src\WinPT.cpp:395
-#: Src/WinPT.cpp:694
+#: Src/WinPT.cpp:720
msgid "Could not create window"
msgstr "EBhð쬷é±ÆªÅ«Ü¹ñŵ½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, pXÈÇ...) ð`FbNµÄ¾³¢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 @@
"GPGJX^ÝèðÀ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 ""
"GPGIvVt@CæèKèL[ð©Â¯é±ÆªÅ«Ü¹ñŵ½B\n"
"±êð¼·ÌÉgpg.conf (IvV) ð`FbN·é©Vµ¢KèL[ðZbgµ"
@@ -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 "wv(&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&Ej"
@@ -496,7 +508,7 @@
msgstr "ûL[ÌJ[hOobNAbvðì¬"
# 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[hL[ì¬"
@@ -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߬ĢܷjB"
@@ -618,33 +630,34 @@
"p±·éÌÉOKܽÍLZðµÄ¾³¢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ÉMpÅ«é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 ÜèMpÅ«È¢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 "¼ÌóÔFMpÅ«È¢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ÉMpÅ«é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"
"*** PGPeLXgðnßé ***\r\n"
-#: Src/wptClipDecryptDlg.cpp:133
+#: Src/wptClipDecryptDlg.cpp:131
msgid ""
"\r\n"
"*** END PGP DECRYPTED TEXT ***"
@@ -672,12 +685,12 @@
"*** PGPeLXgð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 "/mF"
# 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 "γêÄÈ¢ASY: %s"
-#: Src/wptClipDecryptDlg.cpp:250
+#: Src/wptClipDecryptDlg.cpp:252
msgid "Broken OpenPGP message (maybe: quoted printable character in armor)."
msgstr "s¾ÈOpenPGPbZ[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^bN̪ƵÄàl¦çêÜ·B"
# c:\oss\winpt\src\wptClipDecryptDlg.cpp:149
-#: Src/wptClipDecryptDlg.cpp:265
+#: Src/wptClipDecryptDlg.cpp:267
msgid "*** IMPORTANT ***"
msgstr "*** dv ***"
@@ -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 "Nbv{[hGfB^["
# 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Ò½¿ÍûgpÉ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 "LZ(&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ð·éKvª èÜ·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[eLXpÌgt@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' ÌãíèÉ{ÉgpµÜ·©?"
# 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 "Nbv{[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 "`FbN·é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¼BI¹"
@@ -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 "GLX|[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 "GLX|[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øÈOpenPGPf[^ª©Â©èܹñŵ½B"
-#: Src/wptFileManager.cpp:1972
+#: Src/wptFileManager.cpp:1971
msgid "Encrypting into a ZIP archive makes sense with multiple files"
msgstr "½Ìt@CðZipA[JCuÉû·é±ÆªÇ¢±ÆÅ·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[JCuɼ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[JCu¼BI¹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 "ûfBNg"
# c:\oss\winpt\src\wptFileManager.cpp:1464
-#: Src/wptFileManager.cpp:2060
+#: Src/wptFileManager.cpp:2059
msgid "Could not create zip archive."
msgstr "³kA[JCuð쬷é±ÆªÅ«Ü¹ñŵ½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·éÌÉÇÒÁ ªKvÅ·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 "ìóµFG["
# 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 "GPGCtH"
# c:\oss\winpt\src\wptGPG.cpp:741
-#: Src/wptGPG.cpp:843
+#: Src/wptGPG.cpp:850
msgid "Could not reset read-only state."
msgstr "[hI[óÔðú»·é±ÆªÅ«Ü¹ñŵ½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 "GPGG["
# 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 @@
"vOª»êðJ¢½½ßÆl¦çêÜ·B\n"
# c:\oss\winpt\src\wptGPG.cpp:762
-#: Src/wptGPG.cpp:861
+#: Src/wptGPG.cpp:868
msgid "GPG Warning"
msgstr "GPGx"
@@ -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 "JX^Ýè"
# 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 @@
"±ÌfBNg[ð쬵ܷ©H"
# c:\oss\winpt\src\wptGPG.cpp:863
-#: Src/wptGPG.cpp:918
+#: Src/wptGPG.cpp:925
msgid "Please choose your Public Keyring"
msgstr "öJL[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ð³êÄܹñBI¹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ðRs[·é±ÆªÅ«Ü¹ñŵ½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 "obNAbv"
# c:\oss\winpt\src\wptGPG.cpp:942
-#: Src/wptGPG.cpp:995
+#: Src/wptGPG.cpp:1002
#, c-format
msgid "Backup keyring \"%s\" failed"
msgstr "ȺÌobNAbvL[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 @@
"±¯éÌÉhCuð}üܽÍ`FbNµÄ¾³¢B"
# c:\oss\winpt\src\wptGPG.cpp:1004
-#: Src/wptGPG.cpp:1104
+#: Src/wptGPG.cpp:1111
#, c-format
msgid "Invalid backup mode %d"
msgstr "³øÈobNAbv[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ɳøÈGnuPGL[[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 "GnuPGJX^Ýè"
@@ -2354,8 +2382,8 @@
msgstr "GPGêÊIvV"
#: 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 "TCY"
@@ -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 "GPGL[Oð[h·é..."
# c:\oss\winpt\src\wptKeyCacheDlg.cpp:48
-#: Src/wptKeyCacheDlg.cpp:54
+#: Src/wptKeyCacheDlg.cpp:50
msgid "WinPT Key Caching"
msgstr "WinPT L[LbVO"
# c:\oss\winpt\src\wptKeyCacheDlg.cpp:51
-#: Src/wptKeyCacheDlg.cpp:57
+#: Src/wptKeyCacheDlg.cpp:53
msgid "Caching keyrings, please wait..."
msgstr "L[OªLbVOÅ·BµÎç¨Ò¿¾³¢..."
# c:\oss\winpt\src\wptKeyCacheDlg.cpp:65
-#: Src/wptKeyCacheDlg.cpp:72
+#: Src/wptKeyCacheDlg.cpp:70
msgid "Key Cache"
msgstr "L[LbV
"
# 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 "ÅII"
# 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 "tHgðÇÁ·é"
@@ -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 "³ø»«Ì¤ðÇÁ·é"
@@ -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µ¢TuL[ðÇÁ·é"
@@ -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 "TuL[ðÇÁ·é"
# 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[TCY1024ªgpµÜ·BTCYªÏX³êܵ½B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:678
-#: Src/wptKeyEditDlgs.cpp:721
+#: Src/wptKeyEditDlgs.cpp:724
msgid "Subkey successfully added."
msgstr "TuL[ª³µÇÁ³êܵ½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ðÇÁ·é"
# 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ûASYÅÛì³êÄ¢é©çÅ·B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:760
-#: Src/wptKeyEditDlgs.cpp:1024
+#: Src/wptKeyEditDlgs.cpp:1029
msgid "Current (old) Passphrase"
msgstr "Jg(â)pXt[Y"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:764
-#: Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1034
msgid "New Passphrase"
msgstr "Vµ¢pXt[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 "pX[hÌÏX"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:791
-#: Src/wptKeyEditDlgs.cpp:1055
+#: Src/wptKeyEditDlgs.cpp:1060
msgid "Passphrase successfully changed."
msgstr "pXt[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 "dq["
# 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Ìwv"
# 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 "vC}[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 ""
-"\"TuL[ %sB\"\n"
+"±ÌÚð{ÉíµÜ·©H\n"
"\n"
-"TuL[Éûµ½àÌÍÄÑ\n"
-"·é±ÆªÅ«Ü¹ñB\n"
-"\n"
-"±ÌTuL[ð{ÉíµÜ·©H"
+"%s"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1109
-#: Src/wptKeyEditDlgs.cpp:1310
+#: Src/wptKeyEditDlgs.cpp:1336
msgid "Delete Subkey"
msgstr "TuL[Ìí"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1113
-#: Src/wptKeyEditDlgs.cpp:1314
+#: Src/wptKeyEditDlgs.cpp:1340
msgid "Subkey successfully deleted."
msgstr "TuL[ð³µí³êܵ½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 "úÀÌØê½TuL["
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1177
-#: Src/wptKeyEditDlgs.cpp:1385
+#: Src/wptKeyEditDlgs.cpp:1411
msgid "Subkey expire date successfully set."
msgstr "TuL[̸øúª³µÝèūܵ½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ÍVOTuL[ÌÝð³øÉ·é½ß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 "TuL[ð³ø·é"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1239
-#: Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1472
msgid "Subkey successfully revoked."
msgstr "TuL[ð³µ³øɵܵ½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[IDIvVðZbgµÄ¾³¢B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1442
-#: Src/wptKeyEditDlgs.cpp:1566
+#: Src/wptKeyEditDlgs.cpp:1592
msgid "User ID preferences successfully updated"
msgstr "[U[IDIvVÌXVɬ÷µÜµ½B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1388
-#: Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1637
msgid "Primary"
msgstr "vC}["
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1391
-#: Src/wptKeyEditDlgs.cpp:1614
+#: Src/wptKeyEditDlgs.cpp:1640
msgid "User ID successfully flagged"
msgstr "[U[IDɳµtOð¯ܵ½B"
-#: Src/wptKeyEditDlgs.cpp:1708
+#: Src/wptKeyEditDlgs.cpp:1734
msgid "No preferences available."
msgstr "JX^Ýèª èܹñ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[IDF"
# 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[ÌJX^Ýè"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1411
-#: Src/wptKeyEditDlgs.cpp:1780
+#: Src/wptKeyEditDlgs.cpp:1806
msgid "Primary user ID can not be deleted!"
msgstr "vC}[[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[ðRpNg·é±Æª®¬µÜµ½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 "±Ì¼ð{ÉGLX|[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ÌXgÉ é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[ì¬ÌEBU[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[yA"
# 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 "Mp"
@@ -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\" gpµÜ·©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[ðGLX|[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 "gXgpXêÐå¤"
@@ -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[ðÅMpÒ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[yAð쬷é"
-#: 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 "VOj`[L["
# c:\oss\winpt\src\wptKeyManagerDlg.cpp:762
-#: Src/wptKeyManagerDlg.cpp:1480
+#: Src/wptKeyManagerDlg.cpp:1530
msgid "Copy key to clipboard"
msgstr "L[ðNbv{[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 "Nbv{[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ÉGLX|[gÆ·é"
-#: Src/wptKeyManagerDlg.cpp:1626
+#: Src/wptKeyManagerDlg.cpp:1679
msgid "New"
msgstr "VKì¬"
@@ -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 "JX^Ýè"
# c:\oss\winpt\src\wptKeyManagerDlg.cpp:869
-#: Src/wptKeyManagerDlg.cpp:1634
+#: Src/wptKeyManagerDlg.cpp:1687
msgid "Could not access public keyring"
msgstr "öJL[OðANZX·é±ÆªÅ«Ü¹ñŵ½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[LbV
ð[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}[gJ[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[ÌANZX"
# 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 "WinPTJX^Ýè"
# 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 "GnuPGIvV"
# 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 "êÂÌ駮µ©GLX|[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[ð{ÉGLX|[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ð³êÄܹñBKè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[ÌtbV
ª®¹µÜµ½B"
@@ -4576,7 +4612,7 @@
msgid "Card-Type: %s\r\n"
msgstr "J[h^Cv: %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 "pX[hÌÏX(&P)"
-#: Src/wptKeyPropsDlg.cpp:292
+#: Src/wptKeyPropsDlg.cpp:304
msgid "Photo-ID not validated."
msgstr "tHgIDLø³êĢܹñ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[oRÅ %s ðæèoµ½¢Å·©H"
-#: Src/wptKeyserver.cpp:439
+#: Src/wptKeyserver.cpp:443
msgid "Network unreachable"
msgstr "lbg[Nª©Â©çÈ¢"
-#: Src/wptKeyserver.cpp:442
+#: Src/wptKeyserver.cpp:446
msgid "Host unreachable"
msgstr "zXgª©Â©çÈ¢"
# c:\oss\winpt\src\wptErrors.cpp:84
-#: Src/wptKeyserver.cpp:445
+#: Src/wptKeyserver.cpp:449
msgid "Could not resolve host name"
msgstr "zXg¼ðÅ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 "Ú±^CAEg"
-#: 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.conft@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 @@
"vNV[ÌFØI"
# c:\oss\winpt\src\wptKeyserver.cpp:438
-#: Src/wptKeyserver.cpp:725
+#: Src/wptKeyserver.cpp:730
msgid "Proxy Error"
msgstr "vNV[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 "vNV[Ýè"
@@ -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[eLXgðÐ㤶³¹éÌÉNbv{[hr
[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 "eLXg¼ðñÅ[hbv·é(&S)"
# c:\oss\winpt\src\wptPreferencesDlg.cpp:125
-#: Src/wptPreferencesDlg.cpp:117
+#: Src/wptPreferencesDlg.cpp:104
msgid "&Disable hotkeys (Not recommended!)"
msgstr "zbgL[ð³øÉ·é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[ÌmFiKðòεÄAL[ª¢ÂàMpÅ«éÆv¤"
-#: Src/wptPreferencesDlg.cpp:119
+#: Src/wptPreferencesDlg.cpp:106
msgid "&Automatic keyring backup when WinPT closes"
msgstr "WinPTðI¹·éÆ«L[Oð©®IobNAbv·é(&A)"
# c:\oss\winpt\src\wptGPG.cpp:942
-#: Src/wptPreferencesDlg.cpp:120
+#: Src/wptPreferencesDlg.cpp:107
msgid "Backup to &keyring folder"
msgstr "L[OÉobNAbv·é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 "obNAbvæF"
# c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptPreferencesDlg.cpp:122
+#: Src/wptPreferencesDlg.cpp:109
msgid "Select &key list mode"
msgstr "L[Xg[hIð(&K)"
-#: Src/wptPreferencesDlg.cpp:123
-msgid "Select &wipe mode"
-msgstr "æèÁ·uwipev[hIð(&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 "pXt[Yð 'n' bÔLbV
·é(&P)"
-#: Src/wptPreferencesDlg.cpp:126
+#: Src/wptPreferencesDlg.cpp:112
msgid "(CTRL+ALT+F to clear the cache)"
msgstr "(CTRL+ALT+F LbV
ðú»·é)"
@@ -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 "êÊIvV"
@@ -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 "Nbv{[hzbgL["
-#: Src/wptPreferencesDlg.cpp:129
+#: Src/wptPreferencesDlg.cpp:115
msgid "Current window hotkeys"
msgstr "»ÝÌEBhEÌzbgL["
# 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 "obNAbvt@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 @@
"½ðµ½¢©ðÍÁ«èí©éêͱÌtOðLøɵÄࢢŷªA\n"
"»¤ÅÍÈ¢êÍA±ÌtOðGçÈ¢Ù¤ªÀSÅ·B"
-#: Src/wptPreferencesDlg.cpp:256
+#: Src/wptPreferencesDlg.cpp:240
msgid "Select GPG backup path"
msgstr "GPGobNAbvpXð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 @@
"pXt[YðPQÔÈãLbV
·é±ÆªÇ èܹñ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`WOÌÍÍÌ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è³ê½obNAbvptH_ª³øÅ·B"
# c:\oss\winpt\src\wptPreferencesDlg.cpp:323
-#: Src/wptPreferencesDlg.cpp:332
+#: Src/wptPreferencesDlg.cpp:321
msgid "Hotkeys"
msgstr "zbgL["
@@ -5783,63 +5806,64 @@
msgstr "isXbhð쬻é±ÆªÅ«Ü¹ñŵ½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 "³øÈzXgܽÍIPAhXB"
# 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 "vNV[zXg¼ðü͵ľ³¢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`UTTRTÌÍÍÌ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Øðgp·éêÍA¼ûÌtB[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 "zXg¼Æ|[gðü͵ľ³¢B"
-#: Src/wptProxySettingsDlg.cpp:188
+#: Src/wptProxySettingsDlg.cpp:192
msgid "Proxy host name or IP address"
msgstr "vbNV[zXg¼Ü½ÍIPAhX"
-#: Src/wptProxySettingsDlg.cpp:189
+#: Src/wptProxySettingsDlg.cpp:193
msgid "Server requires &authentication"
msgstr "T[o[ÉFتKvÅ·(&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 "pX[h"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:473
-#: Src/wptProxySettingsDlg.cpp:192
+#: Src/wptProxySettingsDlg.cpp:196
msgid "Proxy type"
msgstr "vNV[ÌíÞ"
-#: 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 "MXgɱƪūܹñŵ½B"
@@ -5949,6 +5973,33 @@
msgid "Signed"
msgstr "¼µÜµ½"
+#~ msgid "Select &wipe mode"
+#~ msgstr "æèÁ·uwipev[hIð(&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 ""
+#~ "\"TuL[ %sB\"\n"
+#~ "\n"
+#~ "TuL[Éûµ½àÌÍÄÑ\n"
+#~ "·é±ÆªÅ«Ü¹ñB\n"
+#~ "\n"
+#~ "±ÌTuL[ð{ÉíµÜ·©H"
+
# c:\oss\winpt\src\wptErrors.cpp:102
#~ msgid "Could not lock or unlock volume"
#~ msgstr "{
[ðbNܽÍAbN·é±ÆªÅ«Ü¹ñŵ½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 (®_prefs, 0, sizeof (reg_prefs));
get_reg_winpt_prefs (®_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