[Winpt-commits] r260 - in trunk: . Doc Doc/website Include Po Src
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Wed Aug 16 12:01:40 CEST 2006
Author: twoaday
Date: 2006-08-16 12:01:30 +0200 (Wed, 16 Aug 2006)
New Revision: 260
Modified:
trunk/Doc/website/download.html
trunk/Doc/website/index.html
trunk/Doc/website/screenshots.html
trunk/Doc/winpt.texi
trunk/Include/wptCard.h
trunk/Include/wptFileManager.h
trunk/Include/wptGPG.h
trunk/Include/wptGPGME.h
trunk/Include/wptKeyEdit.h
trunk/Include/wptKeylist.h
trunk/NEWS
trunk/Po/ChangeLog
trunk/Po/de.po
trunk/Po/jp.po
trunk/Po/pt_BR.po
trunk/README
trunk/Src/ChangeLog
trunk/Src/WinPT-en.rc
trunk/Src/WinPT.cpp
trunk/Src/resource.h
trunk/Src/wptCardDlg.cpp
trunk/Src/wptCardEdit.cpp
trunk/Src/wptCardEditCB.cpp
trunk/Src/wptClipEncryptDlg.cpp
trunk/Src/wptClipSignEncDlg.cpp
trunk/Src/wptFileManager.cpp
trunk/Src/wptFirstRunDlg.cpp
trunk/Src/wptGPGME.cpp
trunk/Src/wptGPGMEWrapper.cpp
trunk/Src/wptHTTP.cpp
trunk/Src/wptKeyCache.cpp
trunk/Src/wptKeyEdit.cpp
trunk/Src/wptKeyEditCB.cpp
trunk/Src/wptKeyManager.cpp
trunk/Src/wptKeylist.cpp
trunk/Src/wptPassphraseCB.cpp
trunk/Src/wptUtil.cpp
trunk/THANKS
trunk/TODO
trunk/configure.ac
Log:
Modified: trunk/Doc/website/download.html
===================================================================
--- trunk/Doc/website/download.html 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Doc/website/download.html 2006-08-16 10:01:30 UTC (rev 260)
@@ -53,25 +53,19 @@
</p> </td>
<td width="710" align="left" valign="top">
<p class="style2">Remember that you need GnuPG installed on your computer to use WinPT. You can get GnuPG for free from the <a href="http://www.gnupg.org" target="_blank">GnuPG website</a>. </p>
- <p class="style4">The latest version of WinPT is 1.0.0pre3.</p>
+ <p class="style4">The latest version of WinPT is 1.0.0.</p>
<p class="style2">
- Latest <b>binary</b> version: <a href="http://wald.intevation.org/frs/download.php/261/winpt-1.0.0pre3-exe.zip">download</a>
- <a href="http://wald.intevation.org/frs/download.php/262/winpt-1.0.0pre3-exe.zip.sig">signature</a>
- <br>sha1sum: <tt>3b68d9de8da7527d65c1139fb2ca93eabd33ba24</tt>
+ Latest <b>binary</b> version: <a href="http://wald.intevation.org/frs/download.php/263/winpt-1.0.0-exe.zip">download</a>
+ <a href="http://wald.intevation.org/frs/download.php/264/winpt-1.0.0-exe.zip.sig">signature</a>
+ <br>sha1sum: <tt>89c5f5c46700cb61c2f9d7c5f8ed4b364f2ba757</tt>
</p>
- <p class="style2"><b>Source</b> code: <a href="http://wald.intevation.org/frs/download.php/259/winpt-1.0.0pre3.tar.bz2">download</a>
- <a href="http://wald.intevation.org/frs/download.php/260/winpt-1.0.0pre3.tar.bz2.sig">signature</a>
- <br>sha1sum: <tt>356092c58ff4519d26e433b602992793f77fc761</tt>
+ <p class="style2"><b>Source</b> code: <a href="http://wald.intevation.org/frs/download.php/265/winpt-1.0.0.tar.bz2">download</a>
+ <a href="http://wald.intevation.org/frs/download.php/266/winpt-1.0.0.tar.bz2.sig">signature</a>
+ <br>sha1sum: <tt>7a3589a0ce3a81e3b94547ffdd76bf53d51e919f</tt>
</p>
- <!-- uncomment this only if we need a special gpg version
- <p class="style2">
- <u>Required</u> GnuPG <a href="gpg.exe.zip">binary</a> (<a href="gpg.exe.zip.sig">signature</a>) for the current WinPT version
- </p>
- -->
-
<p class="style2">As well as the basic WinPT downloads, you can also download:</p>
<p class="style2">
Modified: trunk/Doc/website/index.html
===================================================================
--- trunk/Doc/website/index.html 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Doc/website/index.html 2006-08-16 10:01:30 UTC (rev 260)
@@ -65,7 +65,7 @@
<p class="style2">
WinPT is designed to make life easier for people who want encryption, and to make security less
daunting for people who are new to securing data. </p>
- <p class="style4">The latest version of WinPT is 1.0.0pre3. You can download it from <a href="download.html">here</a>.</p>
+ <p class="style4">The latest version of WinPT is 1.0.0. You can download it from <a href="download.html">here</a>.</p>
<p class="style3">
WinPT is licensed under the GNU GPL, and can be freely used, redistributed or modified.
It is is distributed in the hope that it will be useful,
Modified: trunk/Doc/website/screenshots.html
===================================================================
--- trunk/Doc/website/screenshots.html 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Doc/website/screenshots.html 2006-08-16 10:01:30 UTC (rev 260)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<title>WinPT</title>
+<title>Windows Privacy Tray - WinPT</title>
<style type="text/css">
<!--
.style1 {
Modified: trunk/Doc/winpt.texi
===================================================================
--- trunk/Doc/winpt.texi 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Doc/winpt.texi 2006-08-16 10:01:30 UTC (rev 260)
@@ -8,7 +8,7 @@
Copyright (C) 2006 Timo Schulz
-Version 1.0.0
+Version 1.1.0
@settitle WinPT - The Windows Privacy Tray; a free GPG front-end
@@ -118,6 +118,12 @@
To enable keyring backups, the user can either decide to use the GPG home directory as the backup
folder or any other folder. In the latter case, a folder needs to be chosen.
+The program makes the backup before it terminates and thus it is very important that the keyrings
+are stil accessable at this moment. For example if you use an USB flash drive to store your keyrings,
+you should unplug it after the the icon disappeared at the task bar.
+By default the secret keyring will not be backuped, if you wish that the secret keyring should be
+also backuped, and this usually means the backup folder cannot be accessed by other people, you need
+to mark "Backup includes secret keyring".
@subsection Getting the Source of the Program
As free software, according to the GNU General Public License, WinPT also offers the source code
@@ -192,7 +198,7 @@
Example: Row - row - row your boat, gently down the stream
Passphrase: "R - r - ryb,gdts"
-Never write down or passphrase or share it among other people!
+Never write down your passphrase or share it among other people!
@section Keyserver Access
@@ -359,7 +365,6 @@
passphrase. The program issues a warning which should be read carefully.
@subsection Adding a new Secondary Key
-
For most users the existing keys in the key pair are enough and no extra key is needed. But there
are some exceptions.
@@ -487,6 +492,16 @@
After you refreshed or imported a lot of new keys, either from a file or the keyserver, it is a
good idea to re-verify the signature in the keyring. This speeds up listing operations.
+ at subsection Refresh one or more Public Keys from the Keyserver
+From time to time it can be useful to refresh keys from the keyring. The reason for this is,
+that the key might contain new subkeys, user IDs and or new signatures. It is also possible
+that the expiration date of a key has been updated or other preferences were changed. And
+maybe even the worst case, that a key has been compromised and is now revoked.
+If you want to update a single key, select it and right click on it. Then select the item
+"Refresh from the Keyserver" in the popup menu. If you do not select any key, the Key Manager
+assumes that you want to refresh all keys in the keyring. Please bear in mind that this
+can be a lengthy process if you have a lot of keys in your keyring.
+
@subsection WinPT Website
If you want to check for updates or general information about the Windows Privacy Tray program,
you can select this menu item.
Modified: trunk/Include/wptCard.h
===================================================================
--- trunk/Include/wptCard.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptCard.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -1,5 +1,5 @@
-/* wptCard.h
- * Copyright (C) 2003, 2004, 2005 Timo Schulz
+/* wptCard.h - common card definitions
+ * Copyright (C) 2003-2006 Timo Schulz
*
* This file is part of WinPT.
*
@@ -43,11 +43,15 @@
};
+/* Number of fingerprint items. */
+#define N_CARD_FPR 3
+
/* openpgp card context. */
struct gpg_card_s {
char *aid; /* appID */
char *card_type;
char *version; /* version */
+ int ver[2]; /* version [maj:min] */
char *vendor; /* vendor */
char *serial; /* serial number */
char *surname; /* card users surname */
@@ -59,13 +63,14 @@
int force_pin;
char *maxpinlen[3];
int sig_count; /* signature counter */
- char *ca_fpr[3]; /* CA fingerprints */
- char *fpr[3]; /* key fingerprints */
- long fpr_created[3];/* fingerprint timestamps. */
- char *fpr_created_str[3];
+ char *ca_fpr[N_CARD_FPR]; /* CA fingerprints */
+ char *fpr[N_CARD_FPR]; /* key fingerprints */
+ long fpr_created[N_CARD_FPR]; /* fingerprint timestamps. */
+ char *fpr_created_str[N_CARD_FPR]; /* string fingerprints, can be NULL. */
};
typedef struct gpg_card_s *gpg_card_t;
+
/* PIN callback context. */
struct pin_cb_ctx_s {
int which; /* which command to execute. */
Modified: trunk/Include/wptFileManager.h
===================================================================
--- trunk/Include/wptFileManager.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptFileManager.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -69,7 +69,7 @@
struct fm_state_s {
gpgme_ctx_t ctx; /* currently used gpgme context. */
gpgme_key_t *recp; /* selected recipients. */
- int n_recp; /* number of recipients. */
+ size_t n_recp; /* number of recipients. */
char *output; /* output file name. */
char *opaque;
int cancel; /* 1=if user cancelled operation. */
Modified: trunk/Include/wptGPG.h
===================================================================
--- trunk/Include/wptGPG.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptGPG.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -36,7 +36,8 @@
enum setup_t {
SETUP_KEYGEN = 1,
SETUP_IMPORT = 2,
- SETUP_EXISTING = 3
+ SETUP_EXISTING = 3,
+ SETUP_CARDGEN = 4
};
enum gpg_cmd_t {
@@ -92,10 +93,10 @@
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 );
+char* get_gnupg_path (void);
+int check_gnupg_prog (void);
int gnupg_access_files (void);
-char* get_gnupg_prog( void );
+char* get_gnupg_prog (void);
char* get_gnupg_keyring (int pub, int strict);
char* get_gnupg_cfgfile (void);
int set_gnupg_options( const char *buf, size_t buflen );
Modified: trunk/Include/wptGPGME.h
===================================================================
--- trunk/Include/wptGPGME.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptGPGME.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -34,9 +34,15 @@
bool getArmor (void);
void setArmor (bool val);
+ /* export */
gpgme_error_t exportToBuffer (const char *patt, char **outdata);
gpgme_error_t exportToFile (const char *patt, const char *outfile);
gpgme_error_t exportToClipboard (const char *patt);
+
+ /* import */
+ gpgme_error_t importFromFile (const char *file);
+ gpgme_error_t importFromClipboard (void);
+ gpgme_import_result_t importGetResult (void);
};
#endif /*WPT_GPGME_H*/
Modified: trunk/Include/wptKeyEdit.h
===================================================================
--- trunk/Include/wptKeyEdit.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptKeyEdit.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -49,7 +49,8 @@
GPG_EDITKEY_REVUID = 24,
GPG_EDITKEY_CLEAN = 25,
GPG_EDITKEY_NOTATION= 26,
- GPG_EDITKEY_MINIMIZE= 27
+ GPG_EDITKEY_MINIMIZE= 27,
+ GPG_EDITKEY_ADDCARDKEY=28
};
/* Reasons for revocations. */
@@ -95,9 +96,9 @@
bool key_has_passwd;
- int sig_index;
- int key_index;
- int uid_index;
+ int sig_index; /* signature index. */
+ int key_index; /* key index. */
+ int uid_index; /* userid index. */
int valid;
@@ -130,7 +131,8 @@
void clearPassphrase (void);
void setNoPassphrase (bool val);
- void setPassphrase (const char *pass);
+ void setPassphrase (const char *_pass);
+ void setPassphrase2 (const char *_pass2);
void setKey (gpgme_key_t key);
void setKeyID (const char *keyid);
void setLocalUser (gpgme_key_t locusr);
@@ -172,8 +174,9 @@
gpgme_error_t setPreferredKeyserver (int uid_index, const char *url);
gpgme_error_t cleanKey (void);
gpgme_error_t minimizeKey (void);
-
+ gpgme_error_t addCardKey (int type);
+
gpgme_error_t getUseridInfo (gpg_uid_info_t *r_uinf);
gpgme_error_t getDesignatedRevoker (gpg_desig_rev_t *r_rev);
Modified: trunk/Include/wptKeylist.h
===================================================================
--- trunk/Include/wptKeylist.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Include/wptKeylist.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -120,9 +120,9 @@
void keylist_upd_key (listview_ctrl_t lv, int pos,
struct keycache_s *ctx, gpgme_key_t key);
void keylist_upd_col (listview_ctrl_t lv, int col);
-gpgme_key_t* keylist_get_recipients( listview_ctrl_t lv,
- int *r_force_trust, int *r_count );
-gpgme_key_t* keylist_enum_recipients( listview_ctrl_t lv, int listype, int *r_count );
+gpgme_key_t* keylist_get_recipients (listview_ctrl_t lv,
+ int *r_force_trust, size_t *r_count);
+gpgme_key_t* keylist_enum_recipients (listview_ctrl_t lv, int listype, size_t *r_count);
int keylist_sort( listview_ctrl_t lv, int sortby );
/*-- wptImportList.cpp --*/
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/NEWS 2006-08-16 10:01:30 UTC (rev 260)
@@ -896,7 +896,7 @@
[updated translations: Japanese, German, Portuguese(BR)]
-Noteworthy changes in version 1.0.0 (unreleased)
+Noteworthy changes in version 1.0.0 (2006-08-10)
================================================
* Bug fix in file name handling for the MAPI feature.
@@ -924,3 +924,10 @@
[updated translation: Slovak, German]
+
+Noteworthy changes in version 1.0.1 (unreleased)
+================================================
+
+* Allow to generate a key on a smart card on the first start.
+
+* Some polishing for the smart card related dialogs.
Modified: trunk/Po/ChangeLog
===================================================================
--- trunk/Po/ChangeLog 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Po/ChangeLog 2006-08-16 10:01:30 UTC (rev 260)
@@ -1,8 +1,12 @@
-2007-08-05 Timo Schulz <ts at g10code.de>
+2006-08-11 Timo Schulz <ts at g10code.de>
+ * de.po: Updated.
+
+2006-08-05 Timo Schulz <ts at g10code.de>
+
* sk.po: Updated by Martin Lukac.
-2007-07-30 Timo Schulz <ts at g10code.de>
+2006-07-30 Timo Schulz <ts at g10code.de>
* sk.po: New by Martin Lukac.
Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Po/de.po 2006-08-16 10:01:30 UTC (rev 260)
@@ -14,7 +14,7 @@
msgstr ""
"Project-Id-Version: WinPT 1.0.0\n"
"Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-08-05 12:29+0200\n"
+"POT-Creation-Date: 2006-08-11 22:27+0200\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"
@@ -37,7 +37,7 @@
#: Src/WinPT.cpp:196 Src/WinPT.cpp:278 Src/WinPT.cpp:282 Src/WinPT.cpp:483
#: Src/WinPT.cpp:492 Src/WinPT.cpp:499 Src/WinPT.cpp:539 Src/WinPT.cpp:567
#: Src/WinPT.cpp:576 Src/WinPT.cpp:580 Src/WinPT.cpp:597 Src/WinPT.cpp:665
-#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:760 Src/WinPT.cpp:779
+#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:767 Src/WinPT.cpp:786
#: Src/wptCommonDlg.cpp:220 Src/wptErrors.cpp:141 Src/wptGPG.cpp:926
#: Src/wptGPG.cpp:938 Src/wptGPG.cpp:948 Src/wptGPG.cpp:959
#: Src/wptMainProc.cpp:343 Src/wptMainProc.cpp:516
@@ -162,7 +162,7 @@
msgid "Could not create window"
msgstr "Konnte Fenster nicht erstellen"
-#: Src/WinPT.cpp:758
+#: Src/WinPT.cpp:765
msgid ""
"The keycache was not initialized or is empty.\n"
"Please check your GPG config (keyrings, pathes...)"
@@ -170,7 +170,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:761
+#: Src/WinPT.cpp:768
msgid ""
"It seems that GPG is not configured properly.\n"
"Do you want to start the GPG preferences dialog?"
@@ -178,7 +178,7 @@
"GPG ist nicht richtig konfiguriert.\n"
"Den GPG-Einstellungsdialog starten?"
-#: Src/WinPT.cpp:780
+#: Src/WinPT.cpp:787
#, c-format
msgid ""
"Default key (from the GPG config file) could not be found.\n"
@@ -260,68 +260,68 @@
msgid "&Help"
msgstr "&Hilfe"
-#: Src/wptCardDlg.cpp:141 Src/wptMainProc.cpp:392
+#: Src/wptCardDlg.cpp:149 Src/wptMainProc.cpp:392
msgid "Card Manager"
msgstr "Kartenmanager"
-#: Src/wptCardDlg.cpp:177
+#: Src/wptCardDlg.cpp:185
msgid "No Fingerprint"
msgstr "Kein Fingerabdruck"
-#: Src/wptCardDlg.cpp:207
+#: Src/wptCardDlg.cpp:216
msgid "No OpenPGP smart card detected."
msgstr "Keine OpenPGP-Smartcard gefunden."
-#: Src/wptCardDlg.cpp:326
+#: Src/wptCardDlg.cpp:340
msgid "No PINs found."
msgstr "Keine PINs gefunden."
-#: Src/wptCardDlg.cpp:326 Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:345
-#: Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:363 Src/wptCardDlg.cpp:377
-#: Src/wptCardDlg.cpp:506 Src/wptCardDlg.cpp:611 Src/wptCardDlg.cpp:616
-#: Src/wptCardDlg.cpp:622 Src/wptCardDlg.cpp:629 Src/wptCardDlg.cpp:634
-#: Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:664 Src/wptCardDlg.cpp:691
-#: Src/wptCardDlg.cpp:696 Src/wptCardDlg.cpp:699 Src/wptCardDlg.cpp:724
-#: Src/wptCardDlg.cpp:726 Src/wptCardDlg.cpp:731 Src/wptCardDlg.cpp:736
-#: Src/wptCardDlg.cpp:800 Src/wptCardDlg.cpp:815 Src/wptCardDlg.cpp:818
+#: Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:356
+#: Src/wptCardDlg.cpp:362 Src/wptCardDlg.cpp:374 Src/wptCardDlg.cpp:388
+#: Src/wptCardDlg.cpp:523 Src/wptCardDlg.cpp:624 Src/wptCardDlg.cpp:629
+#: Src/wptCardDlg.cpp:635 Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:648
+#: Src/wptCardDlg.cpp:656 Src/wptCardDlg.cpp:677 Src/wptCardDlg.cpp:703
+#: Src/wptCardDlg.cpp:708 Src/wptCardDlg.cpp:711 Src/wptCardDlg.cpp:737
+#: Src/wptCardDlg.cpp:739 Src/wptCardDlg.cpp:744 Src/wptCardDlg.cpp:749
+#: Src/wptCardDlg.cpp:813 Src/wptCardDlg.cpp:826 Src/wptCardDlg.cpp:829
#: Src/wptMainProc.cpp:263
msgid "Card Edit"
msgstr "Karten-Editor"
-#: Src/wptCardDlg.cpp:339
+#: Src/wptCardDlg.cpp:350
msgid "Only plain ASCII is currently allowed."
msgstr "Aktuell ist nur 7bit-ASCII-Text erlaubt."
-#: Src/wptCardDlg.cpp:344
+#: Src/wptCardDlg.cpp:355
msgid "Only alphabetic characters are allowed."
msgstr "Nur alphanumerische sind Zeichen zulässig."
-#: Src/wptCardDlg.cpp:351
+#: Src/wptCardDlg.cpp:362
msgid "Invalid URL."
msgstr "Ungültige URL."
-#: Src/wptCardDlg.cpp:364
+#: Src/wptCardDlg.cpp:375
#, c-format
msgid "Could not modify card attribute: %s"
msgstr "Konnte Attribute auf der Karte nicht ändern: %s"
-#: Src/wptCardDlg.cpp:377
+#: Src/wptCardDlg.cpp:388
msgid "Card attribute changed."
msgstr "Karteneinstellung geändert."
-#: Src/wptCardDlg.cpp:417
+#: Src/wptCardDlg.cpp:428
msgid "Please enter the 'Admin PIN'"
msgstr "Bitte 'Admin PIN' eingeben"
-#: Src/wptCardDlg.cpp:419
+#: Src/wptCardDlg.cpp:430
msgid "Please enter the 'User PIN'"
msgstr "Bitte 'Benutzer PIN' eingeben"
-#: Src/wptCardDlg.cpp:421 Src/wptPINDlg.cpp:51
+#: Src/wptCardDlg.cpp:432 Src/wptPINDlg.cpp:51
msgid "Please enter the PIN"
msgstr "Bitte PIN eingeben"
-#: Src/wptCardDlg.cpp:425
+#: Src/wptCardDlg.cpp:436
#, c-format
msgid ""
"%s\n"
@@ -332,8 +332,46 @@
"Name: %s %s\n"
"Serien-Nr: %s\n"
+#: Src/wptCardDlg.cpp:479 Src/wptCardDlg.cpp:595 Src/wptKeyEditDlgs.cpp:503
+msgid "&Name"
+msgstr "&Name"
+
+#: Src/wptCardDlg.cpp:480
+msgid "&Language"
+msgstr "&Sprache"
+
+#: Src/wptCardDlg.cpp:481
+msgid "&Key-URL"
+msgstr "&Schlüssel-URL"
+
+#: Src/wptCardDlg.cpp:482
+msgid "&Login"
+msgstr "&Login"
+
+#: Src/wptCardDlg.cpp:483
+msgid "&Sex"
+msgstr "&Geschlecht"
+
+#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:252 Src/wptKeyEditDlgs.cpp:2154
+#: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
+msgid "&OK"
+msgstr "&OK"
+
+#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:59
+msgid "&Exit"
+msgstr "&Beenden"
+
+#: Src/wptCardDlg.cpp:486
+msgid "&New keys"
+msgstr "&Neue Schlüssel"
+
+# c:\oss\winpt-gpgme\src\wptCardDlg.cpp:766
+#: Src/wptCardDlg.cpp:487
+msgid "Change &PIN"
+msgstr "&PIN Ändern"
+
# c:\oss\winpt-gpgme\src\wptCardDlg.cpp:522
-#: Src/wptCardDlg.cpp:505
+#: Src/wptCardDlg.cpp:522
msgid ""
"This operation will override the keys on the card.\n"
"Continue?"
@@ -341,73 +379,73 @@
"Diese Operation wird die Schlüssel auf der Karte überschreiben.\n"
"Trotzdem fortfahren?"
-#: Src/wptCardDlg.cpp:580 Src/wptKeyEditDlgs.cpp:503
-msgid "&Name"
-msgstr "&Name"
+#: Src/wptCardDlg.cpp:594
+msgid "Pubkey algorithm"
+msgstr "Pubkey Algorithmus"
-#: Src/wptCardDlg.cpp:581 Src/wptKeygenDlg.cpp:375
+#: Src/wptCardDlg.cpp:596 Src/wptKeygenDlg.cpp:375
msgid "&Comment (optional)"
msgstr "&Kommentar (optional)"
-#: Src/wptCardDlg.cpp:582 Src/wptKeygenDlg.cpp:377
+#: Src/wptCardDlg.cpp:597 Src/wptKeygenDlg.cpp:377
msgid "&Expire date"
msgstr "&Ablaufdatum"
-#: Src/wptCardDlg.cpp:583
+#: Src/wptCardDlg.cpp:598
msgid "Off-card passphrase"
msgstr "\"Off-card\" Passwort"
-#: Src/wptCardDlg.cpp:584 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
+#: Src/wptCardDlg.cpp:599 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
msgid "&Never"
msgstr "&Niemals"
-#: Src/wptCardDlg.cpp:585 Src/wptKeygenDlg.cpp:376
+#: Src/wptCardDlg.cpp:600 Src/wptKeygenDlg.cpp:376
msgid "Email &address"
msgstr "E-Mail-&Adresse"
-#: Src/wptCardDlg.cpp:586
+#: Src/wptCardDlg.cpp:601
msgid "Overwrite old keys on the card"
msgstr "Alte Schlüssel auf der Karte überschreiben?"
-#: Src/wptCardDlg.cpp:587
+#: Src/wptCardDlg.cpp:602
msgid "Make off-card backup of encryption key"
msgstr "Externes Backup des Verschlüsselungs-Schlüssel"
-#: Src/wptCardDlg.cpp:588 Src/wptKeyManagerDlg.cpp:1795
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1795
msgid "Card Key Generation"
msgstr "Karten-Schlüsselerzeugung"
-#: Src/wptCardDlg.cpp:611
+#: Src/wptCardDlg.cpp:624
msgid "Please enter your name."
msgstr "Bitte Namen eingeben."
-#: Src/wptCardDlg.cpp:615
+#: Src/wptCardDlg.cpp:628
msgid "Name must be at least 5 characters long."
msgstr "Der Name muss mindestens 5 Zeichen lang sein."
-#: Src/wptCardDlg.cpp:621
+#: Src/wptCardDlg.cpp:634
msgid "Please enter your e-mail address."
msgstr "Bitte E-Mail-Adresse eingeben."
-#: Src/wptCardDlg.cpp:628
+#: Src/wptCardDlg.cpp:641
msgid "Please enter a valid e-mail address."
msgstr "Bitte gültige E-Mail-Adresse eingeben."
-#: Src/wptCardDlg.cpp:634
+#: Src/wptCardDlg.cpp:647
msgid "Please enter an off-card passphrase."
msgstr "Bitte ein Passwort eingeben für \"off-card\"."
# c:\oss\winpt-gpgme\src\wptCardDlg.cpp:649
-#: Src/wptCardDlg.cpp:641
+#: Src/wptCardDlg.cpp:655
msgid "Please use plain ASCII charset for the fields."
msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
-#: Src/wptCardDlg.cpp:663 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
msgid "The date you have chosen has already passed."
msgstr "Das gewählte Datum liegt in der Vergangenheit."
# c:\oss\winpt-gpgme\src\wptCardDlg.cpp:696
-#: Src/wptCardDlg.cpp:689
+#: Src/wptCardDlg.cpp:701
msgid ""
"Operation was canceled. It seems that there are existing\n"
"keys on the cards. You need to mark the 'Overwrite' flag."
@@ -415,45 +453,45 @@
"Operation wurde abgebrochen. Es scheinen noch Schlüssel\n"
"auf der Karte zu existieren. Bitte 'Überschreiben' markieren."
-#: Src/wptCardDlg.cpp:698
+#: Src/wptCardDlg.cpp:710
msgid "Keys successfully created."
msgstr "Schlüssel erfolgreich erstellt."
-#: Src/wptCardDlg.cpp:724
+#: Src/wptCardDlg.cpp:737
msgid "Please enter the old card PIN."
msgstr "Bitte alte Karten-PIN eingeben."
-#: Src/wptCardDlg.cpp:726
+#: Src/wptCardDlg.cpp:739
msgid "Please enter the new card PIN."
msgstr "Bitte neue Karten-PIN eingeben."
-#: Src/wptCardDlg.cpp:731
+#: Src/wptCardDlg.cpp:744
msgid "Admin PIN must be at least 8 characters."
msgstr "Die 'Admin PIN' muss mindestens 8 Zeichen lang sein."
-#: Src/wptCardDlg.cpp:736
+#: Src/wptCardDlg.cpp:749
msgid "PIN must be at least 6 characters."
msgstr "Die 'Benutzer PIN' muss mindestens 6 Zeichen lang sein."
# c:\oss\winpt-gpgme\src\wptCardDlg.cpp:766
-#: Src/wptCardDlg.cpp:759
+#: Src/wptCardDlg.cpp:772
msgid "Change Card PIN"
msgstr "Karten PIN Ändern"
-#: Src/wptCardDlg.cpp:799 Src/wptPassphraseDlg.cpp:256
+#: Src/wptCardDlg.cpp:812 Src/wptPassphraseDlg.cpp:256
msgid "Passphrases do not match. Please try again."
msgstr "Passwörter nicht identisch. Versuchen Sie es erneut."
-#: Src/wptCardDlg.cpp:817
+#: Src/wptCardDlg.cpp:828
msgid "PIN successfully changed."
msgstr "PIN erfolgreich geändert."
# c:\oss\winpt-gpgme\src\wptCardEdit.cpp:315
-#: Src/wptCardEdit.cpp:321
+#: Src/wptCardEdit.cpp:329
msgid "Please insert the card and click OK or Cancel to abort."
msgstr "Bitte Karte einlegen und OK oder Abbrechen anclicken."
-#: Src/wptCardEdit.cpp:322
+#: Src/wptCardEdit.cpp:330
msgid "GPG Card Status"
msgstr "GPG Kartenstatus"
@@ -592,7 +630,7 @@
#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
#: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:265
#: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
-#: Src/wptKeyManager.cpp:802 Src/wptKeyManager.cpp:994 Src/wptSymEnc.cpp:94
+#: Src/wptKeyManager.cpp:766 Src/wptKeyManager.cpp:958 Src/wptSymEnc.cpp:94
msgid "GnuPG Status: Finished"
msgstr "GnuPG-Status: Abgeschlossen"
@@ -755,7 +793,7 @@
msgid "Signing key:"
msgstr "Signierer Schlüssel:"
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1207
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
msgid "No key was selected."
msgstr "Kein Schlüssel ausgewählt."
@@ -862,11 +900,6 @@
msgid "Please select a language"
msgstr "Bitte eine Sprache auswählen"
-#: Src/wptCommonDlg.cpp:252 Src/wptKeyEditDlgs.cpp:2154
-#: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
-msgid "&OK"
-msgstr "&OK"
-
#: Src/wptErrors.cpp:47
#, c-format
msgid "Could not locate GPG.exe in %s."
@@ -1227,8 +1260,9 @@
#: 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/wptKeyManager.cpp:478 Src/wptKeyManager.cpp:489
-#: Src/wptKeyManager.cpp:617 Src/wptKeyserverDlg.cpp:222
+#: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
+#: Src/wptKeyManager.cpp:563 Src/wptKeyManager.cpp:582
+#: Src/wptKeyserverDlg.cpp:222
msgid "Import"
msgstr "Importieren"
@@ -1328,12 +1362,12 @@
msgstr "Bitte wählen Sie wenigstens einen Empfänger."
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileStatDlg.cpp:283
-#: Src/wptKeyManager.cpp:442
+#: Src/wptKeyManager.cpp:426
msgid "No valid OpenPGP data found."
msgstr "Keine gültigen OpenPGP-Daten gefunden."
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileManagerDlg.cpp:225
-#: Src/wptKeyManager.cpp:467
+#: Src/wptKeyManager.cpp:451
msgid "Key Import"
msgstr "Schlüsselimport"
@@ -1381,8 +1415,8 @@
#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
-#: Src/wptKeyManager.cpp:722 Src/wptKeyManager.cpp:823
-#: Src/wptKeyManager.cpp:856 Src/wptKeyManagerDlg.cpp:1672
+#: Src/wptKeyManager.cpp:686 Src/wptKeyManager.cpp:787
+#: Src/wptKeyManager.cpp:820 Src/wptKeyManagerDlg.cpp:1672
#: Src/wptKeyManagerDlg.cpp:1688 Src/wptKeyManagerDlg.cpp:1716
#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1742
#: Src/wptKeyManagerDlg.cpp:1855 Src/wptKeyManagerDlg.cpp:1874
@@ -1685,38 +1719,42 @@
msgid "Invalid backup mode %d"
msgstr "Ungültiger Sicherungsmethode %d"
-#: Src/wptGPGME.cpp:278
+#: Src/wptGPGME.cpp:282
msgid "Error during verification process"
msgstr "Fehler während Verifikation"
-#: Src/wptGPGME.cpp:279
+#: Src/wptGPGME.cpp:283
msgid "The signature is good"
msgstr "Die Signatur is gut"
-#: Src/wptGPGME.cpp:280
+#: Src/wptGPGME.cpp:284
msgid "The signature is BAD!"
msgstr "Die Signatur ist nicht gültig!"
-#: Src/wptGPGME.cpp:281
+#: Src/wptGPGME.cpp:285
msgid "The signature could not be checked due to a missing key"
msgstr "Die Signature konnte durch fehlenden Key nicht geprüft werden"
-#: Src/wptGPGME.cpp:282
+#: Src/wptGPGME.cpp:286
msgid "No valid OpenPGP signature"
msgstr "Keine gültige OpenPGP Signatur"
-#: Src/wptGPGME.cpp:283
+#: Src/wptGPGME.cpp:287
msgid "Signature Error"
msgstr "Fehler in Signatur"
-#: Src/wptGPGME.cpp:284
-msgid "Good Signature (Expired Key)"
+#: Src/wptGPGME.cpp:288
+msgid "Good signature (Expired Key)"
msgstr "Gültige Signature (Abgelaufener Schlüssel)"
-#: Src/wptGPGME.cpp:285
-msgid "Good Signature (Revoked Key)"
+#: Src/wptGPGME.cpp:289
+msgid "Good signature (Revoked Key)"
msgstr "Gültige Signatur (Widerrufener Schlüssel)"
+#: Src/wptGPGME.cpp:290
+msgid "Good signature (Expired)"
+msgstr "Gültige Signature (Abgelaufen)"
+
#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
msgid "Could not load GnuPG config file!"
msgstr "Konnte GnuPG Konfigurationsdatei nicht laden!"
@@ -1736,10 +1774,6 @@
msgid "&Load"
msgstr "&Laden"
-#: Src/wptGPGOptDlg.cpp:59
-msgid "&Exit"
-msgstr "&Beenden"
-
#: Src/wptGPGOptDlg.cpp:72
msgid "The 'gpg.conf' file is not loaded."
msgstr "Die 'gpg.conf' wurde nicht geladen"
@@ -1850,18 +1884,17 @@
#: Src/wptKeyManager.cpp:331 Src/wptKeyManager.cpp:338
#: Src/wptKeyManager.cpp:340 Src/wptKeyManager.cpp:361
#: Src/wptKeyManager.cpp:370 Src/wptKeyManager.cpp:374
-#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:435
-#: Src/wptKeyManager.cpp:440 Src/wptKeyManager.cpp:443
-#: Src/wptKeyManager.cpp:448 Src/wptKeyManager.cpp:454
-#: Src/wptKeyManager.cpp:459 Src/wptKeyManager.cpp:587
-#: Src/wptKeyManager.cpp:595 Src/wptKeyManager.cpp:722
-#: Src/wptKeyManager.cpp:750 Src/wptKeyManager.cpp:759
-#: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:796
-#: Src/wptKeyManager.cpp:823 Src/wptKeyManager.cpp:828
-#: Src/wptKeyManager.cpp:851 Src/wptKeyManager.cpp:856
-#: Src/wptKeyManager.cpp:870 Src/wptKeyManager.cpp:930
-#: Src/wptKeyManager.cpp:935 Src/wptKeyManager.cpp:992
-#: Src/wptKeyManager.cpp:1025 Src/wptKeyManager.cpp:1109
+#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:419
+#: Src/wptKeyManager.cpp:424 Src/wptKeyManager.cpp:427
+#: Src/wptKeyManager.cpp:432 Src/wptKeyManager.cpp:438
+#: Src/wptKeyManager.cpp:443 Src/wptKeyManager.cpp:686
+#: Src/wptKeyManager.cpp:714 Src/wptKeyManager.cpp:723
+#: Src/wptKeyManager.cpp:734 Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:787 Src/wptKeyManager.cpp:792
+#: Src/wptKeyManager.cpp:815 Src/wptKeyManager.cpp:820
+#: Src/wptKeyManager.cpp:834 Src/wptKeyManager.cpp:894
+#: Src/wptKeyManager.cpp:899 Src/wptKeyManager.cpp:956
+#: Src/wptKeyManager.cpp:989 Src/wptKeyManager.cpp:1073
#: Src/wptKeyManagerDlg.cpp:1324 Src/wptKeyManagerDlg.cpp:1335
#: Src/wptKeyManagerDlg.cpp:1345 Src/wptKeyManagerDlg.cpp:1650
#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1688
@@ -2897,7 +2930,7 @@
msgid "Invalid User ID"
msgstr "Ungültige Benutzerkennung"
-#: Src/wptKeylist.cpp:1034
+#: Src/wptKeylist.cpp:1035
#, c-format
msgid ""
"It is NOT certain that the key belongs to the person\n"
@@ -2912,11 +2945,11 @@
"\n"
"\"%s\" trotzdem benutzen?"
-#: Src/wptKeylist.cpp:1042 Src/wptKeylist.cpp:1104
+#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
msgid "Recipients"
msgstr "Empfänger"
-#: Src/wptKeylist.cpp:1105
+#: Src/wptKeylist.cpp:1107
#, c-format
msgid ""
"KeyID %s.\n"
@@ -2925,7 +2958,7 @@
"Schlüssel ID %s.\n"
"Wollen Sie wirklich einen widerrufenen Schlüssel exportieren?"
-#: Src/wptKeylist.cpp:1207
+#: Src/wptKeylist.cpp:1209
msgid "Secret Key List"
msgstr "Liste der geheimen Schlüssel"
@@ -2959,11 +2992,11 @@
msgid "Key(s) successfully saved in '%s'."
msgstr "Schlüssel erfolgreich in '%s' gespeichert."
-#: Src/wptKeyManager.cpp:447
+#: Src/wptKeyManager.cpp:431
msgid "No valid OpenPGP keys found."
msgstr "Keine gültigen OpenPGP-Schlüssel gefunden."
-#: Src/wptKeyManager.cpp:452
+#: Src/wptKeyManager.cpp:436
msgid ""
"The key you want to import is dash escaped.\n"
"Do you want to extract the key?"
@@ -2971,11 +3004,11 @@
"Der Schlüssel ist \"dash escaped\".\n"
"Möchten Sie den Schlüssel extrahieren?"
-#: Src/wptKeyManager.cpp:458
+#: Src/wptKeyManager.cpp:442
msgid "Cannot import dash escaped OpenPGP keys."
msgstr "Kann keine beschädigten OpenPGP-Schlüssel importieren."
-#: Src/wptKeyManager.cpp:487 Src/wptKeyManager.cpp:615
+#: Src/wptKeyManager.cpp:467 Src/wptKeyManager.cpp:580
msgid ""
"Key without a self signature was dectected!\n"
"(This key is NOT usable for encryption, etc)\n"
@@ -2983,43 +3016,39 @@
"Schlüssel ohne Eigensignatur erkannt!\n"
"(Dieser Schlüssel ist für Verschlüsselung, etc. NICHT verwendbar)\n"
-#: Src/wptKeyManager.cpp:516 Src/wptKeyManager.cpp:523
-#: Src/wptKeyManager.cpp:532
+#: Src/wptKeyManager.cpp:496 Src/wptKeyManager.cpp:503
+#: Src/wptKeyManager.cpp:512
msgid "Key Import HTTP"
msgstr "Schlüssel Import HTTP"
# c:\oss\winpt-gpgme\src\wptKeyManager.cpp:448
-#: Src/wptKeyManager.cpp:516
+#: Src/wptKeyManager.cpp:496
#, c-format
msgid "Invalid HTTP URL: %s"
msgstr "Ungültige HTTP URL: %s"
-#: Src/wptKeyManager.cpp:533
+#: Src/wptKeyManager.cpp:513
#, c-format
msgid "Could not fetch key from URL: %s"
msgstr "Konnte Schlüssel von der URL: %s nicht runterladen"
-#: Src/wptKeyManager.cpp:562
+#: Src/wptKeyManager.cpp:541
msgid "Choose Name of the Key File"
msgstr "Namen der Schlüsseldatei auswählen"
-#: Src/wptKeyManager.cpp:575
+#: Src/wptKeyManager.cpp:554
msgid "File Import"
msgstr "Dateiimport"
-#: Src/wptKeyManager.cpp:586
-msgid "Could not read key-data from file."
-msgstr "Konnte Schlüsseldaten nicht aus Datei lesen."
-
-#: Src/wptKeyManager.cpp:727
+#: Src/wptKeyManager.cpp:691
msgid "Do you really want to confirm each key?"
msgstr "Wollen Sie wirklich jeden Schlüssel bestätigen?"
-#: Src/wptKeyManager.cpp:728
+#: Src/wptKeyManager.cpp:692
msgid "Delete Confirmation"
msgstr "Löschen Bestätigen"
-#: Src/wptKeyManager.cpp:751
+#: Src/wptKeyManager.cpp:715
#, c-format
msgid ""
"Do you really want to delete this key?\n"
@@ -3031,7 +3060,7 @@
"%s"
# c:\oss\winpt-gpgme\src\wptKeyManager.cpp:605
-#: Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:724
#, c-format
msgid ""
"Do you really want to delete this KEY PAIR?\n"
@@ -3048,7 +3077,7 @@
"\n"
"%s"
-#: Src/wptKeyManager.cpp:767
+#: Src/wptKeyManager.cpp:731
msgid ""
"The actual secret key is stored on a smartcard.\n"
"Only the public key and the secret key \n"
@@ -3058,51 +3087,51 @@
"Nur der öffentliche Schlüssel und der Zeiger auf den geheimen\n"
"Schlüssel werden gelöscht.\n"
-#: Src/wptKeyManager.cpp:829
+#: Src/wptKeyManager.cpp:793
#, c-format
msgid "Do you really want to send '0x%s' to keyserver %s?"
msgstr "Wollen Sie '0x%s' wirklich zum Schlüsselserver %s senden?"
-#: Src/wptKeyManager.cpp:850
+#: Src/wptKeyManager.cpp:814
msgid "Please only select one key."
msgstr "Bitte nur einen Schlüssel auswählen."
-#: Src/wptKeyManager.cpp:929
+#: Src/wptKeyManager.cpp:893
msgid "Do you really want to refresh all keys in the keyring?"
msgstr "Wirklich alle Schlüssel im Schlüsselbund neu laden?"
-#: Src/wptKeyManager.cpp:934
+#: Src/wptKeyManager.cpp:898
msgid "Could not connect to keyserver, abort procedure."
msgstr ""
"Verbindung zum Keyserver fehlgeschlagen; Die Prozedur wird abgebrochen."
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search"
msgstr "Suchen"
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search for:"
msgstr "Suche nach:"
# c:\oss\winpt-gpgme\src\wptKeyManager.cpp:896
-#: Src/wptKeyManager.cpp:1020
+#: Src/wptKeyManager.cpp:984
#, c-format
msgid "String pattern \"%s\" not found."
msgstr "Zeichenkette \"%s\" nicht gefunden."
-#: Src/wptKeyManager.cpp:1086 Src/wptKeyRevokeDlg.cpp:85
+#: Src/wptKeyManager.cpp:1050 Src/wptKeyRevokeDlg.cpp:85
msgid "0. No reason specified"
msgstr "0. Kein Grund angeben"
-#: Src/wptKeyManager.cpp:1087 Src/wptKeyRevokeDlg.cpp:86
+#: Src/wptKeyManager.cpp:1051 Src/wptKeyRevokeDlg.cpp:86
msgid "1. Key has been compromised"
msgstr "1. Der Schlüssel ist nicht mehr sicher"
-#: Src/wptKeyManager.cpp:1088 Src/wptKeyRevokeDlg.cpp:87
+#: Src/wptKeyManager.cpp:1052 Src/wptKeyRevokeDlg.cpp:87
msgid "2. Key is superseded"
msgstr "2. Der Schlüssel ist veraltet"
-#: Src/wptKeyManager.cpp:1089 Src/wptKeyRevokeDlg.cpp:88
+#: Src/wptKeyManager.cpp:1053 Src/wptKeyRevokeDlg.cpp:88
msgid "3. Key is no longer used"
msgstr "3. Der Schlüssel wird nicht mehr benutzt"
@@ -4286,7 +4315,7 @@
"\"%s\"\n"
"%s key, ID %s\n"
-#: Src/wptPassphraseCB.cpp:400
+#: Src/wptPassphraseCB.cpp:401
#, c-format
msgid ""
"Please enter the PIN to unlock your secret card key\n"
@@ -4614,6 +4643,9 @@
msgid "Signed"
msgstr "Signiert"
+#~ msgid "Could not read key-data from file."
+#~ msgstr "Konnte Schlüsseldaten nicht aus Datei lesen."
+
#~ msgid ""
#~ "Encrypted with %s key, ID %s.%s\n"
#~ "Decryption failed: secret key not available."
Modified: trunk/Po/jp.po
===================================================================
--- trunk/Po/jp.po 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Po/jp.po 2006-08-16 10:01:30 UTC (rev 260)
@@ -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-08-05 12:29+0200\n"
+"POT-Creation-Date: 2006-08-11 22:27+0200\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"
@@ -38,7 +38,7 @@
#: Src/WinPT.cpp:196 Src/WinPT.cpp:278 Src/WinPT.cpp:282 Src/WinPT.cpp:483
#: Src/WinPT.cpp:492 Src/WinPT.cpp:499 Src/WinPT.cpp:539 Src/WinPT.cpp:567
#: Src/WinPT.cpp:576 Src/WinPT.cpp:580 Src/WinPT.cpp:597 Src/WinPT.cpp:665
-#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:760 Src/WinPT.cpp:779
+#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:767 Src/WinPT.cpp:786
#: Src/wptCommonDlg.cpp:220 Src/wptErrors.cpp:141 Src/wptGPG.cpp:926
#: Src/wptGPG.cpp:938 Src/wptGPG.cpp:948 Src/wptGPG.cpp:959
#: Src/wptMainProc.cpp:343 Src/wptMainProc.cpp:516
@@ -188,7 +188,7 @@
msgstr "EBhð쬷é±ÆªÅ«Ü¹ñŵ½B"
# c:\oss\winpt\src\WinPT.cpp:461
-#: Src/WinPT.cpp:758
+#: Src/WinPT.cpp:765
msgid ""
"The keycache was not initialized or is empty.\n"
"Please check your GPG config (keyrings, pathes...)"
@@ -197,7 +197,7 @@
"GPG±¤¹¢ (L[O, pXÈÇ...) ð`FbNµÄ¾³¢B"
# c:\oss\winpt\src\WinPT.cpp:464
-#: Src/WinPT.cpp:761
+#: Src/WinPT.cpp:768
#, fuzzy
msgid ""
"It seems that GPG is not configured properly.\n"
@@ -207,7 +207,7 @@
"GPGJX^ÝèðÀsµÜ·H"
# c:\oss\winpt\src\WinPT.cpp:480
-#: Src/WinPT.cpp:780
+#: Src/WinPT.cpp:787
#, c-format
msgid ""
"Default key (from the GPG config file) could not be found.\n"
@@ -297,22 +297,22 @@
# c:\oss\winpt\src\WinPT.cpp:340 c:\oss\winpt\src\wptCardDlg.cpp:98
# c:\oss\winpt\src\wptCardDlg.cpp:125 c:\oss\winpt\src\wptMainProc.cpp:389
-#: Src/wptCardDlg.cpp:141 Src/wptMainProc.cpp:392
+#: Src/wptCardDlg.cpp:149 Src/wptMainProc.cpp:392
msgid "Card Manager"
msgstr "J[h}l[W["
# c:\oss\winpt\src\wptCardDlg.cpp:149
-#: Src/wptCardDlg.cpp:177
+#: Src/wptCardDlg.cpp:185
msgid "No Fingerprint"
msgstr "tBK[vgÍ èܹñ"
# c:\oss\winpt\src\wptCardDlg.cpp:175
-#: Src/wptCardDlg.cpp:207
+#: Src/wptCardDlg.cpp:216
msgid "No OpenPGP smart card detected."
msgstr "OpenPGPX}[gJ[hª©Â©èܹñŵ½B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:932
-#: Src/wptCardDlg.cpp:326
+#: Src/wptCardDlg.cpp:340
msgid "No PINs found."
msgstr "[U[IDª©Â©èܹñŵ½B"
@@ -326,61 +326,61 @@
# c:\oss\winpt\src\wptCardDlg.cpp:634 c:\oss\winpt\src\wptCardDlg.cpp:639
# c:\oss\winpt\src\wptCardDlg.cpp:644 c:\oss\winpt\src\wptCardDlg.cpp:695
# c:\oss\winpt\src\wptCardDlg.cpp:697 c:\oss\winpt\src\wptMainProc.cpp:546
-#: Src/wptCardDlg.cpp:326 Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:345
-#: Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:363 Src/wptCardDlg.cpp:377
-#: Src/wptCardDlg.cpp:506 Src/wptCardDlg.cpp:611 Src/wptCardDlg.cpp:616
-#: Src/wptCardDlg.cpp:622 Src/wptCardDlg.cpp:629 Src/wptCardDlg.cpp:634
-#: Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:664 Src/wptCardDlg.cpp:691
-#: Src/wptCardDlg.cpp:696 Src/wptCardDlg.cpp:699 Src/wptCardDlg.cpp:724
-#: Src/wptCardDlg.cpp:726 Src/wptCardDlg.cpp:731 Src/wptCardDlg.cpp:736
-#: Src/wptCardDlg.cpp:800 Src/wptCardDlg.cpp:815 Src/wptCardDlg.cpp:818
+#: Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:356
+#: Src/wptCardDlg.cpp:362 Src/wptCardDlg.cpp:374 Src/wptCardDlg.cpp:388
+#: Src/wptCardDlg.cpp:523 Src/wptCardDlg.cpp:624 Src/wptCardDlg.cpp:629
+#: Src/wptCardDlg.cpp:635 Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:648
+#: Src/wptCardDlg.cpp:656 Src/wptCardDlg.cpp:677 Src/wptCardDlg.cpp:703
+#: Src/wptCardDlg.cpp:708 Src/wptCardDlg.cpp:711 Src/wptCardDlg.cpp:737
+#: Src/wptCardDlg.cpp:739 Src/wptCardDlg.cpp:744 Src/wptCardDlg.cpp:749
+#: Src/wptCardDlg.cpp:813 Src/wptCardDlg.cpp:826 Src/wptCardDlg.cpp:829
#: Src/wptMainProc.cpp:263
msgid "Card Edit"
msgstr "J[hÒW"
# c:\oss\winpt\src\wptCardDlg.cpp:299
-#: Src/wptCardDlg.cpp:339
+#: Src/wptCardDlg.cpp:350
msgid "Only plain ASCII is currently allowed."
msgstr "»ÝÍv[ASCIIÌݪgp©Ì¤Å·B"
# c:\oss\winpt\src\wptCardDlg.cpp:304
-#: Src/wptCardDlg.cpp:344
+#: Src/wptCardDlg.cpp:355
msgid "Only alphabetic characters are allowed."
msgstr "At@xbg̶Ìݪgp©Ì¤Å·B"
# c:\oss\winpt\src\wptKeyManager.cpp:444
-#: Src/wptCardDlg.cpp:351
+#: Src/wptCardDlg.cpp:362
msgid "Invalid URL."
msgstr "³øÈURLB"
# c:\oss\winpt\src\wptCardDlg.cpp:317
-#: Src/wptCardDlg.cpp:364
+#: Src/wptCardDlg.cpp:375
#, c-format
msgid "Could not modify card attribute: %s"
msgstr "J[hÌ®«u%svðÏX·é±ÆªÅ«Ü¹ñŵ½B"
# c:\oss\winpt\src\wptCardDlg.cpp:327
-#: Src/wptCardDlg.cpp:377
+#: Src/wptCardDlg.cpp:388
msgid "Card attribute changed."
msgstr "J[hÌ®«ªÏXµÜµ½B"
# c:\oss\winpt\src\wptCardDlg.cpp:362
-#: Src/wptCardDlg.cpp:417
+#: Src/wptCardDlg.cpp:428
msgid "Please enter the 'Admin PIN'"
msgstr "'Admin PIN'ðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:364
-#: Src/wptCardDlg.cpp:419
+#: Src/wptCardDlg.cpp:430
msgid "Please enter the 'User PIN'"
msgstr "'User PIN'ðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:366 c:\oss\winpt\src\wptPINDlg.cpp:47
-#: Src/wptCardDlg.cpp:421 Src/wptPINDlg.cpp:51
+#: Src/wptCardDlg.cpp:432 Src/wptPINDlg.cpp:51
msgid "Please enter the PIN"
msgstr "ÃØÔðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:370
-#: Src/wptCardDlg.cpp:425
+#: Src/wptCardDlg.cpp:436
#, c-format
msgid ""
"%s\n"
@@ -391,8 +391,60 @@
"¼OF %s %s\n"
"VAÔF %s\n"
+# c:\oss\winpt\src\wptKeyEditDlgs.cpp:395
+#: Src/wptCardDlg.cpp:479 Src/wptCardDlg.cpp:595 Src/wptKeyEditDlgs.cpp:503
+msgid "&Name"
+msgstr "¼O(&N)"
+
+# c:\oss\winpt\src\wptKeyPropsDlg.cpp:114
+#: Src/wptCardDlg.cpp:480
+#, fuzzy
+msgid "&Language"
+msgstr "ÏX(&C)"
+
+#: Src/wptCardDlg.cpp:481
+msgid "&Key-URL"
+msgstr ""
+
+#: Src/wptCardDlg.cpp:482
+msgid "&Login"
+msgstr ""
+
+# c:\oss\winpt\src\wptClipEditDlg.cpp:49 c:\oss\winpt\src\wptGPGOptDlg.cpp:48
+#: Src/wptCardDlg.cpp:483
+#, fuzzy
+msgid "&Sex"
+msgstr "Û¶(&S)"
+
+# 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:252 Src/wptKeyEditDlgs.cpp:2154
+#: 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
+#, fuzzy
+msgid "&Exit"
+msgstr "I¹"
+
+# c:\oss\winpt\src\wptKeyManager.cpp:603
+#: Src/wptCardDlg.cpp:486
+#, fuzzy
+msgid "&New keys"
+msgstr "Vµ¢TuL["
+
+# c:\oss\winpt\src\wptKeyEditDlgs.cpp:789
+#: Src/wptCardDlg.cpp:487
+#, fuzzy
+msgid "Change &PIN"
+msgstr "J[hÌÃØÔðÏX·é"
+
# c:\oss\winpt\src\wptCardDlg.cpp:451
-#: Src/wptCardDlg.cpp:505
+#: Src/wptCardDlg.cpp:522
#, fuzzy
msgid ""
"This operation will override the keys on the card.\n"
@@ -401,13 +453,14 @@
"±ÌìÍJ[hãÉ éL[ðwèÏXµÜ·B\n"
"ܾ±¯Ü·©H"
-# c:\oss\winpt\src\wptKeyEditDlgs.cpp:395
-#: Src/wptCardDlg.cpp:580 Src/wptKeyEditDlgs.cpp:503
-msgid "&Name"
-msgstr "¼O(&N)"
+# c:\oss\winpt\src\wptSigList.cpp:47
+#: Src/wptCardDlg.cpp:594
+#, fuzzy
+msgid "Pubkey algorithm"
+msgstr "ASY"
# c:\oss\winpt\src\wptKeygenDlg.cpp:148
-#: Src/wptCardDlg.cpp:581 Src/wptKeygenDlg.cpp:375
+#: Src/wptCardDlg.cpp:596 Src/wptKeygenDlg.cpp:375
msgid "&Comment (optional)"
msgstr "IvViRg(&C)"
@@ -416,78 +469,78 @@
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:886
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1141
# c:\oss\winpt\src\wptKeysigDlg.cpp:192
-#: Src/wptCardDlg.cpp:582 Src/wptKeygenDlg.cpp:377
+#: Src/wptCardDlg.cpp:597 Src/wptKeygenDlg.cpp:377
msgid "&Expire date"
msgstr "LøúÀ(&E)"
# c:\oss\winpt\src\wptKeygenDlg.cpp:152
-#: Src/wptCardDlg.cpp:583
+#: Src/wptCardDlg.cpp:598
msgid "Off-card passphrase"
msgstr "J[hOpXt[Y"
# c:\oss\winpt\src\wptKeygenDlg.cpp:154
-#: Src/wptCardDlg.cpp:584 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
+#: Src/wptCardDlg.cpp:599 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
msgid "&Never"
msgstr "͸ÍÈ¢(&N)"
# c:\oss\winpt\src\wptKeygenDlg.cpp:149
-#: Src/wptCardDlg.cpp:585 Src/wptKeygenDlg.cpp:376
+#: Src/wptCardDlg.cpp:600 Src/wptKeygenDlg.cpp:376
msgid "Email &address"
msgstr "[AhX(&A)"
# c:\oss\winpt\src\wptGPG.cpp:872
-#: Src/wptCardDlg.cpp:586
+#: Src/wptCardDlg.cpp:601
msgid "Overwrite old keys on the card"
msgstr "J[hãÉ éâL[ð㫵ܷ©H"
-#: Src/wptCardDlg.cpp:587
+#: Src/wptCardDlg.cpp:602
msgid "Make off-card backup of encryption key"
msgstr "ûL[ÌJ[hOobNAbvðì¬"
# c:\oss\winpt\src\wptKeyManagerDlg.cpp:1049
-#: Src/wptCardDlg.cpp:588 Src/wptKeyManagerDlg.cpp:1795
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1795
msgid "Card Key Generation"
msgstr "J[hL[ì¬"
# c:\oss\winpt\src\wptCardDlg.cpp:537
-#: Src/wptCardDlg.cpp:611
+#: Src/wptCardDlg.cpp:624
msgid "Please enter your name."
msgstr " Ƚ̼Oðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:541
-#: Src/wptCardDlg.cpp:615
+#: Src/wptCardDlg.cpp:628
msgid "Name must be at least 5 characters long."
msgstr "¼OÌ·³ÍÅá5¶ÉÈé׫ŷB"
# c:\oss\winpt\src\wptCardDlg.cpp:547
-#: Src/wptCardDlg.cpp:621
+#: Src/wptCardDlg.cpp:634
msgid "Please enter your e-mail address."
msgstr " ȽÌdq[AhXðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:554
-#: Src/wptCardDlg.cpp:628
+#: Src/wptCardDlg.cpp:641
msgid "Please enter a valid e-mail address."
msgstr "LøÈdq[AhXðü͵ľ³¢B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:260
-#: Src/wptCardDlg.cpp:634
+#: Src/wptCardDlg.cpp:647
msgid "Please enter an off-card passphrase."
msgstr "J[hOpXt[Yðü͵ľ³¢B"
-#: Src/wptCardDlg.cpp:641
+#: Src/wptCardDlg.cpp:655
msgid "Please use plain ASCII charset for the fields."
msgstr "tB[hÉv[ASCII¶ðgÁľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:580
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:1153
# c:\oss\winpt\src\wptKeygenDlg.cpp:310
-#: Src/wptCardDlg.cpp:663 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
#, fuzzy
msgid "The date you have chosen has already passed."
msgstr " ȽÍIÎê½útªßÌàÌÅ·B"
# c:\oss\winpt\src\wptCardDlg.cpp:602
-#: Src/wptCardDlg.cpp:689
+#: Src/wptCardDlg.cpp:701
msgid ""
"Operation was canceled. It seems that there are existing\n"
"keys on the cards. You need to mark the 'Overwrite' flag."
@@ -496,48 +549,48 @@
"ã«(Overwrite)tOð}[N·éKvª èÜ·B"
# c:\oss\winpt\src\wptCardDlg.cpp:610
-#: Src/wptCardDlg.cpp:698
+#: Src/wptCardDlg.cpp:710
msgid "Keys successfully created."
msgstr "L[Ìì¬É¬÷µÜµ½B"
# c:\oss\winpt\src\wptCardDlg.cpp:632
-#: Src/wptCardDlg.cpp:724
+#: Src/wptCardDlg.cpp:737
msgid "Please enter the old card PIN."
msgstr "âJ[hÌÃØÔðü͵ľ³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:634
-#: Src/wptCardDlg.cpp:726
+#: Src/wptCardDlg.cpp:739
msgid "Please enter the new card PIN."
msgstr "Vµ¢J[hÌÃØÔðü͵ľ³¢B"
# c:\oss\winpt\src\wptPINDlg.cpp:69
-#: Src/wptCardDlg.cpp:731
+#: Src/wptCardDlg.cpp:744
#, fuzzy
msgid "Admin PIN must be at least 8 characters."
msgstr "ÇÒÃØÔ'Admin PIN'Ì·³ÍÅá8¶Å·B"
# c:\oss\winpt\src\wptPINDlg.cpp:88
-#: Src/wptCardDlg.cpp:736
+#: Src/wptCardDlg.cpp:749
#, fuzzy
msgid "PIN must be at least 6 characters."
msgstr "[U[ÃØÔ'User PIN'Ì·³ÍÅá6¶Å·B"
# c:\oss\winpt\src\wptKeyEditDlgs.cpp:789
-#: Src/wptCardDlg.cpp:759
+#: Src/wptCardDlg.cpp:772
msgid "Change Card PIN"
msgstr "J[hÌÃØÔðÏX·é"
# c:\oss\winpt\src\wptPassphraseDlg.cpp:146
-#: Src/wptCardDlg.cpp:799 Src/wptPassphraseDlg.cpp:256
+#: Src/wptCardDlg.cpp:812 Src/wptPassphraseDlg.cpp:256
msgid "Passphrases do not match. Please try again."
msgstr "pXt[Yª}b`µÜ¹ñBà¤êxgCµÄ¾³¢B"
# c:\oss\winpt\src\wptCardDlg.cpp:697
-#: Src/wptCardDlg.cpp:817
+#: Src/wptCardDlg.cpp:828
msgid "PIN successfully changed."
msgstr "ÃØÔª³µÏXµÜµ½B"
-#: Src/wptCardEdit.cpp:321
+#: Src/wptCardEdit.cpp:329
msgid "Please insert the card and click OK or Cancel to abort."
msgstr "J[hðü͵AOKâ~·éÌÉLZðµÄ¾³¢"
@@ -556,7 +609,7 @@
# c:\oss\winpt\src\wptKeyserverDlg.cpp:167
# c:\oss\winpt\src\wptOwnertrustDlg.cpp:75
# c:\oss\winpt\src\wptOwnertrustDlg.cpp:89
-#: Src/wptCardEdit.cpp:322
+#: Src/wptCardEdit.cpp:330
msgid "GPG Card Status"
msgstr "GnuPGÌóÔ"
@@ -735,7 +788,7 @@
#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
#: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:265
#: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
-#: Src/wptKeyManager.cpp:802 Src/wptKeyManager.cpp:994 Src/wptSymEnc.cpp:94
+#: Src/wptKeyManager.cpp:766 Src/wptKeyManager.cpp:958 Src/wptSymEnc.cpp:94
msgid "GnuPG Status: Finished"
msgstr "GunPGÌóÔFI¹µÜµ½"
@@ -963,7 +1016,7 @@
# c:\oss\winpt\src\wptClipSignEncDlg.cpp:119
# c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1207
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
msgid "No key was selected."
msgstr "L[ªIð³êÄܹñB"
@@ -1128,14 +1181,6 @@
msgid "Please select a language"
msgstr "¾êðIñž³¢B"
-# c:\oss\winpt\src\wptKeyEditDlgs.cpp:144
-# c:\oss\winpt\src\wptKeyEditDlgs.cpp:166
-# c:\oss\winpt\src\wptKeyEditDlgs.cpp:890
-#: Src/wptCommonDlg.cpp:252 Src/wptKeyEditDlgs.cpp:2154
-#: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
-msgid "&OK"
-msgstr "&OK"
-
# c:\oss\winpt\src\wptErrors.cpp:43
#: Src/wptErrors.cpp:47
#, c-format
@@ -1604,8 +1649,9 @@
#: 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/wptKeyManager.cpp:478 Src/wptKeyManager.cpp:489
-#: Src/wptKeyManager.cpp:617 Src/wptKeyserverDlg.cpp:222
+#: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
+#: Src/wptKeyManager.cpp:563 Src/wptKeyManager.cpp:582
+#: Src/wptKeyserverDlg.cpp:222
msgid "Import"
msgstr "C|[g"
@@ -1743,14 +1789,14 @@
# c:\oss\winpt\src\wptFileManagerDlg.cpp:190
# c:\oss\winpt\src\wptKeyManager.cpp:408
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileStatDlg.cpp:283
-#: Src/wptKeyManager.cpp:442
+#: Src/wptKeyManager.cpp:426
msgid "No valid OpenPGP data found."
msgstr "LøÈOpenPGPf[^ª©Â©èܹñŵ½B"
# c:\oss\winpt\src\wptClipImportDlg.cpp:180
# c:\oss\winpt\src\wptKeyManager.cpp:427
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileManagerDlg.cpp:225
-#: Src/wptKeyManager.cpp:467
+#: Src/wptKeyManager.cpp:451
msgid "Key Import"
msgstr "L[ÌC|[g"
@@ -1821,8 +1867,8 @@
# c:\oss\winpt\src\wptKeyserverSearchDlg.cpp:115
#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
-#: Src/wptKeyManager.cpp:722 Src/wptKeyManager.cpp:823
-#: Src/wptKeyManager.cpp:856 Src/wptKeyManagerDlg.cpp:1672
+#: Src/wptKeyManager.cpp:686 Src/wptKeyManager.cpp:787
+#: Src/wptKeyManager.cpp:820 Src/wptKeyManagerDlg.cpp:1672
#: Src/wptKeyManagerDlg.cpp:1688 Src/wptKeyManagerDlg.cpp:1716
#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1742
#: Src/wptKeyManagerDlg.cpp:1855 Src/wptKeyManagerDlg.cpp:1874
@@ -2212,45 +2258,53 @@
msgid "Invalid backup mode %d"
msgstr "³øÈobNAbv[h %d"
-#: Src/wptGPGME.cpp:278
+#: Src/wptGPGME.cpp:282
msgid "Error during verification process"
msgstr "mFiKÅG[ª¶µÜµ½B"
# c:\oss\winpt\src\wptClipVerifyDlg.cpp:122
-#: Src/wptGPGME.cpp:279
+#: Src/wptGPGME.cpp:283
msgid "The signature is good"
msgstr "Løȼ"
# c:\oss\winpt\src\wptClipVerifyDlg.cpp:122
-#: Src/wptGPGME.cpp:280
+#: Src/wptGPGME.cpp:284
msgid "The signature is BAD!"
msgstr "³øȼ"
-#: Src/wptGPGME.cpp:281
+#: Src/wptGPGME.cpp:285
msgid "The signature could not be checked due to a missing key"
msgstr "ÈÈÁ½L[̽߼ª`FbNūܹñŵ½B"
# c:\oss\winpt\src\wptFileManagerDlg.cpp:190
# c:\oss\winpt\src\wptKeyManager.cpp:408
-#: Src/wptGPGME.cpp:282
+#: Src/wptGPGME.cpp:286
msgid "No valid OpenPGP signature"
msgstr "LøÈOpenPGP¼ª èܹñB"
# c:\oss\winpt\src\wptKeysignDlg.cpp:232
-#: Src/wptGPGME.cpp:283
+#: Src/wptGPGME.cpp:287
msgid "Signature Error"
msgstr "¼G["
# c:\oss\winpt\src\wptKeysignDlg.cpp:232
-#: Src/wptGPGME.cpp:284
-msgid "Good Signature (Expired Key)"
+#: Src/wptGPGME.cpp:288
+#, fuzzy
+msgid "Good signature (Expired Key)"
msgstr "LøȼiúÀØêL[j"
# c:\oss\winpt\src\wptFileManager.cpp:1019
-#: Src/wptGPGME.cpp:285
-msgid "Good Signature (Revoked Key)"
+#: Src/wptGPGME.cpp:289
+#, fuzzy
+msgid "Good signature (Revoked Key)"
msgstr "Løȼi³øÈL[j"
+# c:\oss\winpt\src\wptKeysignDlg.cpp:232
+#: Src/wptGPGME.cpp:290
+#, fuzzy
+msgid "Good signature (Expired)"
+msgstr "LøȼiúÀØêL[j"
+
# c:\oss\winpt\src\wptGPGOptDlg.cpp:44
#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
msgid "Could not load GnuPG config file!"
@@ -2274,13 +2328,6 @@
msgid "&Load"
msgstr "[h(&L)"
-# c:\oss\winpt\src\wptFileManagerDlg.cpp:364
-# c:\oss\winpt\src\wptMainProc.cpp:400
-#: Src/wptGPGOptDlg.cpp:59
-#, fuzzy
-msgid "&Exit"
-msgstr "I¹"
-
# c:\oss\winpt\src\wptGPGOptDlg.cpp:68
#: Src/wptGPGOptDlg.cpp:72
msgid "The 'gpg.conf' file is not loaded."
@@ -2483,18 +2530,17 @@
#: Src/wptKeyManager.cpp:331 Src/wptKeyManager.cpp:338
#: Src/wptKeyManager.cpp:340 Src/wptKeyManager.cpp:361
#: Src/wptKeyManager.cpp:370 Src/wptKeyManager.cpp:374
-#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:435
-#: Src/wptKeyManager.cpp:440 Src/wptKeyManager.cpp:443
-#: Src/wptKeyManager.cpp:448 Src/wptKeyManager.cpp:454
-#: Src/wptKeyManager.cpp:459 Src/wptKeyManager.cpp:587
-#: Src/wptKeyManager.cpp:595 Src/wptKeyManager.cpp:722
-#: Src/wptKeyManager.cpp:750 Src/wptKeyManager.cpp:759
-#: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:796
-#: Src/wptKeyManager.cpp:823 Src/wptKeyManager.cpp:828
-#: Src/wptKeyManager.cpp:851 Src/wptKeyManager.cpp:856
-#: Src/wptKeyManager.cpp:870 Src/wptKeyManager.cpp:930
-#: Src/wptKeyManager.cpp:935 Src/wptKeyManager.cpp:992
-#: Src/wptKeyManager.cpp:1025 Src/wptKeyManager.cpp:1109
+#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:419
+#: Src/wptKeyManager.cpp:424 Src/wptKeyManager.cpp:427
+#: Src/wptKeyManager.cpp:432 Src/wptKeyManager.cpp:438
+#: Src/wptKeyManager.cpp:443 Src/wptKeyManager.cpp:686
+#: Src/wptKeyManager.cpp:714 Src/wptKeyManager.cpp:723
+#: Src/wptKeyManager.cpp:734 Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:787 Src/wptKeyManager.cpp:792
+#: Src/wptKeyManager.cpp:815 Src/wptKeyManager.cpp:820
+#: Src/wptKeyManager.cpp:834 Src/wptKeyManager.cpp:894
+#: Src/wptKeyManager.cpp:899 Src/wptKeyManager.cpp:956
+#: Src/wptKeyManager.cpp:989 Src/wptKeyManager.cpp:1073
#: Src/wptKeyManagerDlg.cpp:1324 Src/wptKeyManagerDlg.cpp:1335
#: Src/wptKeyManagerDlg.cpp:1345 Src/wptKeyManagerDlg.cpp:1650
#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1688
@@ -3830,7 +3876,7 @@
msgstr "³øÈ[U[ID"
# c:\oss\winpt\src\wptKeylist.cpp:745
-#: Src/wptKeylist.cpp:1034
+#: Src/wptKeylist.cpp:1035
#, c-format
msgid ""
"It is NOT certain that the key belongs to the person\n"
@@ -3846,12 +3892,12 @@
"Ǥ¹±êð \"%s\" gpµÜ·©H"
# c:\oss\winpt\src\wptKeylist.cpp:753 c:\oss\winpt\src\wptKeylist.cpp:820
-#: Src/wptKeylist.cpp:1042 Src/wptKeylist.cpp:1104
+#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
msgid "Recipients"
msgstr "óMÒ"
# c:\oss\winpt\src\wptKeylist.cpp:819
-#: Src/wptKeylist.cpp:1105
+#: Src/wptKeylist.cpp:1107
#, c-format
msgid ""
"KeyID %s.\n"
@@ -3861,7 +3907,7 @@
"{ɳøÈL[ðGLX|[gµÜ·©H"
# c:\oss\winpt\src\wptKeylist.cpp:923
-#: Src/wptKeylist.cpp:1207
+#: Src/wptKeylist.cpp:1209
msgid "Secret Key List"
msgstr "駮ÌêÐå¤"
@@ -3901,12 +3947,12 @@
msgstr "L[ð³µ'%s'ÉÛ¶·é±Æªoܵ½B"
# c:\oss\winpt\src\wptKeyManager.cpp:412
-#: Src/wptKeyManager.cpp:447
+#: Src/wptKeyManager.cpp:431
msgid "No valid OpenPGP keys found."
msgstr "LøÈOpenPGPf[^ª©Â©èܹñŵ½B"
# c:\oss\winpt\src\wptKeyManager.cpp:416
-#: Src/wptKeyManager.cpp:452
+#: Src/wptKeyManager.cpp:436
#, fuzzy
msgid ""
"The key you want to import is dash escaped.\n"
@@ -3916,13 +3962,13 @@
"L[ðøoµ½¢Åµå¤©H"
# c:\oss\winpt\src\wptKeyManager.cpp:422
-#: Src/wptKeyManager.cpp:458
+#: Src/wptKeyManager.cpp:442
msgid "Cannot import dash escaped OpenPGP keys."
msgstr "_bV
GXP[vhOpenPGPL[ðC|[g·é±ÆªÅ«Ü¹ñB"
# c:\oss\winpt\src\wptFileManager.cpp:1285
# c:\oss\winpt\src\wptKeyManager.cpp:513
-#: Src/wptKeyManager.cpp:487 Src/wptKeyManager.cpp:615
+#: Src/wptKeyManager.cpp:467 Src/wptKeyManager.cpp:580
msgid ""
"Key without a self signature was dectected!\n"
"(This key is NOT usable for encryption, etc)\n"
@@ -3933,51 +3979,46 @@
# c:\oss\winpt\src\wptKeyManager.cpp:444
# c:\oss\winpt\src\wptKeyManager.cpp:455
# c:\oss\winpt\src\wptKeyManager.cpp:468
-#: Src/wptKeyManager.cpp:516 Src/wptKeyManager.cpp:523
-#: Src/wptKeyManager.cpp:532
+#: Src/wptKeyManager.cpp:496 Src/wptKeyManager.cpp:503
+#: Src/wptKeyManager.cpp:512
msgid "Key Import HTTP"
msgstr "L[C|[gÌHTTP"
# c:\oss\winpt\src\wptKeyManager.cpp:444
-#: Src/wptKeyManager.cpp:516
+#: Src/wptKeyManager.cpp:496
#, c-format
msgid "Invalid HTTP URL: %s"
msgstr "³øÈHTTP URL: %s"
# c:\oss\winpt\src\wptMAPI.cpp:348
-#: Src/wptKeyManager.cpp:533
+#: Src/wptKeyManager.cpp:513
#, c-format
msgid "Could not fetch key from URL: %s"
msgstr "URL'%s'æèL[ðæèo·±ÆªÅ«Ü¹ñŵ½B"
# c:\oss\winpt\src\wptKeyManagerDlg.cpp:1082
-#: Src/wptKeyManager.cpp:562
+#: Src/wptKeyManager.cpp:541
msgid "Choose Name of the Key File"
msgstr "L[t@CɼOðIð·é"
# c:\oss\winpt\src\wptFileManagerDlg.cpp:182
# c:\oss\winpt\src\wptFileManagerDlg.cpp:190
# c:\oss\winpt\src\wptKeyManager.cpp:490
-#: Src/wptKeyManager.cpp:575
+#: Src/wptKeyManager.cpp:554
msgid "File Import"
msgstr "t@CÌC|[g"
-# c:\oss\winpt\src\wptKeyManager.cpp:500
-#: Src/wptKeyManager.cpp:586
-msgid "Could not read key-data from file."
-msgstr "L[Ìf[^ðt@C©çÇޱƪūܹñŵ½B"
-
# c:\oss\winpt\src\wptKeyManager.cpp:733
-#: Src/wptKeyManager.cpp:727
+#: Src/wptKeyManager.cpp:691
msgid "Do you really want to confirm each key?"
msgstr "·×ÄÌL[ð{ÉmFµ½¢Å·©H"
-#: Src/wptKeyManager.cpp:728
+#: Src/wptKeyManager.cpp:692
msgid "Delete Confirmation"
msgstr "mFðí·é"
# c:\oss\winpt\src\wptKeyManager.cpp:1092
-#: Src/wptKeyManager.cpp:751
+#: Src/wptKeyManager.cpp:715
#, c-format
msgid ""
"Do you really want to delete this key?\n"
@@ -3989,7 +4030,7 @@
"%s"
# c:\oss\winpt\src\wptKeyManager.cpp:577
-#: Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:724
#, c-format
msgid ""
"Do you really want to delete this KEY PAIR?\n"
@@ -4007,7 +4048,7 @@
"%s"
# c:\oss\winpt\src\wptKeyManager.cpp:585
-#: Src/wptKeyManager.cpp:767
+#: Src/wptKeyManager.cpp:731
msgid ""
"The actual secret key is stored on a smartcard.\n"
"Only the public key and the secret key \n"
@@ -4018,58 +4059,58 @@
"í³êÜ·B\n"
# c:\oss\winpt\src\wptKeyManager.cpp:636
-#: Src/wptKeyManager.cpp:829
+#: Src/wptKeyManager.cpp:793
#, c-format
msgid "Do you really want to send '0x%s' to keyserver %s?"
msgstr "'0x%s' ð{ÉL[T[o[ %s ÉMµ½¢Å·©H"
# c:\oss\winpt\src\wptKeyManager.cpp:661
-#: Src/wptKeyManager.cpp:850
+#: Src/wptKeyManager.cpp:814
msgid "Please only select one key."
msgstr "ÐÆÂÌL[¾¯ðIñž³¢B"
# c:\oss\winpt\src\wptKeyManager.cpp:733
-#: Src/wptKeyManager.cpp:929
+#: Src/wptKeyManager.cpp:893
msgid "Do you really want to refresh all keys in the keyring?"
msgstr "L[OÉ é·×ÄÌL[ð{ÉtbV
µ½¢Å·ªH"
# c:\oss\winpt\src\wptKeyManager.cpp:727
-#: Src/wptKeyManager.cpp:934
+#: Src/wptKeyManager.cpp:898
msgid "Could not connect to keyserver, abort procedure."
msgstr "L[T[o[ÉÚ±·é±ÆªÅ«Ü¹ñŵ½B~µÜ·©H"
# c:\oss\winpt\src\wptKeyserverDlg.cpp:304
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search"
msgstr "õ"
# c:\oss\winpt\src\wptKeyserverDlg.cpp:304
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search for:"
msgstr "õ·é±ÆF"
-#: Src/wptKeyManager.cpp:1020
+#: Src/wptKeyManager.cpp:984
#, c-format
msgid "String pattern \"%s\" not found."
msgstr "̶p^[ª\"%s\" ©Â©èܹñŵ½B"
# c:\oss\winpt\src\wptKeyRevokeDlg.cpp:74
-#: Src/wptKeyManager.cpp:1086 Src/wptKeyRevokeDlg.cpp:85
+#: Src/wptKeyManager.cpp:1050 Src/wptKeyRevokeDlg.cpp:85
msgid "0. No reason specified"
msgstr "0. R;¦³êĢܹñB"
# c:\oss\winpt\src\wptKeyRevokeDlg.cpp:75
-#: Src/wptKeyManager.cpp:1087 Src/wptKeyRevokeDlg.cpp:86
+#: Src/wptKeyManager.cpp:1051 Src/wptKeyRevokeDlg.cpp:86
msgid "1. Key has been compromised"
msgstr "1. L[ÍMpÅ«ÈÈÁĢܷB"
# c:\oss\winpt\src\wptKeyRevokeDlg.cpp:76
-#: Src/wptKeyManager.cpp:1088 Src/wptKeyRevokeDlg.cpp:87
+#: Src/wptKeyManager.cpp:1052 Src/wptKeyRevokeDlg.cpp:87
msgid "2. Key is superseded"
msgstr "2. L[Íp~³êĢܷB"
# c:\oss\winpt\src\wptKeyRevokeDlg.cpp:77
-#: Src/wptKeyManager.cpp:1089 Src/wptKeyRevokeDlg.cpp:88
+#: Src/wptKeyManager.cpp:1053 Src/wptKeyRevokeDlg.cpp:88
msgid "3. Key is no longer used"
msgstr "3. L[ÍàÍâgíêĢܹñ "
@@ -5588,7 +5629,7 @@
"%s L[, ID %s\n"
# c:\oss\winpt\src\wptPassphraseCB.cpp:283
-#: Src/wptPassphraseCB.cpp:400
+#: Src/wptPassphraseCB.cpp:401
#, c-format
msgid ""
"Please enter the PIN to unlock your secret card key\n"
@@ -5986,6 +6027,10 @@
msgid "Signed"
msgstr "¼µÜµ½"
+# c:\oss\winpt\src\wptKeyManager.cpp:500
+#~ msgid "Could not read key-data from file."
+#~ msgstr "L[Ìf[^ðt@C©çÇޱƪūܹñŵ½B"
+
# c:\oss\winpt\src\wptClipDecryptDlg.cpp:130
# c:\oss\winpt\src\wptFileManager.cpp:997
#~ msgid ""
Modified: trunk/Po/pt_BR.po
===================================================================
--- trunk/Po/pt_BR.po 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Po/pt_BR.po 2006-08-16 10:01:30 UTC (rev 260)
@@ -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-08-05 12:29+0200\n"
+"POT-Creation-Date: 2006-08-11 22:27+0200\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"
@@ -27,7 +27,7 @@
#: Src/WinPT.cpp:196 Src/WinPT.cpp:278 Src/WinPT.cpp:282 Src/WinPT.cpp:483
#: Src/WinPT.cpp:492 Src/WinPT.cpp:499 Src/WinPT.cpp:539 Src/WinPT.cpp:567
#: Src/WinPT.cpp:576 Src/WinPT.cpp:580 Src/WinPT.cpp:597 Src/WinPT.cpp:665
-#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:760 Src/WinPT.cpp:779
+#: Src/WinPT.cpp:678 Src/WinPT.cpp:725 Src/WinPT.cpp:767 Src/WinPT.cpp:786
#: Src/wptCommonDlg.cpp:220 Src/wptErrors.cpp:141 Src/wptGPG.cpp:926
#: Src/wptGPG.cpp:938 Src/wptGPG.cpp:948 Src/wptGPG.cpp:959
#: Src/wptMainProc.cpp:343 Src/wptMainProc.cpp:516
@@ -145,7 +145,7 @@
msgid "Could not create window"
msgstr "Não foi possível criar a janela"
-#: Src/WinPT.cpp:758
+#: Src/WinPT.cpp:765
msgid ""
"The keycache was not initialized or is empty.\n"
"Please check your GPG config (keyrings, pathes...)"
@@ -153,7 +153,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:761
+#: Src/WinPT.cpp:768
#, fuzzy
msgid ""
"It seems that GPG is not configured properly.\n"
@@ -162,7 +162,7 @@
"Parece que o GPG não está configurado corretamente.\n"
"Você deseja iniciar a janela de preferências do GPG?"
-#: Src/WinPT.cpp:780
+#: Src/WinPT.cpp:787
#, c-format
msgid ""
"Default key (from the GPG config file) could not be found.\n"
@@ -244,68 +244,68 @@
msgid "&Help"
msgstr "A&juda"
-#: Src/wptCardDlg.cpp:141 Src/wptMainProc.cpp:392
+#: Src/wptCardDlg.cpp:149 Src/wptMainProc.cpp:392
msgid "Card Manager"
msgstr "Gerenciador de cartões"
-#: Src/wptCardDlg.cpp:177
+#: Src/wptCardDlg.cpp:185
msgid "No Fingerprint"
msgstr "Nenhuma impressão digital"
-#: Src/wptCardDlg.cpp:207
+#: Src/wptCardDlg.cpp:216
msgid "No OpenPGP smart card detected."
msgstr "Nenhum smart card do OpenPGP detectado."
-#: Src/wptCardDlg.cpp:326
+#: Src/wptCardDlg.cpp:340
msgid "No PINs found."
msgstr "Nenhum PIN encontrado."
-#: Src/wptCardDlg.cpp:326 Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:345
-#: Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:363 Src/wptCardDlg.cpp:377
-#: Src/wptCardDlg.cpp:506 Src/wptCardDlg.cpp:611 Src/wptCardDlg.cpp:616
-#: Src/wptCardDlg.cpp:622 Src/wptCardDlg.cpp:629 Src/wptCardDlg.cpp:634
-#: Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:664 Src/wptCardDlg.cpp:691
-#: Src/wptCardDlg.cpp:696 Src/wptCardDlg.cpp:699 Src/wptCardDlg.cpp:724
-#: Src/wptCardDlg.cpp:726 Src/wptCardDlg.cpp:731 Src/wptCardDlg.cpp:736
-#: Src/wptCardDlg.cpp:800 Src/wptCardDlg.cpp:815 Src/wptCardDlg.cpp:818
+#: Src/wptCardDlg.cpp:340 Src/wptCardDlg.cpp:351 Src/wptCardDlg.cpp:356
+#: Src/wptCardDlg.cpp:362 Src/wptCardDlg.cpp:374 Src/wptCardDlg.cpp:388
+#: Src/wptCardDlg.cpp:523 Src/wptCardDlg.cpp:624 Src/wptCardDlg.cpp:629
+#: Src/wptCardDlg.cpp:635 Src/wptCardDlg.cpp:642 Src/wptCardDlg.cpp:648
+#: Src/wptCardDlg.cpp:656 Src/wptCardDlg.cpp:677 Src/wptCardDlg.cpp:703
+#: Src/wptCardDlg.cpp:708 Src/wptCardDlg.cpp:711 Src/wptCardDlg.cpp:737
+#: Src/wptCardDlg.cpp:739 Src/wptCardDlg.cpp:744 Src/wptCardDlg.cpp:749
+#: Src/wptCardDlg.cpp:813 Src/wptCardDlg.cpp:826 Src/wptCardDlg.cpp:829
#: Src/wptMainProc.cpp:263
msgid "Card Edit"
msgstr "Editar cartão"
-#: Src/wptCardDlg.cpp:339
+#: Src/wptCardDlg.cpp:350
msgid "Only plain ASCII is currently allowed."
msgstr "Apenas ASCII puro é permitido atualmente."
-#: Src/wptCardDlg.cpp:344
+#: Src/wptCardDlg.cpp:355
msgid "Only alphabetic characters are allowed."
msgstr "Apenas caracteres alfabéticos são permitidos."
-#: Src/wptCardDlg.cpp:351
+#: Src/wptCardDlg.cpp:362
msgid "Invalid URL."
msgstr "URL inválida."
-#: Src/wptCardDlg.cpp:364
+#: Src/wptCardDlg.cpp:375
#, c-format
msgid "Could not modify card attribute: %s"
msgstr "Não foi possível modificar o atributo do cartão: %s"
-#: Src/wptCardDlg.cpp:377
+#: Src/wptCardDlg.cpp:388
msgid "Card attribute changed."
msgstr "Atributo do cartão modificado."
-#: Src/wptCardDlg.cpp:417
+#: Src/wptCardDlg.cpp:428
msgid "Please enter the 'Admin PIN'"
msgstr "Por favor entre com o 'PIN do Administrador'"
-#: Src/wptCardDlg.cpp:419
+#: Src/wptCardDlg.cpp:430
msgid "Please enter the 'User PIN'"
msgstr "Por favor entre com o 'PIN do Usuário'"
-#: Src/wptCardDlg.cpp:421 Src/wptPINDlg.cpp:51
+#: Src/wptCardDlg.cpp:432 Src/wptPINDlg.cpp:51
msgid "Please enter the PIN"
msgstr "Por favor entre com o PIN"
-#: Src/wptCardDlg.cpp:425
+#: Src/wptCardDlg.cpp:436
#, c-format
msgid ""
"%s\n"
@@ -316,8 +316,50 @@
"Nome: %s %s\n"
"Nº Serial: %s\n"
-#: Src/wptCardDlg.cpp:505
+#: Src/wptCardDlg.cpp:479 Src/wptCardDlg.cpp:595 Src/wptKeyEditDlgs.cpp:503
+msgid "&Name"
+msgstr "&Nome"
+
+#: Src/wptCardDlg.cpp:480
#, fuzzy
+msgid "&Language"
+msgstr "&Alterar"
+
+#: Src/wptCardDlg.cpp:481
+msgid "&Key-URL"
+msgstr ""
+
+#: Src/wptCardDlg.cpp:482
+msgid "&Login"
+msgstr ""
+
+#: Src/wptCardDlg.cpp:483
+#, fuzzy
+msgid "&Sex"
+msgstr "&Salvar"
+
+#: Src/wptCardDlg.cpp:484 Src/wptCommonDlg.cpp:252 Src/wptKeyEditDlgs.cpp:2154
+#: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
+msgid "&OK"
+msgstr "&OX"
+
+#: Src/wptCardDlg.cpp:485 Src/wptGPGOptDlg.cpp:59
+#, fuzzy
+msgid "&Exit"
+msgstr "Sair"
+
+#: Src/wptCardDlg.cpp:486
+#, fuzzy
+msgid "&New keys"
+msgstr "Novas subchaves"
+
+#: Src/wptCardDlg.cpp:487
+#, fuzzy
+msgid "Change &PIN"
+msgstr "Mudar PIN do cartão"
+
+#: Src/wptCardDlg.cpp:522
+#, fuzzy
msgid ""
"This operation will override the keys on the card.\n"
"Continue?"
@@ -325,72 +367,73 @@
"Esta operação irá sobrescrever as chaves no cartão.\n"
"Prosseguir?"
-#: Src/wptCardDlg.cpp:580 Src/wptKeyEditDlgs.cpp:503
-msgid "&Name"
-msgstr "&Nome"
+#: Src/wptCardDlg.cpp:594
+#, fuzzy
+msgid "Pubkey algorithm"
+msgstr "Algoritmo"
-#: Src/wptCardDlg.cpp:581 Src/wptKeygenDlg.cpp:375
+#: Src/wptCardDlg.cpp:596 Src/wptKeygenDlg.cpp:375
msgid "&Comment (optional)"
msgstr "&Comentário (opcional)"
-#: Src/wptCardDlg.cpp:582 Src/wptKeygenDlg.cpp:377
+#: Src/wptCardDlg.cpp:597 Src/wptKeygenDlg.cpp:377
msgid "&Expire date"
msgstr "Data de &expiração"
-#: Src/wptCardDlg.cpp:583
+#: Src/wptCardDlg.cpp:598
msgid "Off-card passphrase"
msgstr "Frase secreta fora do cartão"
-#: Src/wptCardDlg.cpp:584 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
+#: Src/wptCardDlg.cpp:599 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:379
msgid "&Never"
msgstr "&Nunca"
-#: Src/wptCardDlg.cpp:585 Src/wptKeygenDlg.cpp:376
+#: Src/wptCardDlg.cpp:600 Src/wptKeygenDlg.cpp:376
msgid "Email &address"
msgstr "Endereço de &e-mail"
-#: Src/wptCardDlg.cpp:586
+#: Src/wptCardDlg.cpp:601
msgid "Overwrite old keys on the card"
msgstr "Sobrescrever chaves antigas no cartão"
-#: Src/wptCardDlg.cpp:587
+#: Src/wptCardDlg.cpp:602
msgid "Make off-card backup of encryption key"
msgstr "Fazer backup da chave de cifragem fora do cartão"
-#: Src/wptCardDlg.cpp:588 Src/wptKeyManagerDlg.cpp:1795
+#: Src/wptCardDlg.cpp:603 Src/wptKeyManagerDlg.cpp:1795
msgid "Card Key Generation"
msgstr "Geração da chave do cartão"
-#: Src/wptCardDlg.cpp:611
+#: Src/wptCardDlg.cpp:624
msgid "Please enter your name."
msgstr "Por favor entre com seu nome."
-#: Src/wptCardDlg.cpp:615
+#: Src/wptCardDlg.cpp:628
msgid "Name must be at least 5 characters long."
msgstr "O nome deve ter pelo menos 5 caracteres."
-#: Src/wptCardDlg.cpp:621
+#: Src/wptCardDlg.cpp:634
msgid "Please enter your e-mail address."
msgstr "Por favor entre com seu endereço de e-mail."
-#: Src/wptCardDlg.cpp:628
+#: Src/wptCardDlg.cpp:641
msgid "Please enter a valid e-mail address."
msgstr "Por favor coloque um endereço de e-mail válido."
-#: Src/wptCardDlg.cpp:634
+#: Src/wptCardDlg.cpp:647
msgid "Please enter an off-card passphrase."
msgstr "Por favor coloque uma frase secreta fora do cartão."
-#: Src/wptCardDlg.cpp:641
+#: Src/wptCardDlg.cpp:655
msgid "Please use plain ASCII charset for the fields."
msgstr "Por favor use caracteres ASCII puros para os campos."
-#: Src/wptCardDlg.cpp:663 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
+#: Src/wptCardDlg.cpp:676 Src/wptKeyEditDlgs.cpp:1363 Src/wptKeygenDlg.cpp:457
#, fuzzy
msgid "The date you have chosen has already passed."
msgstr "A data escolhida está no passado."
-#: Src/wptCardDlg.cpp:689
+#: Src/wptCardDlg.cpp:701
msgid ""
"Operation was canceled. It seems that there are existing\n"
"keys on the cards. You need to mark the 'Overwrite' flag."
@@ -398,45 +441,45 @@
"A operação foi cancelada. Parece que há chaves\n"
"existentes nos cartões. Você precisa marcar a opção 'Sobrescrever'."
-#: Src/wptCardDlg.cpp:698
+#: Src/wptCardDlg.cpp:710
msgid "Keys successfully created."
msgstr "Chaves criadas com sucesso."
-#: Src/wptCardDlg.cpp:724
+#: Src/wptCardDlg.cpp:737
msgid "Please enter the old card PIN."
msgstr "Por favor coloque o PIN antigo do cartão."
-#: Src/wptCardDlg.cpp:726
+#: Src/wptCardDlg.cpp:739
msgid "Please enter the new card PIN."
msgstr "Por favor coloque o PIN novo do cartão."
-#: Src/wptCardDlg.cpp:731
+#: Src/wptCardDlg.cpp:744
#, fuzzy
msgid "Admin PIN must be at least 8 characters."
msgstr "'PIN do administrador' deve ter pelo menos 8 caracteres."
-#: Src/wptCardDlg.cpp:736
+#: Src/wptCardDlg.cpp:749
#, fuzzy
msgid "PIN must be at least 6 characters."
msgstr "'PIN do usuário' deve ter pelo menos 6 caracteres."
-#: Src/wptCardDlg.cpp:759
+#: Src/wptCardDlg.cpp:772
msgid "Change Card PIN"
msgstr "Mudar PIN do cartão"
-#: Src/wptCardDlg.cpp:799 Src/wptPassphraseDlg.cpp:256
+#: Src/wptCardDlg.cpp:812 Src/wptPassphraseDlg.cpp:256
msgid "Passphrases do not match. Please try again."
msgstr "Frases não coincidem. Por favor tente de novo."
-#: Src/wptCardDlg.cpp:817
+#: Src/wptCardDlg.cpp:828
msgid "PIN successfully changed."
msgstr "PIN alterado com sucesso."
-#: Src/wptCardEdit.cpp:321
+#: Src/wptCardEdit.cpp:329
msgid "Please insert the card and click OK or Cancel to abort."
msgstr "Por favor insira o cartão e clique OK ou Cancelar para abortar."
-#: Src/wptCardEdit.cpp:322
+#: Src/wptCardEdit.cpp:330
msgid "GPG Card Status"
msgstr "Estado do cartão GPG"
@@ -570,7 +613,7 @@
#: Src/wptClipDecryptDlg.cpp:269 Src/wptClipEncryptDlg.cpp:216
#: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:265
#: Src/wptClipSignEncDlg.cpp:190 Src/wptKeyManager.cpp:304
-#: Src/wptKeyManager.cpp:802 Src/wptKeyManager.cpp:994 Src/wptSymEnc.cpp:94
+#: Src/wptKeyManager.cpp:766 Src/wptKeyManager.cpp:958 Src/wptSymEnc.cpp:94
msgid "GnuPG Status: Finished"
msgstr "Estado do GnuPG: Concluído"
@@ -733,7 +776,7 @@
msgid "Signing key:"
msgstr "Chave para assinatura:"
-#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1207
+#: Src/wptClipSignEncDlg.cpp:159 Src/wptKeylist.cpp:1209
msgid "No key was selected."
msgstr "Nenhuma chave foi selecionada."
@@ -839,11 +882,6 @@
msgid "Please select a language"
msgstr "Por favor selecione uma língua"
-#: Src/wptCommonDlg.cpp:252 Src/wptKeyEditDlgs.cpp:2154
-#: Src/wptPassphraseDlg.cpp:105 Src/wptPINDlg.cpp:55
-msgid "&OK"
-msgstr "&OX"
-
#: Src/wptErrors.cpp:47
#, c-format
msgid "Could not locate GPG.exe in %s."
@@ -1204,8 +1242,9 @@
#: 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/wptKeyManager.cpp:478 Src/wptKeyManager.cpp:489
-#: Src/wptKeyManager.cpp:617 Src/wptKeyserverDlg.cpp:222
+#: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:469
+#: Src/wptKeyManager.cpp:563 Src/wptKeyManager.cpp:582
+#: Src/wptKeyserverDlg.cpp:222
msgid "Import"
msgstr "Importar"
@@ -1305,12 +1344,12 @@
msgstr "Por favor selecione ao menos um destinatário."
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileStatDlg.cpp:283
-#: Src/wptKeyManager.cpp:442
+#: Src/wptKeyManager.cpp:426
msgid "No valid OpenPGP data found."
msgstr "Nenhum dado OpenPGP válido encontrado."
#: Src/wptFileManagerDlg.cpp:210 Src/wptFileManagerDlg.cpp:225
-#: Src/wptKeyManager.cpp:467
+#: Src/wptKeyManager.cpp:451
msgid "Key Import"
msgstr "Importat chave"
@@ -1358,8 +1397,8 @@
#: Src/wptFileManagerDlg.cpp:328 Src/wptKeyEditDlgs.cpp:1288
#: Src/wptKeyEditDlgs.cpp:1339 Src/wptKeyEditDlgs.cpp:1412
-#: Src/wptKeyManager.cpp:722 Src/wptKeyManager.cpp:823
-#: Src/wptKeyManager.cpp:856 Src/wptKeyManagerDlg.cpp:1672
+#: Src/wptKeyManager.cpp:686 Src/wptKeyManager.cpp:787
+#: Src/wptKeyManager.cpp:820 Src/wptKeyManagerDlg.cpp:1672
#: Src/wptKeyManagerDlg.cpp:1688 Src/wptKeyManagerDlg.cpp:1716
#: Src/wptKeyManagerDlg.cpp:1727 Src/wptKeyManagerDlg.cpp:1742
#: Src/wptKeyManagerDlg.cpp:1855 Src/wptKeyManagerDlg.cpp:1874
@@ -1652,42 +1691,49 @@
msgid "Invalid backup mode %d"
msgstr "Modo de backup %d inválido"
-#: Src/wptGPGME.cpp:278
+#: Src/wptGPGME.cpp:282
#, fuzzy
msgid "Error during verification process"
msgstr "Erro durante o processo de verificação."
-#: Src/wptGPGME.cpp:279
+#: Src/wptGPGME.cpp:283
#, fuzzy
msgid "The signature is good"
msgstr "A assinatura está boa."
-#: Src/wptGPGME.cpp:280
+#: Src/wptGPGME.cpp:284
msgid "The signature is BAD!"
msgstr "A assinatura está RUIM!"
-#: Src/wptGPGME.cpp:281
+#: Src/wptGPGME.cpp:285
#, fuzzy
msgid "The signature could not be checked due to a missing key"
msgstr "A assinatura não pôde ser verificada devido à falta de uma chave."
-#: Src/wptGPGME.cpp:282
+#: Src/wptGPGME.cpp:286
#, fuzzy
msgid "No valid OpenPGP signature"
msgstr "Assinatura OpenPGP inválida."
-#: Src/wptGPGME.cpp:283
+#: Src/wptGPGME.cpp:287
msgid "Signature Error"
msgstr "Erro na assinatura"
-#: Src/wptGPGME.cpp:284
-msgid "Good Signature (Expired Key)"
+#: Src/wptGPGME.cpp:288
+#, fuzzy
+msgid "Good signature (Expired Key)"
msgstr "Assinatura boa (chave expirada)"
-#: Src/wptGPGME.cpp:285
-msgid "Good Signature (Revoked Key)"
+#: Src/wptGPGME.cpp:289
+#, fuzzy
+msgid "Good signature (Revoked Key)"
msgstr "Assinatura boa (chave revogada)"
+#: Src/wptGPGME.cpp:290
+#, fuzzy
+msgid "Good signature (Expired)"
+msgstr "Assinatura boa (chave expirada)"
+
#: Src/wptGPGOptDlg.cpp:50 Src/wptGPGOptDlg.cpp:100
msgid "Could not load GnuPG config file!"
msgstr "Não foi possível carregar o arquivo de configuração do GnuPG!"
@@ -1706,11 +1752,6 @@
msgid "&Load"
msgstr "Ca&rregar"
-#: Src/wptGPGOptDlg.cpp:59
-#, fuzzy
-msgid "&Exit"
-msgstr "Sair"
-
#: Src/wptGPGOptDlg.cpp:72
msgid "The 'gpg.conf' file is not loaded."
msgstr "O arquivo 'gpg.conf' não foi carregado."
@@ -1822,18 +1863,17 @@
#: Src/wptKeyManager.cpp:331 Src/wptKeyManager.cpp:338
#: Src/wptKeyManager.cpp:340 Src/wptKeyManager.cpp:361
#: Src/wptKeyManager.cpp:370 Src/wptKeyManager.cpp:374
-#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:435
-#: Src/wptKeyManager.cpp:440 Src/wptKeyManager.cpp:443
-#: Src/wptKeyManager.cpp:448 Src/wptKeyManager.cpp:454
-#: Src/wptKeyManager.cpp:459 Src/wptKeyManager.cpp:587
-#: Src/wptKeyManager.cpp:595 Src/wptKeyManager.cpp:722
-#: Src/wptKeyManager.cpp:750 Src/wptKeyManager.cpp:759
-#: Src/wptKeyManager.cpp:770 Src/wptKeyManager.cpp:796
-#: Src/wptKeyManager.cpp:823 Src/wptKeyManager.cpp:828
-#: Src/wptKeyManager.cpp:851 Src/wptKeyManager.cpp:856
-#: Src/wptKeyManager.cpp:870 Src/wptKeyManager.cpp:930
-#: Src/wptKeyManager.cpp:935 Src/wptKeyManager.cpp:992
-#: Src/wptKeyManager.cpp:1025 Src/wptKeyManager.cpp:1109
+#: Src/wptKeyManager.cpp:394 Src/wptKeyManager.cpp:419
+#: Src/wptKeyManager.cpp:424 Src/wptKeyManager.cpp:427
+#: Src/wptKeyManager.cpp:432 Src/wptKeyManager.cpp:438
+#: Src/wptKeyManager.cpp:443 Src/wptKeyManager.cpp:686
+#: Src/wptKeyManager.cpp:714 Src/wptKeyManager.cpp:723
+#: Src/wptKeyManager.cpp:734 Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:787 Src/wptKeyManager.cpp:792
+#: Src/wptKeyManager.cpp:815 Src/wptKeyManager.cpp:820
+#: Src/wptKeyManager.cpp:834 Src/wptKeyManager.cpp:894
+#: Src/wptKeyManager.cpp:899 Src/wptKeyManager.cpp:956
+#: Src/wptKeyManager.cpp:989 Src/wptKeyManager.cpp:1073
#: Src/wptKeyManagerDlg.cpp:1324 Src/wptKeyManagerDlg.cpp:1335
#: Src/wptKeyManagerDlg.cpp:1345 Src/wptKeyManagerDlg.cpp:1650
#: Src/wptKeyManagerDlg.cpp:1673 Src/wptKeyManagerDlg.cpp:1688
@@ -2866,7 +2906,7 @@
msgid "Invalid User ID"
msgstr "ID de usuário inválida"
-#: Src/wptKeylist.cpp:1034
+#: Src/wptKeylist.cpp:1035
#, c-format
msgid ""
"It is NOT certain that the key belongs to the person\n"
@@ -2881,11 +2921,11 @@
"\n"
"Usar \"%s\" de qualquer jeito?"
-#: Src/wptKeylist.cpp:1042 Src/wptKeylist.cpp:1104
+#: Src/wptKeylist.cpp:1043 Src/wptKeylist.cpp:1106
msgid "Recipients"
msgstr "Destinatários"
-#: Src/wptKeylist.cpp:1105
+#: Src/wptKeylist.cpp:1107
#, c-format
msgid ""
"KeyID %s.\n"
@@ -2894,7 +2934,7 @@
"ID de chave %s.\n"
"Você realmente deseja exportar uma chave revogada?"
-#: Src/wptKeylist.cpp:1207
+#: Src/wptKeylist.cpp:1209
msgid "Secret Key List"
msgstr "Lista de chaves privadas"
@@ -2928,11 +2968,11 @@
msgid "Key(s) successfully saved in '%s'."
msgstr "Chave(s) salva com sucesso em '%s'."
-#: Src/wptKeyManager.cpp:447
+#: Src/wptKeyManager.cpp:431
msgid "No valid OpenPGP keys found."
msgstr "Nenhuma chave OpenPGP válida encontrada."
-#: Src/wptKeyManager.cpp:452
+#: Src/wptKeyManager.cpp:436
#, fuzzy
msgid ""
"The key you want to import is dash escaped.\n"
@@ -2941,11 +2981,11 @@
"A chave que você deseja importar contém caracteres de escape.\n"
"Você deseja extrair a chave?"
-#: Src/wptKeyManager.cpp:458
+#: Src/wptKeyManager.cpp:442
msgid "Cannot import dash escaped OpenPGP keys."
msgstr "Não é possível importar chaves com caracteres de escape."
-#: Src/wptKeyManager.cpp:487 Src/wptKeyManager.cpp:615
+#: Src/wptKeyManager.cpp:467 Src/wptKeyManager.cpp:580
msgid ""
"Key without a self signature was dectected!\n"
"(This key is NOT usable for encryption, etc)\n"
@@ -2953,42 +2993,38 @@
"Chave sem auto-assinatura detectada!\n"
"(Esta chave NÃO é utilizável para cifragem, etc)\n"
-#: Src/wptKeyManager.cpp:516 Src/wptKeyManager.cpp:523
-#: Src/wptKeyManager.cpp:532
+#: Src/wptKeyManager.cpp:496 Src/wptKeyManager.cpp:503
+#: Src/wptKeyManager.cpp:512
msgid "Key Import HTTP"
msgstr "Importação de chave via HTTP"
-#: Src/wptKeyManager.cpp:516
+#: Src/wptKeyManager.cpp:496
#, c-format
msgid "Invalid HTTP URL: %s"
msgstr "URL HTTP inválida: %s"
-#: Src/wptKeyManager.cpp:533
+#: Src/wptKeyManager.cpp:513
#, c-format
msgid "Could not fetch key from URL: %s"
msgstr "Não foi possível obter a chave da URL: %s"
-#: Src/wptKeyManager.cpp:562
+#: Src/wptKeyManager.cpp:541
msgid "Choose Name of the Key File"
msgstr "Escolher nome do arquivo de chaves"
-#: Src/wptKeyManager.cpp:575
+#: Src/wptKeyManager.cpp:554
msgid "File Import"
msgstr "Importar arquivo"
-#: Src/wptKeyManager.cpp:586
-msgid "Could not read key-data from file."
-msgstr "Não foi possível ler dados da chave do arquivo."
-
-#: Src/wptKeyManager.cpp:727
+#: Src/wptKeyManager.cpp:691
msgid "Do you really want to confirm each key?"
msgstr "Você realmente quer confirmar cada chave?"
-#: Src/wptKeyManager.cpp:728
+#: Src/wptKeyManager.cpp:692
msgid "Delete Confirmation"
msgstr "Confirmação de exclusão"
-#: Src/wptKeyManager.cpp:751
+#: Src/wptKeyManager.cpp:715
#, c-format
msgid ""
"Do you really want to delete this key?\n"
@@ -2999,7 +3035,7 @@
"\n"
"%s"
-#: Src/wptKeyManager.cpp:760
+#: Src/wptKeyManager.cpp:724
#, c-format
msgid ""
"Do you really want to delete this KEY PAIR?\n"
@@ -3016,7 +3052,7 @@
"\n"
"%s"
-#: Src/wptKeyManager.cpp:767
+#: Src/wptKeyManager.cpp:731
msgid ""
"The actual secret key is stored on a smartcard.\n"
"Only the public key and the secret key \n"
@@ -3026,49 +3062,49 @@
"Apenas o lugar reservado para as chaves pública e\n"
"privada será excluído.\n"
-#: Src/wptKeyManager.cpp:829
+#: Src/wptKeyManager.cpp:793
#, c-format
msgid "Do you really want to send '0x%s' to keyserver %s?"
msgstr "Você realmente deseja enviar '0x%s' para o servidor %s?"
-#: Src/wptKeyManager.cpp:850
+#: Src/wptKeyManager.cpp:814
msgid "Please only select one key."
msgstr "Por favor selecione apenas uma chave."
-#: Src/wptKeyManager.cpp:929
+#: Src/wptKeyManager.cpp:893
msgid "Do you really want to refresh all keys in the keyring?"
msgstr "Você realmente deseja atualizar todas as chaves do chaveiro?"
-#: Src/wptKeyManager.cpp:934
+#: Src/wptKeyManager.cpp:898
msgid "Could not connect to keyserver, abort procedure."
msgstr "Não foi possível conectar-se ao servidor, abortando procedimento."
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search"
msgstr "Localizar"
-#: Src/wptKeyManager.cpp:1008
+#: Src/wptKeyManager.cpp:972
msgid "Search for:"
msgstr "Procurar por:"
-#: Src/wptKeyManager.cpp:1020
+#: Src/wptKeyManager.cpp:984
#, c-format
msgid "String pattern \"%s\" not found."
msgstr "Padrão \"%s\" não encontrado."
-#: Src/wptKeyManager.cpp:1086 Src/wptKeyRevokeDlg.cpp:85
+#: Src/wptKeyManager.cpp:1050 Src/wptKeyRevokeDlg.cpp:85
msgid "0. No reason specified"
msgstr "0. Nenhuma razão especificada"
-#: Src/wptKeyManager.cpp:1087 Src/wptKeyRevokeDlg.cpp:86
+#: Src/wptKeyManager.cpp:1051 Src/wptKeyRevokeDlg.cpp:86
msgid "1. Key has been compromised"
msgstr "1. Chave foi comprometida"
-#: Src/wptKeyManager.cpp:1088 Src/wptKeyRevokeDlg.cpp:87
+#: Src/wptKeyManager.cpp:1052 Src/wptKeyRevokeDlg.cpp:87
msgid "2. Key is superseded"
msgstr "2. Chave foi substituída"
-#: Src/wptKeyManager.cpp:1089 Src/wptKeyRevokeDlg.cpp:88
+#: Src/wptKeyManager.cpp:1053 Src/wptKeyRevokeDlg.cpp:88
msgid "3. Key is no longer used"
msgstr "3. Chave não é mais usada"
@@ -4246,7 +4282,7 @@
"o usuário: \"%s\"\n"
"chave %s, ID %s\n"
-#: Src/wptPassphraseCB.cpp:400
+#: Src/wptPassphraseCB.cpp:401
#, c-format
msgid ""
"Please enter the PIN to unlock your secret card key\n"
@@ -4572,6 +4608,9 @@
msgid "Signed"
msgstr "Assinada"
+#~ msgid "Could not read key-data from file."
+#~ msgstr "Não foi possível ler dados da chave do arquivo."
+
#~ msgid ""
#~ "Encrypted with %s key, ID %s.%s\n"
#~ "Decryption failed: secret key not available."
Modified: trunk/README
===================================================================
--- trunk/README 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/README 2006-08-16 10:01:30 UTC (rev 260)
@@ -2,13 +2,6 @@
================================
-Note
------
-
-This is only a quick guide for WinPT. For the moment the program is its own
-documentation. This is subject to change.
-
-
Bugs and Improvements
---------------------
Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/ChangeLog 2006-08-16 10:01:30 UTC (rev 260)
@@ -1,3 +1,31 @@
+2006-08-11 Timo Schulz <ts at g10code.de>
+
+ * wptGPGMEWrapper.cpp (importFromFile): New.
+ (importFromClipboard): New.
+ (importGetResult): New.
+ * wptKeyManager.cpp (km_file_import): Use gpgme wrapper.
+ (km_clip_import): Ditto.
+ * wptKeyEdit.cpp (addCardKey): New.
+ * wptKeyEditCB.cpp (cmd_addcardkey_handler): New.
+ * wptCardEdit.cpp (get_str_timestamp): Use locale date format.
+ * wptCardDlg.cpp (card_edit_dlg_proc): Began to localize dialog.
+ * wptKeyCache.cpp (key_divert_to_card): Adjusted for 'addcardkey'.
+
+2006-08-10 Timo Schulz <ts at g10code.de>
+
+ * wptFileManager.cpp (fm_verify_pasted_detsig): '=' should be
+ '=='.
+ * wptGPGME.cpp (sigsum_to_index): Correctly handle expired
+ keys and signatures.
+ (get_gpg_sigstat): Adjusted code.
+ * wptCardDlg.cpp (card_changepin_dlg_proc): Cleanups.
+ (gpg_card_load): Improved card detection code.
+ * wptFirstRunDlg.cpp (first_run_dlg_proc): Allow to generate
+ a key on a card. Suggested by Achim.
+ * wptUtil.cpp (check_email_address): Add sanity check for
+ the length.
+ * WinPT.cpp (WinMain): Handle cardgen request.
+
2006-08-04 Timo Schulz <ts at g10code.de>
* wptKeysignDlg.cpp (display_keyinfo): Skip revoked user IDs.
Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/WinPT-en.rc 2006-08-16 10:01:30 UTC (rev 260)
@@ -981,18 +981,20 @@
GROUPBOX "",IDC_STATIC,8,81,138,38
END
-IDD_WINPT_FIRST DIALOG DISCARDABLE 0, 0, 195, 77
+IDD_WINPT_FIRST DIALOG DISCARDABLE 0, 0, 195, 98
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "WinPT First Start"
FONT 8, "MS Sans Serif"
BEGIN
- GROUPBOX "",IDC_STATIC,6,2,185,34
+ GROUPBOX "",IDC_STATIC,6,2,185,49
CONTROL "&Generate a GnuPG key pair",IDC_FIRST_KEYGEN,"Button",
BS_AUTORADIOBUTTON,8,9,149,10
CONTROL "&Copy GnuPG keyrings from another location",
IDC_FIRST_IMPORT,"Button",BS_AUTORADIOBUTTON,8,22,176,10
- DEFPUSHBUTTON "&OK",IDOK,90,57,50,14
- PUSHBUTTON "&Cancel",IDCANCEL,142,57,50,14
+ CONTROL "&Generate key pair on a Smart Card",IDC_FIRST_CARDGEN,
+ "Button",BS_AUTORADIOBUTTON,8,37,164,7
+ DEFPUSHBUTTON "&OK",IDOK,90,79,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,142,79,50,14
END
IDD_WINPT_SIGCLASS DIALOG DISCARDABLE 0, 0, 238, 98
@@ -1165,48 +1167,48 @@
BEGIN
GROUPBOX "OpenPGP card",IDC_STATIC,6,7,205,222
LTEXT "Application ID",IDC_STATIC,11,20,45,8
- EDITTEXT IDC_CEDIT_AID,61,20,145,12,ES_AUTOHSCROLL | WS_DISABLED
+ EDITTEXT IDC_CEDIT_AID,61,20,145,12,ES_AUTOHSCROLL | ES_READONLY
LTEXT "Version",IDC_STATIC,11,35,24,8
EDITTEXT IDC_CEDIT_VERSION,61,35,57,12,ES_AUTOHSCROLL |
- WS_DISABLED
+ ES_READONLY
LTEXT "Serial",IDC_STATIC,124,36,18,8
EDITTEXT IDC_CEDIT_SERIAL,147,35,59,12,ES_AUTOHSCROLL |
- WS_DISABLED
+ ES_READONLY
LTEXT "Vendor",IDC_STATIC,11,50,24,8
EDITTEXT IDC_CEDIT_VENDOR,61,49,145,12,ES_AUTOHSCROLL |
- WS_DISABLED
+ ES_READONLY
LTEXT "Sig count",IDC_STATIC,11,64,31,8
EDITTEXT IDC_CEDIT_SIGCOUNT,61,62,56,12,ES_AUTOHSCROLL |
- WS_DISABLED
+ ES_READONLY
LTEXT "Sign-Fingerprint",IDC_STATIC,11,77,50,8
LTEXT "Static",IDC_CEDIT_SIG_FPRTIME,131,77,74,9
- EDITTEXT IDC_CEDIT_FPR1,11,89,195,12,ES_AUTOHSCROLL | WS_DISABLED
+ EDITTEXT IDC_CEDIT_FPR1,11,89,195,12,ES_AUTOHSCROLL | ES_READONLY
LTEXT "Decrypt-Fingerprint",IDC_STATIC,11,106,60,8
LTEXT "Static",IDC_CEDIT_DEC_FPRTIME,131,104,74,9
EDITTEXT IDC_CEDIT_FPR2,11,116,195,13,ES_AUTOHSCROLL |
- WS_DISABLED
+ ES_READONLY
LTEXT "Authentication-Fingerprint",IDC_STATIC,11,135,81,8
LTEXT "Static",IDC_CEDIT_AUTH_FPRTIME,131,133,75,9
EDITTEXT IDC_CEDIT_FPR3,11,146,195,13,ES_AUTOHSCROLL |
- WS_DISABLED
- LTEXT "Name",IDC_STATIC,11,164,20,8
+ ES_READONLY
+ LTEXT "Name",IDC_CEDIT_NAMEINF,11,164,36,8
EDITTEXT IDC_CEDIT_NAME,50,163,83,12,ES_AUTOHSCROLL
EDITTEXT IDC_CEDIT_NAME2,136,163,71,12,ES_AUTOHSCROLL
- LTEXT "Language",IDC_STATIC,11,181,33,8
+ LTEXT "Language",IDC_CEDIT_LANGINF,11,181,33,8
COMBOBOX IDC_CEDIT_LANG,50,179,30,42,CBS_DROPDOWN | WS_VSCROLL |
WS_TABSTOP
- EDITTEXT IDC_CEDIT_LANG2,84,179,16,12,NOT WS_VISIBLE
- LTEXT "Sex",IDC_STATIC,102,180,13,8
+ EDITTEXT IDC_CEDIT_LANG2,81,179,16,12,NOT WS_VISIBLE
+ LTEXT "Sex",IDC_CEDIT_SEXINF,100,180,22,8
COMBOBOX IDC_CEDIT_SEX,123,179,60,53,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
EDITTEXT IDC_CEDIT_SEX2,186,179,18,13,ES_AUTOHSCROLL | NOT
WS_VISIBLE
- LTEXT "Key-URL",IDC_STATIC,11,199,30,8
+ LTEXT "Key-URL",IDC_CEDIT_KURLINF,11,199,36,8
EDITTEXT IDC_CEDIT_KEYURL,50,197,148,12,ES_AUTOHSCROLL
- LTEXT "Login",IDC_STATIC,11,214,18,8
+ LTEXT "Login",IDC_CEDIT_LOGINF,11,214,36,8
EDITTEXT IDC_CEDIT_LOGIN,50,212,105,12,ES_AUTOHSCROLL
- PUSHBUTTON "Change &Pin",IDC_CEDIT_CHPIN,6,233,50,15
- PUSHBUTTON "&New Keys",IDC_CEDIT_NEWKEYS,6,249,50,13
+ PUSHBUTTON "Change &PIN",IDC_CEDIT_CHPIN,6,233,50,15
+ PUSHBUTTON "&New keys",IDC_CEDIT_NEWKEYS,6,249,50,13
DEFPUSHBUTTON "&OK",IDOK,107,233,50,14
PUSHBUTTON "&Exit",IDCANCEL,161,233,50,14
END
@@ -1254,7 +1256,7 @@
CAPTION "Card Key Generation"
FONT 8, "MS Sans Serif"
BEGIN
- LTEXT "Pubkey algorithm",IDC_STATIC,7,8,55,8
+ LTEXT "Pubkey algorithm",IDC_CKEYGEN_PKINF,7,8,62,8
COMBOBOX IDC_CKEYGEN_ALG,73,5,58,36,CBS_DROPDOWNLIST |
WS_DISABLED | WS_VSCROLL | WS_TABSTOP
LTEXT "&Name",IDC_CKEYGEN_NAMEINF,7,23,45,8
@@ -1747,7 +1749,7 @@
LEFTMARGIN, 2
RIGHTMARGIN, 192
TOPMARGIN, 2
- BOTTOMMARGIN, 72
+ BOTTOMMARGIN, 93
END
IDD_WINPT_SIGCLASS, DIALOG
Modified: trunk/Src/WinPT.cpp
===================================================================
--- trunk/Src/WinPT.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/WinPT.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -727,6 +727,13 @@
}
break;
+ case SETUP_CARDGEN:
+ rc = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_CARD_KEYGEN,
+ h, card_keygen_dlg_proc, 0);
+ if (!rc)
+ goto start;
+ break;
+
case 0: /* Cancel/Abort. */
default:
DestroyWindow (hwnd);
Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/resource.h 2006-08-16 10:01:30 UTC (rev 260)
@@ -663,6 +663,13 @@
#define IDC_SHOWPHOTO_IMG 1535
#define IDC_SIGPROPS_CREATSTR 1537
#define IDC_SIGPROPS_CREATDATE 1538
+#define IDC_FIRST_CARDGEN 1539
+#define IDC_CKEYGEN_PKINF 1540
+#define IDC_CEDIT_NAMEINF 1541
+#define IDC_CEDIT_LANGINF 1542
+#define IDC_CEDIT_KURLINF 1543
+#define IDC_CEDIT_LOGINF 1544
+#define IDC_CEDIT_SEXINF 1545
#define ID_GPG_ENCRYPT 40003
#define ID_GPG_DECRYPT 40004
#define ID_GPG_SIGN 40005
@@ -857,7 +864,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 251
#define _APS_NEXT_COMMAND_VALUE 40200
-#define _APS_NEXT_CONTROL_VALUE 1539
+#define _APS_NEXT_CONTROL_VALUE 1546
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Modified: trunk/Src/wptCardDlg.cpp
===================================================================
--- trunk/Src/wptCardDlg.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptCardDlg.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -1,5 +1,5 @@
/* wptCardDlg.cpp - Smart Card support
- * Copyright (C) 2003, 2004, 2005 Timo Schulz
+ * Copyright (C) 2003-2006 Timo Schulz
* Copyright (C) 2005 g10 Code GmbH
*
* This file is part of WinPT.
@@ -44,16 +44,24 @@
int keygen_check_date (SYSTEMTIME * st);
-static const char * sex[] = {"Male", "Female", "Undefined", NULL};
-static const char * lang[] = {"Undefined", "cs", "de", "en", "es", "fr", "hu",
+
+#define OPENPGP_APPID "D276000124"
+
+/* Possible values for the sex field. */
+static const char *sex[] = {"Male", "Female", "Undefined", NULL};
+
+/* Predefined languages. */
+static const char *lang[] = {"Undefined", "cs", "de", "en", "es", "fr", "hu",
"it", "nl", "pt", "ro", "ru", "zh", "at",
NULL};
+/* PIN callback context. */
static pin_cb_ctx_s pincb;
+/* Attribute table. */
struct {
int ctlid;
- const char * err;
+ const char *err;
} attr_tab[] = {
{IDC_CEDIT_AID, ""},
{IDC_CEDIT_VENDOR, "No Vendor"},
@@ -68,33 +76,23 @@
-/* XXX: simplify code. */
-char*
-get_printable_version (const char *version)
-{
- static char buf[16];
- char tmp_maj[3]={0}, tmp_min[3]={0};
-
- strncpy (tmp_maj, version, 2);
- strncpy (tmp_min, version+2, 2);
- sprintf (buf, "%d.%d", atoi (tmp_maj), atoi (tmp_min));
- return buf;
-}
-
/* Return all card attributes from @card. @n contains
the number of items which were returned. */
char**
card_get_items (gpg_card_t card, int *n)
{
+ static char printver[16];
char **p;
*n= 8;
p = (char **)calloc (*n+1, sizeof (char*));
if (!p)
BUG (0);
+ _snprintf (printver, sizeof (printver)-1, "%d.%d",
+ card->ver[0], card->ver[1]);
p[0] = card->aid;
p[1] = card->vendor;
- p[2] = get_printable_version (card->version);
+ p[2] = printver;
p[3] = card->serial;
p[4] = card->givenname;
p[5] = card->surname;
@@ -105,21 +103,33 @@
static int
-idx_from_lang (const char * _lang)
+idx_from_lang (const char *_lang)
{
- const char * s;
+ const char *s;
int i;
if (!_lang)
return 0;
for (i=0; (s = lang[i]); i++) {
- if (!strcmp (_lang, s ))
+ if (!strcmp (_lang, s))
return i;
}
return 0;
}
+static GpgCardEdit*
+create_GpgCardEdit (void)
+{
+ GpgCardEdit *ce;
+
+ ce = new GpgCardEdit ();
+ if (!ce)
+ BUG (0);
+ return ce;
+}
+
+
/* Check if there is a card in the reader and analyze the
returned information.
Return value: card context or NULL on error. */
@@ -131,9 +141,7 @@
gpg_card_t card = NULL;
struct card_cb_s cb = {0};
- ce = new GpgCardEdit ();
- if (!ce)
- BUG (0);
+ ce = create_GpgCardEdit ();
memset (&cb, 0, sizeof (cb));
ce->setCallback (card_callback, &cb);
err = ce->getCardStatus (&card);
@@ -142,19 +150,19 @@
goto leave;
}
- if (!card->aid || strncmp (card->aid, "D276000124", 10)) {
+ if (!card->aid ||
+ strncmp (card->aid, OPENPGP_APPID, strlen (OPENPGP_APPID))) {
msg_box (NULL, winpt_strerror (WPTERR_NOPGPCARD), "WinPT", MB_ERR);
gpg_card_release (card);
card = NULL;
}
else {
struct winpt_key_s key;
+
memset (&key, 0, sizeof (key));
winpt_get_pubkey (card->fpr[1]+32, &key);
if (key.ext) {
key.ext->card_type = m_strdup (card->card_type);
- if (!key.ext->card_type)
- BUG (NULL);
/* memory will be released in gpg_keycache_release (). */
}
}
@@ -177,7 +185,7 @@
strcpy (buf, _("No Fingerprint"));
else {
memset (buf, 0, sizeof (buf));
- for( i=0, c=0; i < strlen (fpr); i++) {
+ for (i=0, c=0; i < strlen (fpr); i++) {
dig[0] = fpr[i]; dig[1] = 0;
strcat (buf, dig);
if (++c == 4) {
@@ -197,14 +205,15 @@
card_status (HWND dlg, gpg_card_t card)
{
static int fprbuf[] = {IDC_CEDIT_FPR1, IDC_CEDIT_FPR2, IDC_CEDIT_FPR3, 0};
- static int fprtime[] = {IDC_CEDIT_SIG_FPRTIME, IDC_CEDIT_DEC_FPRTIME, IDC_CEDIT_AUTH_FPRTIME, 0};
+ static int fprtime[] = {IDC_CEDIT_SIG_FPRTIME, IDC_CEDIT_DEC_FPRTIME,
+ IDC_CEDIT_AUTH_FPRTIME, 0};
const char *s;
char **attrs;
char cardinf[128];
int idx=0, n=0;
if (!card->aid) {
- msg_box( dlg, _("No OpenPGP smart card detected."), "WinPT", MB_ERR );
+ msg_box (dlg, _("No OpenPGP smart card detected."), "WinPT", MB_ERR);
return -1;
}
SetDlgItemText (dlg, IDC_CEDIT_AID, card->aid);
@@ -212,15 +221,19 @@
for (idx=0; fprbuf[idx]; idx++) {
print_fpr (dlg, fprbuf[idx], card->fpr[idx]);
- SetDlgItemText (dlg, fprtime[idx], card->fpr_created_str[idx]);
+ s = card->fpr_created_str[idx];
+ if (!s) /* no keys on the card. */
+ s = "";
+ SetDlgItemText (dlg, fprtime[idx], s);
}
attrs = card_get_items (card, &n);
for (idx=1; attr_tab[idx].ctlid; idx++) {
s = attrs[idx];
- SetDlgItemText (dlg, attr_tab[idx].ctlid, s && *s? s : attr_tab[idx].err);
+ SetDlgItemText (dlg, attr_tab[idx].ctlid,
+ s && *s? s : attr_tab[idx].err);
}
- free (attrs);
+ safe_free (attrs);
idx = idx_from_lang (card->lang);
SendDlgItemMessage (dlg, IDC_CEDIT_LANG, CB_SETCURSEL, (WPARAM)idx, 0);
@@ -235,9 +248,9 @@
s = card->serial;
while (s && *s == '0') s++;
- _snprintf (cardinf, sizeof (cardinf)-1,
- "Card Edit - %s serial no. %s version %s",
- card->card_type, s, get_printable_version (card->version));
+ _snprintf (cardinf, sizeof (cardinf)-1,
+ "Card Edit - %s serial no. %s version %d.%d",
+ card->card_type, s, card->ver[0], card->ver[1]);
SetWindowText (dlg, cardinf);
return 0;
@@ -265,6 +278,7 @@
check_string (const char *str, int flags)
{
size_t i;
+
for (i=0; i < strlen (str); i++) {
if (flags & 0x02 && !isalpha (str[i]))
return -1;
@@ -327,11 +341,8 @@
return 0;
}
- ce = new GpgCardEdit ();
- if (!ce)
- BUG (NULL);
+ ce = create_GpgCardEdit ();
ce->setAdminPIN (cb->apin);
- /*ce->setPIN (cb->upin);*/
for( i=0; idctl[i].id; i++ ) {
if( idctl[i].changed ) {
GetDlgItemText( dlg, idctl[i].id, buf, sizeof (buf)-1 );
@@ -380,7 +391,7 @@
}
delete ce;
return errc;
-} /* do_proc_card_cmds */
+}
/* Cleanup pin callback @ctx. */
@@ -404,9 +415,9 @@
do_askpin (HWND dlg, int which, gpg_card_t card,
struct pin_cb_ctx_s *cb)
{
- const char * s, * fmt;
- const char * n1, * n2, * serial;
- char * p;
+ const char *s, *fmt;
+ const char *n1, *n2, *serial;
+ char *p;
size_t n;
if( (which == CARD_ADMIN_PIN && cb->apin) ||
@@ -432,16 +443,13 @@
if (!serial)
serial = "No Serial ID";
n = strlen( n1 ) + strlen( n2 ) + strlen( fmt ) + strlen( serial ) + 3;
- p = cb->info_text = new char[strlen( s )+n+1 ];
+ p = cb->info_text = new char[strlen (s)+n+1];
if( !p )
BUG (0);
- sprintf( p, fmt, s, n1, n2, serial );
+ sprintf (p, fmt, s, n1, n2, serial);
}
- else {
+ else
p = cb->info_text = m_strdup (s);
- if (!p)
- BUG (0);
- }
DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_PIN, dlg,
pin_cb_dlg_proc, (LPARAM)cb);
if (!cb->apin && !cb->upin) {
@@ -468,6 +476,15 @@
prepare_dialog (dlg);
if (card_status (dlg, card ))
EndDialog (dlg, TRUE);
+ SetDlgItemText (dlg, IDC_CEDIT_NAMEINF, _("&Name"));
+ SetDlgItemText (dlg, IDC_CEDIT_LANGINF, _("&Language"));
+ SetDlgItemText (dlg, IDC_CEDIT_KURLINF, _("&Key-URL"));
+ SetDlgItemText (dlg, IDC_CEDIT_LOGINF, _("&Login"));
+ SetDlgItemText (dlg, IDC_CEDIT_SEXINF, _("&Sex"));
+ SetDlgItemText (dlg, IDOK, _("&OK"));
+ SetDlgItemText (dlg, IDCANCEL, _("&Exit"));
+ SetDlgItemText (dlg, IDC_CEDIT_NEWKEYS, _("&New keys"));
+ SetDlgItemText (dlg, IDC_CEDIT_CHPIN, _("Change &PIN"));
center_window (dlg, NULL);
SetForegroundWindow (dlg);
return TRUE;
@@ -478,11 +495,11 @@
break;
case WM_COMMAND:
- switch( HIWORD( wparam ) ) {
+ switch (HIWORD (wparam)) {
case CBN_KILLFOCUS:
case CBN_EDITCHANGE:
case CBN_EDITUPDATE:
- int ctlid = GetDlgCtrlID( (HWND)lparam );
+ int ctlid = GetDlgCtrlID ((HWND)lparam);
int dstid = 0;
switch (ctlid) {
@@ -524,7 +541,7 @@
break;
case IDCANCEL:
- EndDialog( dlg, FALSE );
+ EndDialog (dlg, FALSE);
break;
}
break;
@@ -567,7 +584,6 @@
switch (msg) {
case WM_INITDIALOG:
- center_window (dlg, NULL);
CheckDlgButton (dlg, IDC_CKEYGEN_REPLACE, BST_CHECKED);
CheckDlgButton (dlg, IDC_CKEYGEN_NEVER, BST_CHECKED);
CheckDlgButton (dlg, IDC_CKEYGEN_BACKUP, BST_CHECKED);
@@ -575,8 +591,7 @@
SendDlgItemMessage (dlg, IDC_CKEYGEN_ALG, CB_ADDSTRING, 0,
(LPARAM)(const char*)"RSA");
SendDlgItemMessage (dlg, IDC_CKEYGEN_ALG, CB_SETCURSEL, 0, 0);
- SetFocus (GetDlgItem (dlg, IDC_CKEYGEN_NAME));
- SetForegroundWindow (dlg);
+ SetDlgItemText (dlg, IDC_CKEYGEN_PKINF, _("Pubkey algorithm"));
SetDlgItemText (dlg, IDC_CKEYGEN_NAMEINF, _("&Name"));
SetDlgItemText (dlg, IDC_CKEYGEN_CMTINF, _("&Comment (optional)"));
SetDlgItemText (dlg, IDC_CKEYGEN_EXPDATEINF, _("&Expire date"));
@@ -586,13 +601,11 @@
SetDlgItemText (dlg, IDC_CKEYGEN_REPLACE, _("Overwrite old keys on the card"));
SetDlgItemText (dlg, IDC_CKEYGEN_BACKUP, _("Make off-card backup of encryption key"));
SetWindowText (dlg, _("Card Key Generation"));
+ center_window (dlg, NULL);
+ SetForegroundWindow (dlg);
+ SetFocus (GetDlgItem (dlg, IDC_CKEYGEN_NAME));
return FALSE;
- case WM_SYSCOMMAND:
- if (LOWORD (wparam) == SC_CLOSE)
- EndDialog (dlg, TRUE);
- return FALSE;
-
case WM_COMMAND:
if (HIWORD (wparam) == BN_CLICKED &&
(LOWORD (wparam) == IDC_CKEYGEN_BACKUP) ||
@@ -624,14 +637,15 @@
}
GetDlgItemText (dlg, IDC_CKEYGEN_NAME, name, sizeof (name)-1);
GetDlgItemText (dlg, IDC_CKEYGEN_EMAIL, email, sizeof (email)-1);
- if (!strchr (email, '@') || n < 3) {
+ if (check_email_address (email) || n < 3) {
msg_box (dlg, _("Please enter a valid e-mail address."),
_("Card Edit"), MB_ERR);
return TRUE;
}
n = GetDlgItemText (dlg, IDC_CKEYGEN_PASS, pass, sizeof (pass)-1);
if (!n && IsDlgButtonChecked (dlg, IDC_CKEYGEN_BACKUP)) {
- msg_box (dlg, _("Please enter an off-card passphrase."), _("Card Edit"), MB_ERR);
+ msg_box (dlg, _("Please enter an off-card passphrase."),
+ _("Card Edit"), MB_ERR);
return TRUE;
}
n = item_get_text_length (dlg, IDC_CKEYGEN_COMMENT);
@@ -651,13 +665,12 @@
free_pincb (&pincb);
return TRUE;
}
- ce = new GpgCardEdit ();
- if (!ce)
- BUG (0);
-
+ ce = create_GpgCardEdit ();
+
expires = !IsDlgButtonChecked (dlg, IDC_CKEYGEN_NEVER);
if (expires) {
SYSTEMTIME st, ct;
+
DateTime_GetSystemtime (GetDlgItem (dlg, IDC_CKEYGEN_VALID), &st);
if (!keygen_check_date (&st)) {
msg_box (dlg, _("The date you have chosen has already passed."),
@@ -682,7 +695,6 @@
SetCursor (LoadCursor (NULL, IDC_WAIT));
err = ce->genKey (card_flags, name, email, n? comment: NULL,
expires? valid : 0, NULL);
-
SetCursor (LoadCursor (NULL, IDC_ARROW));
if (gpgme_err_code (err) == GPG_ERR_CANCELED)
@@ -700,11 +712,12 @@
wipememory (pass, sizeof (pass));
free_pincb (&pincb);
delete ce;
+ EndDialog (dlg, TRUE);
return TRUE;
case IDCANCEL:
EndDialog (dlg, FALSE);
- return FALSE;
+ return TRUE;
}
break;
}
@@ -801,9 +814,7 @@
return TRUE;
}
- ce = new GpgCardEdit ();
- if (!ce)
- BUG (0);
+ ce = create_GpgCardEdit ();
if (which == CARD_ADMIN_PIN)
ce->setAdminPIN (pold);
else
Modified: trunk/Src/wptCardEdit.cpp
===================================================================
--- trunk/Src/wptCardEdit.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptCardEdit.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -25,11 +25,12 @@
#include <windows.h>
#include <time.h>
-#include "gpgme.h"
+#include "wptGPG.h"
#include "wptCard.h"
#include "wptCardEdit.h"
-#include "wptGPG.h"
#include "wptErrors.h"
+#include "wptTypes.h"
+#include "wptW32API.h"
/* Create a new Smartcard context. */
static gpgme_error_t
@@ -56,59 +57,63 @@
if (!card)
return;
- if (card->aid)
- free (card->aid);
- if (card->version)
- free (card->version);
- if (card->lang)
- free (card->lang);
- if (card->login)
- free (card->login);
- for (i=0; i < 3; i++) {
- if (card->fpr[i])
- free (card->fpr[i]);
- if (card->ca_fpr[i])
- free (card->ca_fpr[i]);
- if (card->fpr_created_str[i])
- free (card->fpr_created_str[i]);
+ safe_free (card->aid);
+ safe_free (card->version);
+ safe_free (card->lang);
+ safe_free (card->login);
+ for (i=0; i < N_CARD_FPR; i++) {
+ safe_free (card->fpr[i]);
+ safe_free (card->ca_fpr[i]);
+ safe_free (card->fpr_created_str[i]);
}
- if (card->surname)
- free (card->surname);
- if (card->givenname)
- free (card->givenname);
- if (card->serial)
- free (card->serial);
- if (card->vendor)
- free (card->vendor);
- if (card->url)
- free (card->url);
- if (card->card_type)
- free (card->card_type);
- free (card);
+ safe_free (card->surname);
+ safe_free (card->givenname);
+ safe_free (card->serial);
+ safe_free (card->vendor);
+ safe_free (card->url);
+ safe_free (card->card_type);
+ safe_free (card);
}
/* Parse the timestamp @long_ts and return a string
- representation of it (format: YYYY-DD-MM HH:MM:SS). */
+ representation of it (format: depens on locale setting). */
static char*
get_str_timestamp (long long_ts)
{
- struct tm *tm;
- char *p, *fmt;
+ char timebuf[64];
+ const char *dat;
- tm = localtime (&long_ts);
- fmt = "%04d-%02d-%02d %02d:%02d:%02d";
- p = (char*)calloc (1, strlen (fmt)+32);
- if (!p)
- abort ();
- sprintf (p, fmt,
- tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
- return p;
+ if (long_ts < 1)
+ return strdup ("");
+ dat = get_locale_date (long_ts, timebuf, sizeof (timebuf)-1);
+ if (!dat)
+ return strdup ("");
+
+ return strdup (dat);
}
+/* Parse the card version AABB => 0100 */
+static void
+parse_version (gpg_card_t card, const char *ver)
+{
+ char buf[6];
+
+ if (strlen (ver) != 4)
+ return;
+ buf[0] = *ver++;
+ buf[1] = *ver++;
+ buf[2] = 0;
+ buf[3] = *ver++;
+ buf[4] = *ver++;
+ buf[5] = 0;
+ card->ver[0] = atoi (buf);
+ card->ver[1] = atoi (buf+3);
+}
+
+
/* Colon handler for parsing the GPG card colon output. */
static gpgme_error_t
statuscard_colon_handler (gpg_card_t card, char * line)
@@ -194,6 +199,7 @@
card->version = strdup (p);
if (!card->version)
return gpg_error (GPG_ERR_ENOMEM);
+ parse_version (card, p);
}
break;
@@ -277,7 +283,7 @@
break;
case CARD_Fpr:
- if (field > 4 || field == 1) /* max 3 fprs */
+ if (field > 4 || field == 1) /* max N_CARD_FPR=3 fprs */
break;
card->fpr[field-2] = strdup (p);
if (!card->fpr[field-2])
@@ -288,13 +294,15 @@
if (field > 4 || field == 1)
break;
card->fpr_created[field-2] = strtoul (p, NULL, 10);
- card->fpr_created_str[field-2] = get_str_timestamp (strtoul (p, NULL, 10));
- if (!card->fpr_created_str[field-2])
- return gpg_error (GPG_ERR_ENOMEM);
+ if (card->fpr_created[field-2] > 0)
+ card->fpr_created_str[field-2] = get_str_timestamp (strtoul (p, NULL, 10));
+ else
+ card->fpr_created_str[field-2] = NULL;
break;
-
+
default:
break;
+
}
}
return 0;
@@ -408,7 +416,7 @@
/* Set the callback to @cb and the hook value to @cb_value. */
void
-GpgCardEdit::setCallback (const char* (*_cb)(int code, void *opaque),
+GpgCardEdit::setCallback (const char* (*_cb)(int code, void *opaque),
void *_cb_value)
{
this->cb_value = _cb_value;
@@ -628,10 +636,12 @@
gpgme_error_t
GpgCardEdit::fetchKey (void)
{
+ gpgme_error_t err = 0;
+
if (!this->pin)
return gpg_error (GPG_ERR_INV_OBJ);
- return 0;
+ return err;
}
Modified: trunk/Src/wptCardEditCB.cpp
===================================================================
--- trunk/Src/wptCardEditCB.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptCardEditCB.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -18,13 +18,13 @@
* along with this program; if not, gpg_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 <stdio.h>
-#include <malloc.h>
#include <string.h>
#include <stdlib.h>
@@ -36,6 +36,7 @@
#define save_write(val) ((val)? (val) : "")
static const char *stat_key = "";
+
/* Wrapper to emulate write(). */
static int
gpg_write (int fd, const void *buf, size_t buflen)
@@ -43,11 +44,15 @@
HANDLE hd = (HANDLE)fd;
DWORD n;
- #if 0 /* debug */
+ /*
+ #ifdef _DEBUG
MessageBox (NULL, (const char*)buf, stat_key, MB_OK);
#endif
- WriteFile (hd, buf, buflen, &n, NULL);
- WriteFile (hd, "\n", 1, &n, NULL);
+ */
+ if (!WriteFile (hd, buf, buflen, &n, NULL))
+ log_debug ("card gpg_write failed ec=%d\r\n", (int)GetLastError ());
+ if (!WriteFile (hd, "\n", 1, &n, NULL))
+ log_debug ("card gpg_write failed ec=%d\r\n", (int)GetLastError ());
return n;
}
@@ -80,6 +85,7 @@
c->setResult (GPG_CARDRES_CANCEL);
s = "quit\n";
gpg_write (fd, s, strlen (s));
+ /* XXX: do we need c->reset()? */
return 0;
}
return 0;
Modified: trunk/Src/wptClipEncryptDlg.cpp
===================================================================
--- trunk/Src/wptClipEncryptDlg.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptClipEncryptDlg.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -148,8 +148,8 @@
gpgme_ctx_t ctx=NULL;
gpgme_error_t err;
char tmpbuf[64];
- int force_trust = 0;
- int n;
+ size_t n;
+ int force_trust = 0;
switch (msg) {
case WM_INITDIALOG:
Modified: trunk/Src/wptClipSignEncDlg.cpp
===================================================================
--- trunk/Src/wptClipSignEncDlg.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptClipSignEncDlg.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -103,8 +103,8 @@
gpgme_ctx_t ctx;
passphrase_cb_s pwd;
char *signer = NULL;
+ size_t n;
int force_trust = 0;
- int n;
switch (msg) {
case WM_INITDIALOG:
Modified: trunk/Src/wptFileManager.cpp
===================================================================
--- trunk/Src/wptFileManager.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptFileManager.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -54,7 +54,7 @@
void progress_cleanup (progress_filter_s *pfx);
BOOL CALLBACK file_secdel_confirm_dlg_proc (HWND dlg, UINT msg,
WPARAM wparam, LPARAM lparam);
-char* gpg_keylist_to_pattern (gpgme_key_t *rset, int n);
+char* gpg_keylist_to_pattern (gpgme_key_t *rset, size_t n);
gpgme_error_t sym_passphrase_cb (void *hook, const char *hint, const char *pass_inf,
int prev_was_bad, int fd);
void verify_show_signature_state (gpgme_signature_t sig);
@@ -1577,7 +1577,7 @@
this case */
fm_state_new (&ctx);
i = listview_get_curr_pos (lv);
- if (i= -1) {
+ if (i == -1) {
verify_pasted (lv, ctx, dat, i, dlg);
fnd = 1;
}
Modified: trunk/Src/wptFirstRunDlg.cpp
===================================================================
--- trunk/Src/wptFirstRunDlg.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptFirstRunDlg.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -57,6 +57,8 @@
choice = SETUP_KEYGEN;
else if (IsDlgButtonChecked (dlg, IDC_FIRST_IMPORT))
choice = SETUP_IMPORT;
+ else if (IsDlgButtonChecked (dlg, IDC_FIRST_CARDGEN))
+ choice = SETUP_CARDGEN;
else
choice = 0;
EndDialog (dlg, choice);
Modified: trunk/Src/wptGPGME.cpp
===================================================================
--- trunk/Src/wptGPGME.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptGPGME.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -256,9 +256,13 @@
static int
sigsum_to_index (gpgme_sigsum_t sum)
{
+ /* xxx: gpgme should set _valid if the sig is good but the
+ key has been expired; check the code */
+ if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_SIG_EXPIRED))
+ return 8;
if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_KEY_REVOKED))
return 7;
- if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_SIG_EXPIRED))
+ if ((sum & GPGME_SIGSUM_VALID) && (sum & GPGME_SIGSUM_KEY_EXPIRED))
return 6;
if (sum & GPGME_SIGSUM_GREEN)
return 1;
@@ -281,16 +285,18 @@
_("The signature could not be checked due to a missing key"),
_("No valid OpenPGP signature"),
_("Signature Error"),
- _("Good Signature (Expired Key)"),
- _("Good Signature (Revoked Key)"),
+ _("Good signature (Expired Key)"),
+ _("Good signature (Revoked Key)"),
+ _("Good signature (Expired)"),
NULL
};
- const unsigned int mask = 8;
+ const unsigned int mask = 9;
return gpg_sigstat[sigsum_to_index (sum) % mask];
}
+/* Return true if at least one secret key is available. */
bool
secret_key_available (void)
{
Modified: trunk/Src/wptGPGMEWrapper.cpp
===================================================================
--- trunk/Src/wptGPGMEWrapper.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptGPGMEWrapper.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -66,6 +66,57 @@
return gpgme_get_armor (ctx)? true: false;
}
+
+/* Import the keys from the clipboard.
+ Return value: 0 on success. */
+gpgme_error_t
+GPGME::importFromClipboard (void)
+{
+ gpgme_data_t keydata = NULL;
+ gpgme_error_t err;
+
+ err = gpg_data_new_from_clipboard (&keydata, 0);
+ if (err)
+ return err;
+
+ op_begin ();
+ err = gpgme_op_import (ctx, keydata);
+ op_end ();
+
+ gpgme_data_release (keydata);
+ return err;
+}
+
+
+/* Import the keys from the file @file.
+ Return value: 0 on success. */
+gpgme_error_t
+GPGME::importFromFile (const char *file)
+{
+ gpgme_data_t keydata;
+ gpgme_error_t err;
+
+ err = gpgme_data_new_from_file (&keydata, file, 1);
+ if (err)
+ return err;
+
+ op_begin ();
+ err = gpgme_op_import (ctx, keydata);
+ op_end ();
+
+ gpgme_data_release (keydata);
+ return err;
+}
+
+
+/* Return the import result for the last GPG operation. */
+gpgme_import_result_t
+GPGME::importGetResult (void)
+{
+ return gpgme_op_import_result (ctx);
+}
+
+
/* Export key pattern @patt to file @outfile.
Return value: 0 on success. */
gpgme_error_t
Modified: trunk/Src/wptHTTP.cpp
===================================================================
--- trunk/Src/wptHTTP.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptHTTP.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -33,7 +33,6 @@
#include "wptTypes.h"
#include "wptErrors.h"
-#define free_if_malloc(buf) if ((buf)) { free ((buf)); (buf) = NULL; }
/* Empty constructur to allow advanced requests. */
wHTTP::wHTTP (void)
@@ -85,8 +84,8 @@
int
wHTTP::head (const char *_url)
{
- free_if_malloc (host);
- free_if_malloc (url);
+ safe_free (host);
+ safe_free (url);
extractHostInfo (_url, &this->host, &this->url);
method = HTTP_HEAD;
@@ -102,8 +101,8 @@
int
wHTTP::get (const char *_url)
{
- free_if_malloc (host);
- free_if_alloc (url);
+ safe_free (host);
+ safe_free (url);
extractHostInfo (_url, &this->host, &this->url);
@@ -278,8 +277,10 @@
break;
}
n = recv (fd, &c, 1, 0);
- if (n == -1)
+ if (n == -1) {
+ this->error = (int)WSAGetLastError ();
break;
+ }
if (n == 0 || nbuf == 0 || c == '\n') {
if (n == 0) {
if (eof)
@@ -330,7 +331,7 @@
*_host = strdup (p);
p = strchr (_url, '/');
if (!p) {
- free_if_malloc (*_host);
+ safe_free (*_host);
return WPTERR_GENERAL;
}
*new_url = strdup (p);
@@ -348,7 +349,7 @@
p = (char*) malloc (strlen (name)+strlen (val)+strlen (fmt)+4);
sprintf (p, fmt, name, val);
addHeader (&req_headers, p);
- free_if_malloc (p);
+ safe_free (p);
return 0;
}
@@ -416,7 +417,7 @@
}
strcat (p, "\r\n");
n = send (fd, p, strlen (p), 0);
- free_if_malloc (p);
+ safe_free (p);
return n > 0? 0 : WPTERR_GENERAL;
}
@@ -469,8 +470,10 @@
if (strnicmp (val, "text", 4)) { /* binary */
do {
n = recv (fd, buf, nlen > 1024? 1024 : nlen, 0);
- if (n == -1)
+ if (n == -1) {
+ this->error = (int)WSAGetLastError ();
return SOCKET_ERROR;
+ }
if (n == 0)
break;
nlen -= n;
@@ -480,7 +483,7 @@
}
do {
- rc = readLine (buf, 1024, 1, &n, &eof);
+ rc = readLine (buf, sizeof (buf)-1, 1, &n, &eof);
if (rc)
return rc;
if (n > 0)
@@ -555,8 +558,8 @@
free (req_headers);
req_headers = h;
}
- free_if_malloc (url);
- free_if_malloc (host);
+ safe_free (url);
+ safe_free (host);
if (fd != 0) {
closesocket (fd);
fd = 0;
@@ -603,7 +606,7 @@
}
-/* Return the winsock specific error code. */
+/* Return the Winsock specific error code. */
int wHTTP::getErrorCode (void)
{
return error;
Modified: trunk/Src/wptKeyCache.cpp
===================================================================
--- trunk/Src/wptKeyCache.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptKeyCache.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -835,19 +835,21 @@
key_divert_to_card (gpgme_key_t key)
{
gpgme_subkey_t k;
- int n=0, n_alg=0;
+ int n=0;
int can_auth = 0, can_encr = 0;
for (k = key->subkeys; k; k = k->next) {
n++;
- if (k->pubkey_algo == GPGME_PK_RSA && k->length == 1024)
- n_alg++;
+ if (k->pubkey_algo != GPGME_PK_RSA || k->length != 1024) {
+ return 0;
+ break;
+ }
if (k->can_authenticate)
can_auth++;
if (k->can_encrypt)
can_encr++;
}
- if (n == 3 && n_alg == 3 && can_auth == 1 && can_encr == 1)
+ if (n >= 3 && can_auth >= 1 && can_encr >= 1)
return 1;
return 0;
}
Modified: trunk/Src/wptKeyEdit.cpp
===================================================================
--- trunk/Src/wptKeyEdit.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptKeyEdit.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -437,6 +437,14 @@
this->pass = _pass;
}
+
+/* Kludge to allow to handle admin and user PINs. */
+void
+GpgKeyEdit::setPassphrase2 (const char *_pass2)
+{
+ this->new_pass = _pass2;
+}
+
/* Set the current key to @key. */
void
GpgKeyEdit::setKey (gpgme_key_t _key)
@@ -613,6 +621,25 @@
return gpg_editkey (this->ctx, this->key, this);
}
+
+/* Add a new key on a smart card.
+ The type is given in @type. */
+gpgme_error_t
+GpgKeyEdit::addCardKey (int _type)
+{
+ if (!this->key)
+ return gpg_error (GPG_ERR_INV_OBJ);
+ if (!this->pass)
+ return gpg_error (GPG_ERR_INV_PASSPHRASE);
+ if (_type < 1 || _type > 3)
+ return gpg_error (GPG_ERR_INV_VALUE);
+
+ type = GPG_EDITKEY_ADDCARDKEY;
+ this->key_index = _type;
+ return gpg_editkey (this->ctx, this->key, this);
+}
+
+
/* Add a new subkey to the given key.
The new key will have @pubkey_algo as the algorithm
and a size of @pubkey_size bits. If valid > 0, the
Modified: trunk/Src/wptKeyEditCB.cpp
===================================================================
--- trunk/Src/wptKeyEditCB.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptKeyEditCB.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -43,6 +43,7 @@
typedef gpgme_status_code_t status_code_t;
+
/* 'notation' command handler. */
static const char*
cmd_notation_handler (GpgKeyEdit *ctx, status_code_t code, const char *key)
@@ -298,9 +299,44 @@
}
+/* 'addcardkey' command handler. */
+static const char*
+cmd_addcardkey_handler (GpgKeyEdit *ctx, status_code_t code, const char *key)
+{
+ static char buf[32];
+
+ /* XXX: actually we mix up things here, it would be better to
+ implement this in CardEditCB but because the edit-key
+ interface is used, we have to implement it here. */
+ if (!ctx->cmd_sent && !strcmp (key, "keyedit.prompt")) {
+ ctx->cmd_sent = 1;
+ return "addcardkey";
+ }
+ if (!strcmp (key, "cardedit.genkeys.subkeytype")) {
+ sprintf (buf, "%d", ctx->getKeyIndex ());
+ return buf;
+ }
+ if (!strcmp (key, "cardedit.genkeys.replace_key"))
+ return "Y"; /* better issue an extra warning? */
+ if (!strcmp (key, "passphrase.adminpin.ask"))
+ return ctx->pass;
+ if (!strcmp (key, "passphrase.pin.ask"))
+ return ctx->new_pass;
+ if (!strcmp (key, "keygen.valid")) {
+ sprintf (buf, "%d", ctx->getValidDays ());
+ return buf;
+ }
+ if (!strcmp (key, "keyedit.prompt")) {
+ ctx->reset ();
+ return "save";
+ }
+ return NULL;
+}
+
+
/* 'addkey' command handler. */
static const char*
-cmd_addkey_handler (GpgKeyEdit *ctx, gpgme_status_code_t code, const char *key)
+cmd_addkey_handler (GpgKeyEdit *ctx, status_code_t code, const char *key)
{
static char buf[64];
@@ -360,35 +396,29 @@
static const char*
-cmd_setpref_handler (GpgKeyEdit *ctx, gpgme_status_code_t code, const char * key)
+cmd_setpref_handler (GpgKeyEdit *ctx, gpgme_status_code_t code, const char *key)
{
static char buf[128] = {0};
- /* XXX: check the code. */
-#if 0
- if (!ctx->cmd_sent && !strcmp (key, "keyedit.prompt")) {
+ if (!strcmp (key, "keyedit.prompt") && !ctx->cmd_sent) {
+ _snprintf (buf, sizeof (buf)-1, "uid %d", ctx->getUseridIndex ());
ctx->cmd_sent = 1;
- return "";
+ ctx->cnt = 1;
+ return buf;
}
- if (!strcmp (key, "keyedit.prompt") && ctx->u.pref.id == 0) {
- ctx->u.pref.id++;
- _snprintf (buf, sizeof buf-1, "setpref %s", ctx->u.pref.new_prefs);
+ if (!strcmp (key, "keyedit.prompt") && ctx->cnt == 1) {
+ _snprintf (buf, sizeof buf-1, "setpref %s", ctx->new_prefs);
+ ctx->cnt = 2;
return buf;
}
- if (!strcmp (key, "keyedit.prompt") && ctx->u.pref.id == 1) {
- ctx->u.pref.id++;
- return "updpref";
- }
- if (!strcmp (key, "keyedit.updpref.okay"))
+ if (!strcmp (key, "keyedit.setpref.okay"))
return "Y";
if (!strcmp (key, "passphrase.enter"))
- return ctx->u.pref.passwd;
- if (!strcmp (key, "keyedit.prompt") && ctx->u.pref.id == 2) {
- ctx->u.pref.id = 0;
+ return ctx->pass;
+ if (!strcmp (key, "keyedit.prompt") && ctx->cnt == 2) {
ctx->reset ();
return "save";
}
-#endif
return buf;
}
@@ -399,7 +429,7 @@
const char *key)
{
static char buf[64];
-
+
if (ctx->cnt == 0 && !strcmp (key, "keyedit.prompt")) {
sprintf (buf, "uid %d", ctx->getUseridIndex ());
ctx->cnt = 1;
@@ -765,7 +795,7 @@
break;
case GPG_EDITKEY_DELSIG:
- out = cmd_delsig_handler (ke, code, key);
+ out = cmd_delsig_handler (ke, code, key);
break;
case GPG_EDITKEY_DELKEY:
@@ -773,8 +803,12 @@
break;
case GPG_EDITKEY_ADDKEY:
- out = cmd_addkey_handler (ke, code, key);
+ out = cmd_addkey_handler (ke, code, key);
break;
+
+ case GPG_EDITKEY_ADDCARDKEY:
+ out = cmd_addcardkey_handler (ke, code, key);
+ break;
case GPG_EDITKEY_PASSWD:
out = cmd_passwd_handler (ke, code, key);
Modified: trunk/Src/wptKeyManager.cpp
===================================================================
--- trunk/Src/wptKeyManager.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptKeyManager.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -247,10 +247,10 @@
/* Create a string that contain all keyids from
the key list @rset separated by a space. */
char*
-gpg_keylist_to_pattern (gpgme_key_t *rset, int n)
+gpg_keylist_to_pattern (gpgme_key_t *rset, size_t n)
{
char *p;
- int i;
+ size_t i;
if (!n)
return NULL;
@@ -274,7 +274,7 @@
GPGME *ctx;
char *patt=NULL;
char buf[256];
- int n=0;
+ size_t n=0;
int rc=0;
rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
@@ -318,7 +318,7 @@
{
gpgme_key_t *rset;
gpgme_error_t err;
- int n = 0;
+ size_t n = 0;
rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
if (!n) {
@@ -340,7 +340,7 @@
log_box (_("Key Manager"), MB_OK,
_("Secret key successfully saved in '%s'."), fname);
- free (rset);
+ safe_free (rset);
return err? WPTERR_GENERAL : 0;
}
@@ -353,7 +353,7 @@
gpgme_key_t *rset;
gpgme_error_t err;
char *patt;
- int n;
+ size_t n;
rset = keylist_enum_recipients (lv, KEYLIST_LIST, &n);
if (!n) {
@@ -402,29 +402,13 @@
}
-/* Import the PGP key data from the clipboard.
- Return value: 0 on success. */
-static gpgme_error_t
-gpg_op_clip_import (gpgme_ctx_t ctx)
-{
- gpgme_error_t err = 0;
- gpgme_data_t keydata = NULL;
-
- err = gpg_data_new_from_clipboard (&keydata, 0);
- if (!err)
- err = gpgme_op_import (ctx, keydata);
-
- gpgme_data_release (keydata);
- return err;
-}
-
/* Import keys from the clipboard. */
int
km_clip_import (HWND dlg, int *r_newkeys, int *r_newsks)
{
- gpgme_error_t err;
- gpgme_ctx_t ctx = NULL;
+ gpgme_error_t err;
gpgme_import_result_t res;
+ GPGME *gpg = NULL;
fm_state_s fm_stat;
int pgptype;
int id, has_data = 0;
@@ -468,18 +452,14 @@
if (!has_data)
goto leave;
- err = gpgme_new (&ctx);
- if (err)
- BUG (NULL);
- op_begin ();
- err = gpg_op_clip_import (ctx);
- op_end ();
+ gpg = new GPGME ();
+ err = gpg->importFromClipboard ();
if (err) {
msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR);
goto leave;
}
- res = gpgme_op_import_result (ctx);
+ res = gpg->importGetResult ();
print_import_status (res);
new_keys = res->considered - res->unchanged;
new_sks = res->secret_imported - res->secret_unchanged;
@@ -490,8 +470,8 @@
}
leave:
- if (ctx)
- gpgme_release (ctx);
+ if (gpg)
+ delete gpg;
free_if_alloc (fm_stat.opaque);
if (r_newkeys)
*r_newkeys = new_keys;
@@ -509,7 +489,7 @@
{
FILE *fp;
wHTTP *hd;
- char tmpfile[500];
+ char tmpfile[MAX_PATH+64];
int rc = 0;
if (strncmp (url, "http://", 7)) {
@@ -548,12 +528,11 @@
On success an import statistics dialog is shown. */
int
km_file_import (HWND dlg, const char *fname, int *r_newkeys, int *r_newsks)
-{
- gpgme_data_t keydata = NULL;
- gpgme_ctx_t ctx;
- gpgme_error_t err;
- fm_state_s fm_stat;
+{
+ gpgme_error_t err;
gpgme_import_result_t res;
+ GPGME *gpg;
+ fm_state_s fm_stat;
const char *name;
int no_data = 0;
int new_keys = 0, new_sks = 0;
@@ -578,25 +557,14 @@
return WPTERR_GENERAL;
}
- err = gpgme_new (&ctx);
- if (err)
- BUG (NULL);
- err = gpgme_data_new_from_file (&keydata, name, 1);
+ gpg = new GPGME ();
+ err = gpg->importFromFile (name);
if (err) {
- msg_box (dlg, _("Could not read key-data from file."),
- _("Key Manager"), MB_ERR);
- goto leave;
+ msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR);
+ goto leave;
}
-
- op_begin ();
- err = gpgme_op_import (ctx, keydata);
- op_end ();
- if (err) {
- msg_box (dlg, gpgme_strerror (err), _("Key Manager"), MB_ERR);
- goto leave;
- }
- res = gpgme_op_import_result (ctx);
+ res = gpg->importGetResult ();
if (res->unchanged == res->considered &&
res->secret_unchanged == res->secret_imported)
no_data = 1;
@@ -607,9 +575,6 @@
if (res->secret_imported == 0 && fm_stat.import.has_seckey == 1)
res->secret_imported = 1;
- /* XXX: if we import a key pair but the secret key comes first,
- no_{valid}_user_id is 1 even so the public key, which comes
- later is valid and self-signed. */
print_import_status (res);
if (res->no_user_id > 0) {
msg_box (dlg, _("Key without a self signature was dectected!\n"
@@ -618,8 +583,7 @@
}
leave:
- gpgme_data_release (keydata);
- gpgme_release (ctx);
+ delete gpg;
free_if_alloc (fm_stat.opaque);
if (r_newkeys)
*r_newkeys = new_keys;
Modified: trunk/Src/wptKeylist.cpp
===================================================================
--- trunk/Src/wptKeylist.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptKeylist.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -1001,12 +1001,13 @@
fully trusted. @r_count returns the number of selected keys.
Return value: the key list on success, NULL otherwise. */
gpgme_key_t*
-keylist_get_recipients (listview_ctrl_t lv, int *r_force_trust, int *r_count)
+keylist_get_recipients (listview_ctrl_t lv, int *r_force_trust, size_t *r_count)
{
key_array_s *ka = NULL;
keycache_s *c;
gpgme_key_t *keybuf, key;
- int count = 0, force_trust = 0;
+ size_t count = 0;
+ int force_trust = 0;
int n, j, ka_pos = 0, rc = 0;
int k_pos=0;
@@ -1081,12 +1082,13 @@
gpgme_key_t*
-keylist_enum_recipients (listview_ctrl_t lv, int listype, int *r_count)
+keylist_enum_recipients (listview_ctrl_t lv, int listype, size_t *r_count)
{
struct keycache_s *c;
gpgme_key_t *rset;
gpgme_key_t key;
- int i, n, id, k_pos=0;
+ size_t k_pos = 0;
+ int i, n, id;
n = listview_count_items (lv, 0);
if (!n)
Modified: trunk/Src/wptPassphraseCB.cpp
===================================================================
--- trunk/Src/wptPassphraseCB.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptPassphraseCB.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -328,8 +328,9 @@
p = strchr (id, '/');
if (!p) {
log_debug ("extract_serial_no: error '%s'\r\n", id);
- return NULL;
+ return "";
}
+ memset (buf, 0, sizeof (buf));
strncpy (buf, id+(p-id)-6, 6);
return buf;
}
Modified: trunk/Src/wptUtil.cpp
===================================================================
--- trunk/Src/wptUtil.cpp 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/Src/wptUtil.cpp 2006-08-16 10:01:30 UTC (rev 260)
@@ -119,11 +119,11 @@
check_email_address (const char *email)
{
const char *allowed = "@._-%+;";
- size_t i;
+ size_t i, len = strlen (email);
- if (!strchr (email, '@'))
+ if (len < 3 || !strchr (email, '@'))
return -1;
- for (i=0; i < strlen (email); i++) {
+ for (i=0; i < len; i++) {
if (isxdigit (email[i]) || isalpha (email[i])
|| strchr (allowed, email[i]))
continue;
Modified: trunk/THANKS
===================================================================
--- trunk/THANKS 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/THANKS 2006-08-16 10:01:30 UTC (rev 260)
@@ -13,8 +13,12 @@
Kurt Fitzner for continuing the work on MyGPGME and for all his
suggestions and bug reports he sent to me.
-Intevation for providing the nice GForge environment and webspace.
+Achim Pietig for sponsoring OpenPGP cards and smart card related
+hardware.
+Intevation for providing the nice GForge environment,
+webspace and bandwidth.
+
And last but not least g10 Code for offering commercial support
and the resources.
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/TODO 2006-08-16 10:01:30 UTC (rev 260)
@@ -1,12 +1,9 @@
(priority: + high, * normal, - low)
-MUST items before we can release 1.0.0
-=======================================
-
-
-Finally, we are close to release 1.0.0. Make a feature freeze,
-fix all serious tracker items and do intensive tests.
-
+ * change the file manager verify error message when an expired
+ key has been used to sign a file.
+ * offer to generate a key which is stored on the smart card
+ on the first start.
* 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.
Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac 2006-08-05 10:54:52 UTC (rev 259)
+++ trunk/configure.ac 2006-08-16 10:01:30 UTC (rev 260)
@@ -15,7 +15,7 @@
# Version number: Remember to change it immediately *after* a release.
# Add a "-cvs" prefix for non-released code.
-AC_INIT(WinPT, 1.0.0pre3, http://www.winpt.org)
+AC_INIT(WinPT, 1.0.1-cvs, http://www.winpt.org)
NEED_GPG_VERSION=1.4.2
NEED_GPGME_API=1
NEED_GPGME_VERSION=1.1.1
More information about the Winpt-commits
mailing list