[Winpt-commits] r175 - in trunk: . Include Po Src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Tue Feb 7 09:58:14 CET 2006


Author: twoaday
Date: 2006-02-07 09:58:04 +0100 (Tue, 07 Feb 2006)
New Revision: 175

Added:
   trunk/Src/wptSigTreeDlg.cpp
Modified:
   trunk/Include/wptDlgs.h
   trunk/Include/wptGPG.h
   trunk/Include/wptKeyEdit.h
   trunk/Include/wptW32API.h
   trunk/NEWS
   trunk/Po/de.po
   trunk/Src/ChangeLog
   trunk/Src/Makefile.am
   trunk/Src/WinPT-en.rc
   trunk/Src/resource.h
   trunk/Src/wptClipEncryptDlg.cpp
   trunk/Src/wptClipSignDlg.cpp
   trunk/Src/wptClipSignEncDlg.cpp
   trunk/Src/wptGPG.cpp
   trunk/Src/wptGPGME.cpp
   trunk/Src/wptGPGUtil.cpp
   trunk/Src/wptImportList.cpp
   trunk/Src/wptKeyCache.cpp
   trunk/Src/wptKeyEdit.cpp
   trunk/Src/wptKeyEditDlgs.cpp
   trunk/Src/wptKeyManager.cpp
   trunk/Src/wptKeyManagerDlg.cpp
   trunk/Src/wptKeyPropsDlg.cpp
   trunk/Src/wptKeyserver.cpp
   trunk/Src/wptW32API.cpp
Log:
2006-02-04  Timo Schulz  <ts at g10code.de>
                                                                                                                            
        * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Check for
        at least one ultimately trusted key.
        * wptKeyManager.cpp (km_refresh_key_from_keyserver):
        Only check inet connection if we refresh all keys.
        * wptGPGUtil.cpp (gpg_extract_keys): New.
        * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use textmode.
        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
        * wptClipSignDlg.cpp (get_selected_key): New.
        (one_key_proc): Use it here.
        (count_useable_seckeys): New.
        * wptSigTreeDlg.cpp (sigtree_dlg_proc): New.
        * wptKeyEditDlgs.cpp (diff_time): Removed.
        (w32_mktime): New.
        (keyedit_addsubkey_dlg_proc): Use it here.
                                                                                                                            
2006-02-02  Timo Schulz  <ts at g10code.de>
                                                                                                                            
        * wptW32API.cpp (get_temp_name): New.
        * wptKeyserver.cpp (ldap_recvkey): Use it here.
        * wptKeyPropsDlg.cpp (get_photo_tmpname): Likewise.
        * wptGPGUtil.cpp (create_tempfile): Likewise.
        * wptImportList.cpp (implist_load): Likewise.
        * wptKeyCache.cpp (parse_attr_data): Likewise.
        (w32_tempfile): Removed.
        * wptGPGME.cpp (check_ultimate_trusted_key): New.
                                                                                                                            


Modified: trunk/Include/wptDlgs.h
===================================================================
--- trunk/Include/wptDlgs.h	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Include/wptDlgs.h	2006-02-07 08:58:04 UTC (rev 175)
@@ -229,13 +229,16 @@
 				    WPARAM wparam, 
 				    LPARAM lparam );
 
-BOOL CALLBACK mdsum_dlg_proc( HWND dlg, 
-			     UINT msg, 
-			     WPARAM wparam, 
-			     LPARAM lparam );
+BOOL CALLBACK mdsum_dlg_proc (HWND dlg, 
+			      UINT msg, 
+			      WPARAM wparam,
+			      LPARAM lparam);
 
+BOOL CALLBACK sigtree_dlg_proc (HWND dlg, UINT msg, 
+				WPARAM wparam, LPARAM lparam);
+
 /*-- Filemanager verify log --*/
-int file_verify_create_dlg( void );
+int file_verify_create_dlg (void);
 
 /*-- Key generation callback */
 int keygen_cb_dlg_create (void);

Modified: trunk/Include/wptGPG.h
===================================================================
--- trunk/Include/wptGPG.h	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Include/wptGPG.h	2006-02-07 08:58:04 UTC (rev 175)
@@ -1,5 +1,5 @@
 /* wptGPG.h - GnuPG interface
- *	Copyright (C) 2000-2005 Timo Schulz
+ *	Copyright (C) 2000-2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -175,6 +175,7 @@
 
 int gpg_encrypt_symmetric (void);
 const char *get_gpg_sigstat (gpgme_sigsum_t sum);
+int check_ultimate_trusted_key (void);
 
 /*-- wptGPGParser.cpp --*/
 /* find */
@@ -245,6 +246,8 @@
 			       char **r_revcert);
 gpgme_error_t gpg_decode_c_string (const char *src, char **destp, size_t len);
 gpgme_error_t gpg_import_key_list (const char *fname, char **r_out);
+gpgme_error_t gpg_extract_keys (const char *keyfile, const char **keys, DWORD nkeys,
+				char **new_keyfile);
 gpgme_error_t get_uat_validity (const char *keyid, gpgme_validity_t *r_valid);
 
 #endif /* WPT_GPG_H */

Modified: trunk/Include/wptKeyEdit.h
===================================================================
--- trunk/Include/wptKeyEdit.h	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Include/wptKeyEdit.h	2006-02-07 08:58:04 UTC (rev 175)
@@ -118,7 +118,9 @@
 
     bool isValid (void);
     void reset (void);
+
     void clear (void);
+    void clearPassphrase (void);
 
     void setPassphrase (const char *pass);
     void setKey (gpgme_key_t key);

Modified: trunk/Include/wptW32API.h
===================================================================
--- trunk/Include/wptW32API.h	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Include/wptW32API.h	2006-02-07 08:58:04 UTC (rev 175)
@@ -71,8 +71,8 @@
 char * m_strdup (const char *str);
 const char * strtimestamp (long timestamp);
 const char* get_locale_date (long tm_t, char *buf, DWORD buflen);
+int get_temp_name (char *buf, DWORD buflen, const char *name);
 
-
 #define listbox_add_string(lb, string) \
     SendMessage( (lb), LB_ADDSTRING, 0, (LPARAM)(LPCSTR)(string) )
 

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/NEWS	2006-02-07 08:58:04 UTC (rev 175)
@@ -747,3 +747,8 @@
 * Fix a problem that an unprivileged (normal) user cannot
   display photo-ids via the Key Property dialog.
 * New key selection system for encryption based dialogs.
+* Always use text mode to avoid line ending problems on
+  different OS systems.
+* Check for ultimately trusted keys and issue a warning
+  if appropriate.
+  
\ No newline at end of file

Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Po/de.po	2006-02-07 08:58:04 UTC (rev 175)
@@ -15,7 +15,7 @@
 msgstr ""
 "Project-Id-Version: WinPT 0.11.6\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-01-30 22:56+0100\n"
+"POT-Creation-Date: 2006-02-06 20:54+0100\n"
 "PO-Revision-Date: 2005-12-28 16:10+0100\n"
 "Last-Translator: Timo Schulz <ts at g10code.de>\n"
 "Language-Team: DE <twoaday at freakmail.de>\n"
@@ -32,8 +32,8 @@
 #: Src/WinPT.cpp:523 Src/WinPT.cpp:527 Src/WinPT.cpp:544 Src/WinPT.cpp:614
 #: Src/WinPT.cpp:627 Src/WinPT.cpp:674 Src/WinPT.cpp:700 Src/WinPT.cpp:718
 #: Src/wptErrors.cpp:141 Src/wptGPG.cpp:912 Src/wptGPG.cpp:923
-#: Src/wptGPG.cpp:932 Src/wptGPG.cpp:942 Src/wptMainProc.cpp:345
-#: Src/wptMainProc.cpp:527
+#: Src/wptGPG.cpp:932 Src/wptGPG.cpp:942 Src/wptMainProc.cpp:346
+#: Src/wptMainProc.cpp:530
 msgid "WinPT Error"
 msgstr "WinPT Fehler"
 
@@ -169,11 +169,12 @@
 "%s: public key not found."
 msgstr ""
 "Standardschlüssel (in der GPG Config-Datei) nicht gefunden.\n"
-"Bitte überprüfen Sie die gpg.conf oder setzen Sie einen neuen Standardschlüssel um das Problem zu beheben:\n"
+"Bitte überprüfen Sie die gpg.conf oder setzen Sie einen neuen "
+"Standardschlüssel um das Problem zu beheben:\n"
 "\n"
 "%s: Öffentlicher Schlüssel nicht gefunden."
 
-#: Src/wptAboutDlgs.cpp:53 Src/wptAboutDlgs.cpp:143
+#: Src/wptAboutDlgs.cpp:53 Src/wptAboutDlgs.cpp:136
 msgid "About the GNU Privacy Guard"
 msgstr "Über den GNU Privacy Guard"
 
@@ -181,29 +182,29 @@
 msgid "About GnuPG"
 msgstr "Über GnuPG"
 
-#: Src/wptAboutDlgs.cpp:97 Src/wptKeyManagerDlg.cpp:1751
-#: Src/wptMainProc.cpp:576
+#: Src/wptAboutDlgs.cpp:94 Src/wptKeyManagerDlg.cpp:1756
+#: Src/wptMainProc.cpp:579
 msgid "About WinPT"
 msgstr "Über WinPT"
 
-#: Src/wptAboutDlgs.cpp:98
+#: Src/wptAboutDlgs.cpp:95
 msgid "Warranty"
 msgstr "Gewährleistung"
 
-#: Src/wptAboutDlgs.cpp:100
+#: Src/wptAboutDlgs.cpp:97
 msgid "A free open source privacy tray for Windows based on GnuPG."
 msgstr "Ein freies OpenSource Privacy Tool für Windows basierend auf GnuPG."
 
-#: Src/wptAboutDlgs.cpp:102
+#: Src/wptAboutDlgs.cpp:99
 msgid "For more information you can visit the homepage: http://www.winpt.org"
 msgstr "Mehr Informationen können Sie die auf http://www.winpt.org bekommen"
 
-#: Src/wptAboutDlgs.cpp:104
+#: Src/wptAboutDlgs.cpp:101
 msgid "Please report any BUGS or suggestions for WinPT to <winpt at freakmail.de>"
 msgstr ""
 "Bitte melden Sie Fehler oder Anregungen zu WinPT an <winpt at freakmail.de>"
 
-#: Src/wptAboutDlgs.cpp:106
+#: Src/wptAboutDlgs.cpp:103
 msgid ""
 "WinPT is free software; you can redistribute it and/or modify it under the "
 "terms of the GNU General Public License as published by the Free Software "
@@ -215,7 +216,7 @@
 "weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder "
 "(nach Ihrer Option) jeder späteren Version."
 
-#: Src/wptAboutDlgs.cpp:111
+#: Src/wptAboutDlgs.cpp:108
 msgid ""
 "WinPT is distributed in the hope that it will be useful, but WITHOUT ANY "
 "WARRANTY; without even the implied warranty of MERCHANTABLITY or FITNESS FOR "
@@ -226,17 +227,17 @@
 "Nähere Details entnehmen Sie bitte der General Public License."
 
 # c:\oss\winpt-gpgme\src\wptAboutDlgs.cpp:97
-#: Src/wptAboutDlgs.cpp:115
+#: Src/wptAboutDlgs.cpp:112
 msgid "&About GPG..."
 msgstr "Über &GPG"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:700
-#: Src/wptAboutDlgs.cpp:116 Src/wptKeyEditDlgs.cpp:1935
+#: Src/wptAboutDlgs.cpp:113 Src/wptKeyEditDlgs.cpp:1953
 #: Src/wptKeyManagerDlg.cpp:963
 msgid "&Help"
 msgstr "&Hilfe"
 
-#: Src/wptCardDlg.cpp:136 Src/wptCardDlg.cpp:161 Src/wptMainProc.cpp:399
+#: Src/wptCardDlg.cpp:136 Src/wptCardDlg.cpp:161 Src/wptMainProc.cpp:402
 msgid "Card Manager"
 msgstr "Kartenmanager"
 
@@ -317,7 +318,7 @@
 "Diese Operation wird die Schlüssel auf der Karte überschreiben.\n"
 "Trotzdem fortfahren?"
 
-#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:503
+#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:505
 msgid "&Name"
 msgstr "&Name"
 
@@ -333,7 +334,7 @@
 msgid "Off-card passphrase"
 msgstr "\"Off-card\" Passwort"
 
-#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:641 Src/wptKeygenDlg.cpp:382
+#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:382
 msgid "&Never"
 msgstr "&Niemals"
 
@@ -349,7 +350,7 @@
 msgid "Make off-card backup of encryption key"
 msgstr "Externes Backup des Verschlüsselungs-Schlüssel"
 
-#: Src/wptCardDlg.cpp:608 Src/wptKeyManagerDlg.cpp:1645
+#: Src/wptCardDlg.cpp:608 Src/wptKeyManagerDlg.cpp:1650
 msgid "Card Key Generation"
 msgstr "Karten-Schlüsselerzeugung"
 
@@ -378,7 +379,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
 
-#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1334
+#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1340
 msgid "The date you have chosen lies in the past."
 msgstr "Das gewählte Datum ist in der Vergangenheit."
 
@@ -474,10 +475,10 @@
 msgstr ""
 "Ungültige OpenPGP Nachricht  (vielleicht: \"quoted printable\" im Armorteil)."
 
-#: Src/wptClipDecryptDlg.cpp:164 Src/wptClipEncryptDlg.cpp:206
-#: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:229
-#: Src/wptClipSignEncDlg.cpp:197 Src/wptKeyManager.cpp:329
-#: Src/wptKeyManager.cpp:798 Src/wptKeyManager.cpp:998 Src/wptSymEnc.cpp:90
+#: Src/wptClipDecryptDlg.cpp:164 Src/wptClipEncryptDlg.cpp:207
+#: Src/wptClipSignDlg.cpp:122 Src/wptClipSignDlg.cpp:262
+#: Src/wptClipSignEncDlg.cpp:198 Src/wptKeyManager.cpp:329
+#: Src/wptKeyManager.cpp:792 Src/wptKeyManager.cpp:979 Src/wptSymEnc.cpp:90
 msgid "GnuPG Status: Finished"
 msgstr "GnuPG-Status: Abgeschlossen"
 
@@ -517,10 +518,10 @@
 
 #: Src/wptClipEditDlg.cpp:58 Src/wptClipEditDlg.cpp:111
 #: Src/wptClipEditDlg.cpp:119 Src/wptClipEditDlg.cpp:158
-#: Src/wptClipEditDlg.cpp:167 Src/wptClipEditDlg.cpp:245
-#: Src/wptClipEditDlg.cpp:250 Src/wptFileManagerDlg.cpp:211
+#: Src/wptClipEditDlg.cpp:167 Src/wptClipEditDlg.cpp:238
+#: Src/wptClipEditDlg.cpp:243 Src/wptFileManagerDlg.cpp:211
 #: Src/wptMainProc.cpp:159 Src/wptMainProc.cpp:227 Src/wptMainProc.cpp:270
-#: Src/wptMainProc.cpp:428 Src/wptMainProc.cpp:509 Src/wptMainProc.cpp:513
+#: Src/wptMainProc.cpp:431 Src/wptMainProc.cpp:512 Src/wptMainProc.cpp:516
 msgid "Clipboard"
 msgstr "Zwischenablage"
 
@@ -549,61 +550,61 @@
 "\"%s\" existiert bereits.\n"
 "Vorhandene Datei überschreiben?"
 
-#: Src/wptClipEditDlg.cpp:196 Src/wptMainProc.cpp:169 Src/wptMainProc.cpp:235
-#: Src/wptMainProc.cpp:570
+#: Src/wptClipEditDlg.cpp:194 Src/wptMainProc.cpp:169 Src/wptMainProc.cpp:235
+#: Src/wptMainProc.cpp:573
 msgid "Clipboard Editor"
 msgstr "Zwischenablagen-Editor"
 
-#: Src/wptClipEditDlg.cpp:197
+#: Src/wptClipEditDlg.cpp:195
 msgid "&Copy"
 msgstr "&Kopieren"
 
-#: Src/wptClipEditDlg.cpp:198
+#: Src/wptClipEditDlg.cpp:196
 msgid "Clea&r"
 msgstr "&Löschen"
 
-#: Src/wptClipEditDlg.cpp:199 Src/wptGPGOptDlg.cpp:53
+#: Src/wptClipEditDlg.cpp:197 Src/wptGPGOptDlg.cpp:53
 #: Src/wptTextInputDlg.cpp:85
 msgid "&Load"
 msgstr "&Laden"
 
-#: Src/wptClipEditDlg.cpp:200 Src/wptClipVerifyDlg.cpp:158
+#: Src/wptClipEditDlg.cpp:198 Src/wptClipVerifyDlg.cpp:158
 #: Src/wptFileVerifyDlg.cpp:52 Src/wptGPGOptDlg.cpp:52
 msgid "&Save"
 msgstr "&Speichern"
 
-#: Src/wptClipEditDlg.cpp:201
+#: Src/wptClipEditDlg.cpp:199
 msgid "Add quotes"
 msgstr "'>' hinzufügen"
 
-#: Src/wptClipEditDlg.cpp:202 Src/wptKeyEditDlgs.cpp:1934
+#: Src/wptClipEditDlg.cpp:200 Src/wptKeyEditDlgs.cpp:1952
 #: Src/wptKeyserverDlg.cpp:610 Src/wptMDSumDlg.cpp:104
 #: Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
 msgstr "&Schliessen"
 
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:108
-#: Src/wptClipEncryptDlg.cpp:111
+#: Src/wptClipEncryptDlg.cpp:112
 msgid "Recipients unsuable for encryption:\n"
 msgstr "Empfänger nicht geeignet für Verschlüsselung\n"
 
-#: Src/wptClipEncryptDlg.cpp:119 Src/wptClipEncryptDlg.cpp:140
-#: Src/wptClipEncryptDlg.cpp:192 Src/wptClipEncryptDlg.cpp:199
-#: Src/wptClipEncryptDlg.cpp:230 Src/wptMainProc.cpp:141
+#: Src/wptClipEncryptDlg.cpp:120 Src/wptClipEncryptDlg.cpp:141
+#: Src/wptClipEncryptDlg.cpp:193 Src/wptClipEncryptDlg.cpp:200
+#: Src/wptClipEncryptDlg.cpp:231 Src/wptMainProc.cpp:141
 #: Src/wptMainProc.cpp:209
 msgid "Encryption"
 msgstr "Verschlüsseln"
 
-#: Src/wptClipEncryptDlg.cpp:141
+#: Src/wptClipEncryptDlg.cpp:142
 msgid "&Find"
 msgstr "&Suche"
 
-#: Src/wptClipEncryptDlg.cpp:142 Src/wptClipSignEncDlg.cpp:112
+#: Src/wptClipEncryptDlg.cpp:143 Src/wptClipSignEncDlg.cpp:113
 #: Src/wptCommonDlg.cpp:68 Src/wptFileManagerDlg.cpp:84
 #: Src/wptFileManagerDlg.cpp:217 Src/wptFileManagerDlg.cpp:285
 #: Src/wptFileSaveDlg.cpp:58 Src/wptFirstRunDlg.cpp:47
-#: Src/wptKeyEditDlgs.cpp:331 Src/wptKeyEditDlgs.cpp:431
-#: Src/wptKeyEditDlgs.cpp:506 Src/wptKeyEditDlgs.cpp:642
+#: Src/wptKeyEditDlgs.cpp:333 Src/wptKeyEditDlgs.cpp:433
+#: Src/wptKeyEditDlgs.cpp:508 Src/wptKeyEditDlgs.cpp:641
 #: Src/wptKeyEditOwnertrustDlg.cpp:67 Src/wptKeygenDlg.cpp:383
 #: Src/wptKeygenDlg.cpp:546 Src/wptKeyRevokeDlg.cpp:101
 #: Src/wptKeyserverDlg.cpp:542 Src/wptKeyserverSearchDlg.cpp:68
@@ -613,12 +614,12 @@
 msgid "&Cancel"
 msgstr "&Abbrechen"
 
-#: Src/wptClipEncryptDlg.cpp:192 Src/wptClipSignEncDlg.cpp:157
+#: Src/wptClipEncryptDlg.cpp:193 Src/wptClipSignEncDlg.cpp:158
 msgid "You must select at least one key."
 msgstr "Sie müssen wenigstens einen Schlüssel auswählen."
 
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:229
-#: Src/wptClipEncryptDlg.cpp:230
+#: Src/wptClipEncryptDlg.cpp:231
 #, c-format
 msgid "No recipient found with '%s'"
 msgstr "Keine Empfaenger mit '%s' gefunden"
@@ -627,22 +628,22 @@
 msgid "Key Import Statistics"
 msgstr "Schlüsselimport-Statistiken"
 
-#: Src/wptClipSignDlg.cpp:104 Src/wptClipSignDlg.cpp:185
-#: Src/wptClipSignEncDlg.cpp:176
+#: Src/wptClipSignDlg.cpp:104 Src/wptClipSignDlg.cpp:219
+#: Src/wptClipSignEncDlg.cpp:177
 msgid "Could not get default key."
 msgstr "Konnte den Standardschlüssel nicht finden"
 
 #: Src/wptClipSignDlg.cpp:104 Src/wptClipSignDlg.cpp:112
-#: Src/wptClipSignDlg.cpp:117 Src/wptClipSignDlg.cpp:141
-#: Src/wptClipSignDlg.cpp:185 Src/wptClipSignDlg.cpp:193
-#: Src/wptClipSignDlg.cpp:212 Src/wptClipSignDlg.cpp:224
-#: Src/wptClipSignEncDlg.cpp:166 Src/wptClipSignEncDlg.cpp:176
+#: Src/wptClipSignDlg.cpp:120 Src/wptClipSignDlg.cpp:175
+#: Src/wptClipSignDlg.cpp:219 Src/wptClipSignDlg.cpp:227
+#: Src/wptClipSignDlg.cpp:246 Src/wptClipSignDlg.cpp:257
+#: Src/wptClipSignEncDlg.cpp:167 Src/wptClipSignEncDlg.cpp:177
 #: Src/wptFileManager.cpp:1086 Src/wptFileManager.cpp:1104
 #: Src/wptFileManager.cpp:1366 Src/wptMainProc.cpp:153 Src/wptMainProc.cpp:215
 msgid "Signing"
 msgstr "Signieren"
 
-#: Src/wptClipSignDlg.cpp:194
+#: Src/wptClipSignDlg.cpp:228
 #, c-format
 msgid ""
 "No key was chosen.\n"
@@ -651,22 +652,22 @@
 "Kein Schlüssel ausgewählt.\n"
 "GPG-Standard-Schlüssel '%s' benutzen?"
 
-#: Src/wptClipSignEncDlg.cpp:111 Src/wptClipSignEncDlg.cpp:158
-#: Src/wptClipSignEncDlg.cpp:185 Src/wptClipSignEncDlg.cpp:194
+#: Src/wptClipSignEncDlg.cpp:112 Src/wptClipSignEncDlg.cpp:159
+#: Src/wptClipSignEncDlg.cpp:186 Src/wptClipSignEncDlg.cpp:195
 #: Src/wptMainProc.cpp:147 Src/wptMainProc.cpp:221
 msgid "Sign & Encrypt"
 msgstr "Signieren & Verschlüsseln"
 
 # c:\oss\winpt-gpgme\src\wptClipSignEncDlg.cpp:121
-#: Src/wptClipSignEncDlg.cpp:121
+#: Src/wptClipSignEncDlg.cpp:122
 msgid "Select key for signing"
 msgstr "Schlüssel zum Signieren auswählen"
 
-#: Src/wptClipSignEncDlg.cpp:122
+#: Src/wptClipSignEncDlg.cpp:123
 msgid "Signing key:"
 msgstr "Signierer Schlüssel:"
 
-#: Src/wptClipSignEncDlg.cpp:166 Src/wptKeylist.cpp:1175
+#: Src/wptClipSignEncDlg.cpp:167 Src/wptKeylist.cpp:1179
 msgid "No key was selected."
 msgstr "Kein Schlüssel ausgewählt."
 
@@ -681,7 +682,7 @@
 #: Src/wptFileManagerDlg.cpp:550 Src/wptFileVerifyDlg.cpp:81
 #: Src/wptFileVerifyDlg.cpp:145 Src/wptMainProc.cpp:179
 #: Src/wptMainProc.cpp:245 Src/wptMainProc.cpp:257 Src/wptMainProc.cpp:265
-#: Src/wptMainProc.cpp:416
+#: Src/wptMainProc.cpp:419
 msgid "Verify"
 msgstr "Überprüfen"
 
@@ -729,33 +730,33 @@
 msgid "Please enter a valid URL."
 msgstr "Bitte eine gültige URL eingeben."
 
-#: Src/wptCommonDlg.cpp:124 Src/wptKeyEditDlgs.cpp:753
-#: Src/wptKeyEditDlgs.cpp:811 Src/wptKeyEditDlgs.cpp:849
-#: Src/wptKeyEditDlgs.cpp:861 Src/wptKeyEditDlgs.cpp:911
-#: Src/wptKeyEditDlgs.cpp:950 Src/wptKeyEditDlgs.cpp:957
-#: Src/wptKeyEditDlgs.cpp:975 Src/wptKeyEditDlgs.cpp:1024
-#: Src/wptKeyEditDlgs.cpp:1031 Src/wptKeyEditDlgs.cpp:1122
-#: Src/wptKeyEditDlgs.cpp:1128 Src/wptKeyEditDlgs.cpp:1257
-#: Src/wptKeyEditDlgs.cpp:1261 Src/wptKeyEditDlgs.cpp:1265
-#: Src/wptKeyEditDlgs.cpp:1270 Src/wptKeyEditDlgs.cpp:1306
-#: Src/wptKeyEditDlgs.cpp:1310 Src/wptKeyEditDlgs.cpp:1320
-#: Src/wptKeyEditDlgs.cpp:1335 Src/wptKeyEditDlgs.cpp:1339
-#: Src/wptKeyEditDlgs.cpp:1379 Src/wptKeyEditDlgs.cpp:1384
-#: Src/wptKeyEditDlgs.cpp:1391 Src/wptKeyEditDlgs.cpp:1397
-#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1445
-#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1457
-#: Src/wptKeyEditDlgs.cpp:1464 Src/wptKeyEditDlgs.cpp:1467
-#: Src/wptKeyEditDlgs.cpp:1505 Src/wptKeyEditDlgs.cpp:1513
-#: Src/wptKeyEditDlgs.cpp:1547 Src/wptKeyEditDlgs.cpp:1555
-#: Src/wptKeyEditDlgs.cpp:1654 Src/wptKeyEditDlgs.cpp:1687
-#: Src/wptKeyEditDlgs.cpp:1714 Src/wptKeyEditDlgs.cpp:1718
-#: Src/wptKeyEditDlgs.cpp:1727 Src/wptKeyEditDlgs.cpp:1835
-#: Src/wptKeyEditDlgs.cpp:1840 Src/wptKeyEditDlgs.cpp:1849
-#: Src/wptKeyEditDlgs.cpp:1860 Src/wptKeyEditDlgs.cpp:1864
-#: Src/wptKeyEditDlgs.cpp:1915 Src/wptKeyEditDlgs.cpp:1925
-#: Src/wptKeyEditDlgs.cpp:1936 Src/wptKeyEditDlgs.cpp:1965
-#: Src/wptKeyEditDlgs.cpp:1970 Src/wptKeyManagerDlg.cpp:991
-#: Src/wptKeyManagerDlg.cpp:1786
+#: Src/wptCommonDlg.cpp:124 Src/wptKeyEditDlgs.cpp:756
+#: Src/wptKeyEditDlgs.cpp:814 Src/wptKeyEditDlgs.cpp:852
+#: Src/wptKeyEditDlgs.cpp:865 Src/wptKeyEditDlgs.cpp:915
+#: Src/wptKeyEditDlgs.cpp:955 Src/wptKeyEditDlgs.cpp:962
+#: Src/wptKeyEditDlgs.cpp:980 Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1036 Src/wptKeyEditDlgs.cpp:1127
+#: Src/wptKeyEditDlgs.cpp:1133 Src/wptKeyEditDlgs.cpp:1262
+#: Src/wptKeyEditDlgs.cpp:1266 Src/wptKeyEditDlgs.cpp:1270
+#: Src/wptKeyEditDlgs.cpp:1275 Src/wptKeyEditDlgs.cpp:1312
+#: Src/wptKeyEditDlgs.cpp:1316 Src/wptKeyEditDlgs.cpp:1326
+#: Src/wptKeyEditDlgs.cpp:1341 Src/wptKeyEditDlgs.cpp:1345
+#: Src/wptKeyEditDlgs.cpp:1385 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptKeyEditDlgs.cpp:1397 Src/wptKeyEditDlgs.cpp:1403
+#: Src/wptKeyEditDlgs.cpp:1408 Src/wptKeyEditDlgs.cpp:1451
+#: Src/wptKeyEditDlgs.cpp:1456 Src/wptKeyEditDlgs.cpp:1463
+#: Src/wptKeyEditDlgs.cpp:1470 Src/wptKeyEditDlgs.cpp:1473
+#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1519
+#: Src/wptKeyEditDlgs.cpp:1553 Src/wptKeyEditDlgs.cpp:1561
+#: Src/wptKeyEditDlgs.cpp:1660 Src/wptKeyEditDlgs.cpp:1693
+#: Src/wptKeyEditDlgs.cpp:1720 Src/wptKeyEditDlgs.cpp:1724
+#: Src/wptKeyEditDlgs.cpp:1733 Src/wptKeyEditDlgs.cpp:1852
+#: Src/wptKeyEditDlgs.cpp:1857 Src/wptKeyEditDlgs.cpp:1866
+#: Src/wptKeyEditDlgs.cpp:1878 Src/wptKeyEditDlgs.cpp:1882
+#: Src/wptKeyEditDlgs.cpp:1933 Src/wptKeyEditDlgs.cpp:1943
+#: Src/wptKeyEditDlgs.cpp:1954 Src/wptKeyEditDlgs.cpp:1983
+#: Src/wptKeyEditDlgs.cpp:1988 Src/wptKeyManagerDlg.cpp:991
+#: Src/wptKeyManagerDlg.cpp:1791
 msgid "Key Edit"
 msgstr "Schlüssel bearbeiten"
 
@@ -772,8 +773,8 @@
 msgid "No"
 msgstr "&Nein"
 
-#: Src/wptCommonDlg.cpp:215 Src/wptKeyEditDlgs.cpp:231
-#: Src/wptKeyEditDlgs.cpp:1088
+#: Src/wptCommonDlg.cpp:215 Src/wptKeyEditDlgs.cpp:233
+#: Src/wptKeyEditDlgs.cpp:1093
 msgid "OK"
 msgstr "OK"
 
@@ -1059,7 +1060,7 @@
 #: Src/wptFileManager.cpp:1457 Src/wptFileManager.cpp:1484
 #: Src/wptFileManager.cpp:1503 Src/wptFileManager.cpp:1761
 #: Src/wptFileManager.cpp:1823 Src/wptFileManagerDlg.cpp:497
-#: Src/wptFileStatDlg.cpp:137 Src/wptMainProc.cpp:397 Src/wptMDSumDlg.cpp:153
+#: Src/wptFileStatDlg.cpp:137 Src/wptMainProc.cpp:400 Src/wptMDSumDlg.cpp:153
 msgid "File Manager"
 msgstr "Dateimanager"
 
@@ -1090,12 +1091,12 @@
 "\n"
 "Möchten Sie die Kompression ausschalten?"
 
-#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1011
+#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1016
 #: Src/wptVerifyList.cpp:98 Src/wptVerifyList.cpp:106
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1114
+#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1119
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:73
 #: Src/wptVerifyList.cpp:97
 msgid "Name"
@@ -1138,17 +1139,17 @@
 
 #: Src/wptFileManager.cpp:1118 Src/wptFileManager.cpp:1402
 #: Src/wptFileManagerDlg.cpp:548 Src/wptMainProc.cpp:197
-#: Src/wptMainProc.cpp:413 Src/wptMainProc.cpp:420
+#: Src/wptMainProc.cpp:416 Src/wptMainProc.cpp:423
 msgid "Sign"
 msgstr "Signieren"
 
 #: Src/wptFileManager.cpp:1131 Src/wptFileManagerDlg.cpp:546
-#: Src/wptMainProc.cpp:412 Src/wptMainProc.cpp:417
+#: Src/wptMainProc.cpp:415 Src/wptMainProc.cpp:420
 msgid "Encrypt"
 msgstr "Verschlüsseln"
 
 #: Src/wptFileManager.cpp:1158 Src/wptFileManager.cpp:1189
-#: Src/wptFileManager.cpp:1194 Src/wptMainProc.cpp:411
+#: Src/wptFileManager.cpp:1194 Src/wptMainProc.cpp:414
 msgid "Symmetric"
 msgstr "Symmetrisch"
 
@@ -1224,11 +1225,11 @@
 msgstr "Ungültiger Dateiname. Abbruch"
 
 #: Src/wptFileManager.cpp:1654 Src/wptFileManager.cpp:1665
-#: Src/wptFileManagerDlg.cpp:242 Src/wptImportList.cpp:414
-#: Src/wptImportList.cpp:421 Src/wptImportList.cpp:430
-#: Src/wptImportList.cpp:438 Src/wptImportList.cpp:447
+#: Src/wptFileManagerDlg.cpp:242 Src/wptImportList.cpp:413
+#: Src/wptImportList.cpp:419 Src/wptImportList.cpp:429
+#: Src/wptImportList.cpp:437 Src/wptImportList.cpp:446
 #: Src/wptKeyManager.cpp:501 Src/wptKeyManager.cpp:512
-#: Src/wptKeyManager.cpp:647 Src/wptKeyserverDlg.cpp:229
+#: Src/wptKeyManager.cpp:641 Src/wptKeyserverDlg.cpp:229
 msgid "Import"
 msgstr "Importieren"
 
@@ -1254,13 +1255,13 @@
 msgid "Export"
 msgstr "Exportieren"
 
-#: Src/wptFileManager.cpp:1696 Src/wptKeyManagerDlg.cpp:1709
-#: Src/wptKeyManagerDlg.cpp:1743
+#: Src/wptFileManager.cpp:1696 Src/wptKeyManagerDlg.cpp:1714
+#: Src/wptKeyManagerDlg.cpp:1748
 msgid "Choose Name for Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptFileManager.cpp:1715 Src/wptKeyEditDlgs.cpp:990
-#: Src/wptKeyEditDlgs.cpp:1287 Src/wptKeyEditDlgs.cpp:1358
+#: Src/wptFileManager.cpp:1715 Src/wptKeyEditDlgs.cpp:995
+#: Src/wptKeyEditDlgs.cpp:1292 Src/wptKeyEditDlgs.cpp:1364
 #: Src/wptKeyserverDlg.cpp:106
 msgid "GnuPG status"
 msgstr "GnuPG Status"
@@ -1379,13 +1380,13 @@
 msgid "Options"
 msgstr "Optionen"
 
-#: Src/wptFileManagerDlg.cpp:330 Src/wptKeyEditDlgs.cpp:1261
-#: Src/wptKeyEditDlgs.cpp:1310 Src/wptKeyEditDlgs.cpp:1384
-#: Src/wptKeyManager.cpp:716 Src/wptKeyManager.cpp:817
-#: Src/wptKeyManager.cpp:854 Src/wptKeyManagerDlg.cpp:1490
-#: Src/wptKeyManagerDlg.cpp:1510 Src/wptKeyManagerDlg.cpp:1544
-#: Src/wptKeyManagerDlg.cpp:1563 Src/wptKeyManagerDlg.cpp:1583
-#: Src/wptKeyManagerDlg.cpp:1699 Src/wptKeyManagerDlg.cpp:1718
+#: Src/wptFileManagerDlg.cpp:330 Src/wptKeyEditDlgs.cpp:1266
+#: Src/wptKeyEditDlgs.cpp:1316 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptKeyManager.cpp:710 Src/wptKeyManager.cpp:811
+#: Src/wptKeyManager.cpp:847 Src/wptKeyManagerDlg.cpp:1495
+#: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1549
+#: Src/wptKeyManagerDlg.cpp:1568 Src/wptKeyManagerDlg.cpp:1588
+#: Src/wptKeyManagerDlg.cpp:1704 Src/wptKeyManagerDlg.cpp:1723
 #: Src/wptKeyserverSearchDlg.cpp:132
 msgid "Please select a key."
 msgstr "Bitte Schlüssel wählen."
@@ -1399,7 +1400,7 @@
 msgid "%d Object(s) marked"
 msgstr "%d Objekt(e) markiert"
 
-#: Src/wptFileManagerDlg.cpp:464 Src/wptMainProc.cpp:540
+#: Src/wptFileManagerDlg.cpp:464 Src/wptMainProc.cpp:543
 msgid "File Manager (use drag & drop to add files)"
 msgstr "Dateimanager (Drag & Drop möglich)"
 
@@ -1434,7 +1435,7 @@
 msgstr "&Signieren"
 
 #: Src/wptFileManagerDlg.cpp:474 Src/wptFileManagerDlg.cpp:549
-#: Src/wptMainProc.cpp:414 Src/wptMainProc.cpp:418
+#: Src/wptMainProc.cpp:417 Src/wptMainProc.cpp:421
 msgid "Sign && Encrypt"
 msgstr "Signieren && Verschlüsseln"
 
@@ -1457,7 +1458,7 @@
 # msgid "Executable Files (*.exe)"
 # msgstr ""
 # XXX \0\0 problem again
-#: Src/wptFileManagerDlg.cpp:479 Src/wptMainProc.cpp:410
+#: Src/wptFileManagerDlg.cpp:479 Src/wptMainProc.cpp:413
 msgid "Exit"
 msgstr "Beenden"
 
@@ -1606,7 +1607,7 @@
 msgid "Could not reset read-only state."
 msgstr "Konnte den Read-Only Zustand nicht zurücksetzen."
 
-#: Src/wptGPG.cpp:839 Src/wptGPG.cpp:1119 Src/wptGPG.cpp:1128
+#: Src/wptGPG.cpp:839 Src/wptGPG.cpp:1118 Src/wptGPG.cpp:1127
 msgid "GPG Error"
 msgstr "GPG Fehler"
 
@@ -1632,8 +1633,8 @@
 #: Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
 #: Src/wptGPGPrefsDlg.cpp:233 Src/wptGPGPrefsDlg.cpp:238
 #: Src/wptGPGPrefsDlg.cpp:244 Src/wptGPGPrefsDlg.cpp:258
-#: Src/wptKeyEditDlgs.cpp:1661 Src/wptKeyManagerDlg.cpp:956
-#: Src/wptMainProc.cpp:430 Src/wptPreferencesDlg.cpp:209
+#: Src/wptKeyEditDlgs.cpp:1667 Src/wptKeyManagerDlg.cpp:956
+#: Src/wptMainProc.cpp:433 Src/wptPreferencesDlg.cpp:209
 #: Src/wptPreferencesDlg.cpp:252 Src/wptPreferencesDlg.cpp:263
 #: Src/wptPreferencesDlg.cpp:275 Src/wptPreferencesDlg.cpp:308
 #: Src/wptRegistry.cpp:596
@@ -1697,7 +1698,7 @@
 msgid "Invalid backup mode %d"
 msgstr "Ungültiger Sicherungsmethode %d"
 
-#: Src/wptGPG.cpp:1118
+#: Src/wptGPG.cpp:1117
 msgid "No GPG error description available."
 msgstr "Keine GPG-Fehlerbeschreibung verfügbar."
 
@@ -1771,8 +1772,8 @@
 "Aktuelle Daten gehen verloren\n"
 "Sind Sie sicher?"
 
-#: Src/wptGPGPrefsDlg.cpp:141 Src/wptKeyManagerDlg.cpp:1671
-#: Src/wptMainProc.cpp:588
+#: Src/wptGPGPrefsDlg.cpp:141 Src/wptKeyManagerDlg.cpp:1676
+#: Src/wptMainProc.cpp:591
 msgid "GnuPG Preferences"
 msgstr "GnuPG-Einstellungen"
 
@@ -1907,71 +1908,72 @@
 #: Src/wptKeyManager.cpp:417 Src/wptKeyManager.cpp:458
 #: Src/wptKeyManager.cpp:463 Src/wptKeyManager.cpp:466
 #: Src/wptKeyManager.cpp:471 Src/wptKeyManager.cpp:477
-#: Src/wptKeyManager.cpp:482 Src/wptKeyManager.cpp:617
-#: Src/wptKeyManager.cpp:625 Src/wptKeyManager.cpp:716
-#: Src/wptKeyManager.cpp:745 Src/wptKeyManager.cpp:755
-#: Src/wptKeyManager.cpp:766 Src/wptKeyManager.cpp:792
-#: Src/wptKeyManager.cpp:817 Src/wptKeyManager.cpp:824
-#: Src/wptKeyManager.cpp:849 Src/wptKeyManager.cpp:854
-#: Src/wptKeyManager.cpp:882 Src/wptKeyManager.cpp:929
-#: Src/wptKeyManager.cpp:936 Src/wptKeyManager.cpp:996
-#: Src/wptKeyManager.cpp:1026 Src/wptKeyManagerDlg.cpp:1170
-#: Src/wptKeyManagerDlg.cpp:1188 Src/wptKeyManagerDlg.cpp:1469
-#: Src/wptKeyManagerDlg.cpp:1491 Src/wptKeyManagerDlg.cpp:1510
-#: Src/wptKeyManagerDlg.cpp:1518 Src/wptKeyManagerDlg.cpp:1528
-#: Src/wptKeyManagerDlg.cpp:1544 Src/wptKeyManagerDlg.cpp:1550
-#: Src/wptKeyManagerDlg.cpp:1563 Src/wptKeyManagerDlg.cpp:1583
-#: Src/wptKeyManagerDlg.cpp:1612 Src/wptKeyManagerDlg.cpp:1641
-#: Src/wptKeyManagerDlg.cpp:1700 Src/wptKeyManagerDlg.cpp:1718
+#: Src/wptKeyManager.cpp:482 Src/wptKeyManager.cpp:611
+#: Src/wptKeyManager.cpp:619 Src/wptKeyManager.cpp:710
+#: Src/wptKeyManager.cpp:739 Src/wptKeyManager.cpp:749
+#: Src/wptKeyManager.cpp:760 Src/wptKeyManager.cpp:786
+#: Src/wptKeyManager.cpp:811 Src/wptKeyManager.cpp:818
+#: Src/wptKeyManager.cpp:842 Src/wptKeyManager.cpp:847
+#: Src/wptKeyManager.cpp:867 Src/wptKeyManager.cpp:912
+#: Src/wptKeyManager.cpp:917 Src/wptKeyManager.cpp:977
+#: Src/wptKeyManager.cpp:1007 Src/wptKeyManagerDlg.cpp:1170
+#: Src/wptKeyManagerDlg.cpp:1183 Src/wptKeyManagerDlg.cpp:1193
+#: Src/wptKeyManagerDlg.cpp:1474 Src/wptKeyManagerDlg.cpp:1496
+#: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1523
+#: Src/wptKeyManagerDlg.cpp:1533 Src/wptKeyManagerDlg.cpp:1549
+#: Src/wptKeyManagerDlg.cpp:1555 Src/wptKeyManagerDlg.cpp:1568
+#: Src/wptKeyManagerDlg.cpp:1588 Src/wptKeyManagerDlg.cpp:1617
+#: Src/wptKeyManagerDlg.cpp:1646 Src/wptKeyManagerDlg.cpp:1705
 #: Src/wptKeyManagerDlg.cpp:1723 Src/wptKeyManagerDlg.cpp:1728
-#: Src/wptKeyManagerDlg.cpp:1815 Src/wptKeyManagerDlg.cpp:1996
-#: Src/wptKeysigDlg.cpp:93 Src/wptKeysigDlg.cpp:105 Src/wptKeysigDlg.cpp:277
-#: Src/wptKeysigDlg.cpp:354 Src/wptKeysigDlg.cpp:363 Src/wptKeysigDlg.cpp:407
-#: Src/wptMainProc.cpp:398 Src/wptMainProc.cpp:551 Src/wptMainProc.cpp:559
+#: Src/wptKeyManagerDlg.cpp:1733 Src/wptKeyManagerDlg.cpp:1820
+#: Src/wptKeyManagerDlg.cpp:2001 Src/wptKeysigDlg.cpp:93
+#: Src/wptKeysigDlg.cpp:105 Src/wptKeysigDlg.cpp:277 Src/wptKeysigDlg.cpp:354
+#: Src/wptKeysigDlg.cpp:363 Src/wptKeysigDlg.cpp:407 Src/wptMainProc.cpp:401
+#: Src/wptMainProc.cpp:554 Src/wptMainProc.cpp:562
 msgid "Key Manager"
 msgstr "Schlüsselverwaltung"
 
-#: Src/wptImportList.cpp:264 Src/wptKeyEditDlgs.cpp:227
-#: Src/wptKeyEditDlgs.cpp:1086 Src/wptKeyEditDlgs.cpp:1147
-#: Src/wptKeyEditDlgs.cpp:1396 Src/wptKeyEditDlgs.cpp:1416
-#: Src/wptKeyEditDlgs.cpp:1455 Src/wptKeyEditDlgs.cpp:1486
-#: Src/wptKeylist.cpp:392 Src/wptKeylist.cpp:426 Src/wptKeyPropsDlg.cpp:165
+#: Src/wptImportList.cpp:263 Src/wptKeyEditDlgs.cpp:229
+#: Src/wptKeyEditDlgs.cpp:1091 Src/wptKeyEditDlgs.cpp:1152
+#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1422
+#: Src/wptKeyEditDlgs.cpp:1461 Src/wptKeyEditDlgs.cpp:1492
+#: Src/wptKeylist.cpp:392 Src/wptKeylist.cpp:426 Src/wptKeyPropsDlg.cpp:163
 #: Src/wptKeysigDlg.cpp:143 Src/wptKeysigDlg.cpp:208
 msgid "Revoked"
 msgstr "Widerrufen"
 
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:229
-#: Src/wptKeyEditDlgs.cpp:1084 Src/wptKeyEditDlgs.cpp:1317
-#: Src/wptKeylist.cpp:394 Src/wptKeylist.cpp:424 Src/wptKeyPropsDlg.cpp:162
+#: Src/wptImportList.cpp:265 Src/wptKeyEditDlgs.cpp:231
+#: Src/wptKeyEditDlgs.cpp:1089 Src/wptKeyEditDlgs.cpp:1323
+#: Src/wptKeylist.cpp:394 Src/wptKeylist.cpp:424 Src/wptKeyPropsDlg.cpp:160
 #: Src/wptKeysigDlg.cpp:142 Src/wptKeysigDlg.cpp:209
 msgid "Expired"
 msgstr "Abgelaufen"
 
-#: Src/wptImportList.cpp:270
+#: Src/wptImportList.cpp:269
 msgid "secret key"
 msgstr "geheimer Schlüssel"
 
-#: Src/wptImportList.cpp:272 Src/wptKeylist.cpp:430
+#: Src/wptImportList.cpp:271 Src/wptKeylist.cpp:430
 msgid "public key"
 msgstr "öffentlicher Schlüssel"
 
-#: Src/wptImportList.cpp:303 Src/wptKeyEditDlgs.cpp:1164
+#: Src/wptImportList.cpp:302 Src/wptKeyEditDlgs.cpp:1169
 msgid "Invalid user ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:544 Src/wptKeylist.cpp:552
+#: Src/wptImportList.cpp:351 Src/wptKeylist.cpp:544 Src/wptKeylist.cpp:552
 #: Src/wptKeyManagerDlg.cpp:873 Src/wptKeyManagerDlg.cpp:942
 #: Src/wptKeyserverSearchDlg.cpp:54 Src/wptSigList.cpp:51
 #: Src/wptVerifyList.cpp:101 Src/wptVerifyList.cpp:110
 msgid "User ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptImportList.cpp:353 Src/wptKeylist.cpp:546 Src/wptKeylist.cpp:555
+#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:546 Src/wptKeylist.cpp:555
 #: Src/wptKeyManagerDlg.cpp:876 Src/wptKeyserverSearchDlg.cpp:51
 msgid "Size"
 msgstr "Größe"
 
-#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1008
+#: Src/wptImportList.cpp:353 Src/wptKeyEditDlgs.cpp:1013
 #: Src/wptKeylist.cpp:545 Src/wptKeylist.cpp:553 Src/wptKeyManagerDlg.cpp:874
 #: Src/wptKeyManagerDlg.cpp:965 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:52 Src/wptSigList.cpp:55
@@ -1979,20 +1981,20 @@
 msgid "Key ID"
 msgstr "Schlüssel-ID"
 
-#: Src/wptImportList.cpp:355 Src/wptKeyEditDlgs.cpp:1009
-#: Src/wptKeyEditDlgs.cpp:1116 Src/wptKeylist.cpp:559
+#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1014
+#: Src/wptKeyEditDlgs.cpp:1121 Src/wptKeylist.cpp:559
 #: Src/wptKeyManagerDlg.cpp:880 Src/wptKeyManagerDlg.cpp:968
 #: Src/wptKeyserverSearchDlg.cpp:53 Src/wptSigList.cpp:54
 msgid "Creation"
 msgstr "Erstellung"
 
-#: Src/wptImportList.cpp:356 Src/wptKeylist.cpp:554
+#: Src/wptImportList.cpp:355 Src/wptKeylist.cpp:554
 #: Src/wptKeyManagerDlg.cpp:875 Src/wptKeyManagerDlg.cpp:967
 msgid "Type"
 msgstr "Typ"
 
 # c:\oss\winpt-gpgme\src\wptImportList.cpp:424
-#: Src/wptImportList.cpp:429
+#: Src/wptImportList.cpp:427
 msgid ""
 "It is possible that the ASCII-Armor is damaged\n"
 "and thus a CRC error occurs."
@@ -2001,7 +2003,7 @@
 "und deshalb ein CRC Fehler auftrat."
 
 # c:\oss\winpt-gpgme\src\wptKeyCache.cpp:479
-#: Src/wptKeyCache.cpp:656
+#: Src/wptKeyCache.cpp:642
 msgid "Load GPG Keyrings..."
 msgstr "Lade GPG Keyrings"
 
@@ -2017,20 +2019,20 @@
 msgid "Key Cache"
 msgstr "Schlüssel Cache"
 
-#: Src/wptKeyEditDlgs.cpp:200
+#: Src/wptKeyEditDlgs.cpp:202
 msgid "Ultimate"
 msgstr "Absolut"
 
-#: Src/wptKeyEditDlgs.cpp:215 Src/wptKeyEditDlgs.cpp:1081
+#: Src/wptKeyEditDlgs.cpp:217 Src/wptKeyEditDlgs.cpp:1086
 #: Src/wptKeylist.cpp:235 Src/wptKeylist.cpp:354
 msgid "Never"
 msgstr "Niemals"
 
-#: Src/wptKeyEditDlgs.cpp:255
+#: Src/wptKeyEditDlgs.cpp:257
 msgid "user ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:256
+#: Src/wptKeyEditDlgs.cpp:258
 #, c-format
 msgid ""
 "Could not get key information for: \"%s\":\n"
@@ -2040,7 +2042,7 @@
 "%s"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:258
-#: Src/wptKeyEditDlgs.cpp:328
+#: Src/wptKeyEditDlgs.cpp:330
 msgid ""
 "Remember that the image is stored within your public key.  If you use a very "
 "large picture, your key will become very large as well! Keeping the image "
@@ -2051,7 +2053,7 @@
 "240x288 grosses Bild ist eine gute Größe."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:329
+#: Src/wptKeyEditDlgs.cpp:331
 msgid ""
 "Pick an image to use for your photo ID.\n"
 "The image must be a JPEG file."
@@ -2059,39 +2061,39 @@
 "Bitte ein Bild auswaehlen fuer die photo ID.\n"
 "Das Bild muss eine JPEG Datei sein."
 
-#: Src/wptKeyEditDlgs.cpp:330 Src/wptKeyEditDlgs.cpp:430
+#: Src/wptKeyEditDlgs.cpp:332 Src/wptKeyEditDlgs.cpp:432
 #: Src/wptKeysignDlg.cpp:267
 msgid "Passphrase"
 msgstr "Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:332
+#: Src/wptKeyEditDlgs.cpp:334
 msgid "Add Photo ID"
 msgstr "Photo ID hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:348
+#: Src/wptKeyEditDlgs.cpp:350
 msgid "Select Image File"
 msgstr "Bilddatei auswählen"
 
-#: Src/wptKeyEditDlgs.cpp:349
+#: Src/wptKeyEditDlgs.cpp:351
 msgid "JPEG Files (*.jpg, *.jpeg)"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:352 Src/wptKeyEditDlgs.cpp:362
-#: Src/wptKeyEditDlgs.cpp:368 Src/wptKeyEditDlgs.cpp:374
-#: Src/wptKeyEditDlgs.cpp:386 Src/wptKeyEditDlgs.cpp:876
+#: Src/wptKeyEditDlgs.cpp:354 Src/wptKeyEditDlgs.cpp:364
+#: Src/wptKeyEditDlgs.cpp:370 Src/wptKeyEditDlgs.cpp:376
+#: Src/wptKeyEditDlgs.cpp:388 Src/wptKeyEditDlgs.cpp:880
 msgid "Add Photo"
 msgstr "Foto hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:353
+#: Src/wptKeyEditDlgs.cpp:355
 #, c-format
 msgid "'%s' is not a valid JPEG file."
 msgstr "'%s' is keine gültige JPEG Datei."
 
-#: Src/wptKeyEditDlgs.cpp:362 Src/wptKeyRevokeDlg.cpp:142
+#: Src/wptKeyEditDlgs.cpp:364 Src/wptKeyRevokeDlg.cpp:142
 msgid "Please enter a file name."
 msgstr "Bitte Dateinamen eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:366
+#: Src/wptKeyEditDlgs.cpp:368
 msgid ""
 "The JPEG is really large.\n"
 "Are you sure you want to use it?"
@@ -2099,156 +2101,156 @@
 "Das JPEG ist sehr groß.\n"
 "Sind Sie sicher, dass Sie es benutzen wollen?"
 
-#: Src/wptKeyEditDlgs.cpp:374
+#: Src/wptKeyEditDlgs.cpp:376
 msgid "Please enter a passphrase."
 msgstr "Bitte ein Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:391
+#: Src/wptKeyEditDlgs.cpp:393
 msgid "Photo successfully added."
 msgstr "Foto erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:392 Src/wptKeyEditDlgs.cpp:471
-#: Src/wptKeyEditDlgs.cpp:553 Src/wptKeyEditDlgs.cpp:720
-#: Src/wptKeyEditDlgs.cpp:1418 Src/wptKeyEditDlgs.cpp:1488
-#: Src/wptKeyEditDlgs.cpp:1568 Src/wptKeyEditDlgs.cpp:1746
+#: Src/wptKeyEditDlgs.cpp:394 Src/wptKeyEditDlgs.cpp:473
+#: Src/wptKeyEditDlgs.cpp:556 Src/wptKeyEditDlgs.cpp:723
+#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1494
+#: Src/wptKeyEditDlgs.cpp:1574 Src/wptKeyEditDlgs.cpp:1752
 #: Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:612
-#: Src/wptKeyPropsDlg.cpp:363 Src/wptOwnertrustDlg.cpp:124
+#: Src/wptKeyPropsDlg.cpp:361 Src/wptOwnertrustDlg.cpp:124
 #: Src/wptOwnertrustDlg.cpp:136
 msgid "GnuPG Status"
 msgstr "GnuPG-Status"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:350
-#: Src/wptKeyEditDlgs.cpp:428
+#: Src/wptKeyEditDlgs.cpp:430
 msgid "Appointing a key as designated revoker cannot be undone."
 msgstr ""
 "Hinzufügen eines \"Revokers\" kann nicht mehr\n"
 "rückgängig gemacht werden."
 
-#: Src/wptKeyEditDlgs.cpp:429
+#: Src/wptKeyEditDlgs.cpp:431
 msgid "Public key"
 msgstr "öff. Schlüssel"
 
-#: Src/wptKeyEditDlgs.cpp:432 Src/wptKeyEditDlgs.cpp:448
-#: Src/wptKeyEditDlgs.cpp:454 Src/wptKeyEditDlgs.cpp:465
-#: Src/wptKeyEditDlgs.cpp:889
+#: Src/wptKeyEditDlgs.cpp:434 Src/wptKeyEditDlgs.cpp:450
+#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:467
+#: Src/wptKeyEditDlgs.cpp:893
 msgid "Add Revoker"
 msgstr "\"Revoker\" hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:448 Src/wptKeyEditDlgs.cpp:1450
-#: Src/wptKeyEditDlgs.cpp:1505 Src/wptKeyEditDlgs.cpp:1547
-#: Src/wptKeyEditDlgs.cpp:1687 Src/wptKeyEditDlgs.cpp:1718
-#: Src/wptKeyEditDlgs.cpp:1835
+#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1456
+#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1553
+#: Src/wptKeyEditDlgs.cpp:1693 Src/wptKeyEditDlgs.cpp:1724
+#: Src/wptKeyEditDlgs.cpp:1852
 msgid "Please select a user ID."
 msgstr "Bitte eine Benutzerkennung wählen."
 
-#: Src/wptKeyEditDlgs.cpp:454 Src/wptKeygenDlg.cpp:457
+#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeygenDlg.cpp:457
 #: Src/wptKeyRevokeDlg.cpp:150
 msgid "Please enter the passphrase."
 msgstr "Bitte das Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:470
+#: Src/wptKeyEditDlgs.cpp:472
 msgid "Revoker successfully addded."
 msgstr "Widerrufer erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:502
+#: Src/wptKeyEditDlgs.cpp:504
 msgid "Add new User ID"
 msgstr "Neue Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:504
+#: Src/wptKeyEditDlgs.cpp:506
 msgid "&Email"
 msgstr "&E-Mail"
 
-#: Src/wptKeyEditDlgs.cpp:505
+#: Src/wptKeyEditDlgs.cpp:507
 msgid "&Comment"
 msgstr "&Kommentar"
 
-#: Src/wptKeyEditDlgs.cpp:521
+#: Src/wptKeyEditDlgs.cpp:523
 msgid "Please enter a name (min. 5 chars.)"
 msgstr "Bitte Namen eingeben (mindestens 5 Zeichen)"
 
-#: Src/wptKeyEditDlgs.cpp:521 Src/wptKeyEditDlgs.cpp:525
-#: Src/wptKeyEditDlgs.cpp:530 Src/wptKeyEditDlgs.cpp:534
-#: Src/wptKeyEditDlgs.cpp:551
+#: Src/wptKeyEditDlgs.cpp:523 Src/wptKeyEditDlgs.cpp:527
+#: Src/wptKeyEditDlgs.cpp:532 Src/wptKeyEditDlgs.cpp:536
+#: Src/wptKeyEditDlgs.cpp:554
 msgid "UserID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:525
+#: Src/wptKeyEditDlgs.cpp:527
 msgid ""
 "Please enter the email address in the email field and not in the name field"
 msgstr ""
 "Bitte E-Mail-Adresse in das E-Mail-Feld und nicht in das Namensfeld eingeben"
 
-#: Src/wptKeyEditDlgs.cpp:530
+#: Src/wptKeyEditDlgs.cpp:532
 msgid "Please enter an email address."
 msgstr "Bitte eine E-Mail-Adresse eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:534
+#: Src/wptKeyEditDlgs.cpp:536
 msgid "Invalid email address."
 msgstr "Ungültige E-Mail-Adresse"
 
-#: Src/wptKeyEditDlgs.cpp:553
+#: Src/wptKeyEditDlgs.cpp:556
 msgid "user ID successfully added."
 msgstr "Benutzerkennung erfolgreich hinzugefügt"
 
-#: Src/wptKeyEditDlgs.cpp:637 Src/wptKeyEditDlgs.cpp:824
+#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:827
 msgid "Add new Subkey"
 msgstr "Neuen Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:638
+#: Src/wptKeyEditDlgs.cpp:637
 msgid "Key type"
 msgstr "Schlüssel Typ"
 
-#: Src/wptKeyEditDlgs.cpp:639
+#: Src/wptKeyEditDlgs.cpp:638
 msgid "Size in bits"
 msgstr "Größe in Bits"
 
-#: Src/wptKeyEditDlgs.cpp:640
+#: Src/wptKeyEditDlgs.cpp:639
 msgid "Key expiration"
 msgstr "Key Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:685
+#: Src/wptKeyEditDlgs.cpp:684
 msgid "Please select one entry."
 msgstr "Bitte einen Eintrag wählen."
 
-#: Src/wptKeyEditDlgs.cpp:685 Src/wptKeyEditDlgs.cpp:691
-#: Src/wptKeyEditDlgs.cpp:718 Src/wptKeyEditDlgs.cpp:807
+#: Src/wptKeyEditDlgs.cpp:684 Src/wptKeyEditDlgs.cpp:690
+#: Src/wptKeyEditDlgs.cpp:721 Src/wptKeyEditDlgs.cpp:810
 msgid "Add Subkey"
 msgstr "Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:690
+#: Src/wptKeyEditDlgs.cpp:689
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr "DSS benötigt feste Schlüssellänge von 1024. Größe geändert."
 
-#: Src/wptKeyEditDlgs.cpp:720
+#: Src/wptKeyEditDlgs.cpp:723
 msgid "Subkey successfully added."
 msgstr "Unterschlüssel erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:748 Src/wptKeyEditDlgs.cpp:807
-#: Src/wptKeyEditDlgs.cpp:876 Src/wptKeyEditDlgs.cpp:889
-#: Src/wptKeyEditDlgs.cpp:950 Src/wptKeyEditDlgs.cpp:1306
-#: Src/wptKeyEditDlgs.cpp:1379 Src/wptKeyEditDlgs.cpp:1439
-#: Src/wptKeyManagerDlg.cpp:1517
+#: Src/wptKeyEditDlgs.cpp:751 Src/wptKeyEditDlgs.cpp:810
+#: Src/wptKeyEditDlgs.cpp:880 Src/wptKeyEditDlgs.cpp:893
+#: Src/wptKeyEditDlgs.cpp:954 Src/wptKeyEditDlgs.cpp:1312
+#: Src/wptKeyEditDlgs.cpp:1385 Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyManagerDlg.cpp:1522
 msgid "There is no secret key available!"
 msgstr "Kein geheimer Schlüssel vorhanden!"
 
-#: Src/wptKeyEditDlgs.cpp:748 Src/wptKeyEditDlgs.cpp:764
+#: Src/wptKeyEditDlgs.cpp:751 Src/wptKeyEditDlgs.cpp:767
 msgid "Add user ID"
 msgstr "Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:861
+#: Src/wptKeyEditDlgs.cpp:865
 msgid "Preferred keyserver successfully set."
 msgstr "Bevorzugter Keyserver wurde erfolgreich gesetzt."
 
-#: Src/wptKeyEditDlgs.cpp:908 Src/wptKeyEditOwnertrustDlg.cpp:55
-#: Src/wptKeyPropsDlg.cpp:355
+#: Src/wptKeyEditDlgs.cpp:912 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyPropsDlg.cpp:353
 msgid "Change Ownertrust"
 msgstr "Besitzervertrauen ändern"
 
-#: Src/wptKeyEditDlgs.cpp:911 Src/wptKeyManager.cpp:232
+#: Src/wptKeyEditDlgs.cpp:915 Src/wptKeyManager.cpp:232
 msgid "Key status changed."
 msgstr "Schlüsselstatus geändert"
 
-#: Src/wptKeyEditDlgs.cpp:955
+#: Src/wptKeyEditDlgs.cpp:960
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2256,15 +2258,15 @@
 "Kann das Passwort das Schlüssels nicht ändern, da der \n"
 "Schlüssel mit dem IDEA Verschlüsselungs-Algorithmus gesichert ist."
 
-#: Src/wptKeyEditDlgs.cpp:962
+#: Src/wptKeyEditDlgs.cpp:967
 msgid "Current (old) Passphrase"
 msgstr "Aktuelles (altes) Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:966
+#: Src/wptKeyEditDlgs.cpp:971
 msgid "New Passphrase"
 msgstr "Neues Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:973 Src/wptPassphraseDlg.cpp:175
+#: Src/wptKeyEditDlgs.cpp:978 Src/wptPassphraseDlg.cpp:175
 msgid ""
 "The passphrase contains 8-bit characters.\n"
 "It is not suggested to use charset specific characters."
@@ -2272,44 +2274,44 @@
 "Das Passwort enthält 8-bit Zeichen.\n"
 "Es ist nicht zu empfehlen zeichensatzspezifische Zeichen zu benutzen."
 
-#: Src/wptKeyEditDlgs.cpp:988
+#: Src/wptKeyEditDlgs.cpp:993
 msgid "Change Passwd"
 msgstr "Passwort ändern"
 
-#: Src/wptKeyEditDlgs.cpp:990
+#: Src/wptKeyEditDlgs.cpp:995
 msgid "Passphrase successfully changed."
 msgstr "Passwort erfolgreich geändert."
 
-#: Src/wptKeyEditDlgs.cpp:1007 Src/wptKeyManagerDlg.cpp:881
+#: Src/wptKeyEditDlgs.cpp:1012 Src/wptKeyManagerDlg.cpp:881
 msgid "Description"
 msgstr "Beschreibung"
 
-#: Src/wptKeyEditDlgs.cpp:1010
+#: Src/wptKeyEditDlgs.cpp:1015
 msgid "Expires"
 msgstr "Verfällt"
 
-#: Src/wptKeyEditDlgs.cpp:1024 Src/wptKeyEditDlgs.cpp:1122
+#: Src/wptKeyEditDlgs.cpp:1029 Src/wptKeyEditDlgs.cpp:1127
 msgid "Could not find key."
 msgstr "Konnte Schlüssel nicht finden"
 
-#: Src/wptKeyEditDlgs.cpp:1031
+#: Src/wptKeyEditDlgs.cpp:1036
 msgid "No subkey(s) found."
 msgstr "Kein(e) Unterschlüssel gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1113 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
+#: Src/wptKeyEditDlgs.cpp:1118 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
 #: Src/wptKeyManagerDlg.cpp:878
 msgid "Validity"
 msgstr "Gültigkeit"
 
-#: Src/wptKeyEditDlgs.cpp:1115
+#: Src/wptKeyEditDlgs.cpp:1120
 msgid "Email"
 msgstr "Email"
 
-#: Src/wptKeyEditDlgs.cpp:1128
+#: Src/wptKeyEditDlgs.cpp:1133
 msgid "No user ID(s) found."
 msgstr "Keine Benutzerkennung(en) gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1222
+#: Src/wptKeyEditDlgs.cpp:1227
 msgid ""
 "ADDUID   \t\tadd a user ID\r\n"
 "ADDPHOTO  \t\tadd a photo ID\r\n"
@@ -2349,19 +2351,19 @@
 "SIGN\t    \t\tBenutzerkennung signieren (exportierbar)\r\n"
 "LSIGN\t    \t\tBenutzerkennung signieren (nicht-exportierbar)\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1241
+#: Src/wptKeyEditDlgs.cpp:1246
 msgid "Key Edit Help"
 msgstr "Hilfe zum Schlüssel bearbeiten"
 
-#: Src/wptKeyEditDlgs.cpp:1257
+#: Src/wptKeyEditDlgs.cpp:1262
 msgid "Primary key can not be deleted!"
 msgstr "Primärer Schlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1265
+#: Src/wptKeyEditDlgs.cpp:1270
 msgid "Primary subkey can not be deleted!"
 msgstr "Primärer Unterschlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1271
+#: Src/wptKeyEditDlgs.cpp:1276
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
@@ -2378,15 +2380,15 @@
 "\n"
 "Möchten Sie diesen Unterschlüssel wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1283
+#: Src/wptKeyEditDlgs.cpp:1288
 msgid "Delete Subkey"
 msgstr "Unterschlüssel löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1287
+#: Src/wptKeyEditDlgs.cpp:1292
 msgid "Subkey successfully deleted."
 msgstr "Unterschlüssel erfolgreich gelöscht."
 
-#: Src/wptKeyEditDlgs.cpp:1318
+#: Src/wptKeyEditDlgs.cpp:1324
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -2396,19 +2398,19 @@
 "\n"
 "Wollen Sie das Ablaufdatum ändern?"
 
-#: Src/wptKeyEditDlgs.cpp:1327 Src/wptKeyEditDlgs.cpp:1330
+#: Src/wptKeyEditDlgs.cpp:1333 Src/wptKeyEditDlgs.cpp:1336
 msgid "Key Expiration Date"
 msgstr "Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:1351
+#: Src/wptKeyEditDlgs.cpp:1357
 msgid "Expire Subkey"
 msgstr "Untschlüssel Ablauf"
 
-#: Src/wptKeyEditDlgs.cpp:1357
+#: Src/wptKeyEditDlgs.cpp:1363
 msgid "Subkey expire date successfully set."
 msgstr "Unterschlüsselablaufdatum erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:1388
+#: Src/wptKeyEditDlgs.cpp:1394
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2420,31 +2422,31 @@
 "\n"
 "Diese Funktion ist nur für das Widerrufen einzelner Unterschlüssel gedacht."
 
-#: Src/wptKeyEditDlgs.cpp:1397
+#: Src/wptKeyEditDlgs.cpp:1403
 msgid "Key already revoked."
 msgstr "Der Schlüssel ist bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1414
+#: Src/wptKeyEditDlgs.cpp:1420
 msgid "Revoke Subkey"
 msgstr "Unterschlüssel widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1418
+#: Src/wptKeyEditDlgs.cpp:1424
 msgid "Subkey successfully revoked."
 msgstr "Unterschlüssel erfolgreich widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1440
+#: Src/wptKeyEditDlgs.cpp:1446
 msgid "Revoke user ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyEditDlgs.cpp:1451
 msgid "Key has only one user ID."
 msgstr "Schlüssel hat nur eine Benutzerkennung."
 
-#: Src/wptKeyEditDlgs.cpp:1456
+#: Src/wptKeyEditDlgs.cpp:1462
 msgid "This user ID has been already revoked."
 msgstr "Diese Benutzerkennung wurde bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1462
+#: Src/wptKeyEditDlgs.cpp:1468
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2454,39 +2456,39 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich widerrufen?"
 
-#: Src/wptKeyEditDlgs.cpp:1484
+#: Src/wptKeyEditDlgs.cpp:1490
 msgid "Revoke User ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1488
+#: Src/wptKeyEditDlgs.cpp:1494
 msgid "User ID successfully revoked"
 msgstr "Benutzerkennung erfolgreich widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1565
+#: Src/wptKeyEditDlgs.cpp:1571
 msgid "Primary"
 msgstr "Primär"
 
-#: Src/wptKeyEditDlgs.cpp:1568
+#: Src/wptKeyEditDlgs.cpp:1574
 msgid "User ID successfully flagged"
 msgstr "Benutzerkennung erfolgreich gekennzeichnet"
 
-#: Src/wptKeyEditDlgs.cpp:1654
+#: Src/wptKeyEditDlgs.cpp:1660
 msgid "No preferences available."
 msgstr "Keine Präferenzen verfübar."
 
-#: Src/wptKeyEditDlgs.cpp:1660
+#: Src/wptKeyEditDlgs.cpp:1666
 msgid "MDC feature"
 msgstr "Unterstützt MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1662 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1668 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "Schlüsseleinstellungen"
 
-#: Src/wptKeyEditDlgs.cpp:1713
+#: Src/wptKeyEditDlgs.cpp:1719
 msgid "Primary user ID can not be deleted!"
 msgstr "Primäre Benutzerkennung kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1724
+#: Src/wptKeyEditDlgs.cpp:1730
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2496,40 +2498,40 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1742
+#: Src/wptKeyEditDlgs.cpp:1748
 msgid "Delete user ID"
 msgstr "Benutzerkennung löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1746
+#: Src/wptKeyEditDlgs.cpp:1752
 msgid "User ID successfully deleted"
 msgstr "Benutzerkennung erfolgreich gelöscht"
 
-#: Src/wptKeyEditDlgs.cpp:1839
+#: Src/wptKeyEditDlgs.cpp:1856
 msgid "Do you really want to make this sig exportable?"
 msgstr "Wollen Sie diese Signatur wirklich exportierbar machen?"
 
-#: Src/wptKeyEditDlgs.cpp:1860 Src/wptKeysignDlg.cpp:358
+#: Src/wptKeyEditDlgs.cpp:1878 Src/wptKeysignDlg.cpp:358
 msgid "Key successfully signed."
 msgstr "Schlüssel erfolgreich signiert."
 
-#: Src/wptKeyEditDlgs.cpp:1915
+#: Src/wptKeyEditDlgs.cpp:1933
 msgid "Could not set subkey window procedure."
 msgstr "Konnte \"subkey window procedure\" nicht setzen."
 
-#: Src/wptKeyEditDlgs.cpp:1925
+#: Src/wptKeyEditDlgs.cpp:1943
 msgid "Could not set user ID window procedure."
 msgstr "Konnte \"userID window procedure\" nicht setzen."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:1739
-#: Src/wptKeyEditDlgs.cpp:1933
+#: Src/wptKeyEditDlgs.cpp:1951
 msgid "Command>"
 msgstr "Kommando>"
 
-#: Src/wptKeyEditDlgs.cpp:1965
+#: Src/wptKeyEditDlgs.cpp:1983
 msgid "Please select a command."
 msgstr "Bitte einen Befehl auswählen."
 
-#: Src/wptKeyEditDlgs.cpp:1969
+#: Src/wptKeyEditDlgs.cpp:1987
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "Dieser Befehl kann mit PGP2 (v3) Schlüsseln nicht verwendet werden.\n"
 
@@ -2569,7 +2571,7 @@
 
 #: Src/wptKeyEditOwnertrustDlg.cpp:88 Src/wptKeyEditOwnertrustDlg.cpp:95
 #: Src/wptKeyEditOwnertrustDlg.cpp:104 Src/wptKeyManagerDlg.cpp:936
-#: Src/wptKeyManagerDlg.cpp:1767 Src/wptKeyPropsDlg.cpp:295
+#: Src/wptKeyManagerDlg.cpp:1772 Src/wptKeyPropsDlg.cpp:293
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:121
 #: Src/wptOwnertrustDlg.cpp:133
 msgid "Ownertrust"
@@ -2592,7 +2594,7 @@
 #: Src/wptKeygenDlg.cpp:421 Src/wptKeygenDlg.cpp:426 Src/wptKeygenDlg.cpp:432
 #: Src/wptKeygenDlg.cpp:439 Src/wptKeygenDlg.cpp:451 Src/wptKeygenDlg.cpp:458
 #: Src/wptKeygenDlg.cpp:493 Src/wptKeygenDlg.cpp:586
-#: Src/wptKeyManagerDlg.cpp:1632 Src/wptPassphraseDlg.cpp:94
+#: Src/wptKeyManagerDlg.cpp:1637 Src/wptPassphraseDlg.cpp:94
 msgid "Key Generation"
 msgstr "Schlüsselerzeugung"
 
@@ -2746,7 +2748,7 @@
 
 #: Src/wptKeygenDlg.cpp:545 Src/wptKeygenDlg.cpp:567 Src/wptKeygenDlg.cpp:572
 #: Src/wptKeygenDlg.cpp:578 Src/wptKeygenDlg.cpp:583 Src/wptKeygenDlg.cpp:607
-#: Src/wptKeyManagerDlg.cpp:1655
+#: Src/wptKeyManagerDlg.cpp:1660
 msgid "Key Generation Wizard"
 msgstr "Schlüsselerzeugungs-Assistent"
 
@@ -2831,7 +2833,7 @@
 msgid "Full"
 msgstr "Voll"
 
-#: Src/wptKeylist.cpp:396 Src/wptKeylist.cpp:422 Src/wptKeyPropsDlg.cpp:168
+#: Src/wptKeylist.cpp:396 Src/wptKeylist.cpp:422 Src/wptKeyPropsDlg.cpp:166
 msgid "Disabled"
 msgstr "Inaktiv"
 
@@ -2849,12 +2851,12 @@
 msgid "Trust"
 msgstr "Vertrauen"
 
-#: Src/wptKeylist.cpp:728 Src/wptPassphraseCB.cpp:112
+#: Src/wptKeylist.cpp:732 Src/wptPassphraseCB.cpp:112
 #: Src/wptVerifyList.cpp:191
 msgid "Invalid User ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptKeylist.cpp:1001
+#: Src/wptKeylist.cpp:1005
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -2869,11 +2871,11 @@
 "\n"
 "\"%s\" benutzen?"
 
-#: Src/wptKeylist.cpp:1009 Src/wptKeylist.cpp:1072
+#: Src/wptKeylist.cpp:1013 Src/wptKeylist.cpp:1076
 msgid "Recipients"
 msgstr "Empfänger"
 
-#: Src/wptKeylist.cpp:1073
+#: Src/wptKeylist.cpp:1077
 #, c-format
 msgid ""
 "KeyID %s.\n"
@@ -2882,7 +2884,7 @@
 "Schlüssel ID %s.\n"
 "Wollen Sie wirklich einen widerrufenen Schlüssel exportieren?"
 
-#: Src/wptKeylist.cpp:1175
+#: Src/wptKeylist.cpp:1179
 msgid "Secret Key List"
 msgstr "Liste der geheimen Schlüssel"
 
@@ -2932,7 +2934,7 @@
 msgid "Cannot import dash escaped OpenPGP keys."
 msgstr "Kann keine beschädigten OpenPGP-Schlüssel importieren."
 
-#: Src/wptKeyManager.cpp:510 Src/wptKeyManager.cpp:645
+#: Src/wptKeyManager.cpp:510 Src/wptKeyManager.cpp:639
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -2940,38 +2942,38 @@
 "Schlüssel ohne Eigensignatur erkannt!\n"
 "(Dieser Schlüssel ist für Verschlüsselung, etc. NICHT verwendbar)\n"
 
-#: Src/wptKeyManager.cpp:541 Src/wptKeyManager.cpp:552
-#: Src/wptKeyManager.cpp:566
+#: Src/wptKeyManager.cpp:540 Src/wptKeyManager.cpp:547
+#: Src/wptKeyManager.cpp:561
 msgid "Key Import HTTP"
 msgstr "Schlüssel Import HTTP"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:448
-#: Src/wptKeyManager.cpp:541
+#: Src/wptKeyManager.cpp:540
 #, c-format
 msgid "Invalid HTTP URL: %s"
 msgstr "Ungültige HTTP URL: %s"
 
-#: Src/wptKeyManager.cpp:592
+#: Src/wptKeyManager.cpp:586
 msgid "Choose Name of the Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptKeyManager.cpp:605
+#: Src/wptKeyManager.cpp:599
 msgid "File Import"
 msgstr "Dateiimport"
 
-#: Src/wptKeyManager.cpp:616
+#: Src/wptKeyManager.cpp:610
 msgid "Could not read key-data from file."
 msgstr "Konnte Schlüsseldaten nicht aus Datei lesen."
 
-#: Src/wptKeyManager.cpp:721
+#: Src/wptKeyManager.cpp:715
 msgid "Do you really want to confirm each key?"
 msgstr "Wollen Sie wirklich jeden Schlüssel bestätigen?"
 
-#: Src/wptKeyManager.cpp:722
+#: Src/wptKeyManager.cpp:716
 msgid "Delete Confirmation"
 msgstr "Löschen Bestätigen"
 
-#: Src/wptKeyManager.cpp:746
+#: Src/wptKeyManager.cpp:740
 #, c-format
 msgid ""
 "Do you really want to delete this key?\n"
@@ -2983,7 +2985,7 @@
 "%s"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:605
-#: Src/wptKeyManager.cpp:756
+#: Src/wptKeyManager.cpp:750
 #, c-format
 msgid ""
 "Do you really want to delete this KEY PAIR?\n"
@@ -3000,7 +3002,7 @@
 "\n"
 "%s"
 
-#: Src/wptKeyManager.cpp:763
+#: Src/wptKeyManager.cpp:757
 msgid ""
 "The actual secret key is stored on a smartcard.\n"
 "Only the public key and the secret key \n"
@@ -3010,34 +3012,34 @@
 "Nur der öffentliche Schlüssel und der Zeiger auf den geheimen\n"
 "Schlüssel werden gelöscht.\n"
 
-#: Src/wptKeyManager.cpp:825
+#: Src/wptKeyManager.cpp:819
 #, c-format
 msgid "Do you really want to send '%s' to keyserver %s?"
 msgstr "Wollen Sie '%s' wirklich zum Schlüsselserver %s senden?"
 
-#: Src/wptKeyManager.cpp:848
+#: Src/wptKeyManager.cpp:841
 msgid "Please only select one key."
 msgstr "Bitte nur einen Schlüssel auswählen."
 
-#: Src/wptKeyManager.cpp:928
+#: Src/wptKeyManager.cpp:911
+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:916
 msgid "Could not connect to keyserver, abort procedure."
 msgstr ""
 "Verbindung zum Keyserver fehlgeschlagen; Die Prozedur wird abgebrochen."
 
-#: Src/wptKeyManager.cpp:935
-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:1010
+#: Src/wptKeyManager.cpp:991
 msgid "Search"
 msgstr "Suchen"
 
-#: Src/wptKeyManager.cpp:1010
+#: Src/wptKeyManager.cpp:991
 msgid "Search for:"
 msgstr "Suche nach:"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:896
-#: Src/wptKeyManager.cpp:1021
+#: Src/wptKeyManager.cpp:1002
 #, c-format
 msgid "String pattern \"%s\" not found."
 msgstr "Zeichenkette \"%s\" nicht gefunden."
@@ -3071,7 +3073,7 @@
 msgid "Key"
 msgstr "Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:932 Src/wptKeyManagerDlg.cpp:1202
+#: Src/wptKeyManagerDlg.cpp:932 Src/wptKeyManagerDlg.cpp:1207
 msgid "Groups"
 msgstr "Gruppen"
 
@@ -3125,7 +3127,7 @@
 msgid "&List Signatures"
 msgstr "Signaturen anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:951 Src/wptKeyManagerDlg.cpp:1558
+#: Src/wptKeyManagerDlg.cpp:951 Src/wptKeyManagerDlg.cpp:1563
 #: Src/wptKeyTrustPathDlg.cpp:130
 msgid "List Trust Path"
 msgstr "Zeige Vertrauenspfad"
@@ -3252,90 +3254,96 @@
 msgid "Send to Keyserver"
 msgstr "Sende an Keyserver"
 
-#: Src/wptKeyManagerDlg.cpp:1187
+#: Src/wptKeyManagerDlg.cpp:1181
+msgid ""
+"No ultimately trusted key found.\n"
+"Please set at least one secret key to ultimate trust."
+msgstr ""
+
+#: Src/wptKeyManagerDlg.cpp:1192
 msgid "Could not set keylist window procedure."
 msgstr "Konnte \"keylist window procedure\" nicht setzen."
 
 # c:\oss\winpt-gpgme\src\wptFirstRunDlg.cpp:42
-#: Src/wptKeyManagerDlg.cpp:1305
+#: Src/wptKeyManagerDlg.cpp:1310
 msgid "Generate new key pair"
 msgstr "Neues Schlüsselpaar erzeugen"
 
-#: Src/wptKeyManagerDlg.cpp:1309
+#: Src/wptKeyManagerDlg.cpp:1314
 msgid "Search for a specific key"
 msgstr "Suche nach einem bestimmten Schlüssel"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:842
-#: Src/wptKeyManagerDlg.cpp:1313
+#: Src/wptKeyManagerDlg.cpp:1318
 msgid "Delete key from keyring"
 msgstr "Schlüssel aus Keyring löschen"
 
-#: Src/wptKeyManagerDlg.cpp:1317
+#: Src/wptKeyManagerDlg.cpp:1322
 msgid "Show key properties"
 msgstr "Schlüsseleigenschaften anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:1321
+#: Src/wptKeyManagerDlg.cpp:1326
 msgid "Sign key"
 msgstr "Signiere Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:1325
+#: Src/wptKeyManagerDlg.cpp:1330
 msgid "Copy key to clipboard"
 msgstr "Kopiere Schlüssel in Ablage"
 
-#: Src/wptKeyManagerDlg.cpp:1329
+#: Src/wptKeyManagerDlg.cpp:1334
 msgid "Paste key from clipboard"
 msgstr "Schlüssel aus Ablage einfügen"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:854
-#: Src/wptKeyManagerDlg.cpp:1333
+#: Src/wptKeyManagerDlg.cpp:1338
 msgid "Import key to keyring"
 msgstr "In Schlüsselbund importieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:858
-#: Src/wptKeyManagerDlg.cpp:1337
+#: Src/wptKeyManagerDlg.cpp:1342
 msgid "Export key to a file"
 msgstr "Schlüssel in Datei exportieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:499
-#: Src/wptKeyManagerDlg.cpp:1456
+#: Src/wptKeyManagerDlg.cpp:1461
 msgid "New"
 msgstr "Neu"
 
-#: Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1473
 msgid "Could not access public keyring"
 msgstr "Konnte nicht auf öffentlichen Schlüsselbund zugreifen"
 
-#: Src/wptKeyManagerDlg.cpp:1503 Src/wptKeysignDlg.cpp:241
+#: Src/wptKeyManagerDlg.cpp:1508 Src/wptKeysignDlg.cpp:241
 #: Src/wptKeysignDlg.cpp:259 Src/wptKeysignDlg.cpp:334
 #: Src/wptKeysignDlg.cpp:351 Src/wptKeysignDlg.cpp:356
 #: Src/wptKeysignDlg.cpp:358
 msgid "Key Signing"
 msgstr "Schlüsselsignierung"
 
-#: Src/wptKeyManagerDlg.cpp:1527
+#: Src/wptKeyManagerDlg.cpp:1532
 msgid "Key already revoked!"
 msgstr "Schlüssel ist bereits widerrufen!"
 
-#: Src/wptKeyManagerDlg.cpp:1539 Src/wptKeyRevokeDlg.cpp:72
+#: Src/wptKeyManagerDlg.cpp:1544 Src/wptKeyRevokeDlg.cpp:72
 #: Src/wptKeyRevokeDlg.cpp:100 Src/wptKeyRevokeDlg.cpp:138
 #: Src/wptKeyRevokeDlg.cpp:143 Src/wptKeyRevokeDlg.cpp:151
 #: Src/wptKeyRevokeDlg.cpp:167 Src/wptKeyRevokeDlg.cpp:173
 msgid "Key Revocation Cert"
 msgstr "Schlüsselwiderruf Zertifikat"
 
-#: Src/wptKeyManagerDlg.cpp:1549
+#: Src/wptKeyManagerDlg.cpp:1554
 msgid "It does not make any sense with a key pair!"
 msgstr "Diese Aktion macht keinen Sinn mit einem Schlüsselpaar!"
 
-#: Src/wptKeyManagerDlg.cpp:1576
+#: Src/wptKeyManagerDlg.cpp:1581
 msgid "Key Signature List"
 msgstr "Schlüssel-Signatur-Liste"
 
-#: Src/wptKeyManagerDlg.cpp:1598 Src/wptKeyPropsDlg.cpp:291
+#: Src/wptKeyManagerDlg.cpp:1603 Src/wptKeyPropsDlg.cpp:289
 msgid "Key Properties"
 msgstr "Schlüsseleigenschaften"
 
-#: Src/wptKeyManagerDlg.cpp:1609
+#: Src/wptKeyManagerDlg.cpp:1614
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
@@ -3344,27 +3352,27 @@
 "Signierung etc.)\n"
 "Möchten Sie den Zwischenspeicher reinitialisieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1640
+#: Src/wptKeyManagerDlg.cpp:1645
 msgid "Smart Card support is not available."
 msgstr "SmartCard-Unterstützung ist nicht verfügbar."
 
-#: Src/wptKeyManagerDlg.cpp:1663 Src/wptKeyserverDlg.cpp:601
+#: Src/wptKeyManagerDlg.cpp:1668 Src/wptKeyserverDlg.cpp:601
 msgid "Keyserver Access"
 msgstr "Schlüsselserver-Zugriff"
 
-#: Src/wptKeyManagerDlg.cpp:1680
+#: Src/wptKeyManagerDlg.cpp:1685
 msgid "GnuPG Options"
 msgstr "GnuPG Optionen"
 
-#: Src/wptKeyManagerDlg.cpp:1722
+#: Src/wptKeyManagerDlg.cpp:1727
 msgid "There is no corresponding secret key for this key."
 msgstr "Für diesen Schlüssel ist kein geheimer Schlüssel vorhanden."
 
-#: Src/wptKeyManagerDlg.cpp:1727
+#: Src/wptKeyManagerDlg.cpp:1732
 msgid "You can only export one secret key."
 msgstr "Sie können nur einen geheimen Schlüssel exportieren."
 
-#: Src/wptKeyManagerDlg.cpp:1732
+#: Src/wptKeyManagerDlg.cpp:1737
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -3382,11 +3390,11 @@
 "\n"
 "Wirklich den Schlüssel exportieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1737
+#: Src/wptKeyManagerDlg.cpp:1742
 msgid "WARNING"
 msgstr "WARNUNG"
 
-#: Src/wptKeyManagerDlg.cpp:1814
+#: Src/wptKeyManagerDlg.cpp:1819
 msgid "No key was selected, select all by default."
 msgstr "Kein Schlüssel ausgewählt, es wurden alle ausgewählt."
 
@@ -3399,13 +3407,13 @@
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: Src/wptKeyPropsDlg.cpp:215
+#: Src/wptKeyPropsDlg.cpp:213
 #, c-format
 msgid "Card-Type: %s\r\n"
 msgstr ""
 
 # c:\oss\winpt-gpgme\src\wptKeyPropsDlg.cpp:214
-#: Src/wptKeyPropsDlg.cpp:244
+#: Src/wptKeyPropsDlg.cpp:242
 #, c-format
 msgid ""
 "Type: %s\r\n"
@@ -3428,25 +3436,25 @@
 "Cipher: %s\r\n"
 "%s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:292
+#: Src/wptKeyPropsDlg.cpp:290
 msgid "&Change"
 msgstr "&Ändern"
 
-#: Src/wptKeyPropsDlg.cpp:293
+#: Src/wptKeyPropsDlg.cpp:291
 msgid "&Revokers"
 msgstr "\"&Revokers\""
 
-#: Src/wptKeyPropsDlg.cpp:294
+#: Src/wptKeyPropsDlg.cpp:292
 msgid "Change &Password"
 msgstr "&Passwort ändern"
 
-#: Src/wptKeyPropsDlg.cpp:301
+#: Src/wptKeyPropsDlg.cpp:299
 msgid "Photo-ID not validated."
 msgstr "Foto-ID nicht geprüft."
 
 # msgid "Unknown"
 # msgstr "Unbekannt"
-#: Src/wptKeyPropsDlg.cpp:339
+#: Src/wptKeyPropsDlg.cpp:337
 msgid ""
 "The status of this key is 'revoked' or 'expired'.\n"
 "You cannot change the ownertrust of such keys."
@@ -3454,11 +3462,11 @@
 "Der Status dieses Schlüssels ist 'widerrufen' oder 'abgelaufen'.\n"
 "Sie können das Vertrauen in solche Schlüssel nicht ändern."
 
-#: Src/wptKeyPropsDlg.cpp:341 Src/wptKeyPropsDlg.cpp:348
+#: Src/wptKeyPropsDlg.cpp:339 Src/wptKeyPropsDlg.cpp:346
 msgid "WinPT Warning"
 msgstr "WinPT Warnung"
 
-#: Src/wptKeyPropsDlg.cpp:345
+#: Src/wptKeyPropsDlg.cpp:343
 msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
@@ -3469,11 +3477,11 @@
 "Das Vertrauen solcher Schlüssel zu ändern hat keinerlei Effekt.\n"
 "Trotzdem fortfahren?"
 
-#: Src/wptKeyPropsDlg.cpp:362
+#: Src/wptKeyPropsDlg.cpp:360
 msgid "Ownertrust successfully changed."
 msgstr "Besitzervertrauen erfolgreich geändert."
 
-#: Src/wptKeyPropsDlg.cpp:375 Src/wptKeyRevokersDlg.cpp:146
+#: Src/wptKeyPropsDlg.cpp:373 Src/wptKeyRevokersDlg.cpp:146
 msgid "Key Revokers"
 msgstr "Schlüsselwiderrufer"
 
@@ -4005,42 +4013,42 @@
 msgid "Unknown OpenPGP type."
 msgstr "Unbekannter OpenPGP Typ."
 
-#: Src/wptMainProc.cpp:344
+#: Src/wptMainProc.cpp:345
 msgid "Could not set current window mode hooks."
 msgstr "Konnte \"Current Window\" Hooks nicht setzen."
 
-#: Src/wptMainProc.cpp:408
+#: Src/wptMainProc.cpp:411
 msgid "Edit Clipboard"
 msgstr "Zwischenablage bearbeiten"
 
-#: Src/wptMainProc.cpp:409
+#: Src/wptMainProc.cpp:412
 msgid "About..."
 msgstr "Über..."
 
-#: Src/wptMainProc.cpp:415 Src/wptMainProc.cpp:419
+#: Src/wptMainProc.cpp:418 Src/wptMainProc.cpp:422
 msgid "Decrypt/Verify"
 msgstr "Entschlüsseln/Überprüfen"
 
 # c:\oss\winpt-gpgme\src\wptMainProc.cpp:414
-#: Src/wptMainProc.cpp:429
+#: Src/wptMainProc.cpp:432
 msgid "Current Window"
 msgstr "Aktuelles Fenster"
 
-#: Src/wptMainProc.cpp:485
+#: Src/wptMainProc.cpp:488
 msgid "Remove all passphrases from cache?"
 msgstr "Alle Passwörter aus Zwischenspeicher entfernen?"
 
-#: Src/wptMainProc.cpp:486 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:202
+#: Src/wptMainProc.cpp:489 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:202
 msgid "WinPT"
 msgstr "WinPT"
 
-#: Src/wptMainProc.cpp:496
+#: Src/wptMainProc.cpp:499
 msgid "Could not access public keyring, exit WinPT?"
 msgstr ""
 "Auf den öffentlichen Schlüsselbund kann nicht zugegriffen werden. WinPT "
 "beenden?"
 
-#: Src/wptMainProc.cpp:528
+#: Src/wptMainProc.cpp:531
 #, c-format
 msgid ""
 "Make sure that the window contains text.\n"
@@ -4049,7 +4057,7 @@
 "Stellen Sie sicher, dass das Fenster Text enthält.\n"
 "%s."
 
-#: Src/wptMainProc.cpp:582 Src/wptPreferencesDlg.cpp:132
+#: Src/wptMainProc.cpp:585 Src/wptPreferencesDlg.cpp:132
 msgid "WinPT Preferences"
 msgstr "WinPT Einstellungen"
 

Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/ChangeLog	2006-02-07 08:58:04 UTC (rev 175)
@@ -1,3 +1,31 @@
+2006-02-04  Timo Schulz  <ts at g10code.de>
+
+	* wptKeyManagerDlg.cpp (keymanager_dlg_proc): Check for
+	at least one ultimately trusted key.
+	* wptKeyManager.cpp (km_refresh_key_from_keyserver):
+	Only check inet connection if we refresh all keys.
+	* wptGPGUtil.cpp (gpg_extract_keys): New.
+	* wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use textmode.
+	* wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
+	* wptClipSignDlg.cpp (get_selected_key): New.
+	(one_key_proc): Use it here.
+	(count_useable_seckeys): New.
+	* wptSigTreeDlg.cpp (sigtree_dlg_proc): New.
+	* wptKeyEditDlgs.cpp (diff_time): Removed.
+	(w32_mktime): New.
+	(keyedit_addsubkey_dlg_proc): Use it here.
+	
+2006-02-02  Timo Schulz  <ts at g10code.de>
+
+	* wptW32API.cpp (get_temp_name): New.
+	* wptKeyserver.cpp (ldap_recvkey): Use it here.
+	* wptKeyPropsDlg.cpp (get_photo_tmpname): Likewise.
+	* wptGPGUtil.cpp (create_tempfile): Likewise.
+	* wptImportList.cpp (implist_load): Likewise.
+	* wptKeyCache.cpp (parse_attr_data): Likewise.
+	(w32_tempfile): Removed.
+	* wptGPGME.cpp (check_ultimate_trusted_key): New.
+	
 2006-01-31  Timo Schulz  <ts at g10code.de>
 
 	* wptMainProc.cpp (winpt_main_proc): Fix usage of the

Modified: trunk/Src/Makefile.am
===================================================================
--- trunk/Src/Makefile.am	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/Makefile.am	2006-02-07 08:58:04 UTC (rev 175)
@@ -74,7 +74,8 @@
 	wptPreferencesDlg.cpp \
 	wptProgressDlg.cpp \
 	wptProxySettingsDlg.cpp \
-	wptTextInputDlg.cpp
+	wptTextInputDlg.cpp \
+	wptSigTreeDlg.cpp
 
 code_files = \
 	WinPT.cpp \
@@ -126,7 +127,7 @@
               -lgnupg ../PTD/PTD.dll \
 	      $(GPGME_LIBS) $(W32LIBS) \
               -lcomctl32 -lkernel32 -luser32 -lcomdlg32 -ladvapi32 \
-              -lshell32 -lgdi32 -loleaut32 -lversion
+              -lshell32 -lgdi32 -lversion
 
 WinPT-en.o: $(resource_files)
 

Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/WinPT-en.rc	2006-02-07 08:58:04 UTC (rev 175)
@@ -1378,7 +1378,18 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,131,83,50,14
 END
 
+IDD_WINPT_KEYSIG_TREE DIALOG DISCARDABLE  0, 0, 234, 129
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Key Signature Tree"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,177,110,50,14
+    CONTROL         "Tree1",IDC_VKEYSIG_TREE,"SysTreeView32",TVS_HASBUTTONS | 
+                    TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_TABSTOP,
+                    2,5,225,90
+END
 
+
 /////////////////////////////////////////////////////////////////////////////
 //
 // DESIGNINFO
@@ -1898,6 +1909,14 @@
         TOPMARGIN, 1
         BOTTOMMARGIN, 97
     END
+
+    IDD_WINPT_KEYSIG_TREE, DIALOG
+    BEGIN
+        LEFTMARGIN, 2
+        RIGHTMARGIN, 227
+        TOPMARGIN, 3
+        BOTTOMMARGIN, 124
+    END
 END
 #endif    // APSTUDIO_INVOKED
 
@@ -1909,8 +1928,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,11,7,0
- PRODUCTVERSION 0,11,7,0
+ FILEVERSION 0,11,8,0
+ PRODUCTVERSION 0,11,8,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -1928,14 +1947,14 @@
             VALUE "Comments", "This is free software under the terms of the GNU GPL v2\0"
             VALUE "CompanyName", "\0"
             VALUE "FileDescription", "Windows Privacy Tray (WinPT)\0"
-            VALUE "FileVersion", "0.11.7\0"
+            VALUE "FileVersion", "0.11.8\0"
             VALUE "InternalName", "WinPT\0"
             VALUE "LegalCopyright", " Copyright (C) 2006 Timo Schulz\0"
             VALUE "LegalTrademarks", "\0"
             VALUE "OriginalFilename", "WinPT.exe\0"
             VALUE "PrivateBuild", "\0"
             VALUE "ProductName", "Windows Privacy Tray\0"
-            VALUE "ProductVersion", "0.11.6\0"
+            VALUE "ProductVersion", "0.11.8\0"
             VALUE "SpecialBuild", "\0"
         END
     END

Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/resource.h	2006-02-07 08:58:04 UTC (rev 175)
@@ -161,6 +161,7 @@
 #define IDD_WINPT_INFODLG               237
 #define IDD_WINPT_KEYSERVER_ADD         238
 #define IDR_WINPT_KEYSERVER_CTX         239
+#define IDD_WINPT_KEYSIG_TREE           241
 #define IDC_CLIPEDIT_SEND               1000
 #define IDC_CLIPEDIT_CLEAR              1001
 #define IDC_CLIPEDIT_CLIPTEXT           1002
@@ -632,6 +633,7 @@
 #define IDC_KSERVADD_PORT               1509
 #define IDC_GPGPREFS_OVRDEFAULT         1510
 #define IDC_MDSUM_TOCLIP                1511
+#define IDC_VKEYSIG_TREE                1512
 #define ID_GPG_ENCRYPT                  40003
 #define ID_GPG_DECRYPT                  40004
 #define ID_GPG_SIGN                     40005
@@ -810,9 +812,9 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        241
+#define _APS_NEXT_RESOURCE_VALUE        242
 #define _APS_NEXT_COMMAND_VALUE         40186
-#define _APS_NEXT_CONTROL_VALUE         1512
+#define _APS_NEXT_CONTROL_VALUE         1513
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/Src/wptClipEncryptDlg.cpp
===================================================================
--- trunk/Src/wptClipEncryptDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptClipEncryptDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -56,13 +56,14 @@
         return err;
     
     gpgme_set_armor (ctx, 1);
+    gpgme_set_textmode (ctx, 1);
     
     err = gpg_data_new_from_clipboard (&plain, 0);
     if (err)
 	goto leave;
     err = gpgme_data_new (&ciph);
     if (err)
-	goto leave;
+	goto leave;    
     err = gpgme_op_encrypt (ctx, rset,
 			    always_trust?GPGME_ENCRYPT_ALWAYS_TRUST : (gpgme_encrypt_flags_t)0, 
 			    plain, ciph);

Modified: trunk/Src/wptClipSignDlg.cpp
===================================================================
--- trunk/Src/wptClipSignDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptClipSignDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -111,18 +111,52 @@
 
     set_gpg_passphrase_cb (&pwd, ctx, GPG_CMD_SIGN, dlg, _("Signing"));
     err = gpg_clip_sign (ctx, signer, n);
+    if (pwd.cancel)
+	goto leave;
+
     if (gpgme_err_code (err) == GPG_ERR_BAD_PASSPHRASE)
 	agent_del_cache (pwd.keyid);
     if (err)
 	msg_box (dlg, gpgme_strerror (err), _("Signing"), MB_ERR);
     else
 	show_msg (dlg, 1500, _("GnuPG Status: Finished"));
+leave:
     gpgme_release (ctx);
     free_if_alloc (signer);
     release_gpg_passphrase_cb (&pwd);
 }
 
 
+/* Count only useable secret keys. 
+   Ignore expired, revoked and disabled keys.
+   Return value: amount of keys. */
+static DWORD
+count_useable_seckeys (gpg_keycache_t kc)
+{
+    struct keycache_s *c;
+    DWORD n=0;
+
+    for (c = kc->item; c; c=c->next) {
+	if (c->pubpart && key_is_useable (c->pubpart->key))
+	    n++;
+    }
+    return n;
+}
+
+
+/* Return -1 if no key is selected, the index otherwise. */
+static int
+get_selected_key (listview_ctrl_t lv)
+{
+    int i;
+    for (i=0; i < listview_count_items (lv, 0); i++) {
+	if (listview_get_item_state (lv, i))
+	    return i;
+    }
+    return -1;
+}
+
+
 /* Dialog box procedure for clipboard signing. */
 BOOL CALLBACK 
 clip_sign_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -134,7 +168,7 @@
     passphrase_cb_s pwd;
     int lv_idx = 0;
     int rc = 0, no_signer = 0;
-    char * signer = NULL;
+    char *signer = NULL;
     
     switch( msg ) {
     case WM_INITDIALOG:
@@ -146,7 +180,7 @@
         sec_kc = keycache_get_ctx (KEYCACHE_PRV);
 	if (!sec_kc)
 	    BUG (dlg);
-        if (gpg_keycache_get_size (sec_kc) == 1) {
+        if (count_useable_seckeys (sec_kc) == 1) {
             one_key_proc (dlg);
             EndDialog (dlg, TRUE);
             return FALSE;
@@ -189,7 +223,7 @@
                 listview_get_item_text (lv, 0, 1, signer, sizeof signer-1);
                 no_signer = 0;
             }
-            else if ((lv_idx = listview_get_curr_pos (lv)) == -1) {
+            else if ((lv_idx = get_selected_key (lv)) == -1) {
 		rc = log_box (_("Signing"), MB_YESNO,
 		              _("No key was chosen.\nUse the GPG default key '%s'?"),
 			      signer);
@@ -217,7 +251,6 @@
             if (pwd.cancel && gpgme_err_code(err) == GPG_ERR_BAD_PASSPHRASE) {
 		/* The user hit the cancel button or bad passphrase */
 		gpgme_release (ctx);
-                EndDialog (dlg, TRUE);
                 return TRUE;
             }
             if (err) {

Modified: trunk/Src/wptClipSignEncDlg.cpp
===================================================================
--- trunk/Src/wptClipSignEncDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptClipSignEncDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -61,6 +61,7 @@
 	return gpg_error (GPG_ERR_NO_PUBKEY);
 
     gpgme_set_armor (ctx, 1);
+    gpgme_set_textmode (ctx, 1);
     
     err = gpg_data_new_from_clipboard (&plain, 0);
     if (err)

Modified: trunk/Src/wptGPG.cpp
===================================================================
--- trunk/Src/wptGPG.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptGPG.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -1104,12 +1104,11 @@
 void
 gnupg_display_error (void)
 {	
-    char tmpath[512], * errstr;
+    char tmpath[512], *errstr;
     size_t size = 0;
-    FILE * fp;
+    FILE *fp;
 
-    GetTempPath (sizeof tmpath - 32, (tmpath));
-    strcat (tmpath, "gpg_stderr");
+    get_temp_name (tmpath, sizeof (tmpath), "gpg_stderr");
     size = get_file_size (tmpath);
     if (file_exist_check (tmpath) || size <= 0)
 	return;

Modified: trunk/Src/wptGPGME.cpp
===================================================================
--- trunk/Src/wptGPGME.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptGPGME.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -139,11 +139,11 @@
     if (!err)
 	err = gpg_keycache_init (pub, NULL, 0);
     if (!err)
-	err = gpg_keycache_init( sec, NULL, 1 );
-    if( !err && pubring && *pubring )
-	err = gpg_keycache_prepare( pub, pubring, NULL );
-    if( !err && secring && * secring )
-	err = gpg_keycache_prepare( sec, NULL, secring );
+	err = gpg_keycache_init (sec, NULL, 1);
+    if (!err && pubring && *pubring)
+	err = gpg_keycache_prepare( pub, pubring, NULL);
+    if (!err && secring && * secring)
+	err = gpg_keycache_prepare (sec, NULL, secring);
     if (!err)
 	gpg_keycache_sync (pub, sec);
     if (val != 0)
@@ -324,3 +324,20 @@
 
     return gpg_sigstat[sigsum_to_index (sum) % mask];
 }
+
+
+/* Check if the secret keyring contains at least one 
+   key with ultimate trust.
+   Return value: 0 on success. */
+int
+check_ultimate_trusted_key (void)
+{
+    struct keycache_s *n;
+
+    for (n = sec->item; n; n = n->next) {
+	if (n->pubpart && 
+	    n->pubpart->key->owner_trust == GPGME_VALIDITY_ULTIMATE)
+	return 0;
+    }
+    return -1;
+}

Modified: trunk/Src/wptGPGUtil.cpp
===================================================================
--- trunk/Src/wptGPGUtil.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptGPGUtil.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -29,7 +29,9 @@
 #include "gpgme.h"
 #include "wptTypes.h"
 #include "wptErrors.h"
+#include "wptW32API.h"
 
+
 #define NROFHEXDIGITS 2  
 /* Convert two hexadecimal digits from STR to the value they
    represent.  Returns -1 if one of the characters is not a
@@ -221,8 +223,7 @@
     sec_attr.lpSecurityDescriptor = NULL;
     sec_attr.nLength = sizeof sec_attr;
 
-    GetTempPath (sizeof (tmp)-1 - strlen (name)-1, tmp);
-    strcat (tmp, name);
+    get_temp_name (tmp, DIM (tmp)-1, name);
     out = CreateFile (tmp, GENERIC_READ|GENERIC_WRITE, 
 		      FILE_SHARE_WRITE, &sec_attr,
 		      OPEN_ALWAYS, FILE_FLAG_DELETE_ON_CLOSE, NULL);
@@ -604,6 +605,59 @@
 }
 
 
+/* Extract one or more keys from the key file @keyfile.
+   The keys to extract are give in @keys and the size of it is @nkeys.
+   @new_keyfile is a file with the extract keys.
+   Return value: 0 on success. */
+gpgme_error_t
+gpg_extract_keys (const char *keyfile, const char **keys, DWORD nkeys,
+		  char **new_keyfile)
+{
+    gpgme_error_t err = gpg_error (GPG_ERR_NO_ERROR);
+    const char *fmt;
+    char *p, *cmd;
+    char tmpnam[MAX_PATH], tmpdir[MAX_PATH];
+    int i, n;
+
+    /* copy key file to temp dir. */
+    GetTempPath (MAX_PATH-1, tmpdir);
+    get_temp_name (tmpnam, MAX_PATH-1, NULL);
+    CopyFile (keyfile, tmpnam, FALSE);
+
+    /* create temp file for output. */
+    *new_keyfile = new char[MAX_PATH];
+    if (!*new_keyfile)
+	BUG (NULL);
+    get_temp_name (*new_keyfile, MAX_PATH-1, "sel_keys");
+
+    p = read_gpg_program ();
+    if (!p)
+	return gpg_error (GPG_ERR_INV_ARG);
+
+    /* Use the temp key file as a keyring and export the selected
+       keys from it. */
+    fmt = "%s --yes --output %s --no-options --homedir %s --keyring %s --export ";
+    n = strlen (fmt) + strlen (p)+1 + strlen (tmpdir)+1 + strlen (tmpnam) + 1;
+    n += strlen (*new_keyfile)+1;
+    for (i=0; i < (int)nkeys; i++)
+	n += strlen (keys[i])+1+2;
+    cmd = (char*)calloc (1, n+1);
+    sprintf (cmd, fmt, p, *new_keyfile, tmpdir, tmpnam);
+    for (i=0; i < (int)nkeys; i++) {
+	strcat (cmd, keys[i]);
+	strcat (cmd, " " );
+    }
+
+    if (create_process (cmd, NULL, NULL, NULL))
+	err = gpgme_error (GPG_ERR_INTERNAL);
+
+    DeleteFile (tmpnam);
+    safe_free (cmd);
+    safe_free (p);
+    return err;
+}
+
+
 /* Return the validity of the user attribute, informerly known 
    as photo-ID. If no uat was found, return 0 for unknown. */
 gpgme_error_t
@@ -629,8 +683,8 @@
     if (create_process (cmd, NULL, out, NULL))
 	err = gpg_error (GPG_ERR_INTERNAL);
 
-    free (p);
-    free (cmd);
+    safe_free (p);
+    safe_free (cmd);
     
     p = map_tmpfile (out, NULL);
     if ((uat = strstr (p, "uat:"))) {

Modified: trunk/Src/wptImportList.cpp
===================================================================
--- trunk/Src/wptImportList.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptImportList.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -98,7 +98,6 @@
 	BUG (NULL);
     gpg_decode_c_string (pend, &c->uid, strlen (pend) + 1);
     c->uid[strlen (c->uid) -3] = '\0';
-
 }
 
 
@@ -407,15 +406,14 @@
     int rc = 0, is_tmp=0;
     char *pending_line = NULL;
     char fname[300], *out;
-
+    
     if (!file) {
 	err = gpg_data_new_from_clipboard (&list, 0);
 	if (err) {
 	    msg_box (NULL, gpgme_strerror( err ), _("Import"), MB_ERR);
 	    return WPTERR_CLIP_OPEN;
 	}
-	GetTempPath (299, fname);
-	strcat (fname, "in_gpg_keys");
+	get_temp_name (fname, 299, "in_gpg_keys");
 	err = gpg_data_release_and_set_file (list, fname);
 	if (err) {
 	    msg_box (NULL, gpgme_strerror (err), _("Import"), MB_ERR);
@@ -427,17 +425,18 @@
 
     if (check_import_data (file, r_revcerts)) {
 	msg_box (NULL, _("It is possible that the ASCII-Armor is damaged\n"
-			 "and thus a CRC error occurs."), _("Import"), MB_ERR);
-	if (is_tmp) 
-          remove (file);
+			 "and thus a CRC error occurs."), 
+		 _("Import"), MB_ERR);
+	if (is_tmp)
+	    DeleteFile (file);
 	return WPTERR_GENERAL;
     }
 
     err = gpg_import_key_list (file, &out);
     if (err) {
 	msg_box (NULL, gpgme_strerror (err), _("Import"), MB_ERR);
-	if (is_tmp)
-          remove (file);
+	if (is_tmp) 
+	    DeleteFile (file);
 	return WPTERR_GENERAL;	
     }
 
@@ -445,8 +444,8 @@
     free (out);
     if (err) {
 	msg_box (NULL, gpgme_strerror (err), _("Import"), MB_ERR);
-	if (is_tmp)
-          remove (file);
+	if (is_tmp) 
+	    DeleteFile (file);
 	return WPTERR_GENERAL;
     }
 
@@ -463,10 +462,9 @@
 	import_key_release (key);
     }
 
-    
     gpgme_data_release (list);
-    if (is_tmp)
-      remove (file);
+    if (is_tmp) 
+	DeleteFile (file);
     return rc;
 }
 

Modified: trunk/Src/wptKeyCache.cpp
===================================================================
--- trunk/Src/wptKeyCache.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyCache.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -121,36 +121,22 @@
 }
 
 
-/* Always use the $users temp folder. */
-static FILE*
-w32_tmpfile (char *tmp, DWORD tmplen)
-{
-    char id[16];
-
-    if (!GetTempPath (tmplen-17, tmp))
-	return NULL;
-    if (tmp[strlen (tmp)-1] != '\\')
-	strcat (tmp, "\\");
-    _snprintf (id, sizeof (id)-1, "%lu", GetTickCount ());
-    strcat (tmp, id);
-    return fopen (tmp, "w+b");
-}
-
-
 static int 
 parse_attr_data (const char *keyid, attr_list_t *list)
 {
     gpgme_error_t err;
-    FILE *tmp;
-    char *status, tmpnam[MAX_PATH+1];
+    FILE *tmp;    
     BYTE *data;
-    DWORD ndata;
+    char *status, tmpnam[MAX_PATH+1];
+    DWORD ndata = 0;
 
     err = gpg_get_photoid_data (keyid, &status, &data, &ndata);
     if (err)
 	return err;
 
-    if (ndata > 0 && (tmp = w32_tmpfile (tmpnam, MAX_PATH)) != NULL) {
+    get_temp_name (tmpnam, MAX_PATH, NULL);
+    tmp = fopen (tmpnam, "w+b");
+    if (ndata > 0 && tmp != NULL) {
 	fwrite (status, 1, strlen (status), tmp);
 	fflush (tmp);
 	rewind (tmp);

Modified: trunk/Src/wptKeyEdit.cpp
===================================================================
--- trunk/Src/wptKeyEdit.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyEdit.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -401,6 +401,16 @@
     gpgme_set_progress_cb (ctx, cb, cb_value);
 }
 
+
+/* Clear the stored passphrase. */
+void
+GpgKeyEdit::clearPassphrase (void)
+{
+    if (pass)
+	pass = NULL;
+}
+
+
 /* Set the passphrase to @pass. */
 void 
 GpgKeyEdit::setPassphrase (const char *_pass)

Modified: trunk/Src/wptKeyEditDlgs.cpp
===================================================================
--- trunk/Src/wptKeyEditDlgs.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyEditDlgs.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -61,6 +61,7 @@
     CMD_ENABLE,    
     CMD_SIGN,
     CMD_LSIGN,
+    CMD_CHECK
 };
 
 struct cmdlist_s {
@@ -86,6 +87,7 @@
     {"ENABLE", 0, CMD_ENABLE},
     {"SIGN", 0, CMD_SIGN},
     {"LSIGN", 0, CMD_LSIGN},
+    {"CHECK", 0, CMD_CHECK},
     {NULL, 0}  
 };
 
@@ -530,12 +532,13 @@
                 msg_box( dlg, _("Please enter an email address."), _("UserID"), MB_ERR );
                 return FALSE;
             }
-	    if( !strchr( email, '@' ) || strchr (email, ' ')) {
-		msg_box( dlg, _("Invalid email address."), _("UserID"), MB_ERR );
+	    if (!strchr (email, '@' ) || strchr (email, ' ')) {
+		msg_box (dlg, _("Invalid email address."), _("UserID"), MB_ERR);
 		return FALSE;
 	    }
             
-            rc = GetDlgItemText( dlg, IDC_ADDUID_COMMENT, comment, sizeof comment -1 );
+            rc = GetDlgItemText (dlg, IDC_ADDUID_COMMENT, 
+				 comment, sizeof comment -1);
 
 	    /* XXX: something is wrong with the encoding :-( */
 	    utf8_name = wincp_to_utf8 (name, strlen (name));
@@ -571,25 +574,6 @@
 }
 
 
-static int
-diff_time (HWND dt, SYSTEMTIME *in_exp)
-{
-    SYSTEMTIME exp, now;
-    double e=0, n=0;
-
-    if (in_exp)
-	memcpy (&exp, in_exp, sizeof (SYSTEMTIME));
-    else
-	DateTime_GetSystemtime (dt, &exp);
-    GetSystemTime (&now);
-    SystemTimeToVariantTime (&exp, &e);
-    SystemTimeToVariantTime (&now, &n);
-    if (n > e)
-	return 0;
-    return (int)(e-n);
-}
-
-
 static void
 init_keysize_box (HWND dlg, int ctlid)
 {
@@ -616,6 +600,20 @@
 }
 
 
+/* Create a time_t from a system time @st. */
+time_t
+w32_mktime (SYSTEMTIME *st)
+{
+    struct tm tm;
+
+    memset (&tm, 0, sizeof (tm));
+    tm.tm_year = st->wYear-1900;
+    tm.tm_mday = st->wDay+1;
+    tm.tm_mon = st->wMonth-1;
+    return mktime (&tm);
+}
+
+
 /* Dialog procedure for adding a new secondary key. */
 BOOL CALLBACK
 keyedit_addsubkey_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -624,6 +622,7 @@
     static KEYGEN_CB *keygen;
     GpgKeyEdit *ke;
     gpgme_error_t err;
+    SYSTEMTIME st;
     HWND lb;
     int index, size, valid;
     
@@ -691,7 +690,11 @@
 			 _("Add Subkey"), MB_INFO);
                 size = 1024;
             }
-	    valid = diff_time (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), NULL);
+
+	    DateTime_GetSystemtime (GetDlgItem (dlg, IDC_ADDSUBKEY_EXPDATE), &st);
+	    valid = w32_mktime (&st) - time (NULL);
+	    valid /= 86400;
+
 	    keygen->bits = size;
 	    switch (index) {
 	    case 2: keygen->algo = GPGME_PK_DSA; break;
@@ -855,7 +858,8 @@
     ke = new GpgKeyEdit (k->keyid);
     if (!ke)
 	BUG (NULL);
-    ke->setPassphrase (pass);
+    if (k->is_protected)
+	ke->setPassphrase (pass);
     err = ke->setPreferredKeyserver (0 /* XXX */, url->url);
     if (!err)
 	msg_box (dlg, _("Preferred keyserver successfully set."), _("Key Edit"), MB_OK);
@@ -946,8 +950,9 @@
     char *new_pass = NULL;
     int cancel = 0;
 
-    if( !k->key_pair ) {
-	msg_box( dlg, _("There is no secret key available!"), _("Key Edit"), MB_ERR );
+    if (!k->key_pair) {
+	msg_box (dlg, _("There is no secret key available!"), 
+		 _("Key Edit"), MB_ERR);
         return FALSE;
     }
 
@@ -1291,6 +1296,7 @@
 } /* do_editkey_delkey */
 
 
+
 /* Set the expiration date for the selected key in list view @lv.
    Return value: TRUE on success. */
 static int
@@ -1346,7 +1352,7 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
-    err = ke->setKeyExpireDate (j, diff_time (NULL, &udd.st), true);
+    err = ke->setKeyExpireDate (j, w32_mktime (&udd.st), false);
     if (err)
 	msg_box (dlg, gpgme_strerror (err), _("Expire Subkey"), MB_ERR);
     else {
@@ -1820,6 +1826,17 @@
 }
 
 
+static void
+do_editkey_check (winpt_key_t k, HWND dlg)
+{
+    gpgme_key_t key;
+
+    get_pubkey (k->keyid, &key);
+    DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYSIG_TREE, dlg,
+		    sigtree_dlg_proc, (LPARAM)key);
+}
+
+
 static int
 do_editkey_sign_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv, int mode)
 {
@@ -1851,7 +1868,8 @@
 	    return FALSE;
     }
     ke = new GpgKeyEdit (k->keyid);
-    ke->setPassphrase (pass);
+    if (k->is_protected)
+	ke->setPassphrase (pass);
     ke->setLocalUser (get_default_key ());
     err = ke->signUserid (uid_index, 
 			  mode == CMD_SIGN? GPG_EDITKEY_SIGN : GPG_EDITKEY_LSIGN,
@@ -1986,6 +2004,7 @@
 	    case CMD_PRIMARY: do_editkey_primary( k, dlg, lvuid ); break;
 	    case CMD_ENABLE: do_editkey_enable_disable (k, dlg, lvsub, 1); break;
 	    case CMD_DISABLE: do_editkey_enable_disable (k, dlg, lvsub, 0); break;
+	    case CMD_CHECK: do_editkey_check (k, dlg); break;
 	    case CMD_TRUST: keyedit_change_ownertrust (k, dlg); break;
 	    case CMD_SIGN:
 	    case CMD_LSIGN: do_editkey_sign_userid (k, dlg, 

Modified: trunk/Src/wptKeyManager.cpp
===================================================================
--- trunk/Src/wptKeyManager.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyManager.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -532,7 +532,6 @@
 {
     http_hd_t hd;
     FILE *fp;
-    char *p;
     char tmpfile[500];
     int statcode;
     int rc = 0;
@@ -542,14 +541,10 @@
 	return WPTERR_GENERAL;
     }
 
-    GetTempPath (sizeof (tmpfile)-128, tmpfile);
-    p = make_filename (tmpfile, "winpt_file_http", "tmp");
-    if (!p)
-	BUG (0);
-    fp = fopen (p, "wb");
+    get_temp_name (tmpfile, sizeof (tmpfile), "winpt_file_http.tmp");
+    fp = fopen (tmpfile, "wb");
     if (!fp) {
-	free_if_alloc (p);
-	log_box (_("Key Import HTTP"), MB_ERR, "%s: %s", p, 
+	log_box (_("Key Import HTTP"), MB_ERR, "%s: %s", tmpfile, 
 		 winpt_strerror (WPTERR_FILE_CREAT));
 	return WPTERR_FILE_CREAT;
     }
@@ -566,9 +561,8 @@
 	msg_box (dlg, winpt_strerror (rc), _("Key Import HTTP"), MB_ERR);
 	rc = WPTERR_GENERAL;
     }
-    km_file_import (dlg, p, NULL, NULL);
-    remove (p);
-    free_if_alloc (p);
+    km_file_import (dlg, tmpfile, NULL, NULL);
+    DeleteFile (tmpfile);
     return rc;
 }
 
@@ -836,13 +830,12 @@
 km_send_to_mail_recipient (listview_ctrl_t lv, HWND dlg)
 {
     gpgme_key_t key;
-    gpgme_ctx_t ctx=NULL;
-    gpgme_data_t out;
     gpgme_error_t rc;
-    char tmp[128];
+    GPGME *ctx;
     char *fname;
     char *name;
     int pos;
+    int n;
 
     if (listview_count_items (lv, 1) > 1) {
 	msg_box (dlg, _("Please only select one key."), 
@@ -858,35 +851,24 @@
     if (!key)
 	BUG (NULL);
 
-    GetTempPath (sizeof (tmp)-1, tmp);
-    if (tmp[strlen (tmp)-1] == '\\')
-	tmp[strlen (tmp)-1] = 0;
-    name = utf8_to_wincp2 (key->uids->name); 
-    fname = make_filename (tmp, name, "asc");
+    name = utf8_to_wincp2 (key->uids->name);
+    n = strlen (name)+1 + MAX_PATH + 5;
+    fname = new char[n+1];
+    get_temp_name (fname, n-5, name);
     for (pos=0; pos < (int)strlen (fname); pos++) {
 	if (fname[pos] == ' ')
 	    fname[pos] = '_';
     }
-
-    rc = gpgme_new (&ctx);
+    strcat (fname, ".asc");
+    ctx = new GPGME ();
+    ctx->setArmor (true);
+    rc = ctx->exportToFile (key->subkeys->keyid, fname);
     if (rc)
-	BUG (NULL);
-    rc = gpgme_data_new (&out);
-    if (rc)
-	BUG (NULL);
-
-    gpgme_set_armor (ctx, 1);
-    rc = gpgme_op_export (ctx, key->subkeys->keyid, 0, out);
-    if (rc) {
-	gpgme_data_release (out);
 	msg_box (dlg, gpgme_strerror (rc), _("Key Manager"), MB_ERR);
-    }
-    else {
-	gpg_data_release_and_set_file (out, fname);
+    else
 	mapi_send_pubkey (key->subkeys->keyid+8, fname);
-    }
 
-    gpgme_release (ctx);
+    delete ctx;
     safe_free (name);
     free_if_alloc (fname);
     return rc;
@@ -922,13 +904,7 @@
 void
 km_refresh_from_keyserver (listview_ctrl_t lv, HWND dlg)
 {
-    int cnt, id, i;
-    
-    if (kserver_check_inet_connection ()) {
-	msg_box (dlg, _("Could not connect to keyserver, abort procedure."),
-		 _("Key Manager"), MB_ERR);
-	return;
-    }
+    int cnt, id, i;    
 
     cnt = listview_count_items (lv, 0);
     if (listview_count_items (lv, 1) == cnt) {
@@ -936,6 +912,11 @@
 		      _("Key Manager"), MB_YESNO);
         if (id == IDNO)
             return;
+	if (kserver_check_inet_connection ()) {
+	    msg_box (dlg, _("Could not connect to keyserver, abort procedure."),
+		     _("Key Manager"), MB_ERR);
+	    return;
+	}
     }
     if (listview_count_items (lv, 1) == 1)
 	km_refresh_one_key (lv, dlg, listview_get_curr_pos (lv), 0);

Modified: trunk/Src/wptKeyManagerDlg.cpp
===================================================================
--- trunk/Src/wptKeyManagerDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyManagerDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -1177,6 +1177,11 @@
         Header_SetImageList(ListView_GetHeader (kl), glob_imagelist);
         kmi->lv = keylist_load (GetDlgItem (dlg, IDC_KEYMISC_KEYLIST), c, 
 				NULL, KEYLIST_LIST, kmi->keylist_sortby);
+	if (check_ultimate_trusted_key ()) {
+	    msg_box (dlg, _("No ultimately trusted key found.\n"
+			    "Please set at least one secret key to ultimate trust."),
+			    _("Key Manager"), MB_WARN);
+	}
         /* init subclassing for the listview */
 	keylist_proc.opaque = kmi;
         keylist_proc.dlg = dlg;

Modified: trunk/Src/wptKeyPropsDlg.cpp
===================================================================
--- trunk/Src/wptKeyPropsDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyPropsDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -83,9 +83,7 @@
     char name[64];
 
     _snprintf (name, sizeof (name)-1, "winpt_photo_%08lX.tmp", (DWORD)dlg);
-    GetTempPath (sizeof (buf)-128, buf);
-    strcat (buf, name);
-
+    get_temp_name (buf, DIM (buf), name);
     return buf;
 }
 

Modified: trunk/Src/wptKeyserver.cpp
===================================================================
--- trunk/Src/wptKeyserver.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptKeyserver.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -1203,11 +1203,11 @@
 int
 ldap_recvkey (const char *host, const char *keyid, char *key, int maxkeylen)
 {    
-    FILE *inp;
-    DWORD n;
+    FILE *fp;
     const char *s;
     char *ksprg = NULL, *p = NULL, *sep;
-    char temp[512], outf[512];
+    char inf[256], outf[256], buf[512];
+    DWORD n;
     int start_key = 0, failed = 0;
     int rc = 0;
 
@@ -1227,18 +1227,17 @@
 		 "%s: could not find LDAP keyserver module!", ksprg);
 	rc = -1;
 	goto leave;
-    }    
-    GetTempPath (sizeof (temp)-1, temp);
-    _snprintf (outf, sizeof (outf)-1, "%s%s.out", temp, keyid);
-    strcat (temp, keyid);
-    inp = fopen (temp, "w+b");
-    if (!inp) {
-	log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", temp,
+    }
+    get_temp_name (outf, sizeof (outf)-1, keyid);
+    get_temp_name (inf, sizeof (inf)-1, NULL);
+    fp = fopen (inf, "w+b");
+    if (!fp) {
+	log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", inf,
 		 winpt_strerror (WPTERR_FILE_OPEN));
 	rc = -1;
 	goto leave;
     }
-    fprintf (inp, 
+    fprintf (fp,
 	"VERSION 1\n"
 	"PROGRAM 1.4.3-cvs\n"
 	"SCHEME ldap\n"
@@ -1247,28 +1246,27 @@
 	"\n"
 	"%s\n",
 	host? skip_type_prefix (host): "64.94.85.200", keyid);
-    fclose (inp);
+    fclose (fp);
 
-    p = new char[strlen (ksprg) + strlen (temp) + strlen (outf) + 32];
+    p = new char[strlen (ksprg) + strlen (inf) + strlen (outf) + 32];
     if (!p)
 	BUG (NULL);
-    sprintf (p, "%s -o %s %s", ksprg, outf, temp);
+    sprintf (p, "%s -o %s %s", ksprg, outf, inf);
     if (spawn_application (p)) {
 	rc = -1;
 	goto leave;
     }
-    DeleteFile (temp);
 
-    inp = fopen (outf, "rb");
-    if (!inp) {
+    fp = fopen (outf, "rb");
+    if (!fp) {
 	log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", outf, 
 		 winpt_strerror (WPTERR_FILE_OPEN));
 	rc = -1;
 	goto leave;
     }
     memset (key, 0, maxkeylen);
-    while (!feof (inp)) {
-	s = fgets (temp, sizeof (temp)-1, inp);
+    while (!feof (fp)) {
+	s = fgets (buf, sizeof (buf)-1, fp);
 	if (!s)
 	    break;
 	if (strstr (s, "KEY") && strstr (s, "FAILED")) {
@@ -1281,16 +1279,17 @@
 	}	
 	if (!start_key)
 	    continue;
-	strcat (key, temp);
-	maxkeylen -= strlen (temp);
+	strcat (key, buf);
+	maxkeylen -= strlen (buf);
 	if (maxkeylen < 0 || (strstr (s, "KEY") && strstr (s, "END")))
 	    break;
     }
-    fclose (inp);
+    fclose (fp);
 
 leave:
     if (failed || !strlen (key))
 	rc = WPTERR_WINSOCK_RECVKEY;
+    DeleteFile (inf);
     DeleteFile (outf);
     free_if_alloc (p);
     free_if_alloc (ksprg);

Added: trunk/Src/wptSigTreeDlg.cpp
===================================================================
--- trunk/Src/wptSigTreeDlg.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptSigTreeDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -0,0 +1,95 @@
+/* wptSigTreeDlg.cpp
+ *	Copyright (C) 2006 Timo Schulz
+ *
+ * This file is part of WinPT.
+ *
+ * WinPT is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * WinPT is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WinPT; if not, write to the Free Software Foundation, 
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include <windows.h>
+#include <commctrl.h>
+
+#include "resource.h"
+#include "wptGPG.h"
+#include "wptNLS.h"
+
+/* Initialize the signature tree based on the given key @key. */
+static void
+sigtree_load (HWND dlg, gpgme_key_t key)
+{
+    TVITEM tvi;
+    TVINSERTSTRUCT ctx;
+    HTREEITEM uid;
+    gpgme_user_id_t u;
+    gpgme_key_sig_t s;
+    gpgme_key_t signer;
+
+    memset (&tvi, 0, sizeof (tvi));
+    memset (&ctx, 0, sizeof (ctx));
+    for (u=key->uids; u; u = u->next) {
+	tvi.pszText = u->uid;
+	tvi.state = TVIS_BOLD;
+	tvi.mask = TVIF_TEXT |TVIF_STATE;
+	ctx.hParent = TVI_ROOT;
+	ctx.item = tvi;
+	uid = TreeView_InsertItem (dlg, &ctx);
+	for (s = u->signatures; s; s=s->next) {
+	    if (get_pubkey (s->keyid+8, &signer))
+		continue;
+	    tvi.state = 0;
+	    tvi.pszText = signer->uids->uid;
+	    tvi.mask = TVIF_TEXT;
+	    ctx.hParent = uid;
+	    ctx.item = tvi;
+	    TreeView_InsertItem (dlg, &ctx);
+	}
+    }
+}
+
+
+/* Dialog box procedure for the tree based signature listing. */
+BOOL CALLBACK
+sigtree_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+    static gpgme_key_t key;
+    static HWND tree;
+
+    switch (msg) {
+    case WM_INITDIALOG:
+	key = (gpgme_key_t)lparam;
+	if (!key)
+	    abort ();
+	tree = GetDlgItem (dlg, IDC_VKEYSIG_TREE);
+	sigtree_load (tree, key);
+	SetWindowText (dlg, _("Key Signature Tree"));
+	SetForegroundWindow (dlg);
+	break;
+
+    case WM_COMMAND:
+	switch (LOWORD (wparam)) {
+
+	case IDOK:
+	    EndDialog (dlg, 1);
+	    break;
+
+	case IDCANCEL:
+	    EndDialog (dlg, 0);
+	    break;
+	}
+	break;
+    }
+
+    return FALSE;
+}

Modified: trunk/Src/wptW32API.cpp
===================================================================
--- trunk/Src/wptW32API.cpp	2006-02-02 08:20:50 UTC (rev 174)
+++ trunk/Src/wptW32API.cpp	2006-02-07 08:58:04 UTC (rev 175)
@@ -542,6 +542,27 @@
 }
 
 
+/* Generate a temporary file name by using the users
+   temp path and optionally a name @name provided by the caller.
+   Return value: 0 on success. */
+int
+get_temp_name (char *buf, DWORD buflen, const char *name)
+{
+    char tmp[32];
+
+    if (!name) {
+	sprintf (tmp, "%08lX", GetTickCount ());
+	name = tmp;
+    }
+    if (!GetTempPath (buflen - strlen (name) -2, buf)) {
+	log_debug ("GetTempPath() failed ec=%d\n", (int)GetLastError ());
+	return -1;
+    }
+    strcat (buf, name);
+    return 0;
+}
+
+
 struct reminder_hd_s {
     int msecs;
     HWND dlg;



More information about the Winpt-commits mailing list