/[winpt]/trunk/Src/ChangeLog
ViewVC logotype

Diff of /trunk/Src/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8 by twoaday, Mon Apr 4 13:29:25 2005 UTC revision 201 by twoaday, Sat Apr 22 18:30:24 2006 UTC
# Line 1  Line 1 
1  2001-01-21  Timo Schulz <[email protected]>  2006-04-22  Timo Schulz  <[email protected]>
2    
3      * wptNLS.cpp: ported to C++.          * wptKeyEditDlgs.cpp (addrevoker_dlg_proc): Encode
4      (gettext): Remove CP850 to ISO88591 conversation.          revoker name in UTF8.
5            * wptKeysigDlg.cpp (keysig_dlg_proc): Fix utf8 problem
6  2001-01-28  Timo Schulz <[email protected]>          with the window title.
7            
8      * wptHotkey.cpp: (register_hotkey): Hotkey registration.  2006-04-20  Timo Schulz  <[email protected]>
9      (unregister_hotkey): Hotkey removing.  
10      * wptHokey.h: New.          * wptUTF8.cpp (native_to_utf8): Use c++ alloc.
11      * wptWndHook.cpp:          * wptKeygenDlg.cpp (keygen_dlg_proc): Do not mix c and
12      (wpt_cpt_proc): Window hook to save the current windows.          c++ memory allocation.
13      * wptWndHoo.h: New.          * wptFileManager.cpp (show_verify_result): Show PKA status
14      * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.          if possible.
15      * WinPT.cpp: (WinMain): Add hotkey registration.          * wptClipVerifyDlg.cpp (get_pka_status): New.
16            (clip_verify_dlg_proc): Show PKA status if possible.
17  2001-01-29  Timo Schulz <[email protected]>          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Handle IDCANCEL
18            to use ESC to quit the dialog.
19      * wptClipboard.cpp: (clip_is_already_secure):          * wptKeyEditDlgs.cpp (keyedit_adduid_dlg_proc): Also
20      Modify the pgp data detection.          encode the comment in UTF8. Thanks to Werner and Jan.
21            
22  2001-01-31  Timo Schulz <[email protected]>  2006-04-16  Timo Schulz  <[email protected]>
23    
24      * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.          * wptHTTP.cpp (getErrorCode): New.
25      * wptW32API.cpp: New.          (connect): Store winsock error code.
26      * WinPT.cpp: (WinMain): Change the keyring checking code.          * wptGPGMEData.cpp (is_armor_header): New.
27            * wptGPG.cpp (check_gnupg_engine): Free context.
28  2001-02-01 Timo Schulz <[email protected]>          (gnupg_backup_keyrings): Do not use global vars.
29            * wptGPGUtil.cpp (gpg_export_seckey): Export in ascii format.
30      * wptW32API.cpp: (w32_get_edit_text): New.          
31      (w32_set_menu_text): New.  2006-04-15  Timo Schulz  <[email protected]>
32      (w32_strdup): New.  
33      * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.          * wptKeyManager.cpp (km_get_key): New.
34      * Create all dialogs windows in the foreground.          (km_key_show_revoc_info): New.
35            * wptKeyRevokeDlg.cpp (key_revoke_dlg): Cleanups.
36  2001-02-02  Timo Schulz <[email protected]>          (on_init_dialog): New.
37            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Factour
38      * wptW32API.cpp: (w32_hit_key): New.          out some common code and use km_get_key() instead.
39      (w32_rel_key): New.          * wptKeyEditDlgs.cpp (do_init_keylist): Change second
40      (w32_copy_to_clip): New.          param type. Change all callers.
41      (w32_insert_from_clip): New.          * wptKeyEdit.cpp (addNotation): New.
42      (w32_get_clip_text): New.          * wptKeyEditCB.cpp (editkey_command_handler): Remove 'step'
43      (w32_set_clip_text: New.          param everywhere. Change all callers.
44      (w32_show_if_icon): New.          
45    2006-04-09  Timo Schulz  <[email protected]>
46  2001-02-03  Timo Schulz <[email protected]>  
47            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Only return true
48      * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.          if the homedir value was changed.
49      (oe_find_addr_window): Ditto.          * wptGPG.cpp (default_key_from_cache): Only return secret key
50      (oe_find_main_window): Ditto.          if public part is available.
51            (set_gnupg_default_key): Fix NULL problem.
52  2001-02-04    Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (do_editkey_clean): Set update flag.
53            * wptFileCBS.cpp (write_cb, read_cb): Better error handling.
54      * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Handle
55      * wptMainProc.cpp: (wpt_main_proc):          'always-on-top' correctly.
56      Remove ciphertext checks for signing and encrypting.          * wptKeylist.cpp (keylist_get_recipients): Allocate enough
57      (allow double encryption).          mem to hold all possible keys.
58            (keylist_enum_keys): Likewise.
59  2001-02-07    Timo Schulz <[email protected]>          
60    2006-04-08  Timo Schulz  <[email protected]>
61      * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.  
62      * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.          * wptKeylist.cpp (keylist_get_recipients): Always use utf8 output.
63            * wptKeyserver.cpp (kserver_connect): Fixed proxy support.
64  2001-02-10  Timo Schulz <[email protected]>          * wptKeyserverSearchDlg.cpp (fetch_keys): New.
65            * WinPT.cpp (WinMain): if the default key was not found, reset
66      * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.          the gpg.conf entry.
67      * wptKeylistElement.cpp: New.          * wptFileManager.cpp (fm_encrypt_into_zip): Use correct output
68      * wptListElement.cpp: Remove.          file name.
69      * wptW32API.cpp: Insert all lv_*** functions.          (show_verify_result): Always use utf8 output.
70      * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.          (get_output_file): Case in-sentensive comparison.
71      (wpt_lv_keylist_release_keys): Ditto.          (fm_assume_onepass_sig): Fixed temp file handling.
72      * wptW32API.cpp: (w32_get_thread_id): New.          * wptClipEncryptDlg.cpp (show_invalid_recipients): Fix utf8
73      (w32_attach_thread_input): New.          output.
74      * wptMailPlugin.cpp: (oe_get_message): Add thread attach mechanism.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Fix possible segv.
75      (oe_get_message): Add thread attach mechanism.          
76      (oe_encrypt): Modify for the attach treach mechanism.  2006-04-07  Timo Schulz  <[email protected]>
77      Add sanity check for recipients.  
78            * wptW32API.cpp (set_clip_text): Change code so it also
79  2001-02-17  Timo Schulz <[email protected]>          works again with non-XP systems.
80            
81      * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from  2006-04-02  Timo Schulz  <[email protected]>
82      the registry.  
83      (set_reg_entry): Set a gnupg registry key.          * wptKeyserver.cpp: decrease general threshold for timeout.
84      * wptGPG.cpp: Modify all function for the use with get_reg_entry().          * wptKeyEditDlgs.cpp (do_editkey_clean): New.
85      * WinPT.cpp: Change the way for the gpg searching mechanism.          
86      * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.  2006-04-01  Timo Schulz  <[email protected]>
87      * wptClipImportDlg.cpp: (key import dialog): New.  
88      * wptKeylistElement.cpp:          * wptFileVerifyDlg.cpp (file_verify_use_event): Removed.
89      (wpt_lv_implist_build): Build up the key import list.          * wptFileManager.cpp (restore_original_name): New.
90      (wpt_lv_implist_add_key): Insert a key into the import list.          (fm_decrypt): Restore original file name from literal
91      (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.          packet if possible.
92            
93  2001-02-19  Timo Schulz <[email protected]>  2006-03-31  Timo Schulz  <[email protected]>
94    
95      * wptRegistry.cpp: (is_installed): Remove.          * wptCommonDlg.cpp (nls_load_langlist): New.
96      (regist_inst_winpt): Add selfcheck.          (nsl_set_language): New.
97      (regist_inst_gpg): New. Add gpg releated registry entries.          (nls_dlg_proc): New.
98      (regist_inst_mo): New. Add nls related path.          (select_language): New. Allow user to select the language.
99      (get_reg_entry), set_reg_entry(): Modify to be more flexible.          * wptNLS.c (get_gettext_langid): Updated available languages.
100      (set_reg_entry_gpg): Handy functions for get_reg_entry.          * WinPT.cpp (WinMain): Allow to select the languag on first
101      (set_reg_entry_mo): Ditto.          start in non-installer environments.
102      (get_reg_entry_gpg): Ditto.          * wptVerifyList.cpp (verlist_build): Simplified.
103      (get_reg_entry_mo(): Ditto.          (verlist_add_sig_log): Likewise.
104      * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.          * wptListview.cpp (listview_set_column_width,
105      * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.          listview_get_selected_item): New.
106      include keyring entries (2x)          * wptKeyManager.cpp (gpg_clip_export): Merged into..
107      (check_gpg_path): Include the check_gpg_optfile() check.          (km_clip_export): ..this function.
108            
109  2001-02-20  Timo Schulz <[email protected]>  2006-03-30  Timo Schulz  <[email protected]>
110    
111      * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.          * wptW32API.cpp (insert_menu_item): New.
112      * wptClipImportDlg.cpp: Add some new code.          * wptSigTreeDlg.cpp (create_popup): Use it.
113            (sigtree_dlg_proc): Only show the name of the owner in the title.
114  2001-02-21  Timo Schulz <[email protected]>          * wptMainProc.cpp (init_common_controls): Initialize all
115            common controls here.
116      * wptGPG.cpp: Fix the check_gpg_optfile() code.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Drop static
117          (gpg_errstr): Define some error constants to be more verbose.          keyserver menu concept. Add all keyservers dynamically.
118          (set_gpg_options): New. Manipulate the options file.          
119          (get_gpg_options): New. Read in the options file.  2006-03-29  Timo Schulz  <[email protected]>
120      * wptFile.cpp: (get_file_size): New.  
121      * wptGPGOptDlg.cpp: New. Dialog for editing the options file          * wptKeyManager.cpp (km_refresh_one_key): Fix problem
122            with preferred keyserver.
123  2001-02-22  Timo Schulz <[email protected]>          * wptCommonDlg.cpp (check_URL): Allow non-http URL.
124            * wptKeyEditDlgs.cpp (subkey_subclass_proc,
125      * wptGPG.cpp: (check_line): New. Check if the line contains a valid          uid_subclass_proc): Disable shortcuts for non keypairs.
126      gpg argument.          * wptMainProc.cpp (winpt_main_proc): No user interaction
127      (check_gpg_options): New. Parses each buffer line to check_line().          on automatic shutdown. Thanks to Werner.
128            * wptGPGUtil.cpp (xcalloc): New.
129  2001-02-24  Timo Schulz <[email protected]>          (gpg_rebuild_cache): Use --batch.
130            
131      * wptGPG.cpp: (check_gpg_path): Fix a bug.  2006-03-26  Timo Schulz  <[email protected]>
132     (check_gpg_options): Fix some bugs.  
133            * wptSigTreeDlg.cpp (sigtree_load): Always use UTF8.
134  2001-02-25  Timo Schulz <[email protected]>          * wptMainProc.cpp (winpt_main_proc): Reload key cache
135            when the GPG settings were changed.
136      * wptGPGPrefsDlg.cpp: Add some new translation strings.          * wptKeygenDlg.cpp (keygen_wizard_dlg_proc,
137      * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.          keygen_dlg_proc): Improved check for the email address.
138      * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.          * wptKeyEditDlgs.cpp (keyedit_adduid_dlg_proc): Likewise.
139      * wptClipImportDlg.cpp: Finished basic interface.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Modified design.
140            
141  2001-02-27  Timo Schulz <[email protected]>  2006-03-22  Timo Schulz  <[email protected]>
142    
143      * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.          * wptClipSignDlg.cpp (on_init_dialog): New.
144      * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):          Check that there is at least one useable signing key.
145      Fixed.          * wptSigTreeDlg.cpp (sigtree_load): Correct UTF8 handling.
146            * wptKeyEditDlgs.cpp (keyedit_set_pref_keyserver): Show error
147  2001-03-15  Timo Schulz <[email protected]>          if needed.
148            
149      * wptClipEncryptDlg.cpp: Fix translation.  2006-03-21  Timo Schulz  <[email protected]>
150      * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).  
151      * wptKeymiscDlg.cpp: Fix the key deleting stuff.          * wptUTF8.cpp (native_to_utf8): Use directly W32 API.
152            (utf8_to_native): Likewise. Remove cp850 conversion.
153  2001-03-16  Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (do_find_userid): Correct UTF8 handling.
154            * wptKeyManager.cpp (km_delete_keys): Do not reset 'with_seckey'
155      * wptDlgs.h: Add new dialog callback function.          flag.
156      * wptKeysigDlg.cpp: New. Key signature listing dialog.          
157    2006-03-20  Timo Schulz  <[email protected]>
158  2001-03-18  Timo Schulz <[email protected]>  
159            * wptUTF8.cpp (get_native_charset): Removed.
160      * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.          (utf8_to_native): Rewritten.
161      * wptAgent.cpp: New: Experimental passphrase caching.          * wptKeyEditDlgs.cpp (do_add_new_userid): Correct charset
162            handling.
163  2001-03-19  Timo Schulz <[email protected]>          * wptKeygenCBDlg.cpp (keygen_cb): Do proper reset if needed.
164            
165      * wptVerifyList.cpp: New control for the verify dialog.  2006-03-16  Timo Schulz  <[email protected]>
166      * wptClipVerifyDlg.cpp: Rewrote  
167            * wptMainProc.cpp (winpt_main_proc): Disable all CryptDisk code.
168  2001-03-20  Timo Schulz <[email protected]>          * wptCryptDisk.cpp: Disable code.
169            * wptProxySettingsDlg.cpp (proxy_settings_dlg_proc): Support for
170      * wptClipDecryptDlg.cpp: Rewrote          NONE proxy protocol.
171            (init_proxy_procotol): Likewise.
172  2001-03-21  Timo Schulz <[email protected]>          (read_proxy): Likewise.
173            * wptKeyserverSearchDlg.cpp (on_init_dialog): New.
174      * WinPT.cpp: (WinMain): Re-activate the enable debug switch.          (keyserver_search_dlg_proc): Use it here.
175      * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.          * wptKeyserverDlg.cpp (hkp_send_key): Use GPGME wrapper.
176            * wptKeyserver.cpp (kserver_search_end): New.
177  2001-03-28  Timo Schulz <[email protected]>          (kserver_search_begin): Be more strict on mem allocation.
178            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Fix 'redraw'
179      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):          problem.
180      Added the keyid to the "no trust" message.          * wptAboutDlgs.cpp (about_dlg_proc): Hide 'Help' button.
181      * wptKeyserverDlg.cpp: (check_pattern): New:          
182      Do some sanity checks of the search pattern.  2006-03-12  Timo Schulz  <[email protected]>
183      * wptMainProc.cpp: (wpt_main_proc): Add agent support.  
184      * wptHotkey.cpp: Add agent support.          * wptGPG.cpp (gnupg_load_config): Search for 'ask-cert-expire'.
185            * wptKeyPropsDlg.cpp (display_key_info): Automatically update
186  2001-03-30  Timo Schulz <[email protected]>          sym algorithm preferences if needed.
187            * wptKeysignDlg.cpp (date_is_today): New.
188      * wptW32API.cpp: (new_strdup): Remove.          (keysign_dlg_proc): Only allow to set cert expire date if
189      * wptW32API.h: Ditto.          the option was found.
190      * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Allow to set
191      * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.          'ask-cert-expire'.
192            
193  2001-03-31  Timo Schulz <[email protected]>  2006-03-10  Timo Schulz  <[email protected]>
194    
195      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,          * wptHTTP.c: deleted.
196      the GPG default key will be used.          * wptHTTP.cpp (wHTTP): Transformed old code into an object.
197            * wptKeyManager.cpp (km_http_import): Use new code.
198  2001-04-02  Timo Schulz <[email protected]>          (km_refresh_one_key): Use preferred keyserver if possible.
199            * wptComonDlg.cpp (check_URL): Better conformance checking.
200      * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.          * wptKeyEditCB.cpp (cmd_keyserver_handler): By default
201      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only          set keyserver for all userids.
202      contains valid keys.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Enable code
203      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.          to set preferred keyserver.
204            * wptKeyCache.cpp (decode_subpacket): New.
205  2001-04-04  Timo Schulz <[email protected]>          (gpg_keycache_update_attr): New.
206            * wptGPGUtil.cpp (gpg_find_key_subpacket): New.
207      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static          * wptKeyEditDlgs.cpp (keyedit_set_pref_keyserver): Use
208      passphrase. Now a callback context is used.          -1 as an index for all userids.
209      (passphrase_cb): Ditto.          
210      (clip_decrypt_dlg): Ditto.  2006-03-07  Timo Schulz  <[email protected]>
211      * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.  
212      (install_cbt_hook): Modify for the new thread model.          * WinPT.cpp (set_default_keyserver): New.
213      (remove_cbt_hook): Ditto.          * wptKeyserver.cpp (kserver_set_socket_timeout): New.
214      * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.          (kserver_set_default_keyserver): Initialize default settings
215      (delete_critical_section): Ditto.          if needed.
216      (lock): Ditto.          * wptSymEnc.cpp (gpg_encrypt_symmetric): Disallow empty passwords.
217      (unlock): Ditto.          * wptPassphraseDlg.cpp (request_passphrase): Handle new flag.
218            (passphrase_dlg_proc): Support new safe edit window procedure.
219  2001-04-06  Timo Schulz <[email protected]>          * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
220            * wptPreferencesDlg.cpp (prefs_dlg_proc): Flush passphrase cache
221      * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.          if user disable it.
222      * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the          * wptKeylist.cpp (keylist_build): Do not scale images but use
223      ownertrust dialog.          original size.
224            * wptListView.cpp (listview_set_image_list): New size params.
225  2001-04-06  Timo Schulz <[email protected]>          Change all callers.
226            
227      * wptGPG.cpp: (check_gpg_path): Fix a small error.  2006-03-01  Timo Schulz  <[email protected]>
228      * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the  
229      first time a user started WinPT.          * wptW32API.cpp (set_clip_text): Free all memory.
230      * wptClipboard.cpp: (clip_isalready_secured): Check the begin and          
231      end PGP header.  2006-02-27  Timo Schulz  <[email protected]>
232    
233  2001-04-07  Timo Schulz <[email protected]>          * wptSOCKS.cpp (socks_handshake): New.
234            * wptMainProc.cpp (winpt_main_proc): A dbl-click forces
235      * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.          the key manager in teh foreground if possible.
236      (agent_destroy): Ditto.          * wptHotkey.cpp (hotkey_unregister): Unregister all hotkeys.
237      (agent_passphrase_cache): Ditto.          * wptRegistry.cpp (get_reg_proxy_prefs,
238      (agent_passphrase_remove): Ditto.          set_reg_proxy_prefs): Use directly the proxy context.
239      (agent_passphrase_get): Ditto.          Changed all callers.
240            * wptProxySettingsDlg.cpp (init_proxy_protocols): New.
241  2001-04-09  Timo Schulz <[email protected]>          (keyserver_proxy_dlg_proc): Use directly the proxy context.
242            * wptKeyserver.cpp (kserver_connect): Better proxy support.
243      * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet          (kserver_send_request, kserver_recvkey_request): Likewise.
244      type. Kludge for decrypt/verify.          * wptKeyserverDlg.cpp (name_from_proto): New.
245      * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the          (set_proxy): Adjusted for the new code.
246      code into the decrypt routine.          
247      * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start  2006-02-26  Timo Schulz  <[email protected]>
248      the key management after import.  
249            * WinPT.cpp (WinMain): Removed hotkey_modify() code.
250  2001-04-09  Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (is_idea_protect_algo): Better support
251            v4 keys.
252      * wptGPG.cpp: (check_line): Ignore empty lines.          * wptKeyserver.cpp (sock_getline): Skip '\r'.
253      (check_gpg_options): Ditto.          (base64_encode): Remove @maxlen param. Changed all callers.
254            (finger_readline): Removed.
255  2001-04-12  Timo Schulz <[email protected]>          (finger_recvkey): Use internal functions.
256            * wptSigTreeDlg.cpp (sigtree_dlg_proc): Support a context menu.
257      * wptHotkeys.cpp: (register_single_hotkey): Add code for the current          (show_sigprops): New.
258      window stuff.          (create_popup): New.
259      * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window          * wptPreferenceDlg.cpp (prefs_dlg_proc): Cache amount is
260      hotkeys.          now in minutes.
261      * wptW32API.cpp: (attach_thread_input): Split up the functions into          * wptRegistry.cpp (get_winpt_reg_prefs, set_winpt_reg_prefs):
262      two parts. The attach flags is always set.          Change code to use hotkeys directly.
263      (detach_thread_input): See above. The attach flags is never set.          * wptHotkeys.cpp (hotkeys_enable, hotkey_disable): Likewise.
264      * wptCurrWnd.cpp: New. Code for the current window stuff.          
265      (get_window_contents): Extract the text from the given window to  2006-02-24  Timo Schulz  <[email protected]>
266      the clipboard.  
267      (set_window_contents): Insert clipboard into the given window.          * wptGPG.cpp (set_gnupg_default_key): Allow to remove entry
268            when parameter is NULL.
269  2001-04-13  Timo Schulz <[email protected]>          * wptKeyManager.cpp (check_exist_default_key): New.
270            (km_delete_keys): Check if the default key is still valid,
271      * wptMailPlugin.cpp: (oe_set_message): Change the id's for          if not delete entry.
272      the attach_thread_input.          * wptSigTreeDlg.cpp (sigtree_dlg_proc): Forgot to localize
273      (oe_get_message): Ditto.          button.
274      * wptCurrWnd.cpp: (get_window_contents): Ditto.          
275      (set_window_contents): Ditto.  2006-02-21  Timo Schulz  <[email protected]>
276    
277  2001-04-14  Timo Schulz <[email protected]>          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Minor
278            cleanups.
279      * wptCurrWnd.cpp: (get_window_contents): Add an event to switch          * wptGPGUtil.cpp (file_extract_recipients): New.
280      the windows. This is needed by the current code.          (clip_extract_recipients): New.
281      (set_window_contents): Ditto.          (gpg_get_recipients): New.
282      * wptWndSwitchDlg.cpp: (wndswitch_dlg_proc): Create a hidden dialog          * wptPassphraseCB.cpp (passphrase_callback_proc): Support
283      and force it to the foreground. This is the event needed by the code          external recipient listings.
284      above.          
285      (create_wndswitch_event): Execute the dialog.  2006-02-15  Timo Schulz  <[email protected]>
286      * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey  
287      section. Add message entries for the code.          * wptKeysignDlg.cpp (keysign_dlg_proc): Localize new checkbox.
288      * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE          * wptFileStatDlg.cpp (get_s2k_algo): New.
289      mailer code.          * wptFileManagerDlg.cpp (update_status_bar): Use human readable
290      (insert_window_from_clip): Ditto.          formats.
291      * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add          
292      the event to switch the windows.  2006-02-14  Timo Schulz  <[email protected]>
293      (oe_get_message): Ditto.  
294            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Localize 'Cancel'.
295  2001-04-16  Timo Schulz <[email protected]>          * wptKeysignDlg.cpp (keysign_dlg_proc): Implement 'Hide Typing'.
296            * wptFileManager.cpp (fm_sym_encrypt): Set cancel.
297      * wptWndHook,cpp (cbt_proc): Compare process ids to differ between          (fm_parse_files): Handle cancel.
298      WinPT and normal windows.          
299      (install_cbt_hook): Add pid to the context.  2006-02-10  Timo Schulz  <[email protected]>
300    
301  2001-04-17  Timo Schulz <[email protected]>          * wptKeyPropsDlg.cpp (props_dlg_proc): Removed unused vars.
302            * wptKeyEditDlgs.cpp (do_editkey_check): Use winpt_key_t
303      * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window          for the dialog param.
304      belongs to the taskbar area.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use new list
305      (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.          signature dialog by default.
306      (cbt_proc): Change code to include both functions.          * wptKeysigDlg.cpp (sigprops_dlg_proc): Use directly
307      * wptCurrWnd.cpp (get_window_contents): Add switch if we use the          gpgme_key_sig_t as param.
308      foreground or the CBT window.          (keysig_dlg_proc): Change param for property dialog.
309      * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the          * wptSigTreeDlg.cpp (sigtree_load): Skip revoked user-ids
310      current window mode set the no_cbt variable.          and use icons.
311      * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring          (sigtree_dlg_proc): Allow to execute old list dialog to
312      was modified by an external program.          edit the signatures.
313      * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external          
314      keyring changes.  2006-02-09  Timo Schulz  <[email protected]>
315    
316  2001-04-21  Timo Schulz <[email protected]>          * wptRegistry.cpp (set_winpt_reg_prefs): Removed keylist mode.
317            * wptNLS.c (gettext_localize_dialog): New.
318      * wptWndHook.cpp (install_cbt_hook): Remove the thread because the          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Add 'Cancel' button
319      system already is into a DLL.          to avoid to reload the key cache.
320      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use          * wptClipEncryptDlg.cpp (clipenc_dlg_proc): Drop old 'normal'
321      instead of it a button to check the key signatures.          list mode.
322      * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
323      from the given gpg object.          * wptPreferencesDlg.cpp (on_init_dialog): New. Move dialog
324      (check_last_gpg_access): New. Compare the last file timestamp with the          initiation code to this function.
325      new timestamp.          (prefs_dlg_proc): Use it here.
326      (init_gpg_table): New. Initialize the table with gpg objects who shall          
327      be watched.  2006-02-07  Timo Schulz  <[email protected]>
328      (keyring_check_last_access): Use the new code.  
329      * wptCurrWnd.cpp (set_window_contents): Restore the window if it is          * wptKeyEdit.cpp (setNoPassphrase): New.
330      now iconic.          (getValidDays): New.
331      * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the          * wptKeysignDlg.cpp (keysign_dlg_proc): Check on init
332      current window stuff.          if the key is protected.
333            * wptKeyEditDlgs.cpp (keyedit_addphoto_dlg_proc): Handle
334  2001-04-22  Timo Schulz <[email protected]>          keys without a passphrase.
335            (keyedit_addrevoker_dlg_proc): Likewise.
336      * wptGPG.cpp (check_last_gpg_access): Reset switch before testing          
337      the condition.  2006-02-04  Timo Schulz  <[email protected]>
338      * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate  
339      all children windows.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Check for
340      (find_parent_wnd_proc): New. Callback to enumerate all parent windows.          at least one ultimately trusted key.
341      (find_window): New. Return if the specified windows as found.          * wptKeyManager.cpp (km_refresh_key_from_keyserver):
342      * wptW32API.cpp: (dialog_box_param): New. Alias with the additional          Only check inet connection if we refresh all keys.
343      feature to check if the dialog already exist (and then preventing          * wptGPGUtil.cpp (gpg_extract_keys): New.
344      the creation).          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use textmode.
345      * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
346      then new dialog_box_param function. Thanks to Martin who told me          * wptClipSignDlg.cpp (get_selected_key): New.
347      about this dialog problem.          (one_key_proc): Use it here.
348      * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.          (count_useable_seckeys): New.
349      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the          * wptSigTreeDlg.cpp (sigtree_dlg_proc): New.
350      new signature buttons.          * wptKeyEditDlgs.cpp (diff_time): Removed.
351            (w32_mktime): New.
352  2001-04-23  Timo Schulz <[email protected]>          (keyedit_addsubkey_dlg_proc): Use it here.
353            
354      * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality  2006-02-02  Timo Schulz  <[email protected]>
355      is not needed because all dialog windows are top level windows.  
356            * wptW32API.cpp (get_temp_name): New.
357  2001-04-24  Timo Schulz <[email protected]>          * wptKeyserver.cpp (ldap_recvkey): Use it here.
358            * wptKeyPropsDlg.cpp (get_photo_tmpname): Likewise.
359      * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview          * wptGPGUtil.cpp (create_tempfile): Likewise.
360      item and set it to zero.          * wptImportList.cpp (implist_load): Likewise.
361      * wptSignDlg.cpp (sign_dlg_proc): Ditto.          * wptKeyCache.cpp (parse_attr_data): Likewise.
362      * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.          (w32_tempfile): Removed.
363      * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.          * wptGPGME.cpp (check_ultimate_trusted_key): New.
364      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.          
365      (keymisc_dlg_proc): Provide the functionality to delete key pairs  2006-01-31  Timo Schulz  <[email protected]>
366      secret+public.  
367      * wptWndHook.cpp (is_winpt_wnd): Remove this function and put          * wptMainProc.cpp (winpt_main_proc): Fix usage of the
368      all code into (check_wnd).          help system.
369      (check_wnd): Check if the window doesn't is a application related          * wptListView.cpp (listview_set_chkbox_style): New.
370      window.          (listview_get_item_state): Support new checkbox style.
371            (listview_new): Reset flag var.
372  2001-04-25  Timo Schulz <[email protected]>          * wptKeylist.cpp (keylist_build): Support new checkbox style.
373            
374      * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME  2006-01-30  Timo Schulz  <[email protected]>
375      callback system to pass the keyedit information to GPG.  
376      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.          * WinPT.cpp (check_readonly_attr): New.
377            (load_gpg_env): Use it here.
378  2001-04-26  Timo Schulz <[email protected]>          (WinPT): Make the the default key is searched in the
379            secret key cache.
380      * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various          Change error message.
381      edit-key commands.          * wptRegistry.cpp (regist_int_winpt): Make sure
382      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit          the register extension is only offered once to the user.
383      key code.          * wptKeyPropsDlg.cpp (get_photo_tmpname): Always use
384            temp directory. Fixed a privilege problem.
385  2001-04-27  Timo Schulz <[email protected]>          
386    2006-01-29  Timo Schulz  <[email protected]>
387      * wptCurrWnd.cpp (get_window_contents): Change the code for the last  
388      window concept. Thanks to Oliver.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow to use ESC
389      (set_window_contents): Add some stuff to set the position if the          to quit dialog.
390      current window is an edit control.          * wptKeysignDlg.cpp (sig_class_dlg_proc): More space for
391      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'          translations. Directly return sig class.
392      stuff.          (keysign_dlg_proc): Change msgbox title.
393      * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to          * wptKeyEdit.cpp (signUserid): New.
394      create a new user id for a GPG key.          (getUseridIndex): New.
395            (getKeyIndex): New.
396  2001-04-28  Timo Schulz <[email protected]>          (getSigIndex): New.
397            (clear): New.
398      * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.          * wptKeyEditCB.cpp (cmd_sign_handler): Allow to select
399      So it's easier to update GPGME and we can use NLS to translate          user-id first.
400      error strings.          * wptKeyEditDlgs.cpp (lookup_cmd): New.
401      * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code          (do_editkey_sign_userid): New.
402      because we only use it here.          (do_init_cmdlist): Differ between key pairs and public keys
403      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'          and allowed actions.
404      feature to the edit-key interface.          (keyedit_change_ownertrust): Show msgbox on success.
405            (get_default_key): New.
406  2001-04-29  Timo Schulz <[email protected]>          * wptPassphraseDlg.cpp (request_passphrase): Reset @cancel.
407            
408      * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.  2006-01-27  Timo Schulz  <[email protected]>
409      (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the  
410      adduid command.          * WinPT.cpp (WinMain): Set minimal list mode as default.
411      * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize          * wptKeyCache.cpp (gpg_keycache_sync): Handle special v3 keys.
412      the dialog with a KEY structure that holds the keyid and the userid.          
413      * wptWndHook.cpp: Remove the global context and use instead of it  2006-01-25  Timo Schulz  <[email protected]>
414      static variables. Put all static variables into the SHARED data  
415      segment in the DLL.          * wptRegistry.cpp (get_reg_entry_gpg): Return NULL if
416            the key exist with no value.
417  2001-04-30  Timo Schulz <[email protected]>          * wptMDSumDlg.cpp (mdsum_dlg_proc): Translate string.
418            * wptKeysignDlg.cpp (do_fill_seclist): Select the
419      * wptClipEditDlg.cpp: Now the dialog uses the Courier font to          default key if possible.
420      enhance the format of keys and other GPG data.          * wptFirstRunDlg.cpp (firstrun_dlg_proc): Directly
421      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod          return the choice.
422      flag after receiving a key.          * wptKeylist.cpp (get_key_desc): New.
423      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when          (keylist_upd_key): Free memory.
424      no listbox entry was choosen.          * wptKeyCache.cpp (gpg_keycache_get_default_key): New.
425      * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to          (gpg_keycache_set_default_key): New.
426      the NLS suite.          * WinPT.cpp (gpg_prefs_ok): New.
427      * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag          (WinMain): Only start gpg prefs if needed.
428      instead of refresh the keycache.          
429    2006-01-24  Timo Schulz  <[email protected]>
430  2001-05-01  Timo Schulz <[email protected]>  
431            * wptKeyManager.cpp (km_dropped_file_import): New.
432      * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence          * wptKeyManagerDlg.cpp (keylist_subclass_proc): Allow
433      to a window.          to drop files and try to import them.
434      (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.          (keymanager_dlg_proc): Pass kmi as opaque to the subclass
435      (wnd_msg_paste): New. Send the CTRL+v key sequence to a window.          proc.
436      (wnd_msg_em_set_pos): Manipulate an edit multiline control text pos.          
437      * wptMainProc.cpp (wpt_main_proc): Fix some message string for  2006-01-23  Timo Schulz  <[email protected]>
438      the hotkey handling. Quit the program if a registration procedure  
439      failed.          * wptMDSumDlg.cpp (mdsum_dlg_proc): Allow to send output
440      * wptErrors.cpp (log_box): Improved log handling to dump states          to the clipboard.
441      of variables during regression tests.          * wptKeyEditDlgs.cpp (keyedit_change_ownertrust): New.
442            (do_editkey_enable_disable): New.
443  2001-05-02  Timo Schulz <[email protected]>          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Usability fix. Do not
444            close the dialog if the user cancelled the ownertrust dialog.
445      * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Return TRUE to indicate
446      subkeys for the mainkeys.          an update of any value.
447      * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground          
448      window flag.  2006-01-21  Timo Schulz  <[email protected]>
449      * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the  
450      addkey feature.          * wptKeyCache.cpp (keycache_next_key): Handle the case
451            that there is a secret key without a public part.
452  2001-05-04  Timo Schulz <[email protected]>          * wptKeyserver.cpp (kserver_save_conf): Save ports.
453            * wptKeyserverDlg.cpp (keyserver_modify_dlg_proc):
454      * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.          Reset keyserver name.
455      * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Just indicate
456      Move all the GPGME specific code to the main dialog. Now only          an update, do not update the cache.
457      the context values are set.          * wptFileManagerDlg.cpp (file_import_dlg_proc): Use one
458      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust          dialog for both clipboard and file imports.
459      code.          * wptKeyManager.cpp (km_file_import, km_clip_import):
460            Changes to support new update system.
461  2001-05-05  Timo Schulz <[email protected]>          (gpg_clip_import): New.
462            * wptKeyManagerDlg.cpp (km_gui_import): New.
463      * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve          (find_keypos): Rewritten.
464      the current window handle. This code doesn't use the hook DLL.          (refresh_keylist): Improved error checking.
465      Thanks to Oliver Nittka for his patch.          
466      * wptErrors.cpp (winpt_strerror): Fixed a small typo.  2006-01-20  Timo Schulz  <[email protected]>
467      * wptGPG.cpp (check_last_gpg_access): Remove debug code.  
468      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading          * wptKeyCache.cpp (w32_tmpfile): New.
469      scheme to prevent reloading the cache twice.          (parse_attr_data): Use it here.
470            * wptGPGUtil.cpp (gpg_get_photoid_data): Reset @ndata var.
471  2001-05-08  Timo Schulz <[email protected]>          
472    2006-01-19  Timo Schulz  <[email protected]>
473      * wptKeyserver.cpp (wsock_init): Replace the kserver init  
474      code which initialized the Wsock2 interface.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Do not
475      (wsock_end): Ditto.          reload the entire cache, just update the key.
476      * wptAgent.cpp: Remove the passphrase caching code and add          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Likewise.
477      the GPG agent code.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Set update flag.
478            * wptKeyRevokersDlg.cpp (key_revokers_dlg_proc): Likewise.
479  2001-05-09  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Update key
480            if need after showing the properties.
481      * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.          * wptGPGMEData.cpp (gpg_data_putc): Fix off-by-one bug.
482      (gpga_readn): Read 'n' bytes from a socket.          * wptKeyManager.cpp (km_import_file): New param. Changed
483      (gpga_open): Open the interface to the GPG-Agent.          all callers.
484      (gpga_close): Close the GPG-Agent socket.          (km_import_clip): Likewise.
485      (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.          (delete_keys_from_cache): Delete secret part if available.
486      (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,          * wptClipImportDlg.cpp (print_import_status): If there
487      this keys will be remove from the GPG-Agent cache.          are too many new keys, use reload code.
488      (agent_delete_fpr): Remove a fingerprint from the cache.          
489      (agent_init): Clear the cache.  2006-01-18  Timo Schulz  <[email protected]>
490      (agent_timer_proc): Remove all stored passphrases which were  
491      requested through the chache.          * wptKeyEditCB.cpp (cmd_delsig_handler): Do not assume
492            the self sig is always index 0. Noted by Kurt.
493  2001-05-10  Timo Schulz <[email protected]>          * wptPassphraseCB.cpp (passphrase_dlg_proc): Do not assume
494            the key user-ID contains an email address.
495      * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve          * wptKeyEditDlgs.cpp (do_find_userid): Likewise.
496      the handle of the specified window.          (do_editkey_deluid): Likewise.
497      * wptAgent.cpp (agent_timer_proc): Changed the agent interface          (do_editkey_revuid): Likewise.
498      to window messages instead of socket connections.          
499      * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog  2006-01-18  Timo Schulz  <[email protected]>
500      and menu entry.  
501      * wptPreferencesDlg.cpp: New.          * wptListview.cpp (listview_del_sel_items): Fixed index
502            calculation. This fixed a lot of problems with the KM listview
503  2001-05-11  Timo Schulz <[email protected]>          update.
504            (listview_del_all): Renamed to...
505      * wptMainProc (wpt_main_proc): Change all related menu entries from          (listview_del_all_items): ..this. Changed all callers.
506      Encrypt & sign to Sign & Encrypt. Added the command to the current          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Just refresh
507      window menu and the handling of the window messages.          list when file import contained new/updated keys.
508      * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.          * wptKeyManager.cpp (km_file_import): Indicate if the
509      * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT          import contained any new/update keys.
510      preferences in the registry.          * wptClipImportDlg.cpp (print_import_status): Just mark
511      (get_reg_winpt_prefs): Read all preferences from the registry into          keys which actually changed.
512      the options context.          
513      * WinPT.cpp (WinMain): Read in the registry preferences at the begin  2006-01-17  Timo Schulz  <[email protected]>
514      and store it.  
515      * wptAgent.cpp (agent_init): Check if the environment variable          * wptMAPI.cpp (mapi_send_pubkey_ext): New.
516      GPG_AGENT_INFO is set, otherwise set it.          * wptKeysigDlg.cpp (do_delsig): Just flag the key, do not
517      (agent_is_running): Check wether the agent is running.          update it.
518      (agent_start): Automated function that read all needed information          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Be more
519      from global variables.          careful about const pointers.
520            * wptKeyEditDlgs.cpp (get_subkey_fingerprint): Renamed to..
521  2001-05-12  Timo Schulz <[email protected]>          (get_subkey_keyid): ..this. Fix problem that key was updated
522            twice and this corrupted.
523      * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption          (keyedit_add_subkey): Set @lv item in the callback context.
524      call.          
525    2006-01-16  Timo Schulz  <[email protected]>
526  2001-05-13  Timo Schulz <[email protected]>  
527            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Restore
528      * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist          window if it lost focus during the operation. Thanks to Kurt.
529      the function create it.          Update keylist when the window is enabled.
530      (set_reg_winpt_prefs): Use the new function to set the subkey values.          (find_keypos): New.
531      All functions now return WPTERR_REGISTRY instead of 1.          * wptKeyCache.cpp (keycache_next_key): Reset update status.
532      Add some error handling to prevent errors in the registry.          (gpg_keycache_next_updated_key): New arg @r_status. Change all
533      * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard          callers.
534      hotkeys and the caching time.          (gpg_keycache_update_key): Different status for new and updated.
535            Include key signatures.
536            * wptClipImportDlg.cpp (print_import_status): Mark all
537  2001-05-18  Timo Schulz <[email protected]>          imported keys.
538            * wptMainProc.cpp (clip_gpg_dlg): On import refresh KM keylist.
539      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various          Thanks to Kurt.
540      edit key commands. In the case the dialog was canceled, return without          * wptKeysigDlg.cpp (recv_missing_keys): Mark all received keys.
541      modifying anything.          (do_delsig): Directly reload key. Thanks to Kurt.
542      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the          * wptGPGME.cpp (keycache_set_reload, keycache_get_reload):
543      signature. If it doesn't contain a valid key, do nothing.          Removed.
544      * wptMainProc: (wpt_main_proc): If the hotkey setup doesn't work, don't          * wptKeygenDlg.cpp (keygen_dlg_proc): Use new update system.
545      quit the program. In some cases the hotkeys are possible locked.          * wptClipImportDlg.cpp (clip_import_dlg_proc): Return
546      * WinPT.cpp (WinMain): If there is an error with the gpg program/path,          FALSE if no keys were updated or operation was cancelled.
547      give the user the chance to start the GPG preference dialog.          * wptCommonDlg.cpp (http_dlg_proc): Fix title selection code.
548      * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey          * wptKeylist.cpp (get_ext_validity): Handle disabled keys.
549      support. Flag to disable all hotkeys. Reload new hotkeys (in the case          * wptKeyPropsDlg.cpp (keyprops_dlg_proc):
550      they changed). Load the registry entry on startup.          Do not allow to change ownertrust of invalid keys.
551      * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the          Changed translation.
552      stored registry entries.          Slightly different user interface.
553            
554  2001-05-19  Timo Schulz <[email protected]>  2006-11-14  Timo Schulz  <[email protected]>
555    
556      * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey          * wptW32API.cpp (make_special_filename): New.
557      flag is set, also disable all input items.          * wptRegistry.cpp (set_winpt_reg_prefs, get_winpt_reg_prefs):
558      (disable_dlg_item): New. Disable dialog items (windows).          Removed 'KeyServer' item.
559      * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys          * wptPreferencesDlg.cpp (prefs_dlg_proc): Remove keyserver
560      flag isn't set.          config item.
561      * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable group
562      a result the code only sended parts of the key.          window until we really use it.
563      * wptConfig.cpp: Removed. Not used any longer.          * wptKeyserver.cpp (kserver_save_conf): New.
564            (wsock_end): Save keyserver config file.
565  2001-05-20  Timo Schulz <[email protected]>          * wptKeyserverDlg.cpp (keyserver_edit): New.
566            (keyserver_remove): New.
567      * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries          (keyserver_add): New.
568      to figure out if both parts are available.          (fill_keyserv_types): New.
569            (keyserver_modify_dlg_proc): New.
570  2001-05-21  Timo Schulz <[email protected]>          (keyserver_dlg_proc): Provide context menu to modify the
571            keyserver list.
572      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid          (keyserver_build_list): Remove 'proto' column because it is
573      management.          not really useful.
574      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids          * WinPT.cpp (load_keyserver_conf): Store keyserver.conf at
575      from a special key.          $APPDATA\winpt. If keyserver.conf exists in the current folder
576            move it to the new destination.
577  2001-05-25  Timo Schulz <[email protected]>          
578    2006-11-13  Timo Schulz  <[email protected]>
579      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen  
580      user id. End the dialog if there was an error during the Gpgme operations.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Changed translation.
581      * wptClipboard.cpp (clip_istext_avail): First check if the pointer is          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Likewise.
582      valid and then look at the length. Avoid crashes for some texts.          * wptAboutDlgs.cpp (about_dlg_proc): Make sure GPG about
583            dialog isn't shown twice.
584  2001-05-27  Timo Schulz <[email protected]>          * wptKeyCache.cpp (gpg_keycache_next_updated_key): New.
585            (gpg_keycache_update_key): Set update flag.
586      * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.          * wptKeyManagerDlg.cpp (refresh_keylist): New.
587      (get_reg_winpt_prefs): Ditto.          (keymanager_dlg_proc): Use new refresh system for keyservers.
588      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the          * wptKeyserverSearchDlg.cpp (kserver_search_dlg_proc):
589      gpg process finished.          Update keycache.
590      * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to          * wptKeyserverDlg.cpp (hkp_dlg_proc): Likewise.
591      a humand readable date.          * wptKeyserver.cpp (socket_read_ext): New.
592            (kserver_recv_key_ext): New.
593            (kserver_read_config, kserver_write_config): Removed.
594  2001-06-01  Timo Schulz <[email protected]>          
595    2006-01-12  Timo Schulz  <[email protected]>
596      * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:  
597      Release context in the case of an error.          * wptListView.cpp (listview_set_image_list): Make icons
598      * wptMainProc.cpp (wpt_main_proc): Fix typo.          always transparent.
599      * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use          * wptImageList.cpp (imagelist_load): New icons.
600      a static gpg object array that contains all filenames.          * wptGPGMEData.cpp (gpg_data_putc): New.
601            * wptKeyManagerDlg.cpp (load_toolbar): Include new icons.
602            (keymanager_dlg_proc): Add tooltips.
603  2001-06-04  Timo Schulz <[email protected]>          * wptKeyserverDlg.cpp (keyserver_list_build): Use icons.
604            * wptKeyserver.cpp (URL_encode): New.
605      * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for          (URL_must_encode): New.
606      the improved import status.          (kserver_search_init): Properly encode pattern.
607            (parse_iso_date): New.
608            (keyserver_search): Be more strict to prevent buffer overflows.
609  2001-06-05  Timo Schulz <[email protected]>          
610    2006-01-11  Timo Schulz  <[email protected]>
611      * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned  
612      buffer is valid. Remove the fixme, because it's possible that there          * wptKeyManagerDlg.cpp (load_toolbar): 2 new icons.
613      were new cipher modules loaded.          (keymanager_dlg_proc): Adjust tooltips.
614      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the          (update_ui_items): Handle new icons.
615      context is valid.          * wptImageList.cpp (imagelist_load): New icons.
616      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.          
617      * wptW32API.cpp (status_box): New. Message box that is always forced  2006-01-10  Timo Schulz  <[email protected]>
618      to the foreground.  
619            * wptMainProc.cpp (winpt_main_proc): Restore iconic
620  2001-06-07  Timo Schulz <[email protected]>          File/Key Manager windows if needed.
621            * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Disable button.
622      * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,          * wptSiglist.cpp (init_cmp): New.
623      add windows title.          (siglist_sort): New.
624            (siglist_cmp_cb): New.
625  2001-06-08  Timo Schulz <[email protected]>          (siglist_add_key): Force NOKEY status when key was not found.
626            * wptKeysigDlg.cpp (recv_single_key): New.
627      * wptHotkey.cpp (mod_hotkeys): Change code to support the new          (recv_missing_keys): Reload entire key when more than one key
628      registry style.          was fetched.
629      * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable          (keysig_dlg_proc): Support sorting the listview items.
630      single hotkeys. Suggested by Jonathan.          
631      * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable  2006-01-09  Timo Schulz  <[email protected]>
632      single hotkeys.  
633      * wptKeyserver.cpp (kserver_connect): Reset winsock error var.          * WinPT.cpp (load_gettext): Remove file locking.
634      (keyserver_recv): Ditto.          (WinMain): Use pre-defined autoconf constants.
635      (keyserver_send): Ditto.          * wptW32API.cpp (init_file_lock, release_file_lock): Deleted.
636      (wsock_strerror): Returns a description of the winsock problem.          * wptGPG.cpp (check_gnupg_engine): Add param @need_gpg_ver.
637      * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer          Change all callers.
638      is valid.          
639    2006-01-07  Timo Schulz  <[email protected]>
640  2001-06-10  Timo Schulz <[email protected]>  
641            * wptKeyManager.cpp (km_refresh_from_keyserver): Summarize
642      * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single          import status if just one key was selected.
643      hotkey.  
644      (mod_hotkeys): Take care of the enable flags.  2006-01-04  Timo Schulz  <[email protected]>
645      (register_hotkeys): Ditto.  
646      (unregister_hotkeys): Ditto.          * wptGPGMEWrapper.c (setChangeVersion): New.
647      * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,          (exportToBuffer, exportToFile, exportToClipboard): New.
648      don't try to modify hotkeys.          (setArmor, getArmor): New.
649      * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to          * wptKeylist.cpp (get_key_expire_date): Return locale specific
650      the foreground.          date.
651            (keylist_get_recipients): Do not fetch the key again.
652  2001-06-12  Timo Schulz <[email protected]>          (keylist_enum_recipients): Likewise.
653            * wptGPG.cpp (create_empty_keyring): New.
654      * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is          (get_gnupg_keyring): Fixed 'strict' logic.
655      a big letter, otherwise convert.          * wptKeyManagerDlg.cpp (update_ui_items): Disable some buttons
656      (preferences_dlg_proc): Check hotkeys.          when no secret keys are available.
657      * wptKeylist.cpp (add_keys): Static functions to add a single key.          * wptKeyManager.cpp (km_send_to_mail_recipient): Release key data
658      (keylist_add_key): Now it adds all subkeys to the dialog.          before the MAPI call is made.
659      (keylist_alloc): Remove because it's not needed any longer.          * WinPT.cpp (check_for_empty_keyrings): New.
660      * wptImportList.cpp (implist_alloc): Ditto.              
661      * wptSigList.cpp (siglist_alloc): Ditto.  2006-01-03  Timo Schulz  <[email protected]>
662      * wptVerifyList.cpp (verlist_alloc): Ditto.  
663            * pubkey.ico, keypair.ico: New.
664  2001-06-15  Timo Schulz <[email protected]>          * wptListview.cpp (listview_add_item_image): New.
665            (listview_set_image_list): New.
666      * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.          * wptSigList.cpp (siglist_add_key): Correct order of the sigs.
667      Differ between the new keylist styles.          * wptKeyProps.cpp (keyprops_load_photo): Adjusted for new
668      * wptGPGME.cpp (keycache_xxx): Move the caching interface to this          JPEG data.
669      file. For an easier handling between dialogs and code.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Do not allow to
670      (keycache_rewind): New. Rewind a global keycache context.          add items to revoked keys.
671      (keycache_next_key): New. Retrieve the next key from the keycache.          * wptKeyManager.cpp (km_delete_keys): Do not use uninitialized
672      (get_default_key): New. Return the default key, this is the secret          keyid buffer. This fixes a segv.
673      key with the index 0.          * wptKeyserver.cpp (spawn_application): New.
674      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key          (ldap_recv_key): Support recent protocols and several cleanups.
675      handling. Now the signer is set in any case. Prevent hanging GPG          * wptKeylist.cpp (do_addkey): Set image which depends on the
676      processes.          key type.
677      * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.          (keylist_enum_recipients): Cleanups.
678      (vm_safe_init_noswap): New. Initialize safe memory with tail data.          (keylist_get_keyflags): Rewritten.
679      See source for more information.          * wptKeyCache.cpp (free_attr_list): New.
680      (vm_safe_free): New. Free all used pointer and burn all buffers.          (parse_attr_list): New.
681      (vm_safe_get): New. Get the begin of the alloced buffer.          (parse_attr_data): New.
682      (vm_safe_set_swapfile): New. Set global swapfile name.          (keycache_update_photo): New.
683      (vm_safe_create_swapfile): New. Creats a swapfile and set its          (keycache_update_photos): New.
684      contents to zero.          (gpg_keycache_update_key): Automatically reload photos if needed.
685            * wptGPGUtil.cpp (create_process): New param @err. Change all
686  2001-06-16  Timo Schulz <[email protected]>          callers.
687            (map_tmpfile): New param @nread. Change all callers.
688      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.          (gpg_get_photoid_data): New.
689      Corrected return values.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Do not allow to
690      * wptErrors.cpp (winpt_strerror): Removed all unused error strings.          add items to revoked keys.
691      * wptGPG.cpp (get_gpg_path): Change to default path and prevent          (subkey_init_list): Store gpgme key object.
692      buffer overflows.          
693      (get_gpg_prog): Ditto.  2005-12-29  Timo Schulz  <[email protected]>
694    
695            * wptKeygenDlg.cpp (keygen_dlg_proc): Request passphrase dynamically.
696  2001-06-17  Timo Schulz <[email protected]>          (gpg_genkey_params): Simplified.
697            * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix problem with mutal
698      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the          exclusion of the dialog items.
699      default key for signing.          * wptAboutDlgs.cpp (about_winpt_dlg_proc): Allow to use ESC to
700            quit the dialog.
701  2001-06-18  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
702            * wptMDSumDlg.cpp (mdsum_dlg_proc): Handle WM_SYSCOMMAND.
703      * wptKeyserver.cpp (check_hkp_response): More detailed error check          (id2algo): New.
704      of the http response.  
705      (kserver_send_request): Debug mode now uses logfile.  2005-12-28  Timo Schulz  <[email protected]>
706      (kserver_recv_request): Ditto.  
707      (kserver_index_request): New. Create a request for a key index.          * wptKeyserverDlg.cpp (show_imported_keys): Decode user IDs.
708      (kserver_send): Now uses check_hkp_response.          * wptKeyRevokersDlg.cpp (key_revokers_dlg_proc): Likewise.
709      (kserver_recv): Ditto.          * wptKeylist.cpp (keylist_udp_key): Likewise.
710      (kserver_search): New. Start the key index loop.          * wptKeyManager.cpp (key_get_clip_info, key_get_info): Likewise.
711      * wptKeyserverDlg.cpp (recv_key): Check if the key was really          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Fix problem
712      imported and received.          when no signing key was found.
713            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Properly decode
714  2001-06-22  Timo Schulz <[email protected]>          user IDs.
715            (translate_popup_strings): s/Revoke/Revoke Cert.
716      * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform          * wptKeyEditDlgs.cpp (do_init_keylist): Do not assume a
717      keyserver seraching. As an additional feature it's also posible to          0x prefixed keyid.
718      import the keys directly.          * wptKeyEditCB.cpp (editkey_command_handler): Also reset
719            step in case of a bad passphrase.
720  2001-06-23  Timo Schulz <[email protected]>          
721    2005-12-27  Timo Schulz  <[email protected]>
722      * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the  
723      options file.          * wptListView.cpp (listview_set_view): New.
724            (listview_del_column): New.
725  2001-06-24  Timo Schulz <[email protected]>          * wptW32API.cpp (get_locale_date): New.
726            (get_menu_state): New.
727      * wptGPG.cpp (get_gpg_path): Add null termination to the string.          (force_foreground_window): New.
728      Thanks to Jonathan who pointed this out.          * wptVerifyList.cpp (strtimestamp): Support for
729      (get_gpg_prog): Ditto.          locale date formats.
730      (gpg_check_file_ext): Check the file extension for the given GPG          * wptGPGUtil.cpp (gpg_revoke_cert): Handle bad
731      type.          passphrases.
732      (get_gpg_default_keyid): Return null if there isn't an entry in the          * wptKeyEditCB.cpp (editkey_command_handler): Immediately
733      options file.          return when a bad passphrase was submitted.
734      * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx          * wptKeyRevokersDlg.cpp (keyrevokers_dlg_proc): Change
735      style functions.          column order.
736      * wptImpList.cpp (implist_add_key): Ditto.          * wptKeylist.cpp (keylist_upd_col): New.
737      * wptSigList.cpp (siglist_add_key): Ditto.          * wptKeyManagerDlg.cpp (update_ui_items): Deactivate
738      * wptVerifyList.cpp (verlist_add_key): Ditto.          'Revocation' for public keys.
739            (translate_menu_strings): s/Revoke/Revoke Cert.
740  2001-06-25  Timo Schulz <[email protected]>          (modify_listview_columns): New.
741            
742      * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with  2005-12-18  Timo Schulz  <[email protected]>
743      the contents from the given cache context.  
744      (keylist_add_to_recipients): New. Add the selected keys to the          * wptKeyManagerDlg.cpp (save_column_size): New.
745      recipient set.          (restore_column_size): New.
746      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist          (keymanager_dlg_proc): Save and restore column sizes for
747      function to load the listview.          the listview control.
748      * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.          * wptKeyManager.cpp (key_get_info): New.
749      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (km_delete_keys): Use it here to have a consistent message.
750      * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid          Use stored key context and not the column data.
751      and the keyid hint.          (km_enable_disable_key): Likewise.
752            (km_send_to_keyserver): Likewise.
753  2001-06-27  Timo Schulz <[email protected]>          (km_set_implicit_trust): Likewise.
754            * wptKeylist.cpp (get_key_pubalgo2): New.
755      * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.          
756      (get_pkt_len): New. Extract the OpenPGP packet length.  2005-12-17  Timo Schulz  <[email protected]>
757      (parse_pke_sesskey): Read a public key encrypted session key  
758      but without data.          * wptUTF8.cpp: Removed unused charset array.
759      * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the          * wptSigList.cpp (siglist_build): Increase size for 'class'
760      filename contains spaces. Just to make GPG happy.          column.
761      (file_manager_dlg_proc): Check if the file exist after encryption.          * wptGPG.cpp (get_gnupg_path): Simplified.
762      * wptFile.cpp (get_keyid_from_file): Checks the file for an valid          * WinPT.cpp (load_gpg_env): New.
763      packet and then extract the keyid.          (check_crypto_engine): Return type is now bool.
764            * wptRegistry.cpp (is_gpg4win_installed): New.
765  2001-06-28  Timo Schulz <[email protected]>          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): More consistent
766            dialog design.
767      * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new          * wptKeyManagerDlg.cpp (translate_menu_strings): New.
768      flag variables to support RFC1991.          (translate_popupmenu_strings): New.
769      (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.          * wptKeyEditDlgs.cpp (is_jpg_file): New.
770      (get_rfc1991_pktlen): Ditto.          
771    2005-12-13  Timo Schulz  <[email protected]>
772  2001-06-29  Timo Schulz <[email protected]>  
773            * wptCommonDlg.cpp (http_dlg_proc): Localized missing elements.
774      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent          * wptKeyManagerDlg.cpp (change_edit_menu): New.
775      to send data to the clipboard.          (change_key_menu): Renamed from...
776      * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to          (menu_gpg_readonly): ..this.
777      destroy the window immediately.          (clip_contains_pgpkey): New.
778      * wptKeyserver.cpp (kserver_getip): Removed.          (update_ui_items): Do not allow to sign expired keys.
779      (kserver_get_langname): Removed.          (keymanager_dlg_proc): Same for popup menu.
780      (kserver_load_conf): New. Load the keyserver.conf file and set the          * wptKeyPropsDlg.cpp (parse_preflist): Fixed string handling.
781      included keyserver addresses into the global context.          * wptKeyCache.cpp (copy_uid_prefs):
782      * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the          (gpg_keycache_sync): Copy uid prefs so the key property
783      keyserver context.          dialog show the correct values. Thanks to Shane.
784      * wptImplist.cpp (get_key_date): New. Transform integer timestamp          
785      to ISO date.  2005-12-11  Timo Schulz  <[email protected]>
786      (implist_add_key): Now it uses the context instead of all single  
787      variables.          * wptW32API.cpp (get_file_version): New.
788            * wptGPGUtil.cpp (create_process): Always hide window.
789  2001-06-30  Timo Schulz <[email protected]>          * wptClipEditDlg.cpp (clipedit_dlg_proc): Use 'Close'
790            instead of 'Exit'.
791      * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase          * wptKeyManager.cpp (km_http_import): New filename
792      code.          generation code.
793      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          (km_send_to_mail_recipient): Cleanups.
794      * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.          * wptKeyEditDlg.cpp (showpref_dlg_proc): Localize dialog.
795      * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.          * wptKeyManagerDlg.cpp (update_ui_items): Handle the case
796      (fm_delete): New.          when multiple keys are selected.
797      (fm_encrypt): New.          (popup_multiple): New.
798      (fm_get_current_pos): New.          * WinPT.cpp (WinMain): Check that the PTD.dll and WinPT.exe
799      (fm_get_file_type): New.          file versions are equal. Rewrote --keymanager code.
800      (fm_add_dropped_files): New.          
801    2005-12-08  Timo Schulz  <[email protected]>
802  2001-07-01  Timo Schulz <[email protected]>  
803            * wptKeyserverDlg.cpp (show_imported_keys): Enhanced.
804      * wptFileManager.cpp (fm_verify): New.          (hkp_recv_key2): Show user-id of the imported key instead
805      (fm_decrypt): New.          of just the pattern.
806      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.          * wptFileCBS.cpp (read_cb): Changed to W32 API.
807            (write_cb): Likewise. Create output file on demand.
808            (gpg_file_data_new): Adjusted code for new API.
809  2001-07-04  Timo Schulz <[email protected]>          * wptKeyEdit.cpp (cleanKey): New.
810            * wptKeyEditCB.cpp (cmd_clean_handler): New.
811      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key          (editkey_command_handler): Call clean handler.
812      if the user agree.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Sort
813      * wptKeylist.cpp (keyload_load): Use the mode from the param, not          keylist after inserting items.
814      the hardcoded.          * wptFileManager.cpp (fm_set_status): Take care of
815      * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.          cleartext sigs.
816      Rename 'load' to 'reload' to make sense with the new code.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Make
817      * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the          sure can be closed.
818      registry stuff.          
819      * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.  2005-12-07  Timo Schulz  <[email protected]>
820      (get_reg_winpt_prefs): Ditto.  
821      (regist_inst_winpt): Remove the old code.          * wptOwnertrustDlg.cpp (ownertrust_dlg_proc):
822      (register_single_filetype): Replacement for the old code.          Use 'Close' instead of 'Exit'.
823            * wptKeyEditDlgs.cpp (keyedit_dlg_proc): Likewise.
824  2001-07-05  Timo Schulz <[email protected]>          * wptGPG.cpp (gnupg_backup_keyrings): Use $APPDATA
825            as the destination dir. Thanks to Werner.
826      * wptHotkey.cpp (mod_hotkeys): Fix a small typo.          * wptRegistry.cpp (is_gpgee_installed): New.
827            (regist_inst_winpt): Do not register file extensions
828  2001-07-11  Timo Schulz <[email protected]>          if GPGee is available.
829            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Limit
830      * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add          use of local vars.
831      the integer.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Make sure
832      (keyserver_create_conf): Create a config file instead of the error.          no illegal backup mode is saved.
833      * wptGPG.cpp (create_gpg_options): If the file doesn't exist create          * wptKeyserverDlg.cpp (show_imported_key): New.
834      a default file. This prevents confusing error messages.          (hkp_recv_key2): Show imported keys if the blob
835      (get_gpg_options): Use new code.          contained more than one.
836      * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells          
837      the user how to find the files.  2005-12-06  Timo Schulz  <[email protected]>
838    
839  2001-07-12  Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): Load the gettext environment soon
840            as possible so all 'first start' messages are localized.
841      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): If a single key is
842      just quit without any messages. Suggested by Rich.          received via the keyserver, return the gpgme key context on
843            success and add it directly to the list.
844            * wptKeyserverDlg.cpp (keyserver_dlg_proc): Support a param
845  2001-07-13  Timo Schulz <[email protected]>          to store the key.
846            (hkp_recv_key2): Add extra param for the fingerprint.
847      * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to          (hkp_recv_key): Call hkp_recv_key2 without fingerprint.
848      the request. Arggg!          
849      (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.  2005-12-02  Werner Koch  <[email protected]>
850    
851            * wptKeyEditDlgs.cpp (subkey_list_init): Avoid trigraphs.
852  2001-07-14  Timo Schulz <[email protected]>  
853    2005-12-01  Timo Schulz  <[email protected]>
854      * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding  
855      it to the signing keylist.          * wptClipVerifyDlg.cpp (clipverify_dlg_proc): Use new semantic
856      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase          for get_gpg_sigstat().
857      is empty.          * wptGPGME.cpp (get_gpg_sigstat): New. It is now a function.
858      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          As a macro strings will not be translated at runtime.
859            * wptKeyserverDlg.cpp (hkp_recv_key): Properly detect if we
860            need to update the cache. Thanks to Jan-Oliver.
861  2001-07-17  Timo Schulz <[email protected]>          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localized.
862            
863      * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox  2005-11-30  Timo Schulz  <[email protected]>
864      and increment the 'cols' variable inside the structure for further use.  
865      (add_key): Watch for the 'cols' variable to figure out how much columns          * wptW32API.cpp (dialog_box_param): Removed LANG_DE code.
866      are used.          * WinPT-en.rc: Removed string list.
867      * wptListView.cpp (listview_set_ext_style): Set an extended style for          * wptFileSaveDlg.cpp (file_save_dlg_proc): Localized
868      the given listview.          * wptKeylist.cpp (keylist_build): Cannot use global
869      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the          arrays for the columns due to gettext.
870      selected server.          
871      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.  2005-11-29  Timo Schulz  <[email protected]>
872      * wptKeyserver.cpp (kserver_connect): IP address support. This is faster  
873      and no DNS lookup is needed.          * WinPT.cpp (WinMain): Modify --keymanager. If an instance
874            is running, just send the command to open the manager.
875  2001-07-19  Timo Schulz <[email protected]>          
876    2005-11-25  Timo Schulz  <[email protected]>
877      * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more  
878      detailed error messages in the case for a missing key or an included          * wptKeyEditCB.cpp (addrev_cmd_handler): Avoid hanging
879      signature.          process when the revoker is already there.
880            
881  2001-07-20  Timo Schulz <[email protected]>  2005-11-24  Timo Schulz  <[email protected]>
882    
883      * wptKeyserver.cpp: (kserver_send_request): Correct the octect length          * wptPassphraseCB.cpp (passphrase_callback_proc): Localize
884      of the request.          signing dialog items.
885      (check_hkp_response): If an error ocurred, copy the error message into          * wptMainProc.cpp (confirm_delclip_dlg): Localize dialog items.
886      the static buffer.          * wptAboutDlgs.cpp (about_winpt_dlg_proc): Disable help for now.
887      (kserver_strerror): Interface for the static error buffer.          * wptMDSumDlg.cpp (mdsum_dlg_proc): Localize missing items.
888      * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message          * wptKeylist.cpp (key_check_validity): Likewise.
889      box.          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Likewise.
890      (hkp_send_key): Add more verbose messages at the end.          
891      (hkp_recv_key): Ditto.  2005-11-22  Timo Schulz  <[email protected]>
892      (check_pattern): Rewrote the entire code to be more bug proof.  
893      * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate          * wptCardEditCB.cpp (gpg_write): Due to removed _DEBUG
894      that the recipient list contains untrusted entries.          macro debug output will be generated in release version.
895      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to          
896      force GPG to add the need options.  2005-11-21  Timo Schulz  <[email protected]>
897      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.  
898            * WinPT.cpp (WinMain): Implement --stop switch.
899  2001-07-21  Timo Schulz <[email protected]>          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Localize
900            missing string.
901      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in          * wptPreferencesDlg.cpp (prefs_dlg_proc): Likewise.
902      the case of IDCANCEL.          * wptKeygenDlg.cpp (keygen_dlg_proc): Verify valid context
903      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.          first. Thanks to Ralf.
904      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair          * wptFileManagerDlg.cpp (update_ui_items): New.
905      pair and only if activate the passphrase dlg items.          * wptFileManager.cpp (fm_set_status): New sigmode param.
906      Do sanity checks for all buttons that require key pairs.          Changed all callers.
907      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.          
908        2005-11-17  Timo Schulz  <[email protected]>
909  2001-07-22  Timo Schulz <[email protected]>  
910            * wptGPG.cpp (check_last_gnupg_access): Kludge to avoid that
911       * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.          the cache will be loaded twice.
912       (get_key_created): New. Transform ulong timestamp to ascii.          * wptRegistry.cpp (regist_inst_winpt): More comments.
913       (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).          * wptKeyManagerDlg.cpp (do_center_window): Make sure that
914       (get_key_size): New. Returns a formatted size depend (depend on subkeys).          neg. coordinates are never used.
915       * wptSigList.cpp (siglist_add_key): Fix the timestamp.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Localize all
916       * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace          strings.
917       this with list trust path.          * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
918       * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function          * wptFileManagerDlg.cpp (filemanager_dlg_proc): Localize menu
919       because we always check the signatures.          and save 'AlwaysOnTop' in the registry.
920       * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.          
921        2005-11-16  Timo Schulz  <[email protected]>
922  2001-07-24  Timo Schulz <[email protected]>  
923            * WinPT.cpp (check_crypto_engine): Min is now GPG 1.4.2.
924      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after          * wptKeylist.cpp (keylist_add_key): Add disabled keys in list
925      reloading the keycache. Fixed the memory leaks. Thanks to Andreas.          mode.
926      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform          * wptPreferencesDlg.cpp (prefs_dlg_proc): Localize all strings.
927      the user about errors.          * wptRegistry.cpp (regist_inst_winpt): Set install directory.
928      * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure          Useful for other programs to figure out the path to the EXE.
929      in our own context.          
930      (treeview_insert_item): New. Handy function to insert an entry.  2005-11-14  Timo Schulz  <[email protected]>
931      (treeview_create_child_item): New. Insert a trustlist node.  
932      (treeview_add_trustpath): New. Add recursively the whole trust path          * wptGPG.cpp (check_gnupg_engine): Fix version check.
933      int the tree view.          * wptMainProc.cpp (winpt_main_proc): Check keyring
934      * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the          file permissions always and do not use interative output
935      signature list contains entries with a NOKEY status.          when the windows session ends.
936      (recv_missing_keys): New. Receive all keys with a NOKEY as the signature          * wptProxySettingsDlg.cpp (proxy_settings_dlg_proc):
937      status.          Localize all strings.
938      * wptImportList.cpp (implist_load): New. Initialize the listview item          * wptPassphraseDlg.cpp (passwd_dlg_proc): Likewise.
939      with an import overview.          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg): Likewise.
940      * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead          * wptKeyEditDlgs.cpp (do_init_keylist): Skip all
941      of the code.          non-valid keys.
942      (print_import_status): Summarize the results. We need this because file          
943      import needs the same function.  2005-11-12  Timo Schulz  <[email protected]>
944      * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the  
945      file manager.          Fix more GCC warnings.
946      * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key  
947      import from file.  2005-11-10  Timo Schulz  <[email protected]>
948      * wptFileManager.cpp (fm_import): New. Ditto.  
949      * wptKeyserver.cpp (kserver_connect): Take care for some return values          * wptClipSignDlg.cpp (one_key_proc): Use
950      and set the socket to non blocking mode.          release_gpg_passphrase_cb() to free the context.
951      Moved the Winsock2 init code to wptMainProc.cpp          * wptListView.cpp (listview_deselect_all): New.
952      * wptMainProc.cpp (wpt_main_proc): Wsock2 code.          * wptMAPI.cpp (mapi_send_pubkey): Works again.
953      * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support encrypt &
954            zip.    
955  2001-07-25  Timo Schulz <[email protected]>          * wptPassphraseCB.cpp (passphrase_callback_proc): Fix passphrase
956            caching for signing operations.
957      * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect          * wptKeyManager.cpp (km_send_to_mail_recipient): Works again.
958      serious GPG errors.          * wptFileManager.cpp (fm_send_file): Likewise.
959      * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.          (fm_encrypt_into_zip): New.      
960      Suggested by Graham.          
961      (fm_decrypt): Change code to support symmetric decryption.  2005-11-09  Timo Schulz  <[email protected]>
962      (fm_get_file_type): Fixed some typos.  
963            * wptNLS.c (get_gettext_langid): Map user language id to
964  2001-07-26  Timo Schulz <[email protected]>          printable gettext language strings.
965            * wptRegistry.cpp (get_reg_entry_mo): Support for the
966      * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring          gettext environment.
967      exists. Useful if the keyring was moved during some commands.          * wptFileManager.cpp (fm_encrypt): Close all files before
968      * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to          the wipe procedure is called.
969      Rich to discover this.          * wptVerlist.cpp (verlist_add_sig): Handle the case the
970            issuer is not valid but the signature is.
971  2001-07-29  Timo Schulz <[email protected]>          (verlist_add_sig_log): Likewise. Thanks to the folks on
972            winpt-users.
973      * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating          
974      a key revocation certificate. Add a hint to show how sentensive this  2005-11-08  Werner Koch  <[email protected]>
975      data is.  
976      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the          * SAFE.ICO, SIGN.ICO: Fixed capitalization.
977      revocation.          * WinPT-en.rc: Ditto.
978      * wptAgent.cpp: Source for the server interface removed.          * winpt_km.ico:  Moved from ../.
979      (agent_is_avail): New. Checks if the agent is available.  
980      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code          * Makefile.am (resource_files): Add missing backslash.
981      for the agent.  
982    2005-11-08  Timo Schulz  <[email protected]>
983  2001-07-30  Timo Schulz <[email protected]>  
984            More minor changes to avoid GCC warnings.
985      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code          
986      for the agent.          * wptGPG.cpp (check_homedir): Free memory in case of errors.
987      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (multi_gnupg_path): Add strict mode. If non-strict mode return
988            the folder even if it does not exist.
989  2001-08-01  Timo Schulz <[email protected]>          (check_for_gpgwin): New.
990            * wptKeyserverDlg.cpp (hkp_recv_key): Make sure import_res is
991      * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible          initialized.
992      request for uploading a key.          * wptRegistry.cpp (get_reg_entry_gpg4win): New.
993      (kserver_send_request): Use the urlencode to send the key.          (get_reg_entry_mo): Support for gpg4win.
994      (sock_read): New. Improved read function to replace recv.          
995      (sock_write): New. Improved write function to replace send.  2005-11-07  Timo Schulz  <[email protected]>
996      * wptFileManager.cpp (fm_get_file_type): If the data is armored,  
997      call fm_check_armor_type().          * wptMainProc.cpp (winpt_main_proc): Disable
998      (fm_check_armor_type): New. Figure out the armor type of the data.          some menu items when no secret key is available.
999      * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the          
1000      buttons. Optimized the code.  2005-11-05  Timo Schulz  <[email protected]>
1001    
1002  2001-08-02  Timo Schulz <[email protected]>          More minor changes to avoid GCC warnings.
1003            
1004      * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.          * wptErrors.cp (winpt_strerror): Return w32
1005      Useful in the case the file was generated but it's empty.          formatted error and do not use 'break'.
1006      * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.          
1007    2005-11-04  Werner Koch  <[email protected]>
1008    
1009  2001-08-03  Timo Schulz <[email protected]>          * WinPT-en.rc: Fixed locations of icons.
1010    
1011      * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now  2005-11-03  Timo Schulz  <[email protected]>
1012      we support this code in the key manager.  
1013      * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.          A lot of minor changes to avoid GCC warnings.
1014      * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):  
1015      Removed. The code moved into the main functions.          * wptGPG.cpp (get_gnupg_keyring): Only check size for
1016      (kserver_send), (kserver_recv): Ditto.          public keyring.
1017      (sock_write): Improved code.          * wptKeyManager.cpp (km_update_default_key_str): Do
1018      (sock_read): Ditto and some additional timeout.          not issue a bug message when no secret key was found.
1019      (sock_select): New. Figure out the socket state.          * wptGPGPrefsDlg.cpp: Replace "" with NULL in the name struct.
1020      (kserver_search_init): New. Make connection to the server.          
1021      * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new  2005-11-02  Werner Koch  <[email protected]>
1022      keyserver code.  
1023      * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker          * WinPT.cpp (WinMain): Disabled PTD version tests.
1024      packet. Thanks to Alan.          (check_crypto_engine): Fixed version check for scard.
1025      (check_for_symenc_data): Ditto.  
1026      * wptFileManager.cpp (fm_get_file_type): Ditto.          * wptErrors.cpp (debug_end): Add dummy function.
1027      (fm_decrypt): Move the keycache in the if loop and fix the keycache  
1028      type.          * Makefile.am (code_files): Added wptCardEditCB.cpp and
1029            wptKeyEditCB.cpp.
1030  2001-08-05  Timo Schulz <[email protected]>  
1031    2005-10-31  Werner Koch  <[email protected]>
1032      * wptKeylist.cpp (keylist_add_key): Change the schematics to support  
1033      all keyids.          * wptCurrWnd.cpp: Include wptVersion.h to get prototypes of PTD
1034      * wptSigList.cpp (siglist_build): New. Interface code to load the          functions.
1035      signature list.  
1036      * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.          * wptKeyEditDlgs.cpp: Include oleauto.h
1037            * wptKeyEdit.cpp: Include time.h.
1038  2001-08-06  Timo Schulz <[email protected]>          * wptRegistry.cpp (gpg_filetypes): New from ../Include/wptGPG.h.
1039            * wptGPGUtil.cpp (gpg_manage_ownertrust): s/export/exportflag/.
1040      * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.  
1041            * Makefile.am (code_files): Add wptGPGUtil.cpp, wptCardEdit.cpp,
1042  2001-08-08  Timo Schulz <[email protected]>          wptKeyEdit.cpp and wptKeycache.cpp.
1043    
1044      * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.          * wptPassphraseCB.cpp: Fixed spelling of wptKeylist.h
1045      Support for more configurations.          * wptImportList.cpp (implist_load): Use remove and not unlink.
1046      * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.          * wptGPG.cpp: Fixed spelling of wptGpgCmds.h
1047      Add all strings to the translation suite.          * wptImportList.cpp (implist_load): Use remove and not unlink.
1048      * Updated all NLS dialog strings.          * wptKeyManager.cpp (km_http_import): Ditto
1049      * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.          * wptMainProc.cpp: Include wptCrypto.h
1050      * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,          * wptKeyManager.cpp: Ditto.
1051      with a dynamic callback for the passphrase.          * wptFileManager.cpp: Ditto.
1052            * wptImportList.cpp (parse_colon_key): Need to cast argument for
1053  2001-08-11  Timo Schulz <[email protected]>          isdigit.  Include ctype.h.
1054            * wptGPG.cpp: Include shlobj.h.
1055      * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and  
1056      separate the fingerprint from the othr information.          Fixed double inclusion of windows.h.
1057      * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the          
1058      file, specified in the options line, does exist.          * Makefile.am (bin_PROGRAMS): Don't build KeyManagerExe for now.
1059            * wptKeylist.cpp (get_key_created): Broke up trigraph.
1060  2001-08-17  Timo Schulz <[email protected]>          (get_key_status): Removed dangerous use of sprintf.  Still other
1061            flaws present, see comment.
1062      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only  
1063      one by default.          * wptCardPCSC.c: Don't include winscard.h.
1064      * wptKeyList.cpp (keylist_add_to_recipients): Ditto.          (pcsc_readerstate_t, pcsc_context_t): New.  Changed call users to
1065      * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram          use these types.
1066      entry in the registry in the case it's missing (whenever it's possible!).          (PCSC_): Added a lot of constants, all taked from GnuPG 1.9.
1067      (check_gpg_path): Rewrite parts of the code.          (SCARD_S_SUCCESS): Changed all compares to test the value directly
1068            against zero.
1069  2001-08-20  Timo Schulz <[email protected]>  
1070            * WinPT.cpp: Include wptCrypto.h.
1071      * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.          (WinMain): Don't shard S. Removed usunsed variable SIZE.
1072      * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable          * Makefile.am (code_files): Actually add files by adding a first
1073      the hotkeys. Automatically enable or disable the hotkey field depend          backslash.
1074      on the switch.          * wptMDSumDlg.cpp: Include wptCrypto.h.
1075            * wptProxySettingsDlg.cpp: Included ctype.h.
1076  2001-08-21  Timo Schulz <[email protected]>          * wptKeysigDlg.cpp: Fixed spelling of wptKeylist.h.
1077            * wptKeysignDlg.cpp: Ditto
1078      * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it          * wptKeyRevokersDlg.cpp: Ditto. Fixed spelling of wptW32API.h.
1079      also supports "encrypt-to" entries as default keys.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Replaced unlink by remove.
1080      * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide          Removed unused variable.
1081      secure wiping.          * wptClipVerifyDlg.cpp (show_notation_data): s/not/nota/ due to
1082      (wipe_deinit_ext): New. Unload the DLL and free all pointer.          silly c++ operator synonyms.
1083      (wipe_loaded_ext): New. Checks wether the DLL was loaded.          * wptKeyEditDlgs.cpp: Include time.h.
1084      * wptW32API.cpp (set_menu_state): New.          * wptClipDecryptDlg.cpp: Include wptCrypto.h to define PGP_MESSAGE.
1085            * wptFileManagerDlg.cpp: Ditto.
1086  2001-08-25  Timo Schulz <[email protected]>          (space_wipefrees_dlg_proc): Replaced unlink by remove; it doesn't
1087            matter if it does an rmdir for a directory.
1088      * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.  
1089      (strlist_release): New. Release the linked list.          Fixed include of resource.h which is not anymore in the top
1090      (strlist_add): New.          directory.
1091    
1092  2001-08-26  Timo Schulz <[email protected]>  2005-10-28  Werner Koch  <[email protected]>
1093    
1094      * wptFileManager.cpp (fm_entry_new): New.          * wptProxySettingsDlg.cpp (check_number): Cast isdigit() arg to
1095      (fm_entry_release): New.          unsigned.  Never ever use a possible signed char as argument for
1096      (fm_state_new): New.          ctype tests.  An alternative is to first test using isascii ().
1097      (fm_state_release). New.          (keyserver_proxy_dlg_proc): Removed unused variable.
1098      (fm_get_current_file): New.  
1099      * wptKeylist.cpp (strlist_add_recipients): New.  2005-10-27  Timo Schulz  <[email protected]>
1100    
1101  2001-08-28  Timo Schulz <[email protected]>          * wptKeyPropsDlg.cpp (get_validity): Take care of disabled keys.
1102            * wptKeylist.cpp (keylist_add_key): Check global key flag to
1103      * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.          see if the key is disabled and not each subkey.
1104      * wptKeyserver.cpp (kserver_load_conf): Proxy support          (seclist_init): Likewise.
1105      (kserver_connect): Ditto.          * wptClipDecryptDlg.cpp (gpgme_op_clip_decrypt): Use
1106            gpgme_op_decrypt_verify.
1107  2001-08-30  Timo Schulz <[email protected]>          (clip_decrypt_dlg_proc): Fixed fingerprint
1108            to keyid conversation. This also fixes a crash.
1109      * wptFilemanager.cpp (fm_encrypt): Add minor changes.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
1110       (fm_decrypt): Ditto.          * wptKeyEditDlgs.cpp (do_editkey_expire): Ask if the key
1111       (fm_sign): Ditto.          already expired if the user wants to change the date.
1112       (fm_verify): Make the code more modular.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Replace old
1113       (fm_add_sig_stat): New. For new fm_verify code.          'v3 sig' option with the 'ask cert level' option. Sync
1114            with global preferences.
1115  2001-08-31  Timo Schulz <[email protected]>          * wptKeySignDlg.cpp (keysign_dlg_proc): Watch if the
1116            gpg.conf contains 'ask-cert-level'. If not disable button.
1117      * wptFileManager.cpp (fm_add_opened_files): New. Use a standard          * wptKeySigDlg.cpp (keysig_dlg_proc): Automatically disable
1118      file open dialog instead of drag & drop.          the button when the key is available.
1119      * wptHotkeys.cpp (hotkey_strerror): More detailed information which          Reload key directly, not the entire cache.
1120      hotkey couldn't set up.          
1121      (hotkey_register_single): Ditto.  2005-10-26  Timo Schulz  <[email protected]>
1122    
1123  2001-09-01  Timo Schulz <[email protected]>          * wptFileManager.cpp (is_floppy_disc): Prevent very unlikely but
1124            possible overflow.
1125      * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.          (is_openpgp_ext): Compare case insentensive.
1126      These code is now part of the key manager.          (add_single_file): New.
1127      * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.          (fm_add_opened_files): Support multi file selection.
1128      * wptKeylist.cpp (get_key_algo): New.          * wptKeyPropsDlg.cpp (do_change_ownertrust): Removed.
1129      (get_key_created): New.          * wptKeyManager.cpp (km_enable_disable_key): Do not set cache
1130      (get_key_type): New.          reload flag. Just update the single key.
1131      (get_key_size): New.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Remove static var
1132      (get_key_fpr): New.          and disable anonymize recipient for now.
1133      * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now  
1134      a part of the keymanager.          Begin to port code to GCC. Fix all warning issued by the gcc
1135            compiler.
1136  2001-09-04  Timo Schulz <[email protected]>  
1137    2005-10-25  Timo Schulz  <[email protected]>
1138      * Rewrote most parts of the keymanager.  
1139      * Ditto for the filemanager.          * wptGPGUtil.cpp (create_process): Hide window.
1140            * wptKeyPropsDlg.cpp (get_photo_tmpname): New.
1141  2001-09-05  Timo Schulz <[email protected]>          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Remove
1142            static var 'enable'.
1143      * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.          * wptKeygenDlg.cpp (keygen_dlg_proc): Likewise.
1144      (clip_import): New. Handy function to import keys.          (gpg_genkey_params): Make sure all primary keys are capable
1145      * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase          for signing and certification.
1146      is too short.          * wptKeySigDlg.cpp (is_sig): If no item is selected, return 0.
1147            * wptGPG.cpp (gnupg_access_keyring): Check return value for
1148  2001-09-07  Timo Schulz <[email protected]>          NULL. Noted by Ralf.
1149            (get_gnupg_prog): Simplified.
1150      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.          (check_homedir): Fixed. Return 0 when the dir is successfully created.
1151            * wptKeyManagerDlg.cpp (km_file_import): Use the hourglass to
1152  2001-09-12  Timo Schulz <[email protected]>          indicate a pending GPG process.
1153            * wptFileManager.cpp (op_begin, op_end): New. Indicate an start
1154      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.          and and of an operation. For now just the cursor changes.
1155      Thanks to Rich who pointed this out.          (fm_parse_command_line): Remove debug output. Thanks to Ralf again.
1156            * WinPT.cpp (WinMain): Check if there is already an instance and
1157  2001-09-13  Timo Schulz <[email protected]>          set a variable early as possible.
1158            (load_gettext): If a previous instance was found, do not output
1159      * Revamped the whole plugin code for OE5.          any errors. Kudos to Ralf.      
1160      * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.  
1161      (oe_plugin_releae): New.  2005-10-24  Timo Schulz  <[email protected]>
1162      (oe_plugin_init): New. Searches for the OE main window and select  
1163      all the recipients from the fields.          * wptPassphraseCB.cpp (passphrase_callback_proc): Allow to use
1164      (oe_get_msg): This code now uses the menu command id's to          pre-defined recipients.
1165      execute the commands.          (release_gpg_passphrase_cb): Release recipients.
1166      (oe_set_msg): Ditto.          * wptKeyPropsDlg.cpp (keyprops_load_photo): Set photo-id
1167      (oe_encrypt): Changed for the new code.          validity if needed.
1168      * wptMainProc.cpp (wpt_main_proc): Re-activate the code.          (keyprops_dlg_proc): Issue a warning if the photo is valid.
1169      * wptHotkeys.cpp: Ditto.  
1170      * Removed the hook project.  2005-10-23  Timo Schulz  <[email protected]>
1171    
1172  2001-09-14  Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Detect detached sigs.  
1173            * wptKeyList.cpp (keylist_cmp_cb): Take care of expired/revoked keys.
1174      * wptWAB.cpp: (wab_read): New. Interface to read all address book          (get_ext_validity): New.
1175      entries.          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Several cleanups.
1176      (wab_open): New. Internal function to load the WAB.          * wptClipEditDlg.cpp (load_clipboard): Factored out some code into
1177      (wab_release): New. Release the WAB contexts.          this function.
1178      (wab_load): New. Load the contents of the WAB into a linked list.          (load_clipboard_from_file): Likewise.
1179      (addr_list_new): New. Linked address list.          (save_clipboard_to_file): New.
1180      (addr_list_add): New.          * wptKeyManagerDlg.cpp (keyprops_dlg_proc): Fix stack overflow.
1181      (addr_list_release): New.  
1182    2005-10-22  Timo Schulz  <[email protected]>
1183  2001-09-16  Timo Schulz <[email protected]>  
1184            Localized a lot of more strings.
1185      * wptExtensions.h: New. This file is now used for the extenion  
1186      declarations.          * wptMainProc.cpp (load_smartcard): New.
1187      * wptExtensions.new: (register_extensions): New. Enumerate and          * wptFileManager.cpp (fm_parse_command_line): Simplify code.
1188      load all possible extensions.          (fm_check_armor_type): Add new arg. Change all callers.
1189      (unregister_extentions): New. Release all loaded extensions.          (fm_get_file_type): Likewise.
1190      * wptKeyserver.cpp (kserver_load_conf): Added support for different          * wptKeyPropsDlg.cpp (display_key_info): New.  
1191      keyservers. Currently only HTTP/LDAP.          (keyprops_show_photo): Factored out some code into..
1192      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.          (keyprops_load_photo): ..this function.
1193      (hkp_recv_key): Ditto.  
1194      * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents  2005-10-21  Timo Schulz  <[email protected]>
1195      to set the focus.  
1196      * (oe_check_recipient): New. Checks if the key is able to encrypt          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Use
1197      and valid in the sense of revocation.          WM_INITPOPUPMENU to localize popup menu texts.
1198            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
1199  2001-09-17  Timo Schulz <[email protected]>          * wptClipSignDlg.cpp (one_key_proc): Use wipememory instead of memset.  
1200    
1201      * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs  2005-10-20  Timo Schulz  <[email protected]>
1202      who prevent the correct return value in the case of an clipboard error.  
1203      (clip_parse_pgp_id): New. Returns the PGP message type.          Now WinPT depends on GPG 1.4.3 and GPGME 1.2.0.
1204      * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.  
1205      (hotkey_single_register): Return correct error value.          * wptPassphraseCB.cpp (passphrase_cb): Complete card support.
1206      (hotkey_single_unregister): Ditto.          * wptCardEdit.cpp (genKey): Handle cancel case.
1207      * wptW32API.cpp (get_thread_id): Removed.          * keycache.c: Renamed into...
1208      (attach_thread_input): Ditto.          * wptKeyCache.cpp: ...this.
1209      (detach_thread_input): Ditto.          * wptW32API.cpp (set_menu_text): Removed unused code.
1210      * wptCurrWnd.cpp (get_window_contents): Store main and focused window          (set_menu_text_bypos): New.
1211      for later use.          * wptCrypto.h: New.
1212      (set_window_contents): Use the new code.          * wptMainProc.cpp (winpt_main_proc): Complete localize
1213            menu texts.
1214  2001-09-23  Timo Schulz <[email protected]>          * wptErrors.cpp (log_debug): Use a static var so the file
1215            is only opened once.
1216      * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.          (debug_end): Cleanup. Currently just close the log file.
1217      The same as the userid dialog.          * wptErrors.h (wipememory): New.
1218      * wptWndSwitchDlg.cpp: Removed.          (sfree_if_alloc): Use it here.
1219      * wptWipeExt.cpp: Removed. Code is now included.          * WinPT.cpp (WinMain): Display the min. GPGME version which
1220      * wptGPGME.cpp (get_default_keyid): If the keyid from the options          is needed in case of an error.
1221      file is in the keycache.  
1222      * wptKeylist.cpp (keylist_reload): New. Reload a keylist.  2005-10-17  Timo Schulz  <[email protected]>
1223    
1224  2001-09-26  Timo Schulz <[email protected]>          Free all memory returned by the GPGME dll with gpgme_free ().
1225    
1226      * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.          s/GPG_ERR_CARD_REMOVED/GPG_ERR_CARD_NOT_PRESENT.
1227      (listbox_get_cursel): Ditto.  
1228            * wptKeyEdit.cpp (getCardStatus): Remove dummy key.
1229            (list_handler): With user interaction to allow to insert
1230  2001-09-27  Timo Schulz <[email protected]>          the card into the reader.
1231            * wptKeyEditCB.cpp (gpg_edit_card): Likewise.
1232      * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who          (common_card_handler): Fixed incorrect command string.
1233      discovered this.          * wptKeyPropsDlg.cpp (get_card_type): New.
1234      * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the          (keyprops_dlg_proc): Show card information if present.
1235      passphrase.          * wptFileManager.cpp (secret_key_available): Make the code faster.
1236      * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to          
1237      the various other dialogs to make the use more easier.  
1238      * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.  2005-10-16  Timo Schulz  <[email protected]>
1239      * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.  
1240            * wptPassphraseCB.cpp (passphrase_cb): Fix problem
1241            with hanging GPG process on cancel.
1242  2001-09-28  Timo Schulz <[email protected]>          * keycache.c (gpg_keycache_release): Release all objects.
1243    
1244      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle  2005-10-15  Timo Schulz  <[email protected]>
1245      the double click messages.  
1246      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          * wptCardEdit.cpp (setResult, getResult): New.
1247      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (reset): New.
1248      * wptFileManager.cpp (overwrite_file): Check if the file exists and          (getCardStatus): Check return codes and release all objects
1249      then let the user decide.          in case of errors.
1250      (fm_encrypt): Use the code here.          * wptCardEditCB.cpp (change_pin_handler): Call reset()
1251      (fm_sign): And here.          before quit.
1252      (fm_sym_encrypt): And here. Now we use the passphrase dialog.          (editcard_handler): Likewise.
1253      (fm_decrypt): And here.          (common_card_handler): New.
1254      * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need          * wptCardDlg.cpp (card_changepin_dlg_proc): Also unmask
1255      a secure wipe.          the old PIN when 'Hide Typing' is disabled.
1256            * wptPassphraseCB.cpp (passphrase_cb): The card detection
1257      Make the memory checking more strict.          works again. Support to re-enter passphrase.
1258    
1259  2001-10-04  Timo Schulz <[email protected]>  2005-10-14  Timo Schulz  <[email protected]>
1260    
1261      * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.          * wptCardDlg.cpp (card_status): New fields for the
1262      * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.          fingerprint creation time. Display card info as title.
1263      Both were pointed out my Timo (not me ;-)).          (get_printable_version): New.
1264      * wptKeylist.cpp (add_key): Fix a typo and now the code is more          * wptCardEditCB.cpp (editcard_handler): Fix problem
1265      strict with returned attributes.          with the counter comparison.
1266      * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface  
1267      for local signatures.  2005-10-11  Timo Schulz  <[email protected]>
1268    
1269  2001-10-05  Timo Schulz <[email protected]>          Port to GPGME basically finished.
1270    
1271      * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.  2005-09-20  Timo Schulz  <[email protected]>
1272      In the case it is, use the first userID.  
1273      * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc):
1274      Remove the Pos column and add a status column instead.          Do not use gpgme_recipients_t but the listview directly
1275      Add expire stuff for subkeys.          to add the selected files.
1276      (init_dtp): Initialize the common control.  
1277      * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file  2005-09-07  Timo Schulz  <[email protected]>
1278      into the clipboard.  
1279      * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description          * Make sure all GetOpenFileName filters are terminated by \0\0.
1280      of the ownertrust value.  
1281      (keyprops_dlg_proc): Fixed ownertrust handling.  2005-09-01  Timo Schulz  <[email protected]>
1282    
1283  2001-10-06  Timo Schulz <[email protected]>          * wptW32API.cpp (center_window): New argument for parent window.
1284            Change all callers.
1285      * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.          (center_window2): Likewise.
1286            * GPGME now can read gpgProgram entries with 'REG_EXPAND_SZ'.
1287  2001-10-08  Timo Schulz <[email protected]>          * wptGPG.cpp (gnupg_backup_options): Remove param. One backup
1288            file is enough. Changed all callers.
1289      * wptKeyserver (kserver_connect): If the proxy settings are valid,  
1290      use the proxy port instead of the HKP port.  2005-08-15  Timo Schulz  <[email protected]>
1291      (kserver_recvkey): Proxy support.  
1292      (kserver_search_init): Ditto.          * wptKeyEditDlgs.cpp (do_editkey_showpref): Take care of v3 keys.
1293            * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Fixed name of title.
1294  2001-10-09  Timo Schulz <[email protected]>          * Make sure the passphrase is always overwritten before it is
1295            freed (or the function returns).
1296      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return          * wptKeyPropDlg.cpp (get_pref_cipher): New.
1297      code of sunlink.          (keyprops_dlg_proc): Use it here.
1298      * wptGPG.cpp (get_keyring_from_optfile): New.  
1299      Renamed gpg_errstr to gpg_strerror.  2005-08-06  Timo Schulz  <[email protected]>
1300      (set_default_key): New.  
1301      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.          * wptGPGME.cpp (keycache_update): Reload OpenPGP parts
1302                of the secret key.
1303  2001-10-10      Timo Schulz <[email protected]>          (keycache_init): cache name of secret keyring.
1304            * wptKeyList.cpp (keylist_upd_key): Do not add long keyid.
1305          * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the          (get_key_type): Do not assume 'ultimate' means key pair.
1306          file is longer then the keyid.          * wptKeyEditDlgs.cpp (diff_time): New.
1307          (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the          (keyedit_addsubkey_dlg_proc): Changed design and use
1308          entry is an userid.          diff_time. Drop checks for invalid keylength (< 1024, > 4096)
1309          * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file          because the combo box automatically handles this.
1310          more then one time.          * wptKeyManager.cpp (km_set_implicit_trust): Return error code.
1311          (fm_add_dropped_files): Use it here.          * wptGPG.cpp (get_backup_name): New.
1312      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common          (gnupg_backup_keyrings): Rotate backup names, from 0..3.
1313      keys.          * wptClipImportDialog.cpp (clip_import_dlg_proc): Free memory.
1314            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use 0x short keyid and
1315  2001-10-13  Timo Schulz <[email protected]>          not the long keyid.
1316    
1317      Set all ListviewControls to 'NULL' in all dialogs to be more crash  2005-08-05  Timo Schulz  <[email protected]>
1318      resistent.  
1319            * wptListView.cpp (listview_set_item2): New.
1320      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.          * wptKeyManager.cpp (km_check_if_protected): Directly
1321      * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.          retrieve gpgme_key_t from the list.
1322      * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.          (km_check_key_status): Likewise.        
1323      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Also use
1324      * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.          a human-readable name for secret key export.
1325      * wptStringUtil.cpp: Removed.          Reload just the keys which were affected by updates
1326      * wptFileManager.cpp: Rewrote the complete interface code for          (edit-key).
1327      the file manager.          (update_key): New.
1328      * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.          * wptKeyList.cpp ((keylist_upd_key): Stripped down
1329            version of keylist_add_key.
1330  2001-10-15  Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Do not
1331            reload the keycache here, just flag 'update'. Give the
1332      * wptFileManager.cpp (fm_wipe): New.          control to the calling dialog.
1333      (fm_set_status): Add temporary wipe status and handle default values.          * wptKeySignDlg.cpp (keysign_dlg_proc): Use winpt_key_t
1334      (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped          as parameter. Changed all callers.
1335      files with a successful opeation.          Add date of expiration to the key info.
1336      * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.          (get_expire_date): New.
1337      (keygen_cb_thread): New. Static dialog thread.          Use a checkbox to allow to ask for the cert level.
1338      (keygen_cb_dlg_create): New. Interface.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Do no reload
1339      (keygen_cb_dlg_destroy): New. Destroy the dialog.          the cache.
1340      (keygen_cb): GPGME interface.  
1341    2005-08-04  Timo Schulz  <[email protected]>
1342  2001-10-16  Timo Schulz <[email protected]>  
1343            * wptListView.cpp (listview_scroll): New.
1344      * wptW32API.cpp (check_date): New.          (listview_get_item2): New.
1345      (get_open_filename): New.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If the
1346      * wptDlgs.cpp (init_dtp): New. Initialize a special common control.          item was found, make it visible with scrolling.
1347      * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.          * wptKeyManager.cpp (km_find_key): New.
1348            (keylist_subclass_proc): Support to handle some acceleators.
1349  2001-10-17  Timo Schulz <[email protected]>          Strg+{C, P, F, A}.
1350            (km_get_key_status): Get the gpgme_key_t object directly
1351      * wptCurrWnd.cpp (get_window_contents): Only minimize the window          from the list.
1352      when the clipboard contains text.          * wptGPGPRefsDlg.cpp (gpgprefs_dlg_proc): Also try to set
1353      * wptKeylist.cpp (keylist_add_key): Check only for invalid keys          the config file (if it exists).
1354      in the mainloop. The other flags are checked in the various cases.          * wptKeySignDlg.cpp (keysign_dlg_proc): Use easier code
1355      (add_key): Use the ** foo ** notation for invalid flags instead of          to handle the click->activate situation.
1356      skipping the key.          * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
1357      * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print          Support to check the passphrase quality.
1358      out a warning.          * wptPassphraseDlg.cpp (passwd_dlg_proc): Likewise.
1359      Change all error messages to one header.          (request_passphrase): Rename 'init' to 'flags' to allow more
1360      (check_key_status): Check if the key is valid in the sense of          options.
1361      revocation and expire dates. If not, print out a warning.          * wptMAPI.cpp: Check all *alloc results.
1362      (keymisc_dlg_proc): Use the new code.          * wptKeyGenDlg.cpp (keygen_dlg_proc): Use a rudimentary
1363            passphrase quality check.
1364  2001-10-19  Timo Schulz <[email protected]>          * wptMDSumDlg.cpp (mdsum_dlg_proc): Use md5/sha1sum file
1365            format and allow to save the checksum in a file.
1366      * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Issue a warning
1367      option files.          when the PGP mode is disabled.
1368      * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and          wptKeyEditDlgs.cpp (do_editkey_primary): Return if just
1369      use a popup menu.          one user-ID exists.
1370      * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE          (keyedit_dlg_proc): Fixed index problem.
1371      plug-in.          * wptKeyPropsDlg.cpp (get_validity): New.
1372      (gpgoe_unload_plugin): New.          (keyprops_dlg_proc): Actually show extended validity if possible.
1373            * wptKeyList.cpp (get_key_fpr): Support for old v3 format.
1374  2001-10-22      Timo Schulz <[email protected]>          (do_addkey): Use listview_add_item2 to store key as opaque
1375            param inside the list.
1376          Remove all MyGPGME code from the main project. Now we use the          * wptFileStatDlg.cpp (get_digest_algo): Add SHAxxx.
1377          libmygpgme.dll to provide all cryptographic functions and interfaces.          (file_stat_dlg_proc): End dialog if no PGP data was found.
1378            (do_list_packets): Return the number of valid PGP packets
1379          * wptKeylist.cpp (key_array_new): New.          of the file.
1380          (key_array_release): New.  
1381          (key_array_search): New.  2005-08-02  Timo Schulz  <[email protected]>
1382          * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was  
1383          already checked and don't bother the user if all userid's were selected.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Instead of
1384          * wptPassphraseCB.cpp (passphrase_cb_init): Now void.          using 'Default Keyserver' add the real keyserver name to
1385          (passphrase_cb_gpgme): Ditto.          the menu.
1386          (passphrase_callback_proc): Support for a list of recipients.          The rebuild command does not reload the cache any longer.
1387          * wptImportList.cpp (implist_add_key): Support for secret keys.          Use ATTR_NAME + .asc as the filename and not keyid + .asc.
1388            * wptProxySettingsDlg.cpp (enable_proxy_auth): New.
1389  2001-10-23      Timo Schulz <[email protected]>          (keyserver_proxy_dlg_proc): Changed the design a little
1390            and add some additional sanity checks.
1391          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while          * wptGPGParser.cpp (commit_gpg_options): Use W32 line endings.
1392          because it's shorter.          This fixes the problem that the GPG option dialog does not show
1393          * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of          very nice lines.
1394          the default keyid.          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): s/options/config.
1395          * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now          * wptKeySigDlg.cpp (keysig_dlg_proc): If a single key is selected
1396          we use the signer from the keylist.          check for 'NOKEY' before asking a keyserver.
1397          * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix          * wptKeyManager.cpp (km_delete_keys): Do not set 'refresh' flag.
1398          some silly bugs.          If a lot of keys were selected, ask if the user wants to confirm
1399          * WinPT.cpp (WinMain): if there is no valid keyring after the new          each delete procedure or allow to cancel the operation.
1400          preferences, start the key generation dialog.          * wptFileManagerDlg.cpp (file_import_dlg_proc): Display how much
1401            keys the file contain.
1402  2001-10-25      Timo Schulz <[email protected]>          * wptKeyList.cpp (get_key_algo): Beautified.
1403            (get_key_status): Drop the "[XYZ] Unknown" format, it is too
1404          * wptGPG.cpp (get_gpg_default_key): Support for the users options file.          confusing for users.
1405          (check_gpg_path): Ditto.          * wptKeyManager.cpp (km_check_key_status): Adjustments for the
1406          (get_gpg_options): Ditto.          new code.
1407          (set_gpg_default_key): Ditto.          (km_check_for_seckey): Reset utrust parameter. Return -1 for
1408          (set_gpg_options): Ditto.          invalid (exp+rev+dis) keys.
1409          (gpg_check_keyring): Ditto.  
1410          (set_gpg_default_keyid): Fix a typo.  2005-08-01  Timo Schulz  <[email protected]>
1411          * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.  
1412            * wptKeyserver.cpp (kserver_urlencode): Use unsigned for all given
1413  2001-10-26      Timo Schulz <[email protected]>          sizes.
1414            (check_IP_or_hostname): New.
1415          * wptExtensions.cpp: Removed.          (kserver_load_conf): Correct finger URL parsing problem.
1416          * wptLDAPExt.cpp: Removed.          (port_from_proto): New.
1417          * wptLDAP.cpp: New. This code now contains a direct interface to          (keyserver_load_conf): Guess the port.
1418          the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.          (keyserver_set_default): Allocate new buffer.
1419          (wldap_init): New.          (kserver_load_conf): Likewise.
1420          (wldap_end): New.          * wptHTTP.c (parse_reqline, parse_request): Removed.
1421          (ldap_set_verbose): New.          Use WinPT error code and remove all unused code.
1422          (ldap_get_key_info): New.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Properly handle finger URLs.
1423          (ldap_recvkey): New.          * wptProxySettingsDlg.cpp (read_proxy): Simple check for
1424          (init_ldap): New. Internal use only.          invalid host/IP addresses.
1425          (get_key): New. Ditto.          * wptGPG.cpp (multi_gnupg_path): Return allocated buffer.
1426          (send_key): New. Ditto.          Changed all callers.
1427          * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.          * wptPreferencesDlg.cpp (prefs_dlg_proc): At the first start,
1428            automatically set 'backup to homedir'.
1429  2001-10-27      Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): Use desktop window as the parent window
1430            to load 'first-start' dialogs.
1431          * wptKeylist.cpp (keylist_enum_recipients): Add a type to make          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Do not set 'refresh'
1432          the code more flexible.          flag after deleting keys.
1433          * wptKeyMiscDlg.cpp (file_import): New.          * wptFirstRunDlg.cpp (first_run_dlg_proc): Use a new structure
1434          (file_export): New.          for passing the arguments.
1435          * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Do not store "" for
1436            the OptFile. This was responsible for a lot of 'General Errors'
1437          Removed all OE code snippets.          after the first start related to key caching.
1438            Automatically set the gpg binary if possible.
1439  2001-10-28      Timo Schulz <[email protected]>  
1440    2005-07-22  Timo Schulz  <[email protected]>
1441          * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support  
1442          for ENTER/SPACE and DELETE. Suggested by Graham.          * wptMainProc.cpp (winpt_main_proc): Take care for shutdown
1443          * wptKeyList.cpp (add_key): New code to figure out how trustworthy          messages and make sure WinPT make a keyring backup in this case.
1444          a expired/revoked secret key is.          * wptGPGME.cpp (keycache_reload): Do not rebuild the signature
1445          (keylist_enum_recipients): Show the key ID of the key when it's          cache each time. Just do it on startup.
1446          revoked.          * wptKeyManager.cpp (km_key_is_v3): Use new ATTR_VERSION.
1447          * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Assume the v3 flag
1448          only the first to figure out if a secret is available. Thanks to          was set by the calling function.
1449          Graham.          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): Ask for backups.
1450          * wptFile.cpp (get_keyid_from_file): Ditto.          (keygen_dlg_proc): Only add the generated key to the keycache
1451            and do not reload the entire cache.
1452  2001-10-30      Timo Schulz <[email protected]>          * wptKeyManager.cpp (km_delete_keys): Store the number of keys
1453            because in each loop iteration it will be new calculated.
1454          * wptHotkey.h: Fixed typo. Thanks to Timo.          * wptListView.cpp (listview_del_items): Likewise.
1455          * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Directly add the
1456          (get_gpg_default_key): Skip comment lines immediately.          generated key to the list instead of reloading the entire cache.
1457          * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.          * wptKeyEditDlgs.cpp (parse_preflist): Support fpr SHAnnn.
1458          * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure  
1459          for subclassing.  2005-05-09  Timo Schulz  <[email protected]>
1460    
1461          Remove all unsafe WM_NOTIFY stuff because this was propably the          * wptCommonDlg.cpp (http_file_dlg_proc): Renamed to..
1462          reason for the crashes. And add as a sanity check if the control          (http_dlg_proc): ..this.
1463          sent the message.          (get_keyserver_URL_dlg): New.
1464            (check_URL): New.
1465  2001-11-02      Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (keyedit_set_pref_keyserver): New.
1466            (keyedit_main_dlg_proc): Avoid massive keycache reloads, just reload
1467          * WinPT.cpp (WinMain): Add the chance to start the preferences dialog          the single key.
1468          in the case a GPG error was detected.          * wptKeyRevokersDlg.cpp (key_revokers_dlg_proc): Show the key
1469          * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected          properties of the selected desig. revoker.
1470          keys.          * wptVerifyList.cpp (verlist_build): Increase the column
1471            size of 'keyid'.
1472  2001-11-03      Timo Schulz <[email protected]>          * wptGPGME.cpp (keycache_update): New.
1473            * wptKeySigDlg.cpp (keysig_dlg_proc): Update the key if a signature
1474          (fm_remove_crit_file_attrs): First check if the file exists.          was deleted.
1475          Thanks to Peter.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Zeroing the key struct
1476            before we set any values.      
1477  2001-11-07      Timo Schulz <[email protected]>  
1478    2005-05-03  Timo Schulz  <[email protected]>
1479          * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing  
1480          the key id.          * wptFileManager.cpp (fm_parse_command_line): Handle
1481          * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret          'SYMKEYENC' files. Thanks to the user who reported it.
1482          key imports.          * wptKeyEditDlgs.cpp (do_find_userid): Optionally return the context.
1483          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and          (showpref_dlg_proc): New.
1484          the user doesn't set the field, try to do this automatically.          (keyedit_main_dlg_proc): Support SHOWPREF.
1485            (userid_list_init): New field 'Email'. Split userID into 'Name' + 'Email'.
1486  2001-11-13      Timo Schulz <[email protected]>          (do_add_new_userid): Adjust for new ListView.
1487            (do_find_userid): Use email for searching.
1488          * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry          (parse_preflist): New.
1489          is set but to "". Then use default gpg directory.  
1490          * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.  2005-04-19  Timo Schulz  <[email protected]>
1491          (refresh_from_keyserver): New. Context entry for update keys.  
1492          (keymisc_dlg_proc): Modify the way the popup is shown.          * wptKeyserver.cpp (kserver_update_proxyuser): Fixed
1493            buffer overflow that occurred when the proxy password
1494  2001-11-18  Timo Schulz <[email protected]>          is > 29 chars. Thanks to the friendly user who reported this.
1495            (kserver_search): Handle the case the key is revoked. Thanks
1496      * wptKeyManager.cpp: New. Contains all handy functions from the          to Ralf.
1497      wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.          (kserver_connect): More logging.
1498      (km_quote_uid): New.          (kserver_sendkey): Likewise.
1499      (km_check_for_seckey): New.          * wptProxySettingsDlg.cpp (check_number): New.
1500      (km_check_key_status): New.          (read_proxy): Check the entered port number.
1501      (km_clip_export): New.          * wptKeySignDlg.cpp (sig_class_dlg_proc): Check default button.
1502      (km_clip_import): New.          * wptW32API.cpp (get_folder_dlg): Free memory.
1503      (km_file_export): New.  
1504      (km_file_import): New.  2005-04-11  Timo Schulz  <[email protected]>
1505      (km_delete_keys): New.  
1506      (km_send_to_keyserver): New.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Reset
1507      (km_refersh_from_keyserver): New.          'enable' flag always at the begin.
1508      (km_update_default_key_str): New.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Show correct
1509          * wptKeygenDlg.cpp (ask_for_backup): New.          key trust. Noted by a friendly user.
1510          (keygen_dlg_proc): Use new function to give the chance to the          * wptListView.cpp (listview_add_item_pos): New.
1511          user for a complete backup.          * wptKeyEditDlgs.cpp (get_subkey_fingerprint): Due to
1512            the fact that GPG does not return the fingerprint of
1513  2001-11-22      Timo Schulz <[email protected]>          the generated subkey any longer, we need to get it manually.
1514            Thanks to Maxime Brandt.
1515          * wptW32API.cpp (set_foreground_wnd): New.          (keyedit_addsubkey_dlg_proc): If key size too large, ask
1516            if this was a mistake.
1517          Fixed the return value of all EndDialogs.          (keyedit_add_subkey): Use it here.
1518            (do_add_new_subkey): Fix list contrl insertion.
1519          * wptMainProc.cpp: Remove all code parts which did the same for the          * wptTypes.h (DEFAULT_KEYSIZE): Define new default keysize constant.
1520          current window support. Now the code uses a dialog switch which is  
1521          much smaller.  2005-04-04  Timo Schulz  <[email protected]>
1522    
1523  2001-11-23      Timo Schulz <[email protected]>          * WinPT.cpp (check_crypto_engine): Correct version
1524            check. Noted by Werner.
1525          * wptW32API.cpp (set_active_window): New.  
1526          (reset_active_window): New.  2005-03-22  Timo Schulz  <[email protected]>
1527          (window_reminder): New. This is a delayed thread procedure to  
1528          force the focus (foreground) to the dialogs for the current          * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.
1529          window mode.          (enable_mobile_mode): New.
1530          * wptMainProc.cpp (winpt_main_proc): Use it here.          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new
1531          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.          ID's for adding subkeys.
1532          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.  
1533          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.  2005-03-06  Timo Schulz  <[email protected]>
1534          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.  
1535            * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without
1536  2001-11-24      Timo Schulz <[email protected]>          a public key. Noted by Kurt Fitzner.
1537    
1538          * wptKeyManager.cpp (km_groups_new): New.  2005-03-04  Timo Schulz  <[email protected]>
1539          (km_groups_release): New.  
1540          (km_groups_load): Rewritten.          * GPG asks twice for the new PIN. Thanks to Achim.
1541          (km_groups_add): New.          * wptCardDlg.cpp (card_changepin_dlg_proc): Reset the 'safety' pin also.
1542          (km_groups_del): New.          Only check the passphrase if the backup flag is enabled. Again thanks to
1543          (km_groupdb_open): New.          Achim.
1544          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.  
1545          * wptGroups.c (groupdb_enum_read): Store the record before increment it.  2005-03-03  Timo Schulz  <[email protected]>
1546    
1547  2001-11-27      Timo Schulz <[email protected]>          * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the
1548            new PIN. Suggested by Achim.
1549          * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP          Support to show the unmasked PIN.
1550          proxy authentifcation support for each command.          Modified TAB-order.
1551          (kserver_update_proxyuser): New. Ditto.          * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.
1552          (kserver_send_request): Ditto.  
1553          (kserver_recv_request): Ditto.          * Fixed wrong GPG --command-fd strings. Thanks to Achim.
1554          (kserver_search_init): Ditto.  
1555    2005-02-23  Timo Schulz  <[email protected]>
1556  2001-11-29      Timo Schulz <[email protected]>  
1557            * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.
1558          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.          (kserver_search): Be more strict.
1559          * wptMainProc.cpp (clip_gpg_dlg): New.          * WinPT.cpp (WinMain): Enable FM progress by default.
1560          Modify the whole event loop so we don't need all the same code          * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.
1561          for each command. And we use the new foreground code.          (fm_parse_files): Use progress dialog only if it is
1562          * wptW32API.cpp (check_date): Fixed.          enabled.
1563    
1564  2001-12-02      Timo Schulz <[email protected]>  2005-02-07  Timo Schulz  <[email protected]>
1565    
1566          * wptGroups.c: Revamped from the base. Arggg.          * wptFileManager.cpp (fm_parse_files): Do not use the progress dialog
1567            for signing and verifying. But this does not fix the problem tha the
1568  2001-12-15  Timo Schulz <[email protected]>          dialog sometimes stay and is not destroyed.
1569    
1570      * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for  2005-02-04  Timo Schulz  <[email protected]>
1571      copy and paste.  
1572            * wptProgressDlg.cpp (progress_cb_thread): Set root window if available.
1573  2001-12-19      Timo Schulz <[email protected]>          If the progress window survives by accident, it will be closed when the
1574            File Manager (root window) is closed.
1575          * Completed work on the temporary file support for GPG.  
1576          * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the  2005-02-02  Timo Schulz  <[email protected]>
1577          plaintext viewer option. Suggested by Markus Winkler.  
1578          (get_reg_winpt_prefs): Ditto.          * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise
1579          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.          it is invisible.
1580          * wptMainProc.cpp (winpt_main_proc): Ditto.          * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric
1581            passphrases.
1582  2001-12-21      Timo Schulz <[email protected]>          * Enable the progress dialog for symmetric encryption.
1583            * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in
1584          * wptTextInputDlg.cpp (text_input_dlg_proc): New.          FM_ENCRYPT mode.
1585          * wptMainProc (clip_gpg_dlg): Support for deached signatures.          * WinPT.cpp (WinMain): SETUP_EXISTING implemented.
1586          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when
1587            no value is entered.
1588  2001-12-30      Timo Schulz <[email protected]>  
1589    2005-01-26  Timo Schulz  <[email protected]>
1590          * wptFileManager.cpp (fm_sign): Always use callbacks for the  
1591          passphrase.          * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.
1592          (fm_decrypt): Ditto.          * wptKeyManagerDlg.cpp: Add 'Select All' feature.
1593          (fm_parse_files): Cache the passphrase for the session and check          Move 'Edit->Key' to 'Key->Edit'.
1594          if the file still exists.          * wptFileManagerDlg.cpp: Likewise.
1595          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use          * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.
1596          low level stuff here.          * wptKeyManager.cpp (spawn_loadimage): Removed.
1597          * wptFile.cpp (get_keyid_from_file): Ditto.          (km_show_photo): Removed.
1598            * wptRevokersDlg.cpp (revokelist_init): Fixed index.
1599  2002-01-01      Timo Schulz <[email protected]>          * wptErrors.cpp (winpt_strerror): Show system error for registry
1600            related problems.
1601          * wptFileManager.cpp (fm_verify): Support for the case there is  
1602          no public key to verify the signature.  2005-01-25  Timo Schulz  <[email protected]>
1603    
1604  2002-01-06  Timo Schulz <[email protected]>          * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default
1605            and that all values are 7-bit ASCII.
1606      * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt          Use '*' for the passphrase field.
1607      hotkey.          * wptGPG.cpp (multi_gnupg_path): New.
1608          * wptRegistry.cpp: Ditto.          (get_gnupg_path): Use it here.
1609          * wptRegistry.h: Ditto.          (check_homedir): Likewise.
1610          * wptHotkey.h: Ditto.          * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port
1611          * wptGPG.cpp (gpg_load_options): New.          is actually set.
1612          (gpg_save_options): New.          * wptFileManager.cpp (fm_clearsign_8bit): New.
1613            (fm_parse_files): Check if the file to clearsign is really 7-bit.
1614  2002-01-13      Timo Schulz <[email protected]>          Thanks to djek.
1615            (fm_set_ftype): Factored out some code from...
1616          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche          (fm_add_dropped_files): ...here. Simplied the code.
1617          settings.          (fm_add_dir_files): New.
1618          * wptGPG.cpp (gpg_backup_options): New.          * Removed MD5 from MyGPGME and the new default sym cipher is AES.
1619          (gpg_load_options): Ignore comment lines.          * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var
1620          (gpg_save_options): Rewritten.          to track the window handle.
1621            (progress_cleanup): Try to close tracking handle first.
1622  2002-01-18      Timo Schulz <[email protected]>  
1623    2005-01-21  Timo Schulz  <[email protected]>
1624          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.  
1625          * wptPassphraseCB.cpp (parse_gpg_description): Support when no          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys
1626          description was given. One example is when symmetric was used.          which are not in the keyring. Suggested by djek.
1627            * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic
1628  2002-01-20      Timo Schulz <[email protected]>          'Always on Top'.
1629            Allow to send encrypted files via MAPI.        
1630          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache
1631          have to click twice before the menu appears. Richard told me this.          if the HKP retrieval succeeded.
1632            * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer
1633            is not NULL.
1634  2002-01-23      Timo Schulz <[email protected]>          * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with
1635            a header similar to 'gpg -k name'.
1636          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for          * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible
1637          loading a file.          with 'Always on Top' windows.
1638          Add new code to save file with clipboard contents.          * wptFileManager.cpp (fm_parse_files): Set progress callback for
1639            wiping files.
1640  2002-01-26      Timo Schulz <[email protected]>          (fm_add_opened_files): Do not add the file in case of an error.
1641            * wptKeyserverDlg.cpp (kserver_get_port): New.
1642          * wptKeylist.cpp (keylist_add_key): Use flags for the file manager          (save_default_ks): Save port.
1643          to avoid to show all userid's. Thanks to Frank.          * wptKeyserver.cpp (set_default_kserver): Get port or use default.
1644          * wptDateDlg.cpp (date_dlg_proc): New context to use different          (kserver_connect): Logging.
1645          window texts and some other features.          (kserver_send_request): Likewise. Thanks to Markus.
1646          * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.          * wptError.cpp (w32_fmt_msg): New.
1647          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.          (winpt_strerror): Show the W32 API error if the hotkey could not
1648          * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if          be registered.
1649          it doesn't exist.  
1650          * WinPT.cpp (WinMain): Use the new code here.  2005-01-20  Timo Schulz  <[email protected]>
1651    
1652  2002-02-04      Timo Schulz <[email protected]>          * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the
1653            keyring check. If the file exists, it is enough.
1654          * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements          * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.
1655          which need it. Thanks to Timo who find this out.          Several cleanups and allow to specify the port of the keyserver.
1656          * WinPT.cpp (WinMain): We don't quit in the case the user changed          * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure
1657          the preferences.          the application terminates clearly when Windows shutdown.
1658          (update_keycache): New. Handy function to update the keycache.  
1659    2005-01-10  Timo Schulz  <[email protected]>
1660          * Use quotation for the options file in any case.  
1661            * WinPT.cpp (load_gettext): New.
1662          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status          (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.
1663          is set, we don' try to get the sig key.  
1664    2005-01-08  Timo Schulz  <[email protected]>
1665          * wptGPG.cpp (get_gpg_default_key): Revamped.  
1666            * Applied the patches to make the source G++ compatible.
1667  2002-02-05      Timo Schulz <[email protected]>          * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.
1668                    * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.
1669          wptGPG.cpp (gpg_save_options): Fixed the code for the case the          * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.
1670          values don't exist in the options file. Thanks to Lutz who found this out.  
1671          (get_gpg_default): First search for "default-key" then for "encrypt-to".  2005-01-07  Timo Schulz  <[email protected]>
1672    
1673  2002-02-05      Timo Schulz <[email protected]>          * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.
1674            (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.
1675          * wptGPG.cpp (gpg_save_options): Catch the case when the options file          (ldap_recvkey): Likewise.
1676          exist but it has a length of zero.          (check_hkp_response): Be more liberal with error strings.
1677          (gpg_display_error): Print out the data from the GPG stderr          (kserver_connect): Prevent buffer overflow and use the right return
1678          (when available).          code for inet_addr().
1679          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if          (kserver_search_chkresp): New.
1680          not, return NULL.          (kserver_search): Fixed. Now it works with modern keyservers.
1681          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret          * wptKeylist.cpp (seclist_init): Add new flags param.
1682          keys.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key
1683            listing.
1684          * Fixed a lot of memory allocation all over the place.          * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
1685            * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.
1686  2002-02-08      Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): call GPGME init.
1687            Reword the 'you have no keyring' problem and revamp the first run dialog.
1688          * wptNLS.c: Now it's C-source because GPGME needs gettext too.          * wptGPG.cpp (gnupg_access_keyring): New.
1689          (stpcpy): Makes it static.          (gnupg_check_keyring): Removed unused code.
1690          * errors.c: localize all error strings.          * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the
1691          * WinPT.cpp (get_gettext_lang): Move the code in this file because          new texts and remove unused elements.
1692          we can't use it in plain C.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The
1693            last annoying typo.
1694  2002-02-23      Timo Schulz     <[email protected]>          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of
1695            an error.
1696          * wptListview.cpp (listview_del_items): New.  
1697          * wptKeyManager.cpp (km_delete_keys): Use it here.  2004-12-30  Timo Schulz  <[email protected]>
1698          * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.  
1699          * wptKeylist.cpp (add_key): UTF8 support.          * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.
1700            This fixes the problem that the dialog crashes when the user selects
1701  2002-02-28      Timo Schulz <[email protected]>          anything. Thanks to my users.
1702            (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.
1703          * wptImplist.cpp (implist_add_key): UTF8 support.          
1704          Handle invalid userID's.  2004-12-20  Timo Schulz  <[email protected]>
1705          * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.  
1706          (passphrase_callback_proc): Ditto.          * wptGPG.cpp (check_gnupg_engine): Fixed version checking.
1707            * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the
1708            cache if it is not valid.
1709  2002-03-01      Timo Schulz <[email protected]>          
1710            Fix problem with a NULL pointer.
1711          * wptWipeFile: Replaced all low level I/O functions with W32 API  
1712          functions. And support for more wiping modes. I don't know to  2004-12-15  Timo Schulz  <[email protected]>
1713          support all, but those makes sense for me:  
1714          1. Simple (2 random passes)          * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right
1715          2. DoD (as described in the standard)          temp name.
1716          3. Peter Gutmanns method (from the paper)          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button
1717            when no secret key is available.
1718    
1719  2002-03-02      Timo Schulz <[email protected]>  2004-12-11  Timo Schulz  <[email protected]>
1720    
1721          * Use capital letters in the main menus and applied Patricks spelling          * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect
1722          corrections.          the file type.
1723            (fm_parse_command_line): Likewise.
1724          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string  
1725          not an integer. Thanks to scrumpy.        2004-12-02  Timo Schulz  <[email protected]>
1726          * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.  
1727          (overwrite): Some bugfixes to set the pointer to the begin of the file.          * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.
1728          * wptVerlist.cpp (verlist_build): New keyID column.  
1729          (verlist_add_sig): Use it here.  2004-11-04  Timo Schulz  <[email protected]>
1730    
1731  2002-03-22      Timo Schulz <[email protected]>          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred
1732            keyserver sub packets.
1733          * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't  
1734          set window contents for some commands.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to
1735          (winpt_main_proc): Use the code here.          indicate we need to reload the cache. If a user deletes a key
1736          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.          and exits the manager and loads it again the deleted key is
1737          * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.          still in cache and provoked an error.
1738          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.          
1739          * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.          * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.
1740    
1741  2002-03-29      Timo Schulz <[email protected]>          * wptW32API.cpp (center_window): Replaced with real code which calculates
1742            the position relative to the desktop window.
1743          * wptGPG.cpp (create_groupdb): Only close the file handling if it  
1744          really exists. Thanks to Mark.  2004-10-25  Timo Schulz  <[email protected]>
1745          (gpg_check_homedir): Applied the patch. Now we're a little stricter  
1746          about the homedir checks.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box
1747          (check_homedir): Fixed a possible memory leak.          if the PGP message is complete but broken during the transport.
1748          * WinPT.cpp (WinMain): Check the homedir functions to exit the program          Thanks to Werner and Achim.
1749          if      we've found some problems.          * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks
1750          * wptErrors.cpp (winpt_strerror): New value if a directory could not          to the gnupg-users.
1751          created.          * Automatically add '\r\n' to the text before signing. This solves
1752          * wptMainProc (winpt_main_proc): Use new code for the current window mode.          the problem the last line is not included if no \r\n is present.
1753          * wptCurrWnd.cpp (get_curr_wnd): Ditto.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode
1754          (get_window_contents): Always set focus to the current window.          which prepends the text with '> '. This makes it easier to quote
1755            decrypted text.
1756  2002-03-31      Timo Schulz <[email protected]>          * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored
1757            out from..
1758          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to          (keyserver_dlg_proc): ..here.
1759          select the key used for signing.  
1760          * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.  2004-10-15  Timo Schulz  <[email protected]>
1761          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).  
1762          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt
1763          fetching keys via HKP and try to update the Gpgmekey inside.          is really initialized.
1764          * wptVerifyList.cpp (verlist_add_sig): Check if the key context was  
1765          set inside the signature. Fixes some segfaults related to the HKP key  2004-10-07  Timo Schulz  <[email protected]>
1766          fetching during verification. Thanks to Julian. And force to use UTF8  
1767          for user ID's.          * wptErrors.cpp (winpt_errmsg): Use a generic header when no
1768          * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,          filename is supplied.
1769          prevent that the dialog is loaded and ask for the passphrase directly.          * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but
1770            an error message which is more clean. Thanks to Ralf.
1771            * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card
1772  2002-04-05      Timo Schulz <[email protected]>          admin mode.
1773            * wptKeySignDlg.cpp (do_check_protection): Also check for smart
1774          * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.          card protection.
1775          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.          (get_keyinfo): Return if this is a smart card key.
1776          * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.          * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before
1777          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.          comparing the names.
1778            * winpt.cpp: Now depends on PTD 0.7.1.
1779  2002-04-19      Timo Schulz <[email protected]>  
1780    2004-10-01  Timo Schulz  <[email protected]>
1781          * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.  
1782            * wptClipSignDlg.cpp: Really use the selected subkey with the
1783  2002-04-23      Timo Schulz <[email protected]>          right '!' syntax. Thanks to Vedaal for pointing this out.
1784            * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device
1785          * wptRFC2440.cpp: Removed. We now use the OpenCDK package.          is accessable and writeable, otherwise inform the user. Kudos to
1786          * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.          the one who reported this problem.
1787          (fm_encrypt): Modified code to allow sign & encrypt.  
1788          (fm_parse_file): Ditto.  2004-09-20  Timo Schulz  <[email protected]>
1789          (fm_decrypt): Support for checking signatures.  
1790          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in
1791            context menus when the key is flagged as revoked.
1792  2002-04-24      Timo Schulz <[email protected]>          (update_ui_items): Likewise and set the 'ShowPhoto' flag only if
1793            the key has such an item.
1794          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.  
1795            2004-09-08  Timo Schulz  <[email protected]>
1796          Changed the way to modify the "Version:" string.  
1797            * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is
1798          * wptKeyserver.cpp (add_node): New.          in the list, return zero.
1799          (kserver_change_proxy): New.  
1800          (kserver_read_config): New.  2004-09-07  Timo Schulz  <[email protected]>
1801          (kserver_write_config): New.      
1802          (kserver_cfgfile_release): New.          * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.
1803          (proxy_release): New.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
1804    
1805          * wptProxySettingsDlg.cpp (read_proxy): New.  2004-09-01  Timo Schulz  <[email protected]>
1806          * wptFileStatDlg.cpp (file_stat_dlg_proc): New.  
1807          * wptFileManager.cpp (fm_list): New.          * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.
1808          (fm_parse_files): Support the new list command.          (default_key_from_cache): Use new key attribute 'usable'.
1809            * WinPT.cpp (show_unprotected_keys): Removed.
1810  2002-04-25      Timo Schulz <[email protected]>          * wptKeylist.cpp (check_key): Removed.
1811            (seclist_init): Use new 'usable' key attribute.
1812          * wptImplist.cpp (implist_add_key): Catch possible segfault.          (keylist_add_key): Likewise.
1813          * wptVerifyList.cpp (verlist_add_sig): Ditto.          * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to
1814          * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.          add keys via 'INSERT'.
1815          * wptKeylist.cpp (find_secret_key): New.          * wptListView.cpp (listview_select_one): New.
1816          (add_key): Use it here.          (listview_find): New.
1817          (keylist_add_key): And here.          * wptFileManager.cpp (fm_get_current_pos): If there is only
1818            one item, return 0 but also select it. Thanks to Christian.
1819          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent  
1820          to fetch the key.  2004-08-28  Timo Schulz  <[email protected]>
1821    
1822  2002-04-26      Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): Free gpg table in case of an error.
1823            * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
1824          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.          (filemanager_dlg_proc): Subclass the list control.
1825          * wptKeyUidDlg.cpp: Ditto.          * Fix Alt+C for the winpt_prefs_dlg_proc.
1826            * wptKeyserver.cpp (kserver_load_conf): Ignore lines with
1827  2002-04-27      Timo Schulz <[email protected]>          just whitespaces. Thanks to the folks on winpt-users.
1828    
1829          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.  2004-08-27  Timo Schulz  <[email protected]>
1830          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.  
1831          * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.          * wptKeyserver.cpp (skip_whitespace): New.
1832          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.          * Fix a problem with the key cache. The new hash item was
1833          (currwnd_gpg_dlg): Ditto.          not initialized to zero and thus the free caused an illegal access.
1834                    Thanks to Ralf for pointing this out.
1835          Now it's possible to parse cleartext signatures which contains an          * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.
1836          encrypted message inside the body.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
1837            * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and
1838          * wptTextInputDlg.cpp (load_file_contents): New.          use a context to store the value. Loalize all text strings.
1839          (text_input_dlg_proc): Support for choosing the data file.          * wptKeyList.cpp (key_check_validity): Cannot use gettext here.
1840            (keylist_get_recipients): Increase buffer for gettext messages.
1841          * wptFileManager.cpp (fm_verify): Support for detached signatures.  
1842          (fm_parse_files): Ditto.  2004-08-26  Timo Schulz  <[email protected]>
1843    
1844            * WinPT.cpp (load_keyserver_conf): New. Factored out some code
1845  2002-04-28      Timo Schulz <[email protected]>          from WinMain ().
1846            (WinMain): Load keyserver config at the begin. Thanks to Bodo Aßner
1847          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver
1848          (set_reg_winpt_prefs): Ditto.          in the list control, add at least the internal default HKP server.
1849          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.          * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.
1850          (set_keylist_mode): New.          * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.
1851            (keysign_dlg_proc): Likewise.
1852          Implement minimal keylist mode. Suggested by Fabian.          * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.
1853            * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.
1854          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.          (kserver_connect): use it here.
1855          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (kserver_send_request): Likewise.
1856          * wptKeylist.cpp (keylist_add_key): Ditto.          (kserver_recvkey): Likewise.
1857          (keylist_load): Ditto.  
1858          (keylist_build): Ditto.  2004-08-25  Timo Schulz  <[email protected]>
1859    
1860  2002-04-29      Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB
1861            and skip to read large files on floppy discs.
1862          Adjustments for GPG 1.0.7          (fm_wipe): Display a 'wait' cursor until the wipe is complete.
1863            (is_floppy_disc): New.
1864          * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
1865          and ask the user if he knows what he's doing.          (file_manager_dlg_proc): Use subclassing to allow some hotkeys.
1866          * wptKeyManager.cpp  
1867          (keylist_subclass_proc): Use double click to open the props.  2004-08-24  Timo Schulz  <[email protected]>
1868          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a  
1869          ultimate ownertrust value.          * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for
1870          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for          the user-ids.
1871          new RSA keys.          * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into
1872            expert mode when the non-interactive mode is used.
1873  2002-04-30      Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): Start the keygen wizard instead of the
1874            expert dialog and allow to switch to it.
1875          Merge ownertrust handling into the keycache. Now GPG outputs the  
1876          ownertrust in the key listing which means we can get the ownertrust  2004-08-20  Timo Schulz  <[email protected]>
1877          value from the keycache.  
1878            * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only
1879          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.          mode the menu is not available.
1880          Please not that this is not the same as the key cache! The key cache          (popup_gpg_readonly): New.
1881          will be updated when a new key was imported or a subkey was added/changed.          (menu_gpg_readonly): New.
1882          The signature cache only affects the validity of the keys.          (keymanager_dlg_proc): Use it here. Do not check the permissions
1883            any longer since this is now handle via the read-only code.
1884          Removed the MyGPGME trustlist code. Now we can use the field in the key          * wptMainProc.cpp (winpt_main_proc): Check if the keyrings
1885          listing to determine the ownertrust (which makes things a lot of easier).          are in read-only mode.
1886            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.
1887  2002-05-01      Timo Schulz <[email protected]>          * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably
1888            signatures in expert mode.
1889          * wptKeygenDlg.cpp (fill_keytype_box): New.          * wptKEyEditDlgs.cpp (do_find_userid): Release context.
1890          (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7          * wptGPG.cpp (gpg_check_permissions): Only print out a warning
1891          there is full RSA support.          in the interactive mode.
1892            * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left
1893          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out          mouse button is clicked.
1894          what the problem was when no encryption was done.  
1895    2004-08-19  Timo Schulz  <[email protected]>
1896          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make  
1897          sure it was not already signed (ALREADY_SIGNED).          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected
1898            key numbers.
1899          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,  
1900          now we also support to sign ultimate trusted keys.          * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.
1901            (is_sig): Change code to allow to check pre-defined fields.
1902          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button  
1903          is checked and do not check it.          * WinPT.cpp (WinMain): Allow read-only support for keyrings.
1904    
1905          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify  2004-08-06  Timo Schulz  <[email protected]>
1906          box and now we also support the date of the signature.  
1907            * wptContext.h: Move subclass_s context to this file.
1908          Applied Rich's spelling and grammer mistakes.  
1909          Fixed a lot of minor spelling mistakes and capital letters for dialogs.          * wptKeysigDlg.cpp (subclass_dlg_proc): New.
1910    
1911  2002-05-05      Timo Schulz <[email protected]>  
1912    2004-08-05  Timo Schulz  <[email protected]>
1913          * Fixed problem with rev certs for imports stats.  
1914            * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag
1915          * Cosmetical changes for the GPGME libraray.          when possible.
1916            New dialog layout to enhance the readability of the text. Use
1917  2002-05-06      Timo Schulz <[email protected]>          flat check boxes for the same reason.
1918    
1919          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of          * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to
1920          the buttons.          the right column (3 not 4).
1921    
1922  2002-05-07      Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile
1923            uses a unique name.
1924          * wptGPG.cpp (check_gpg_engine): New.  
1925    
1926          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible  2004-08-04  Timo Schulz  <[email protected]>
1927          routines.  
1928            * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the
1929          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.          edit-field to display the text. Now a RichEdit field is
1930            used. This solves the XP problem that the viewer is empty
1931          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.          even if there is text in it.
1932    
1933  2002-05-08      Timo Schulz <[email protected]>          * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.
1934    
1935          * wptKeyserver.cpp (kserver_change_proxy): Check the values.          * wptKeySigDlg.cpp (sigprops_dlg_proc): New.
1936          Thanks to njek for reporting it.          (keysig_dlg_proc): Add new 'Properties' button and implement
1937            the code for it.
1938  2002-05-30  Timo Schulz <[email protected]>  
1939            * wptSigList.cpp: Add support to show the expiration date.
1940          * wptFileManager.cpp (fm_verify): Corrected the handling  
1941          for detached RSA signatures.          * wptGPGME.cpp (keycache_init): Support to show the progress bar.
1942          (fm_add_sig_stat): Added support for short fingerprints.          (keycache_release): Store the amount of keys in the registry for
1943            the progress dialog.
1944  2002-05-31      Timo Schulz <[email protected]>  
1945            * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate
1946          * wptTrayPop.cpp: Revamped some parts of the code.          default keyserver.conf.
1947    
1948          Changed all status_box functions to show_msg. The advantage          * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.
1949          is that we only wait a fixed time and the user doesn't need          Fix possible buffer overflow.
1950          to hit the OK key. We should add  the time delay in the preferences.          (wsock_end): Release stored keyserver list.
1951    
1952          * wptKeyManager.cpp (km_show_photo): New.          * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for
1953            a specific recipient and select it.
1954  2002-06-07      Timo Schulz <[email protected]>  
1955    2004-08-02  Timo Schulz  <[email protected]>
1956          * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.  
1957          * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.          * wptKeysigDlg.cpp (do_create_popup): New.
1958          * wptListView.cpp (listview_select_all): New.          (do_load_keyprops): New.
1959          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.  
1960            (keysig_dlg_proc): Factor out some common code and use
1961  2002-06-16      Timo Schulz <[email protected]>          do_load_keyprops.
1962    
1963          Don't put the questions in the message box title bar.          * wptKeyServer.cpp (kserver_check_inet_connection): New.
1964    
1965          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it          * wptKeyManger.cpp (km_refresh_from_keyserver): First check
1966          is really opened. Thanks to Nelson.          for an active internet connection. It's annoying for the
1967            user to confirm an connection error for each key (n>40).
1968          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title  
1969          for chaning the passphrase. Suggested by Ed.  2004-07-27  Timo Schulz  <[email protected]>
1970    
1971  2002-08-26  Timo Schulz  <[email protected]>          * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new
1972            value for the ownertrust.
1973          * wptTypes.h (free_if_alloc, CHECK_BOUND): New.  
1974          * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure          * wptKeyManager.cpp (get_key_trust): Make it public.
1975          the memory is really released. Some strict checks for return values.          (get_key_trust_str): New.
1976          Ident file.          (km_refresh_from_keyserver): Allow to select random keys.
1977            (km_refresh_one_key): New.
1978          * wptAboutDlg.cpp: Ditto. (ident)  
1979          * wptGPGAboutDlg.cpp: Ditto.          * wptKeyserver.cpp: Use default keyserver if possible.
1980          * wptClipDecryptDlg.cpp: Ditto.  
1981          (clip_decrypt_dlg): Stricter return value checkings.  2004-07-13  Timo Schulz  <[email protected]>
1982          Avoid one indent level.  
1983            * wptFileManager.cpp (fm_assume_onepass_sig): New.
1984          * wptImportList.cpp (implist_add_key): More strict return value          Thanks to Vedaal who found out that armored one-pass sigs are not
1985          checking.          correctly recognized.
1986          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.  
1987          (add_key): New key status system.          (ask_filename): New.
1988          (keylist_get_keyflags): New.          Again thanks to Vedaal who suggested to ask for a new output name
1989          (keylist_enum_recipients): Simplified and use the new key flags.          for the case the user does not want to overwrite the file.
1990    
1991          * wptSiglist.cpp (siglist_add_key): Fix possible overflows.          (fm_encrypt): Use it here.
1992          (verlist_add_sig_log): More stricter checks.          (fm_decrypt): Likewise.
1993            (fm_sign): Likewise.
1994          * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.  
1995            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry
1996  2002-08-28  Timo Schulz  <[email protected]>          to set secret keys to ultimate trust.  
1997    
1998          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.          * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the
1999          * wptFileMananger.cpp (fm_check_armor_type): Ditto.          key has ultimate trust.
2000            (km_set_implicit_trust): New.
2001    
2002  2002-08-31  Timo Schulz  <[email protected]>  2004-07-12  Timo Schulz <[email protected]>
2003    
2004          * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.          * wptRegistry.cpp: Support for disable compression of multi-media files.
2005          (check_homedir): Ask the user whether to create the directory.          (set_reg_winpt_single): New.
2006          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works          (get_reg_winpt_single): New.
2007          to retrieve missing keys from a HKP server.  
2008          (recv_missing_keys): Likewise.          * wptFileManager.cpp (is_multi_media): New.
2009          * wptPassphraseCB.cpp (passphrase_callback_proc):          (fm_encrypt): Disable compression of multi-media files.
2010          Implemented     the "Hide Typing" feature.          (fm_state_new): Set comment to indicate armored files were generated
2011          (hide_typing): New.          by WinPT. This is a replacement due to the fact the WinPT string is not
2012          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.          added in the 'Version' for larger files.
2013          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.  
2014          Due to some attacks a MDC error is treated as a fatal error and a          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.
2015          possible security risk.  
2016          * wptClipImportDlg.cpp (print_import_status): Use a dialog instead  2004-07-11  Timo Schulz  <[email protected]>
2017          of a silly message box. Furthermore the user gets more information  
2018          about the import procedure.          * Bug fix for the validity revoked status. Now it is 'revoked'
2019          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.          and not 'unknown' any longer.
2020          * wptFileManager.cpp (fm_import): Report invalid user ID's.  
2021          (fm_verify): Try to guess the data name for detached signatures          * Feature to disable encryption. This might be useful for filetypes
2022          before we bother the user. When it's found, use it.          GPG does not recognize as compress (movies, ...).
2023          * wptKeyManager.cpp (km_file_import): Ditto.  
2024            * wptFileManager.cpp (fm_get_file_type): Skip packet detction if
2025  2002-09-01  Timo Schulz  <[email protected]>          the file is large and it has no openpgp extension.
2026    
2027          * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice  2004-06-19  Timo Schulz  <[email protected]>
2028          of the dialog.  
2029          * WinPT.cpp (WinMain): Use it here. Reworded the error message.          * wptInet.cpp: Renamed to ...
2030          * wptGPG.cpp (gpg_import_keyrings): New.          * wptHttp.c: ... this.
2031          Let the user chose the keyrings and then they are copied to the          * wptKeyManager.cpp (km_http_import): Release 'p' not too early.
2032          homedir. After the procedure, the key cache will be reloaded.          * WinPT.cpp (WinMain): If there is a problem with the homedir,
2033          * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.          jump to the first start settings.
2034          * wptSigClassDlg.cpp (sig_class_dlg_proc): New.  
2035          (get_sig_class_choice): New.  2004-06-12  Timo Schulz  <[email protected]>
2036          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable  
2037          fingerprint.          * wptInet.cpp: Updated.
2038          (keysign_dlg_proc): Added new value for the GPG callback to handle          * wptKeyManager.cpp (km_http_import): Use http_send_request2() to
2039          the signature class.          parse the URL.
2040          * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the          * wptCommonDlg.cpp (http_file_dlg_proc): New.
2041          userID by calling edit-key with colons.          (get_http_file_dlg): New.
2042          (keyuid_dlg_proc): Use it here.  
2043    2004-06-08  Timo Schulz  <[email protected]>
2044  2002-09-02  Timo Schulz  <[email protected]>  
2045            * wptInet.cpp: New.
2046          * wptKeyManager.cpp (km_privkey_export): Check return codes and          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http
2047          some types has been changed.          transfers.
2048          (km_file_export): Likewise.          * wptKeyManager.cpp (km_http_import): New.
2049    
2050  2002-09-03  Timo Schulz  <[email protected]>  
2051    2004-06-02  Timo Schulz  <[email protected]>
2052          Removed all OpenCDK code from PTD. The code is not tested very  
2053          well and it might contain some errors. Now we used a stripped down          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error
2054          version of GnuPG code. This has two advantages. First the code is          if there is no clipboard data.
2055          stable and second we can easier port other parts to native GPG code.  
2056            Release memory in case of an error.
2057          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.  
2058          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.
2059          keyring when present to the keycache.  
2060          * wptKeyManager.cpp (km_show_photo): Fixes to work again with the          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
2061          modified code.  
2062          (km_check_for_seckey): Check substrings of the value because we  
2063          don't use '**' values any longer.  2004-05-31  Timo Schulz  <[email protected]>
2064          * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.  
2065          (file_stat_dlg_proc): Uses the new code.          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the
2066            'X' close button. Noted by a friendly user.
2067  2002-09-04  Timo Schulz  <[email protected]>          
2068            Disable 'Save' button.
2069          * wptKeyManager.cpp (km_check_key_status): Parse new fields.  
2070            * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.
2071  2002-09-07  Timo Schulz  <[email protected]>  
2072            * wptFileManager.cpp (fm_set_status): Do not use the data file name
2073          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):          for signatures but keep the original file name.
2074          Print notation data when available.  
2075          Show if the signature is expired or not.          (fm_verify_pasted_detsig): Try to verify detached signatures from
2076            the clipboard.
2077          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo  
2078          command to the context menu.  2004-05-14  Timo Schulz  <[email protected]>
2079    
2080          * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.          * WinPT.cpp (check_crypto_engine): Due to some
2081          This is 256 bits more than the old size. Hopefully it's enough          internal  GPG changes the min. version for smart card
2082          security to protect against the most enemies ;-).          support is now 1.3.6.
2083    
2084  2002-09-08  Timo Schulz  <[email protected]>          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix
2085            handling. Thanks to the folks who reported this via SF.net.
2086          * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process  
2087          really succeeded.          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.
2088          (mbox): Alias for msg_box with fixed title to avoid long lines.          Thanks to the folks on winpt-users who reported it.
2089          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow  
2090          to generate keys with a length til 4096 bits.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of
2091          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for          the hotkeys are disabled.
2092          invalid recipients and print out the reasons.  
2093          * wptKeylist.cpp (keylist_add_to_recipients): Improved error message          * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.
2094          and corrected the validity checking.  
2095            * wptFileManager.cpp (fm_get_file_type): Do not parse the entire
2096  2002-09-09  Timo Schulz  <[email protected]>          file if the size is >= 256MB.
2097    
2098          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for  2004-03-15  Timo Schulz  <[email protected]>
2099          the privat key (export).  
2100            * Decrypt list box has now a vertical scroll bar.
2101  2002-09-10  Timo Schulz  <[email protected]>  
2102    2004-03-11  Timo Schulz  <[email protected]>
2103          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.  
2104          (fm_decrypt): Only cut off the extension if it belong to GPG.          * The DLL is now complety C-source.
2105          Added user ID to the box if the file was signed.  
2106          Ask for the filename if the name has no valid GPG extension.  2004-03-08  Timo Schulz  <[email protected]>
2107    
2108  2002-09-12  Timo Schulz  <[email protected]>          * wptGPG.cpp (gnupg_import_keyrings): cleanups.
2109    
2110          * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows
2111          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret          CP.
2112          key export.          (wincp_to_utf8): Likewise.
2113          * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to          (conv_charset): Now internal and static.
2114          check if the encryption failed.  
2115          (km_show_photo): Fixed offset calculation.          * wptUTF8.h: New prototypes and remove the old prototypes.
2116          Use keyid as filename and delete the tempfile after use.  
2117          * wptFile.cpp (init_file_lock): Use dynamic buffer.          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.
2118          (release_file_lock): Free this buffer.  
2119          * wptFileManager.cpp (quote_filename): Removed.  
2120          (quote_file): New. Use dynamic buffers.  2004-03-07  Timo Schulz  <[email protected]>
2121          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):  
2122          Use it here.          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats
2123          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.          dummy keyrings with a size of zero in the homedir.
2124          Initalize packet at the begin and during the loop.  
2125          * wptFileManager.cpp: Replaced all static memory handling with          (gpg_check_permissions): Check for read-only keyrings and add code
2126          dynamic routines.          for this case.
2127          * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust  
2128          functions.          This problem fixes a lof of other problems related to the OpenPGP
2129          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.                  parsing stuff for the key cache.
2130    
2131  2002-09-13  Timo Schulz  <[email protected]>          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.
2132    
2133          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the  2004-03-04  Timo Schulz  <[email protected]>
2134          image and do NOT free it.  
2135          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.          * wptKeyserver.cpp (finger_recvkey): Error if key was not found
2136          (find_user_id): Use keyid to find the key. Changed all callers.          or garbled.
2137    
2138          * Removed global gpg_version variable. Now we also support GPG 1.1.9x          * wptGPG.cpp (gpg_check_permissions): Take care of the entries
2139          so we don't need to check this after the start again.          in gpg.conf.
2140    
2141  2002-09-17  Timo Schulz  <[email protected]>          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select
2142            the signer. Suggested by Sebastian.
2143          * winpt.cpp (WinMain): Use make_filename and no static buffer.  
2144          Modified for the new gnupg interface.          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to
2145          * wptFile.cpp (make_filename): New.          this file.
2146          * wptGpgCmds.h: New from GPG 1.1.92          (seclist_free): Likewise.
2147          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers          (seclist_select_key): Likewise.
2148          and make_filename.  
2149          * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was
2150          make_filename instead of static buffers.          already set.
2151          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.  
2152          * wptParser.cpp: Changed to new allocation instead of malloc.  2004-03-02  Timo Schulz  <[email protected]>
2153          * wptGPGOptSkel.h: Updated from GPG 1.1.92  
2154          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.          * wptGPG.cpp (check_keyring): Handle the case that the keyring
2155            is set in the gpg.conf file and the pubring.gpg file is zero bytes.
2156  2002-09-23  Timo Schulz  <[email protected]>  
2157            (gnupg_backup_keyrings): Support backup of keyrings which were set
2158          * wptParser.cpp (add_multi_option): Support for values with more ' 's          in gpg.conf. Thanks to the user who reminded me of this problem.
2159          and skip the ' ' after the name.  
2160          (modify_entry): New.          (gnupg_check_file_ext): Make check not case sentensive.
2161          * wptGPG.cpp (gnupg_save_options): Removed.  
2162          (gnupg_load_options): Removed.          * (sfree_if_alloc): Overwrite the memory with zeros before freeing
2163          (gnupg_release_options): Removed.          it. This only works with c-strings! Use it everywhere we handle
2164          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.          sentensive information (passphrases).
2165    
2166  2002-09-25  Timo Schulz  <[email protected]>          * Try to improve the usability with better menu names and new
2167            ordering.
2168          * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text  
2169          is dash escaped. This is useful for keys to avoid errors.          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.
2170          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an  
2171          OpenPGP key from the clipboard which is dash escaped.          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now
2172          (km_clip_import): Use the new code here.          it is part of the WinPt about dialog. This way we can minimize the
2173            elements in the popup menu.
2174  2002-10-10  Timo Schulz  <[email protected]>  
2175    2004-02-29  Timo Schulz  <[email protected]>
2176          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.  
2177          Changed all callers.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.
2178          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the  
2179          new get_filename_dlg.          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself
2180          * wptFileManager.cpp (fm_export): Likewise.          so we are not allowing to sign ourself.
2181          * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.  
2182          * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.          * wptSigList.cpp (siglist_add_key): Support for the signature
2183          Use signature class dialog.          flags (local, non-revocably, ...).
2184          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the  
2185          keyid instead of the userid to avoid charset problems.          * Key signing with GPG 1.2.x should work again. Hopefully.
2186          (err_message): New.  
2187    2004-02-26  Timo Schulz  <[email protected]>
2188          * Moved all wipe specific code (random, rmd160) to the DLL so we can  
2189          save some memory for the tray section.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error
2190            if no recipient was selected.
2191          * wptKeyRevokersDlg.cpp (revokelist_build): New.  
2192          (revokelist_init): New.          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog
2193          (key_revokers_dlg_proc): New.          is destroyed. This fixes the bug that the dialog sometimes exist even
2194            after the procedure ended.
2195          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker  
2196          code here when available.          * wptProgressDlg.cpp (progress_callback): Change the if-then-else
2197            struct to prevent zombie dialogs.
2198  2002-10-13  Timo Schulz  <[email protected]>  
2199            * wptKeyserver.cpp: Removed unused prototypes.
2200          * wptKeylist.cpp (get_key_expire_date): New.  
2201          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.  2004-02-25  Timo Schulz  <[email protected]>
2202    
2203          * Removed global keycache from GPGME. It's a bad style to mix          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and
2204          general and specific interfaces.          do not mix the names in the different menus.
2205    
2206          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation          * wptSigList.cpp: Support to show the signature class.
2207          details. Useful to replace it later.  
2208          (get_seckey): Ditto.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo
2209          (keycache_reload): Moved from the GPGME library.          box when there is no secret key available.
2210          (keycache_release): New.  
2211          (keycache_init): New.          (do_init_keylist): Do not allow to use the owners key as a desig
2212          (keycache_set_reload): New.          revoker.
2213          (keycache_get_reload): New.  
2214          (keycache_get_ctx): New.          * wptKeylist.cpp (get_key_trust): New.
2215            (do_addkey): Use it here.
2216          * wptSigList.cpp (siglist_add_key): Use the new code.  
2217          (siglist_build): Ditto.  2004-02-24  Timo Schulz  <[email protected]>
2218    
2219            * WinPT.cpp (WinMain): Call a selftest check procedure to
2220  2002-10-15  Timo Schulz  <[email protected]>          make sure all cryptographic code works as expected.
2221    
2222          * Changed all s(n)printf -> msg_box constructs to log_box.  2004-02-22  Timo Schulz  <[email protected]>
2223    
2224  2002-10-30  Timo Schulz  <[email protected]>          * PTD: Cryptdisk seems to have problems with locking. Use
2225            a forced flag to tell the code if it should bail out or
2226          * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe          ignore locking errors.
2227          LDAP plugin for this purpose.  
2228          * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new
2229          * wldap32.lib is now not longer needed.          locking code.
2230          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.          (cryptdisk_new_dlg_proc): Adjust size of the volume.
2231          * Updated the resource file.  
2232          * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff  2004-02-21  Timo Schulz  <[email protected]>
2233          for 'Decrypt', 'Verify', 'Import'.  
2234            * wptCryptdisk.cpp (cryptdisk_cleanup): New.
2235  2002-10-31  Timo Schulz  <[email protected]>          (is_nt4): Because my Platform-SDK is too old I need to load
2236            some prototypes dynamically.
2237          * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.          (init_drives): Return the first useable drive letter if
2238          Thanks to Gustavo.          called with appropriate parameters.
2239          * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect          * wptMainProc.cpp (winpt_main_proc): Use it here.
2240          whether it's a key pair or not.  
2241          * Callback struct into KEY so we can modify the values in the background.  2004-02-18  Timo Schulz  <[email protected]>
2242          * wptKeyPropsDlg.cpp (change_ownertrust): New.  
2243            * Modify the cryptdisk code for crosscrypt 0.4.1.
2244  2002-10-13  Timo Schulz  <[email protected]>          * wptCryptDisk.cpp (do_mount): Add key algorithm param.
2245    
2246          * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static  2004-02-17  Timo Schulz  <[email protected]>
2247          any longer.  
2248            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt
2249  2002-10-14  Timo Schulz  <[email protected]>          to the signers key. Suggested by Alexander.
2250            Use new keycache system, we use the public key part of the
2251          * wptKeyserver.c: Replaced all strdup's with m_strdup and free          cache because it has all flags set.
2252          with free_if_alloc.          * wptGPG.cpp (default_key_from_cache): Use new cache system.
2253          (ldap_recvkey): Fill with life. We use the GPG plugin to avoid          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
2254          all the LDAP overhead.  
2255    
2256  2002-12-14  Timo Schulz  <[email protected]>  2004-02-12  Timo Schulz  <[email protected]>
2257    
2258          * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean          * wptErrors.cpp: New error codes for the cryptdisk feature.
2259          any longer there is also a secret key.          * wptCryptdisk.cpp (do_dispatch): Better error handling.
2260          (km_check_photo): New.          (cryptdisk_mount_dlg_proc): Use it here.
2261          (km_complete_status_bar): New.          (cryptdisk_umount_dlg_proc): Likewise.
2262          * wptFileManager.cpp (fm_verify): Support for bad signatures.          (init_drives): Use system list.
2263          Set the sigmode if not set.  
2264          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when          Localized all strings.
2265          the ownertrust of a non-valid (not signed) key is changed.  
2266          * wptRegistry.cpp (expand_path): New. Use this code because it's  2004-02-09  Timo Schulz  <[email protected]>
2267          much shorter.  
2268            * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.
2269  2002-12-18  Timo Schulz  <[email protected]>          (do_reaping): New. Release the list if all items are 'expired'.
2270            (cryptdisk_mount_dlg_proc): New.
2271          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead          (init_drives): New.
2272          of the old name "options".          * wptMainProc.cpp (cryptdisk_proc): Renamed from...
2273          * WinPT.cpp (WinMain): Try to repair broken home directories          (handle_cryptdisk): this. And filled with life.
2274          in the registry. Thanks to Gustavo who reminded me of it.  
2275          * wptKeyserver.cpp (check_hkp_response): Only copy the text  2004-02-08  Timo Schulz  <[email protected]>
2276          between <p> and </p> when possible.  
2277          * wptAgent.cpp: Re-activated the old code. Now the passphrase          * wptCryptdisk.{cpp,h}: New. Support for the extended
2278          timer can be used.          filedisk application.
2279            * wptMainProc.cpp (winpt_main_proc): Likewise.
2280  2002-12-21  Timo Schulz  <[email protected]>          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.
2281    
2282          * Fixed some language mistakes.  2004-02-05  Timo Schulz  <[email protected]>
2283          * wptMainproc.cpp: Use the desktop window as the parent window  
2284          for the main dialogs so they are visible in the taskbar.          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle
2285          * wptKeyManagerDlg.cpp: Enable minimize.          CMD_DISHOTKEYS. Thanks to the user who reminded me.
2286          * wptFileManager.cpp (fm_parse_command_line): Support for detached          * wptMainProc.cpp (spawn_cryptdisk): New interface to
2287          signatures.          the Cryptdisk application.
2288          (fm_encrypt_directory): New.  
2289          * wptKeylist.cpp (keylist_add_key): Check the current key if it  2004-02-04  Timo Schulz  <[email protected]>
2290          is not expired, not the primary (idx=0).  
2291            * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.
2292  2002-12-23  Timo Schulz  <[email protected]>  
2293    2004-02-03  Timo Schulz  <[email protected]>
2294          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver  
2295          directory if does not exist.          * WinPT.cpp (check_crypto_engine): New. Factor out common code.
2296          * wptKeyserver.cpp: Simpliefied config file.          (WinMain): Check the crypto engine after the first start.
2297          (kserver_change_proxy): Write config to the registry. Remove  
2298          code for the config file.          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is
2299          * wptProxySettingsDlg.cpp (read_proxy): More robust code.          issued if the values could not stored. Revamped the core.
2300          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature  
2301          to send keys. The Key Manager is better for this.          * Removed the last appearance of the GPG agent support.
2302    
2303            * wptGPG.cpp (init_gnupg_table): Do not use static buffers.
2304  2003-01-07  Timo Schulz  <[email protected]>          (free_gnupg_table): Free memory.
2305    
2306          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the
2307          pos from the coordinates from the registry.          ctx pointer get malloced and set the contents to zero.
2308          (keymanager_dlg_proc): Store the window pos in the registry.  
2309          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.  
2310          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when  2004-02-02  Timo Schulz  <[email protected]>
2311          a revcert was found.  
2312          * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name
2313          not succeed.          is long enough. The same check for the mail address.
2314          (keyserver_dlg_proc): Corrected some listview index values.  
2315          * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.          Thanks to Achim.
2316    
2317  2003-01-08  Timo Schulz   <[email protected]>  2004-01-28  Timo Schulz  <[email protected]>
2318    
2319          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued
2320          if the user tries to add the email address in the name field.          if keys on the card exist but the user does not said overwrite.
2321          * wptKeyserver.cpp: Add support for protocols.  
2322          (finger_readline): New.          Make sure the expire date is not in the past.
2323          (finger_recvkey): New.  
2324          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file
2325          message box to show it's a serious decision.          lock twice. Not sure if this fixes some other problems but it
2326          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.          was definitely a bug.
2327          * wptRegistry.cpp (regist_single_filetype): Now internal and we use  
2328          an easier way to get the location of the binary.          * wptMapi.cpp (mapi_init): Make sure all function ptrs are
2329          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry          initialized otherwise bail out.
2330          entry to avoid double file registering.          (mapi_send_message): New. Interface to allow to send an
2331            encrypted mail with zero ore more encrypted attachments.
2332  2003-01-19  Timo Schulz  <[email protected]>          (secure_attachment): New.
2333            (parse_recipients): New.
2334          * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.  
2335          * wptKeyManagerDlg.cpp (do_resize_window): New.  2004-01-25  Timo Schulz  <[email protected]>
2336          (do_create_minpopup): New. Closes #669730.  
2337          * wptVerifyList.cpp (get_sig_date): Renamed to...          * WinPT.cpp (WinMain): Silently die when an instance is already
2338          (longdate_to_strdate): New. Changed all callers.          running. Do not confuse the user with a message. Suggested by
2339          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains          Sebastian.
2340          a signature, also display the time of it. Closes #669780.          * wptKeyManager.cpp (delete_keys_from_cache): New.
2341          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.          (km_delete_keys): Use it here. Thanks to Achim.
2342          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.  
2343          * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability  2004-01-23  Timo Schulz  <[email protected]>
2344          to choose the signer.  
2345          (keysign_dlg_proc): Implemented a feature request. See above.          * wptCardDlg.cpp (check_pin_len): New. Check if the
2346            PIN is long enough and give an appropriate error.
2347  2002-01-21  Timo Schulz  <[email protected]>          (card_changepin_dlg_proc): Use the new check function.
2348    
2349          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to  2004-01-22  Timo Schulz  <[email protected]>
2350          avoid typing mistakes.  
2351            * Remove all internal card reader config. It's up to the
2352  2002-01-25  Timo Schulz  <[email protected]>          user to do this. It would be too error proune to offer it.
2353            * wptCard.h: Removed all card driver stuff.
2354          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ
2355          and the fingerprint to the clipboard. Closes #674455.          between the admin and the user (normal) PIN.
2356          Automatically reload the keycache when a command is chosen and the cache  
2357          state is set to 'reload requested'. Closes #671218.  2004-01-04  Timo Schulz  <[email protected]>
2358          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts  
2359          are not invalid.          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.
2360          * WinPT.cpp (check_permissions): Make sure we have the permission to          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas
2361          write the keyring. Stop if not because it's expected at many other places.          and minor changes.
2362          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.          * wptListView.cpp (listview_sort_items): Likewise.
2363          (siglist_build): Use a placeholder sig to avoid the position chaos.          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.
2364          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.          (regist_sep_wnd): Factored out some code.
2365          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,  
2366          display more information and use a GPG like output.  2004-01-03  Timo Schulz  <[email protected]>
2367          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is  
2368          an invalid key in the list of recipients. Closes #674965.          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow
2369            to import secret keys.
2370    
2371  2002-02-01  Timo Schulz  <[email protected]>  2003-12-31  Timo Schulz  <[email protected]>
2372    
2373          * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort
2374            the list otherwise the index is wrong.
2375  2002-02-08  Timo Schulz  <[email protected]>          * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set
2376            a signature expire date.
2377          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export  
2378          the secret key when a file was chosen.  2003-12-30  Timo Schulz  <[email protected]>
2379    
2380  2002-03-01  Timo Schulz  <[email protected]>          * fixed the GPG edit-key commands sign and addrevoker.
2381    
2382          * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection  2003-12-23  Timo Schulz  <[email protected]>
2383          logic. Now we can decrypt symmetrically encrypted files again.  
2384          Be stricter on memory alloaction checks.          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove
2385          (fm_get_file_type): Be more strict with the return code of          ElGamal s+e support. Oops, this should be already done.
2386          parse_packet. This avoids bogus file types for MS-Word files and          * wptGPGME.cpp (keycache_init): Sync both key caches. In other
2387          other non-PGP data.          words transfer some flags from the sec-cache to the pub-cache.
2388          (fm_wipe): Use the wipe mode from the registry and not a fixed value.          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the
2389          * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.          key sign procedure. If it is already signed, the process
2390          (get_reg_winpt_prefs): Likewise.          sometimes hangs.
2391          * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.  
2392          * wptDlgs.h: Corrected all dialog protypes to BOOL.  2003-12-14  Timo Schulz  <[email protected]>
2393          LRESULT was not correct.  
2394            * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.
2395  2002-03-08  Timo Schulz  <[email protected]>          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.
2396            (do_editkey_setpref): Implement updpref command.
2397          * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'  
2398          because they are options rather than files.  
2399          * WinPT.cpp (WinMain): Allow to start the key manager directly  2003-12-10  Timo Schulz  <[email protected]>
2400          via --keymanager.  
2401          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.          * GPGME support to change key preferences.
2402          (wipe_cb): New. Wipe callback function.          * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.
2403          (fill_drive_combobox): New. Fill in all logical drives into          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.
2404          the given combo box.  
2405          (wipe_thread): New. Worker thread.  
2406          (update_disc_stats): New. Set the disc statistics for the  2003-11-29  Timo Schulz  <[email protected]>
2407          given drive entry.  
2408          (space_wipefrees_dlg_proc): New.          * wptMAPI.cpp (mapi_init): New.
2409            (mapi_deinit): New.
2410  2002-03-09  Timo Schulz  <[email protected]>          (mapi_send_pubkey): New.
2411            * wptKeyManager.cpp (km_send_to_mail_recipient): New.
2412          * 64-bit support for wipe operations.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support
2413            to send the public key via MAPI to a recipient.
2414  2002-03-16  Timo Schulz  <[email protected]>          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind
2415            the secret key cache so it's not at the end.
2416          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the          (keysign_dlg_proc): Issue a warning when no secret key was
2417          optional text in UTF-8 to avoid charset problems.          found which could be used for signing the key.
2418          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.
2419          of a static buffer. Changed all callers.          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
2420          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions  
2421          for the rest of the columns.  2003-11-28  Timo Schulz  <[email protected]>
2422          (keylist_handle_column_click): New.  
2423          * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):          * Remove all support for ElGamal sign+encrypt keys.
2424          Removed the 'Advanced' button because it only confuses users  
2425          and it is not often used.          There is a flaw in GPG which makes all such keys useable and
2426          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-          they are comprised even if one signature they made is accessable.
2427          and import the trustdb values (ownertrust).          And due to the fact the key is self signed, such a sig is always
2428          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to          available for the public.
2429          sort columns.  
2430            We warn the user at startup if such keys were found!
2431  2003-03-18  Timo Schulz  <[email protected]>  
2432            * wptMainProc.cpp (elgamal_warn_dlg_proc): New.
2433          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index          * wptGPGME.cpp (count_insecure_elgkeys): New.
2434          of revocation from 9 to 8.          * WinPT (WinMain): Use it here.
2435          Set the text that no key was updated only if no new sig, subkey,  
2436          userid and no public were added.  2003-11-14  Timo Schulz  <[email protected]>
2437          Add more information: new {subkeys, signatures, userid}.  
2438          * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.
2439          * wptDlgs.cpp: Removed.  
2440          * wptDlgs.h: (dlg_fatal_error): New. Macro.  2003-11-13  Timo Schulz  <[email protected]>
2441    
2442  2003-03-19  Timo Schulz  <[email protected]>          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.
2443            * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.
2444          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.          Thanks to Achim.
2445          * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly          * Change PIN interface. Now it is easier when an operation requires
2446          in the code.          both PINs.
2447          * wptPasswdDlg.cpp: Likewise.          * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs
2448          (passphrase_cb_init): Declare as static.          to change card attributes. Do not ask me why, but now the user
2449          (passphrase_cb_gpgme): Modified to use the static function and rename          needs to enter 2 PINs.
2450          it to...  
2451          (passphrase_gpgme_set_cb): ..this. New.          Name parts were swapped, now they have the right order again.
2452          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA  
2453          and friends to assign data to each item.  2003-10-02  Timo Schulz  <[email protected]>
2454          Move dialog code to...  
2455          * wptClipSignEncDlg.cpp: ..here.          * Prepare test release.
2456          * MyGPGME/keycache.c: We first look for directly key signatures and          * wptGPGCmds.h: New from GPG 1.3.4-cvs.
2457          then we skip all other signatures if we've already seen the key. This  
2458          is needed to gather the designated revoker keys.  2003-10-29  Timo Schulz  <[email protected]>
2459    
2460  2003-03-20  Timo Schulz  <[email protected]>          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.
2461    
2462          * wptFindWnd.cpp: Removed.          * Create a new interface for an interactive card callback. GPG
2463          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of          provides card control status messages if the wrong card is inserted.
2464          find_window.  
2465          * Whenever it's possible, use case insentensive searches to avoid          * wptCardManager.cpp (card_cb_dlg_proc): New.
2466          problems.          (card_callback): New.
2467    
2468  2003-04-09  Timo Schulz  <[email protected]>          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use
2469            the ASCII functions and not the Unicode function names. Thanks to
2470          * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as          Werner for pointing this out.
2471          invalid for cancel.  
2472            * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the
2473  2003-04-12  Timo Schulz  <[email protected]>          serial card number is shown to help the user to find the right card.
2474    
2475          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.
2476          GPGME code.  
2477          * wptVerifyList.cpp (verlist_add_sig_log): Likewise.  2003-10-26  Timo Schulz  <[email protected]>
2478          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.  
2479          * wptFileManager.cpp (fm_decrypt): Likewise.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.
2480          * WinPT.cpp (check_default_key): Check if the keys in gpg.conf  
2481          are valid and in the keyring.          * Changed the code at several other places to support the new logging
2482          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase          scheme.
2483          item if the key is not protected.  
2484    
2485    2003-10-24  Timo Schulz  <[email protected]>
2486  2003-04-13  Timo Schulz  <[email protected]>  
2487            * Implemented a better logging system. If the return code
2488          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback          of GPG is != 0 and the error is not known, display the errors
2489          context.          from stderr.
2490          * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.  
2491          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect          * wptGPGME.cpp (logging_cb): New.
2492          flag inside the KEY contect if needed.  
2493          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a  2003-10-23  Timo Schulz  <[email protected]>
2494          passphrase if the protect flag is set.  
2495          Display the callback dialog to show the progress.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output
2496          Implemented the "revkey" feature.          if the error is unknown.
2497          * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.          (clip_sign_dlg_proc): Likewise.
2498          (do_add_new_userid): New. Add an entry to the list box          (clip_signenc_dlg_proc): Likewise.
2499          after the GPG process finished.          (clip_import_dlg_proc): Likewise.
2500          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig  
2501          to zero to avoid segfaults.  2003-10-21  Timo Schulz  <[email protected]>
2502    
2503  2003-04-15  Timo Schulz  <[email protected]>          * wptClipDecryptDlg.cpp (list_recipients): New.
2504            (algo_from_list): New.
2505          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.          (clip_decrypt_dlg): New concept to list all recipients.
2506          (data_cb_thread): New.          * wptFileManager.cpp (fm_list_keys): New.
2507          (data_cb_dlg_create): New.          (fm_decrypt): Same changes as for the clipboard decryption.
2508          (data_cb_dlg_destroy): New.  
2509          (data_cb_new): New.  2003-10-21  Timo Schulz  <[email protected]>
2510          (clip_import_dlg_proc): Use a callback dialog to  
2511          show the user the data decoding procedure is in          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase
2512          progress. This dialog is destroyed in the key          was wrong, delete the cache item (if available).
2513          import statistics dialog.          * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.
2514            * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.
2515            * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'
2516  2003-04-20  Timo Schulz <[email protected]>          flag to zero.
2517            
2518          * wptFindWnd.h: Removed. We don't use it any longer.  
2519          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.  2003-10-19  Timo Schulz  <[email protected]>
2520          (gpg_strerror): Removed. Now it is handled in winpt_strerror.  
2521          * wptFileManager.cpp (fm_get_file_name): move this to          * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and
2522          * wptVerifyList.cpp (get_file_name): ..this place and declare          the working PIN.
2523          it as static because no other file need this function.          wptCardDlg.cpp (free_pincb): New.
2524            (card_keygen_dlg_proc): Pin callback implemented.
2525  2003-04-20  Timo Schulz  <[email protected]>          Simple check for the e-mail address.
2526            (card_edit_dlg_proc): End the dialog if no changes were made.
2527          * wptClipboard.cpp: Removed. All these functions and constants  
2528          are now available in MyGPGME/clip.c and thus part of GPGME.          * Expanded GPGME passphrase interface to work both with PINs
2529          * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...          and passphrases.
2530          (keylist_get_recipients): this. Return the context instead of  
2531          an argument.  2003-10-18  Timo Schulz  <[email protected]>
2532          (get_key_size): Add key index.  
2533          (get_key_algo): Likewise.          * wptCardDlg.cpp (card_keygen_dlg_proc): New.
2534          (keylist_build): Use a special mode when signing is used.          (do_askpin): Handle the case there is no card.
2535          (keylist_enum_recipients): Return a malloced pointer to the          (card_edit_dlg_proc): Add 'New Keys' feature.
2536          recipients.          (card_changepin_dlg_proc): Implemented.
2537          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint          * WinPT.cpp (WinMain): Ability to start the card manager directly.
2538          when we have a signature result and we do not trust the key.          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader
2539            driver and the inserted card.
2540  2003-04-23  Timo Schulz  <[email protected]>  
2541    2003-10-17  Timo Schulz  <[email protected]>
2542          * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function  
2543          from GPGME#gpgme_ownertrust_to_string into WinPT.          * wptGPGME.cpp (keycache_init): Do not use secring the first time.
2544            * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short
2545  2003-04-24  Timo Schulz  <[email protected]>          keyid will be displayed.        
2546    
2547          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init  2003-10-16  Timo Schulz  <[email protected]>
2548          default values to make it easier for newbies.  
2549          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error          * Changed GPGME interface for edit card. Now one context is
2550          when no secret key was found. Also mention the public key algo.          used for all edit card operations.
2551          * wptFileManager.cpp (fm_decrypt): Likewise.          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working
2552            and admin PIN. Changed gpgme interface.
2553  2003-04-25  Timo Schulz  <[email protected]>          (ask_pin): Renamed to..
2554            (do_askpin): this. Provide more information about the card
2555          * wptVerList.cpp (verlist_build): Change the name of some columns.          and its holder.
2556          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the          (do_proc_card_cmds): If no error, reset modify flags for
2557          notation (if present!) present the user a general message box          all controls. Show a short message that the operation ended.
2558          with extended signature information. This means the notation          * wptCardPCSC.c (pcsc_free_readers): New.
2559          data and a possible policy URL.          (pcsc_scan_readers): New.
2560            (pcsc_get_reader): New.
2561            (pcsc_get_card_status): New.
2562  2003-04-26  Timo Schulz  <[email protected]>  
2563    
2564          * wptParser.cpp: A lot of structural changes. Always add items  2003-10-14  Timo Schulz  <[email protected]>
2565          at the end of the list so we don't need to make a copy of the list  
2566          to restore the original order. Fix the group problem.          * wptKeyList.cpp (do_addkey): Add the case the secret key
2567          * wptKeylist.cpp (keylist_build): Use OR to get the flags and          is stored on a smart card.
2568          not ==.          (km_check_for_seckey): Take care of the new code.
2569          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command          * wptKeyManager.cpp (km_delete_keys): Extra warning when
2570          (file) does not use the keyid as the file name when more than one          the secret key is stored on a card.
2571          keys were selected.          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities
2572          Allow allow to set default keys which are not revoked or expired.          to the list view. Now the user can see if the key is useable
2573          * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort          for: signing, certifying or encrypting.
2574          the columns.  
2575          Set the force trust flag in GPGME if there are some recipients  2003-10-13  Timo Schulz  <[email protected]>
2576          with no validity.  
2577            * Extended the GPGME API that it is possible to retrieve
2578  2003-04-27  Timo Schulz  <[email protected]>          the key data. This is for the planned card login but it
2579            might be also useful for other purposes.
2580          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows  
2581          to show the properties of the signers keys.          * wptCardPCSC.c: New. General code for PC/SC card readers.
2582          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.  
2583    
2584  2003-04-30  Timo Schulz  <[email protected]>  2003-10-12  Timo Schulz  <[email protected]>
2585    
2586          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the          * wptCardDlg.cpp (guess_libname): New.
2587          next context menu ("Add"). Make sure the entries are disabled          (card_status): Simplified the code with an attribute
2588          when the key has no secret key.          table. Now it is a loop and not hard coded.
2589          * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.          * The card interface has changed. Now the surname and
2590          * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't          the given name are two fields and not one field.
2591          cause a segfault when the pointer free tries to deallocate the          * wptMainProc.cpp (winpt_main_proc): Check if the card
2592          pointer.          reader is configured where appropriate.
2593    
2594  2003-05-02  Timo Schulz  <[email protected]>  2003-10-09  Timo Schulz  <[email protected]>
2595    
2596          * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.          * wptCardDlg.cpp (get_card_status): New.
2597            (show_card_status): New. Retrieve the card status and show an
2598  2003-05-03  Timo Schulz  <[email protected]>          error if approprioate.
2599            * Make sure that WinPT does not try to use non-OpenPGP cards.
2600          * wptParser.cpp: Renamed to...          * Add GPGME support for the forthcoming AUTH flag for keys.
2601          * wptGPGParser.cpp: this.          * Implemented the detection of keys where the secret key components
2602          (release_option): Renamed to...          are stored on a smart card.
2603          (release_gpg_options): this.  
2604          (commit_option): Renamed to...  
2605          (commit_gpg_options): this.  2003-10-08  Timo Schulz  <[email protected]>
2606          (parse_option): Renamed to...  
2607          (parse_gpg_options): this.          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII
2608          * wptGPG.cpp: Use new parser function names.          is used. Otherwise reject the value.
2609          (set_gnupg_default_key): Free memory.          (ask_pin): New. Enable PIN caching for the 'dialog session' so
2610          * wptKeylist.cpp (keylist_add_groups): New group code.          the user does not need to re-enter it again and again.
2611          * wptGroups.{c,h}: Removed. Now we use the GPG group command.  
2612          * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from  2003-10-07  Timo Schulz  <[email protected]>
2613          2 to 4.  
2614          (recv_missing_keys): Likewise. Now it is possible to retrieve          * wptPINDlg.cpp (pin_cb_dlg_proc): New.
2615          missing keys. Thanks to Klaus.          * wptCardDlg.cpp (do_proc_card_cmds): New.
2616          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather          (card_edit_dlg_proc): Use it here.
2617          than a static buffer to avoid garbled keys. There are some very  
2618          large keys and these cause some trouble with a 16k buffer.  2003-10-06  Timo Schulz  <[email protected]>
2619          (keyserver_dlg_proc): Localized some strings.  
2620          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column          * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.
2621          names which are equal to the names we use in the Key Manager.          * wptGPG.cpp (gnupg_display_error): Display general error
2622          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but          when the file does not exit.
2623          should be "==" bug.          * wptW32API.cpp (get_folder_dlg): New.
2624          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select
2625          * Add --expert option for the GPG procedure call if needed.          the folder for the home directory.
2626            * wptKeyManager.cpp (km_update_default_key_str): Return length
2627  2003-05-04  Timo Schulz  <[email protected]>          of the string.
2628            (km_complete_status_bar): Use the offset of the default
2629          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients          key string so it is not appened twice.
2630          were found, output a more precise error message. Now the GPGME code          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.
2631          first tests for special cases and if no one hit the nail on the head,          * wptCard.h: New.
2632          a general error is used.          * wptCardDlg.cpp (new_card_driver): New.
2633            (load_card_driver): New.
2634  2003-05-06  Timo Schulz  <[email protected]>          (free_card_driver): New.
2635            (card_config_dlg_proc): If the reader is configured, load the
2636          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys          values. This is needful to change the driver later.
2637          are available. Removed old [unused] code.          (gpg_load_scard): Use driver as a parameter.
2638          Make sure we really have the key in the cache.          * wptMainProc.cpp (winpt_main_proc): Load card driver and
2639            unload it after use.
2640  2003-05-07  Timo Schulz  <[email protected]>  
2641    2003-09-28  Timo Schulz  <[email protected]>
2642          * Clean up the outer GPGME interface. Internal functions should be  
2643          invisible in gpgme.h.          * wptCardDlg.cpp (card_edit_dlg_proc): New.
2644          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.          (gpg_load_scard): New. Try to use GPG load the card info.
2645          * wptKeyserver.cpp: Some cleanups.          (print_fpr): New. Print beautified fingerprint.
2646          (finger_recvkey): Skip URL postfix if there.          (card_status): New. Set all dialog fields with the values from
2647            the card.
2648  2003-05-08  Timo Schulz  <[email protected]>          (prepare_dialog): New. Load combo boxes with pre-defined strings.
2649    
2650          * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current  
2651          window mode.  2003-09-25  Timo Schulz  <[email protected]>
2652          (currwnd_gpg_dlg): Likewise.  
2653          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.          * wptProgressDlg.cpp (progress_cb_thread): New.
2654          * WinPT.cpp (WinMain): If the default key was not found, show the string          (progress_callback): Use asynchron code.
2655          in the error message to make it easier for the user to fix the problem.          * wptFileManager.cpp (fm_parse_files): Implement progress callback.
2656          * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret  
2657          keys.  
2658          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.  2003-09-25  Timo Schulz  <[email protected]>
2659          This makes the priority of the rc2 update more urgent.  
2660            * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.
2661  2003-05-09  Timo Schulz  <[email protected]>          (check_key): New.
2662            Removed the old Secret Key List dialog. Now the key can be directly
2663          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.          chose in the dialog.
2664          * wptFileManager.cpp (fm_print_md): New.          (seclist_init): New.
2665          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD          (seclist_destroy): New.
2666          command.          (seclist_select_key): New.
2667            * wptFileManager.cpp (fm_sign): Ask for output file if needed.
2668  2003-05-13  Timo Schulz  <[email protected]>  
2669            * Client side implementation of the --enable-progress-filter feature.
2670          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.  
2671          (key_check_validity): Moved from GPGME to this file.          * wptProgressDlg.cpp: Server side implementation.
2672          * wptKeyManager.cpp (km_get_key_status): New.          (progress_dlg_proc): New. The actual dialog procedure.
2673            (progress_callback): The GPGME wrapper callback.
2674  2003-05-14  Timo Schulz  <[email protected]>  
2675    2003-09-24  Timo Schulz  <[email protected]>
2676          * wptKeyManager.cpp (km_enable_disable_key): New.  
2677            * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.
2678  2003-05-17  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.
2679            * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from
2680          * wptFileManager.cpp: Moved gpgme_file_get_extension to this file          the menu. We use import internally, but export was not useful and
2681          and renamed it to...          thus the code were removed.
2682          (file_get_extension): this. gpgme_control now also returns the          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at
2683          (get_file_name): Corrected the calculation of the basename.          startup when they are not allowed.
2684          state of the command if you use -1 as the value.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.
2685          * wptImportList.cpp (implist_load): Make sure we really have the key ID.          Make the parsing code much shorter (read).
2686          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over  
2687          the place.  
2688    2003-09-22  Timo Schulz  <[email protected]>
2689  2003-05-19  Timo Schulz  <[email protected]>  
2690            * wptSigList.cpp (extract_filename): Make sure there is a '\',
2691          * wptPasswdDlg.cpp (create_passwd_dlg): Removed.          otherwise just dup the string and return.
2692          (request_passphrase): New.          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key
2693          The passphrase_s context is now internal, all externl function use now          to make the code more readable.
2694          request_passphrase. Changed all callers.          * Implemented the GPGME part of the new smartcard interface.
2695          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase          The WinPT interface will be open until the scard stuff is back
2696          warning and a check for the comment field was added.          ported to GPG 1.3.x.
2697          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.
2698          has shown the subkeys and the userids.          Several code cleanups.
2699          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.  
2700    2003-09-08  Timo Schulz  <[email protected]>
2701  2003-05-20  Timo Schulz  <[email protected]>  
2702            * wptRegistry.cpp: Remove some hotkeys to correct index calculation.
2703          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change          (get_reg_winpt_flag): Check buffer first.
2704          the passphrase from here to...          (get_reg_winpt_prefs): Support for the new backup system.
2705          * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.          (set_reg_winpt_prefs): Likewise.
2706            * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.
2707  2003-05-21  Timo Schulz  <[email protected]>          * wptRegistry.h: Cleaned up the hotkey interface.
2708            * wptPreferenceDlg.cpp (enable_backup_items): New.
2709          * wptSiglist.cpp (siglist_add_key): Only list signatures which are          (prefs_dlg_proc): Simplified hotkey handling. Use new code.
2710          user-id certificates (0x10-0x13) and ignore key and subkey sigs.          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for
2711          c-strings are now handle correctly and decoded into GPGME.          im- and export. Use the code directly.
2712            (currwnd_gpg_dlg): Likewise.
2713  2003-05-22  Timo Schulz  <[email protected]>          * wptGPG.cpp (gnupg_backup_keyrings): New.
2714            (backup_one_file): New.
2715          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current  
2716          window mode sign+encrypt. This fixes a couple of other problems.  2003-09-04  Timo Schulz  <[email protected]>
2717          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the  
2718          key when the cache was reloaded.          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,
2719            the packet parsing return value check was wrong again. Now it does
2720            not recognize Word documents as SECKEY or ENCRYPTED any longer.
2721  2003-05-24  Timo Schulz  <[email protected]>  
2722    2003-09-03  Timo Schulz  <[email protected]>
2723          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists  
2724          to allow to use virtual keys (DEL, INS).          * The secret key listing does not contain any 'validity' or
2725          Release the uid control context when the dialog will be destroyed.          'status' flags any longer. Thus we only can use the cache to
2726            make sure we have a secret key. All attributes need to be retrieved
2727            from the public key listing.
2728  2003-05-25  Timo Schulz  <[email protected]>  
2729            * wptGPG.cpp (default_key_from_cache): New.
2730          * wptImportList.cpp (implist_add_key): Address charset problem.          (get_gnupg_default_key): Use new function to make sure we try
2731          * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.          to get the key from cache if there is a problem with the config
2732          * wptKeyserver.cpp (set_default_kserver): New.          file.
2733          (wsock_init): Call the new function.  
2734          (kserver_load_conf): If the FP is invalid, skip to read the file.  2003-08-30  Timo Schulz  <[email protected]>
2735          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the  
2736          item has a value.          * wptGPG.h: Support for the GPG status messages REVKEYSIG and
2737            EXPKEYSIG. With this new feature, GPG 1.2.3 is required.
2738  2003-05-28  Timo Schulz  <[email protected]>          * Make sure that the signature status does not cause an
2739            segfault.
2740          * wptKeyManager.cpp (km_set_clip_info): New.          * WinPT.cpp: Use new check to detect the GPG version and make sure
2741          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.          it is the minimum.
2742          * wptImportList.cpp (implist_build): Some column changes for          * wptGPG.cpp (parse_version_nr): New.
2743          the listview control.          (check_gnupg_engine): Improved. Now it returns the actual version.
2744          (implist_load): Return if secret keys were found.  
2745          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys  2003-08-24  Timo Schulz <[email protected]>
2746          were found.  
2747          (clip_import_dlg_proc): New message if secret keys were found.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable
2748            dialog controls.
2749    
2750  2003-05-31  Timo Schulz  <[email protected]>  2003-08-17  Timo Schulz  <[email protected]>
2751    
2752          * wptKeyManager.cpp (km_key_is_v3): Return if the selected          * wptKeyManagerDlg.cpp (keymanager_dlg_proc):
2753          key is an old PGP 2 (v3) key.          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The
2754          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow          value was malformed.
2755          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.
2756          to add extented items if the key is NOT version 3.          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,
2757          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the          don't bother the user with an error message. Closes #782751.
2758          key is v3 and forbid most commands.          * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the
2759          (is_cmd_openpgp): New.          "primary" edit key command.
2760            * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is
2761  2003-06-01      Timo Schulz  <[email protected]>          possible to supress the status message. This is useful when the whole
2762            keyring will be refreshed.
2763          * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...          * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.
2764          (KEYDOWN, KEYUP): macros for the functions above.          (quote_file): Avoid double quotes.
2765            * GPGME support for quoted file names.
2766  2003-06-04  Timo Schulz  <[email protected]>          (fm_sym_encrypt): Double check password and to additional 8-bit checks.
2767            * WinPT.cpp (my_acces): Moved to this file..
2768          * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact          * wptGPG.cpp: ..here.
2769          that GPG uses the newest subkey by default, we always return          (gpg_check_permissions): Renamed from check_permissions and make it global.
2770          the info of this subkey and not the first.          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we
2771          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one          have write access to the keyring for some commands.
2772          bug. Now the indicies are correctly.  
2773          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before  2003-07-22  Timo Schulz  <[email protected]>
2774          get_file_size is called.  
2775          * WinPT.cpp (WinMain): Only check the GPG engine version if there          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of
2776          were no problems with the GPG config. And differ between a problem          the text instead of allocating the maximum.
2777          to get the version and if a wrong version were detected.  
2778    2003-07-13  Timo Schulz  <[email protected]>
2779    
2780  2003-06-05  Timo Schulz  <[email protected]>          * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains
2781            characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850
2782          * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog          it would be a bad idea to use such passphrases. And thus we disallow it.
2783          shows all involved recipients and also the public key algorithm.          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.
2784          * wptRegistry.cpp (reg_inst_winpt): If the user does not want          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.
2785          the extensions, set the entry to "1" so the message is not shown          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.
2786          again.  
2787    2003-07-12  Timo Schulz  <[email protected]>
2788  2003-06-06  Timo Schulz  <[email protected]>  
2789            * wptFileManager.cpp (fm_verify): Support for multiple signatures.
2790          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
2791          message and include the user-id.          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.
2792          * Encryption: use force overwrite (--yes) to make sure there are          * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.
2793          no complications with GPG.          (kserver_connect): Likewise.
2794          * Import: skip all record types we do not understand.          (kserver_read_config): Likewise.
2795            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases
2796            are not equal.
2797  2003-06-10  Timo Schulz  <[email protected]>          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to
2798            generate a key pair.
2799          * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys  
2800          are skipped.  2003-06-24  Timo Schulz  <[email protected]>
2801          (keysign_dlg_proc): Removed some redundant code.  
2802          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.
2803          it is possible to change the passphrase.          Thanks to Alex.
2804            * wptKeyManager.cpp (km_delete_keys): Quote the user-id.
2805  2003-06-11  Timo Schulz  <[email protected]>  
2806    
2807          * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the  2003-06-13  Timo Schulz  <[email protected]>
2808          right order and we do not use the last user-id but the first  
2809          because this is always the primary user-id or the newest user-id.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.
2810          * wptGPGME.cpp (get_default_keyid): Removed. Some better code          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to
2811          were added to get_gnupg_default_key.          the fact the signer is now dymanic and not static.
2812            * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and
2813  2003-06-13  Timo Schulz  <[email protected]>          change all code that it only shows an error if no plug-in was loaded.
2814            * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you
2815          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.          can revoke v3 keys.
2816          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to          (do_editkey_revoke): Clarify command because it can be only used
2817          the fact the signer is now dymanic and not static.          for secondary keys.
2818          * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error
2819          change all code that it only shows an error if no plug-in was loaded.          is issued when no key was selected. Thanks to vedaal.
2820          * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you  
2821          can revoke v3 keys.  2003-06-11  Timo Schulz  <[email protected]>
2822          (do_editkey_revoke): Clarify command because it can be only used  
2823          for secondary keys.          * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the
2824          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error          right order and we do not use the last user-id but the first
2825          is issued when no key was selected. Thanks to vedaal.          because this is always the primary user-id or the newest user-id.
2826            * wptGPGME.cpp (get_default_keyid): Removed. Some better code
2827  2003-06-24  Timo Schulz  <[email protected]>          were added to get_gnupg_default_key.
2828    
2829          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.  2003-06-10  Timo Schulz  <[email protected]>
2830          Thanks to Alex.  
2831          * wptKeyManager.cpp (km_delete_keys): Quote the user-id.          * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys
2832            are skipped.
2833            (keysign_dlg_proc): Removed some redundant code.
2834  2003-07-12  Timo Schulz  <[email protected]>          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if
2835            it is possible to change the passphrase.
2836          * wptFileManager.cpp (fm_verify): Support for multiple signatures.  
2837          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.  2003-06-06  Timo Schulz  <[email protected]>
2838          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.  
2839          * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning
2840          (kserver_connect): Likewise.          message and include the user-id.
2841          (kserver_read_config): Likewise.          * Encryption: use force overwrite (--yes) to make sure there are
2842          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases          no complications with GPG.
2843          are not equal.          * Import: skip all record types we do not understand.
2844          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to  
2845          generate a key pair.  
2846    2003-06-05  Timo Schulz  <[email protected]>
2847  2003-07-13  Timo Schulz  <[email protected]>  
2848            * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog
2849          * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains          shows all involved recipients and also the public key algorithm.
2850          characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850          * wptRegistry.cpp (reg_inst_winpt): If the user does not want
2851          it would be a bad idea to use such passphrases. And thus we disallow it.          the extensions, set the entry to "1" so the message is not shown
2852          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.          again.
2853          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.  
2854          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.  2003-06-04  Timo Schulz  <[email protected]>
2855    
2856  2003-07-22  Timo Schulz  <[email protected]>          * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact
2857            that GPG uses the newest subkey by default, we always return
2858          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of          the info of this subkey and not the first.
2859          the text instead of allocating the maximum.          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one
2860            bug. Now the indicies are correctly.
2861  2003-08-17  Timo Schulz  <[email protected]>          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before
2862            get_file_size is called.
2863          * wptKeyManagerDlg.cpp (keymanager_dlg_proc):          * WinPT.cpp (WinMain): Only check the GPG engine version if there
2864          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The          were no problems with the GPG config. And differ between a problem
2865          value was malformed.          to get the version and if a wrong version were detected.
2866          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.  
2867          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,  
2868          don't bother the user with an error message. Closes #782751.  2003-06-01      Timo Schulz  <[email protected]>
2869          * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the  
2870          "primary" edit key command.          * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...
2871          * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is          (KEYDOWN, KEYUP): macros for the functions above.
2872          possible to supress the status message. This is useful when the whole  
2873          keyring will be refreshed.  2003-05-31  Timo Schulz  <[email protected]>
2874          * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.  
2875          (quote_file): Avoid double quotes.          * wptKeyManager.cpp (km_key_is_v3): Return if the selected
2876          * GPGME support for quoted file names.          key is an old PGP 2 (v3) key.
2877          (fm_sym_encrypt): Double check password and to additional 8-bit checks.          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow
2878          * WinPT.cpp (my_acces): Moved to this file..          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.
2879          * wptGPG.cpp: ..here.          to add extented items if the key is NOT version 3.
2880          (gpg_check_permissions): Renamed from check_permissions and make it global.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the
2881          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we          key is v3 and forbid most commands.
2882          have write access to the keyring for some commands.          (is_cmd_openpgp): New.
2883    
2884  2003-08-24  Timo Schulz <[email protected]>  2003-05-28  Timo Schulz  <[email protected]>
2885    
2886          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable          * wptKeyManager.cpp (km_set_clip_info): New.
2887          dialog controls.          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.
2888            * wptImportList.cpp (implist_build): Some column changes for
2889  2003-08-30  Timo Schulz  <[email protected]>          the listview control.
2890            (implist_load): Return if secret keys were found.
2891          * wptGPG.h: Support for the GPG status messages REVKEYSIG and          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys
2892          EXPKEYSIG. With this new feature, GPG 1.2.3 is required.          were found.
2893          * Make sure that the signature status does not cause an          (clip_import_dlg_proc): New message if secret keys were found.
2894          segfault.  
2895          * WinPT.cpp: Use new check to detect the GPG version and make sure  
2896          it is the minimum.  2003-05-25  Timo Schulz  <[email protected]>
2897          * wptGPG.cpp (parse_version_nr): New.  
2898          (check_gnupg_engine): Improved. Now it returns the actual version.          * wptImportList.cpp (implist_add_key): Address charset problem.
2899            * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.
2900  2003-09-03  Timo Schulz  <[email protected]>          * wptKeyserver.cpp (set_default_kserver): New.
2901            (wsock_init): Call the new function.
2902          * The secret key listing does not contain any 'validity' or          (kserver_load_conf): If the FP is invalid, skip to read the file.
2903          'status' flags any longer. Thus we only can use the cache to          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the
2904          make sure we have a secret key. All attributes need to be retrieved          item has a value.
2905          from the public key listing.  
2906    2003-05-24  Timo Schulz  <[email protected]>
2907          * wptGPG.cpp (default_key_from_cache): New.  
2908          (get_gnupg_default_key): Use new function to make sure we try          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists
2909          to get the key from cache if there is a problem with the config          to allow to use virtual keys (DEL, INS).
2910          file.          Release the uid control context when the dialog will be destroyed.
2911    
2912  2003-09-04  Timo Schulz  <[email protected]>  
2913    2003-05-22  Timo Schulz  <[email protected]>
2914          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,  
2915          the packet parsing return value check was wrong again. Now it does          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current
2916          not recognize Word documents as SECKEY or ENCRYPTED any longer.          window mode sign+encrypt. This fixes a couple of other problems.
2917            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the
2918  2003-09-08  Timo Schulz  <[email protected]>          key when the cache was reloaded.
2919    
2920          * wptRegistry.cpp: Remove some hotkeys to correct index calculation.  
2921          (get_reg_winpt_flag): Check buffer first.  2003-05-21  Timo Schulz  <[email protected]>
2922          (get_reg_winpt_prefs): Support for the new backup system.  
2923          (set_reg_winpt_prefs): Likewise.          * wptSiglist.cpp (siglist_add_key): Only list signatures which are
2924          * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.          user-id certificates (0x10-0x13) and ignore key and subkey sigs.
2925          * wptRegistry.h: Cleaned up the hotkey interface.          c-strings are now handle correctly and decoded into GPGME.
2926          * wptPreferenceDlg.cpp (enable_backup_items): New.  
2927          (prefs_dlg_proc): Simplified hotkey handling. Use new code.  2003-05-20  Timo Schulz  <[email protected]>
2928          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for  
2929          im- and export. Use the code directly.          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change
2930          (currwnd_gpg_dlg): Likewise.          the passphrase from here to...
2931          * wptGPG.cpp (gnupg_backup_keyrings): New.          * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.
2932          (backup_one_file): New.  
2933    2003-05-19  Timo Schulz  <[email protected]>
2934  2003-09-22  Timo Schulz  <[email protected]>  
2935            * wptPasswdDlg.cpp (create_passwd_dlg): Removed.
2936          * wptSigList.cpp (extract_filename): Make sure there is a '\',          (request_passphrase): New.
2937          otherwise just dup the string and return.          The passphrase_s context is now internal, all externl function use now
2938          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key          request_passphrase. Changed all callers.
2939          to make the code more readable.          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase
2940          * Implemented the GPGME part of the new smartcard interface.          warning and a check for the comment field was added.
2941          The WinPT interface will be open until the scard stuff is back          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which
2942          ported to GPG 1.3.x.          has shown the subkeys and the userids.
2943          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.
2944          Several code cleanups.  
2945    2003-05-17  Timo Schulz  <[email protected]>
2946  2003-09-24  Timo Schulz  <[email protected]>  
2947            * wptFileManager.cpp: Moved gpgme_file_get_extension to this file
2948          * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.          and renamed it to...
2949          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.          (file_get_extension): this. gpgme_control now also returns the
2950          * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from          (get_file_name): Corrected the calculation of the basename.
2951          the menu. We use import internally, but export was not useful and          state of the command if you use -1 as the value.
2952          thus the code were removed.          * wptImportList.cpp (implist_load): Make sure we really have the key ID.
2953          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over
2954          startup when they are not allowed.          the place.
2955          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.  
2956          Make the parsing code much shorter (read).  2003-05-14  Timo Schulz  <[email protected]>
2957    
2958            * wptKeyManager.cpp (km_enable_disable_key): New.
2959  2003-09-25  Timo Schulz  <[email protected]>  
2960    2003-05-13  Timo Schulz  <[email protected]>
2961          * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.  
2962          (check_key): New.          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.
2963          Removed the old Secret Key List dialog. Now the key can be directly          (key_check_validity): Moved from GPGME to this file.
2964          chose in the dialog.          * wptKeyManager.cpp (km_get_key_status): New.
2965          (seclist_init): New.  
2966          (seclist_destroy): New.  2003-05-09  Timo Schulz  <[email protected]>
2967          (seclist_select_key): New.  
2968          * wptFileManager.cpp (fm_sign): Ask for output file if needed.          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.
2969            * wptFileManager.cpp (fm_print_md): New.
2970          * Client side implementation of the --enable-progress-filter feature.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD
2971            command.
2972          * wptProgressDlg.cpp: Server side implementation.  
2973          (progress_dlg_proc): New. The actual dialog procedure.  2003-05-08  Timo Schulz  <[email protected]>
2974          (progress_callback): The GPGME wrapper callback.  
2975            * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current
2976  2003-09-25  Timo Schulz  <[email protected]>          window mode.
2977            (currwnd_gpg_dlg): Likewise.
2978          * wptProgressDlg.cpp (progress_cb_thread): New.          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.
2979          (progress_callback): Use asynchron code.          * WinPT.cpp (WinMain): If the default key was not found, show the string
2980          * wptFileManager.cpp (fm_parse_files): Implement progress callback.          in the error message to make it easier for the user to fix the problem.
2981            * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret
2982            keys.
2983  2003-09-28  Timo Schulz  <[email protected]>          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.
2984            This makes the priority of the rc2 update more urgent.
2985          * wptCardDlg.cpp (card_edit_dlg_proc): New.  
2986          (gpg_load_scard): New. Try to use GPG load the card info.  2003-05-07  Timo Schulz  <[email protected]>
2987          (print_fpr): New. Print beautified fingerprint.  
2988          (card_status): New. Set all dialog fields with the values from          * Clean up the outer GPGME interface. Internal functions should be
2989          the card.          invisible in gpgme.h.
2990          (prepare_dialog): New. Load combo boxes with pre-defined strings.          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.
2991            * wptKeyserver.cpp: Some cleanups.
2992            (finger_recvkey): Skip URL postfix if there.
2993  2003-10-06  Timo Schulz  <[email protected]>  
2994    2003-05-06  Timo Schulz  <[email protected]>
2995          * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.  
2996          * wptGPG.cpp (gnupg_display_error): Display general error          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys
2997          when the file does not exit.          are available. Removed old [unused] code.
2998          * wptW32API.cpp (get_folder_dlg): New.          Make sure we really have the key in the cache.
2999          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select  
3000          the folder for the home directory.  2003-05-04  Timo Schulz  <[email protected]>
3001          * wptKeyManager.cpp (km_update_default_key_str): Return length  
3002          of the string.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients
3003          (km_complete_status_bar): Use the offset of the default          were found, output a more precise error message. Now the GPGME code
3004          key string so it is not appened twice.          first tests for special cases and if no one hit the nail on the head,
3005          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.          a general error is used.
3006          * wptCard.h: New.  
3007          * wptCardDlg.cpp (new_card_driver): New.  2003-05-03  Timo Schulz  <[email protected]>
3008          (load_card_driver): New.  
3009          (free_card_driver): New.          * wptParser.cpp: Renamed to...
3010          (card_config_dlg_proc): If the reader is configured, load the          * wptGPGParser.cpp: this.
3011          values. This is needful to change the driver later.          (release_option): Renamed to...
3012          (gpg_load_scard): Use driver as a parameter.          (release_gpg_options): this.
3013          * wptMainProc.cpp (winpt_main_proc): Load card driver and          (commit_option): Renamed to...
3014          unload it after use.          (commit_gpg_options): this.
3015            (parse_option): Renamed to...
3016  2003-10-07  Timo Schulz  <[email protected]>          (parse_gpg_options): this.
3017            * wptGPG.cpp: Use new parser function names.
3018          * wptPINDlg.cpp (pin_cb_dlg_proc): New.          (set_gnupg_default_key): Free memory.
3019          * wptCardDlg.cpp (do_proc_card_cmds): New.          * wptKeylist.cpp (keylist_add_groups): New group code.
3020          (card_edit_dlg_proc): Use it here.          * wptGroups.{c,h}: Removed. Now we use the GPG group command.
3021            * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from
3022  2003-10-08  Timo Schulz  <[email protected]>          2 to 4.
3023            (recv_missing_keys): Likewise. Now it is possible to retrieve
3024          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII          missing keys. Thanks to Klaus.
3025          is used. Otherwise reject the value.          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather
3026          (ask_pin): New. Enable PIN caching for the 'dialog session' so          than a static buffer to avoid garbled keys. There are some very
3027          the user does not need to re-enter it again and again.          large keys and these cause some trouble with a 16k buffer.
3028            (keyserver_dlg_proc): Localized some strings.
3029  2003-10-09  Timo Schulz  <[email protected]>          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column
3030            names which are equal to the names we use in the Key Manager.
3031          * wptCardDlg.cpp (get_card_status): New.          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but
3032          (show_card_status): New. Retrieve the card status and show an          should be "==" bug.
3033          error if approprioate.          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.
3034          * Make sure that WinPT does not try to use non-OpenPGP cards.          * Add --expert option for the GPG procedure call if needed.
3035          * Add GPGME support for the forthcoming AUTH flag for keys.  
3036          * Implemented the detection of keys where the secret key components  2003-05-02  Timo Schulz  <[email protected]>
3037          are stored on a smart card.  
3038            * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.
3039    
3040  2003-10-12  Timo Schulz  <[email protected]>  2003-04-30  Timo Schulz  <[email protected]>
3041    
3042          * wptCardDlg.cpp (guess_libname): New.          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the
3043          (card_status): Simplified the code with an attribute          next context menu ("Add"). Make sure the entries are disabled
3044          table. Now it is a loop and not hard coded.          when the key has no secret key.
3045          * The card interface has changed. Now the surname and          * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.
3046          the given name are two fields and not one field.          * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't
3047          * wptMainProc.cpp (winpt_main_proc): Check if the card          cause a segfault when the pointer free tries to deallocate the
3048          reader is configured where appropriate.          pointer.
3049    
3050  2003-10-13  Timo Schulz  <[email protected]>  2003-04-27  Timo Schulz  <[email protected]>
3051    
3052          * Extended the GPGME API that it is possible to retrieve          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows
3053          the key data. This is for the planned card login but it          to show the properties of the signers keys.
3054          might be also useful for other purposes.          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.
3055    
3056          * wptCardPCSC.c: New. General code for PC/SC card readers.  2003-04-26  Timo Schulz  <[email protected]>
3057    
3058            * wptParser.cpp: A lot of structural changes. Always add items
3059  2003-10-14  Timo Schulz  <[email protected]>          at the end of the list so we don't need to make a copy of the list
3060            to restore the original order. Fix the group problem.
3061          * wptKeyList.cpp (do_addkey): Add the case the secret key          * wptKeylist.cpp (keylist_build): Use OR to get the flags and
3062          is stored on a smart card.          not ==.
3063          (km_check_for_seckey): Take care of the new code.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command
3064          * wptKeyManager.cpp (km_delete_keys): Extra warning when          (file) does not use the keyid as the file name when more than one
3065          the secret key is stored on a card.          keys were selected.
3066          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities          Allow allow to set default keys which are not revoked or expired.
3067          to the list view. Now the user can see if the key is useable          * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort
3068          for: signing, certifying or encrypting.          the columns.
3069            Set the force trust flag in GPGME if there are some recipients
3070  2003-10-16  Timo Schulz  <[email protected]>          with no validity.
3071    
3072          * Changed GPGME interface for edit card. Now one context is  2003-04-25  Timo Schulz  <[email protected]>
3073          used for all edit card operations.  
3074          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working          * wptVerList.cpp (verlist_build): Change the name of some columns.
3075          and admin PIN. Changed gpgme interface.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the
3076          (ask_pin): Renamed to..          notation (if present!) present the user a general message box
3077          (do_askpin): this. Provide more information about the card          with extended signature information. This means the notation
3078          and its holder.          data and a possible policy URL.
3079          (do_proc_card_cmds): If no error, reset modify flags for  
3080          all controls. Show a short message that the operation ended.  
3081          * wptCardPCSC.c (pcsc_free_readers): New.  2003-04-24  Timo Schulz  <[email protected]>
3082          (pcsc_scan_readers): New.  
3083          (pcsc_get_reader): New.          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init
3084          (pcsc_get_card_status): New.          default values to make it easier for newbies.
3085            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error
3086            when no secret key was found. Also mention the public key algo.
3087  2003-10-17  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_decrypt): Likewise.
3088    
3089          * wptGPGME.cpp (keycache_init): Do not use secring the first time.  2003-04-23  Timo Schulz  <[email protected]>
3090          * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short  
3091          keyid will be displayed.                  * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function
3092            from GPGME#gpgme_ownertrust_to_string into WinPT.
3093  2003-10-18  Timo Schulz  <[email protected]>  
3094    2003-04-20  Timo Schulz  <[email protected]>
3095          * wptCardDlg.cpp (card_keygen_dlg_proc): New.  
3096          (do_askpin): Handle the case there is no card.          * wptClipboard.cpp: Removed. All these functions and constants
3097          (card_edit_dlg_proc): Add 'New Keys' feature.          are now available in MyGPGME/clip.c and thus part of GPGME.
3098          (card_changepin_dlg_proc): Implemented.          * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...
3099          * WinPT.cpp (WinMain): Ability to start the card manager directly.          (keylist_get_recipients): this. Return the context instead of
3100          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader          an argument.
3101          driver and the inserted card.          (get_key_size): Add key index.
3102            (get_key_algo): Likewise.
3103  2003-10-19  Timo Schulz  <[email protected]>          (keylist_build): Use a special mode when signing is used.
3104            (keylist_enum_recipients): Return a malloced pointer to the
3105          * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and          recipients.
3106          the working PIN.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint
3107          wptCardDlg.cpp (free_pincb): New.          when we have a signature result and we do not trust the key.
3108          (card_keygen_dlg_proc): Pin callback implemented.  
3109          Simple check for the e-mail address.  2003-04-20  Timo Schulz <[email protected]>
3110          (card_edit_dlg_proc): End the dialog if no changes were made.  
3111            * wptFindWnd.h: Removed. We don't use it any longer.
3112          * Expanded GPGME passphrase interface to work both with PINs          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.
3113          and passphrases.          (gpg_strerror): Removed. Now it is handled in winpt_strerror.
3114            * wptFileManager.cpp (fm_get_file_name): move this to
3115  2003-10-21  Timo Schulz  <[email protected]>          * wptVerifyList.cpp (get_file_name): ..this place and declare
3116            it as static because no other file need this function.
3117          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase  
3118          was wrong, delete the cache item (if available).  2003-04-15  Timo Schulz  <[email protected]>
3119          * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.  
3120          * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.
3121          * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'          (data_cb_thread): New.
3122          flag to zero.          (data_cb_dlg_create): New.
3123                    (data_cb_dlg_destroy): New.
3124            (data_cb_new): New.
3125  2003-10-21  Timo Schulz  <[email protected]>          (clip_import_dlg_proc): Use a callback dialog to
3126            show the user the data decoding procedure is in
3127          * wptClipDecryptDlg.cpp (list_recipients): New.          progress. This dialog is destroyed in the key
3128          (algo_from_list): New.          import statistics dialog.
3129          (clip_decrypt_dlg): New concept to list all recipients.  
3130          * wptFileManager.cpp (fm_list_keys): New.  
3131          (fm_decrypt): Same changes as for the clipboard decryption.  2003-04-13  Timo Schulz  <[email protected]>
3132    
3133  2003-10-23  Timo Schulz  <[email protected]>          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback
3134            context.
3135          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output          * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.
3136          if the error is unknown.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect
3137          (clip_sign_dlg_proc): Likewise.          flag inside the KEY contect if needed.
3138          (clip_signenc_dlg_proc): Likewise.          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a
3139          (clip_import_dlg_proc): Likewise.          passphrase if the protect flag is set.
3140            Display the callback dialog to show the progress.
3141  2003-10-24  Timo Schulz  <[email protected]>          Implemented the "revkey" feature.
3142            * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.
3143          * Implemented a better logging system. If the return code          (do_add_new_userid): New. Add an entry to the list box
3144          of GPG is != 0 and the error is not known, display the errors          after the GPG process finished.
3145          from stderr.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig
3146            to zero to avoid segfaults.
3147          * wptGPGME.cpp (logging_cb): New.  
3148    2003-04-12  Timo Schulz  <[email protected]>
3149  2003-10-26  Timo Schulz  <[email protected]>  
3150            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new
3151          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.          GPGME code.
3152            * wptVerifyList.cpp (verlist_add_sig_log): Likewise.
3153          * Changed the code at several other places to support the new logging          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.
3154          scheme.          * wptFileManager.cpp (fm_decrypt): Likewise.
3155            * WinPT.cpp (check_default_key): Check if the keys in gpg.conf
3156            are valid and in the keyring.
3157  2003-10-29  Timo Schulz  <[email protected]>          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase
3158            item if the key is not protected.
3159          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.  
3160    
3161          * Create a new interface for an interactive card callback. GPG  2003-04-09  Timo Schulz  <[email protected]>
3162          provides card control status messages if the wrong card is inserted.  
3163            * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as
3164          * wptCardManager.cpp (card_cb_dlg_proc): New.          invalid for cancel.
3165          (card_callback): New.  
3166    2003-03-20  Timo Schulz  <[email protected]>
3167          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use  
3168          the ASCII functions and not the Unicode function names. Thanks to          * wptFindWnd.cpp: Removed.
3169          Werner for pointing this out.          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of
3170            find_window.
3171          * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the          * Whenever it's possible, use case insentensive searches to avoid
3172          serial card number is shown to help the user to find the right card.          problems.
3173    
3174          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.  2003-03-19  Timo Schulz  <[email protected]>
3175    
3176  2003-10-02  Timo Schulz  <[email protected]>          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.
3177            * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly
3178          * Prepare test release.          in the code.
3179          * wptGPGCmds.h: New from GPG 1.3.4-cvs.          * wptPasswdDlg.cpp: Likewise.
3180            (passphrase_cb_init): Declare as static.
3181  2003-11-13  Timo Schulz  <[email protected]>          (passphrase_cb_gpgme): Modified to use the static function and rename
3182            it to...
3183          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.          (passphrase_gpgme_set_cb): ..this. New.
3184          * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA
3185          Thanks to Achim.          and friends to assign data to each item.
3186          * Change PIN interface. Now it is easier when an operation requires          Move dialog code to...
3187          both PINs.          * wptClipSignEncDlg.cpp: ..here.
3188          * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs          * MyGPGME/keycache.c: We first look for directly key signatures and
3189          to change card attributes. Do not ask me why, but now the user          then we skip all other signatures if we've already seen the key. This
3190          needs to enter 2 PINs.          is needed to gather the designated revoker keys.
3191    
3192          Name parts were swapped, now they have the right order again.  2003-03-18  Timo Schulz  <[email protected]>
3193    
3194  2003-11-14  Timo Schulz  <[email protected]>          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index
3195            of revocation from 9 to 8.
3196          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.          Set the text that no key was updated only if no new sig, subkey,
3197            userid and no public were added.
3198  2003-11-28  Timo Schulz  <[email protected]>          Add more information: new {subkeys, signatures, userid}.
3199            * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.
3200          * Remove all support for ElGamal sign+encrypt keys.          * wptDlgs.cpp: Removed.
3201            * wptDlgs.h: (dlg_fatal_error): New. Macro.
3202          There is a flaw in GPG which makes all such keys useable and  
3203          they are comprised even if one signature they made is accessable.  2002-03-16  Timo Schulz  <[email protected]>
3204          And due to the fact the key is self signed, such a sig is always  
3205          available for the public.          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the
3206            optional text in UTF-8 to avoid charset problems.
3207          We warn the user at startup if such keys were found!          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead
3208            of a static buffer. Changed all callers.
3209          * wptMainProc.cpp (elgamal_warn_dlg_proc): New.          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions
3210          * wptGPGME.cpp (count_insecure_elgkeys): New.          for the rest of the columns.
3211          * WinPT (WinMain): Use it here.          (keylist_handle_column_click): New.
3212            * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):
3213  2003-11-29  Timo Schulz  <[email protected]>          Removed the 'Advanced' button because it only confuses users
3214            and it is not often used.
3215          * wptMAPI.cpp (mapi_init): New.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-
3216          (mapi_deinit): New.          and import the trustdb values (ownertrust).
3217          (mapi_send_pubkey): New.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to
3218          * wptKeyManager.cpp (km_send_to_mail_recipient): New.          sort columns.
3219          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support  
3220          to send the public key via MAPI to a recipient.  2002-03-09  Timo Schulz  <[email protected]>
3221          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind  
3222          the secret key cache so it's not at the end.          * 64-bit support for wipe operations.
3223          (keysign_dlg_proc): Issue a warning when no secret key was  
3224          found which could be used for signing the key.  2002-03-08  Timo Schulz  <[email protected]>
3225          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.  
3226          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.          * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'
3227            because they are options rather than files.
3228  2003-12-10  Timo Schulz  <[email protected]>          * WinPT.cpp (WinMain): Allow to start the key manager directly
3229            via --keymanager.
3230          * GPGME support to change key preferences.          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.
3231          * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.          (wipe_cb): New. Wipe callback function.
3232          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.          (fill_drive_combobox): New. Fill in all logical drives into
3233            the given combo box.
3234            (wipe_thread): New. Worker thread.
3235  2003-12-14  Timo Schulz  <[email protected]>          (update_disc_stats): New. Set the disc statistics for the
3236            given drive entry.
3237          * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.          (space_wipefrees_dlg_proc): New.
3238          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.  
3239          (do_editkey_setpref): Implement updpref command.  2002-03-01  Timo Schulz  <[email protected]>
3240    
3241            * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection
3242  2003-12-23  Timo Schulz  <[email protected]>          logic. Now we can decrypt symmetrically encrypted files again.
3243            Be stricter on memory alloaction checks.
3244          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove          (fm_get_file_type): Be more strict with the return code of
3245          ElGamal s+e support. Oops, this should be already done.          parse_packet. This avoids bogus file types for MS-Word files and
3246          * wptGPGME.cpp (keycache_init): Sync both key caches. In other          other non-PGP data.
3247          words transfer some flags from the sec-cache to the pub-cache.          (fm_wipe): Use the wipe mode from the registry and not a fixed value.
3248          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the          * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.
3249          key sign procedure. If it is already signed, the process          (get_reg_winpt_prefs): Likewise.
3250          sometimes hangs.          * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.
3251            * wptDlgs.h: Corrected all dialog protypes to BOOL.
3252  2003-12-30  Timo Schulz  <[email protected]>          LRESULT was not correct.
3253    
3254          * fixed the GPG edit-key commands sign and addrevoker.  2002-02-08  Timo Schulz  <[email protected]>
3255    
3256  2003-12-31  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export
3257            the secret key when a file was chosen.
3258          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort  
3259          the list otherwise the index is wrong.  2002-02-01  Timo Schulz  <[email protected]>
3260          * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set  
3261          a signature expire date.          * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.
3262    
3263  2004-01-03  Timo Schulz  <[email protected]>  2002-01-25  Timo Schulz  <[email protected]>
3264    
3265          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id
3266          to import secret keys.          and the fingerprint to the clipboard. Closes #674455.
3267            Automatically reload the keycache when a command is chosen and the cache
3268  2004-01-04  Timo Schulz  <[email protected]>          state is set to 'reload requested'. Closes #671218.
3269            * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts
3270          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.          are not invalid.
3271          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas          * WinPT.cpp (check_permissions): Make sure we have the permission to
3272          and minor changes.          write the keyring. Stop if not because it's expected at many other places.
3273          * wptListView.cpp (listview_sort_items): Likewise.          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.
3274          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.          (siglist_build): Use a placeholder sig to avoid the position chaos.
3275          (regist_sep_wnd): Factored out some code.          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.
3276            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,
3277  2004-01-22  Timo Schulz  <[email protected]>          display more information and use a GPG like output.
3278            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is
3279          * Remove all internal card reader config. It's up to the          an invalid key in the list of recipients. Closes #674965.
3280          user to do this. It would be too error proune to offer it.  
3281          * wptCard.h: Removed all card driver stuff.  
3282          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ  2002-01-21  Timo Schulz  <[email protected]>
3283          between the admin and the user (normal) PIN.  
3284            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to
3285  2004-01-23  Timo Schulz  <[email protected]>          avoid typing mistakes.
3286    
3287          * wptCardDlg.cpp (check_pin_len): New. Check if the  2003-01-19  Timo Schulz  <[email protected]>
3288          PIN is long enough and give an appropriate error.  
3289          (card_changepin_dlg_proc): Use the new check function.          * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.
3290            * wptKeyManagerDlg.cpp (do_resize_window): New.
3291  2004-01-25  Timo Schulz  <[email protected]>          (do_create_minpopup): New. Closes #669730.
3292            * wptVerifyList.cpp (get_sig_date): Renamed to...
3293          * WinPT.cpp (WinMain): Silently die when an instance is already          (longdate_to_strdate): New. Changed all callers.
3294          running. Do not confuse the user with a message. Suggested by          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains
3295          Sebastian.          a signature, also display the time of it. Closes #669780.
3296          * wptKeyManager.cpp (delete_keys_from_cache): New.          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.
3297          (km_delete_keys): Use it here. Thanks to Achim.          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.
3298            * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability
3299  2004-01-28  Timo Schulz  <[email protected]>          to choose the signer.
3300            (keysign_dlg_proc): Implemented a feature request. See above.
3301          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued  
3302          if keys on the card exist but the user does not said overwrite.  2003-01-08  Timo Schulz   <[email protected]>
3303    
3304          Make sure the expire date is not in the past.          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning
3305            if the user tries to add the email address in the name field.
3306          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file          * wptKeyserver.cpp: Add support for protocols.
3307          lock twice. Not sure if this fixes some other problems but it          (finger_readline): New.
3308          was definitely a bug.          (finger_recvkey): New.
3309            * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke
3310          * wptMapi.cpp (mapi_init): Make sure all function ptrs are          message box to show it's a serious decision.
3311          initialized otherwise bail out.          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.
3312          (mapi_send_message): New. Interface to allow to send an          * wptRegistry.cpp (regist_single_filetype): Now internal and we use
3313          encrypted mail with zero ore more encrypted attachments.          an easier way to get the location of the binary.
3314          (secure_attachment): New.          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry
3315          (parse_recipients): New.          entry to avoid double file registering.
3316    
3317  2004-02-02  Timo Schulz  <[email protected]>  2003-01-07  Timo Schulz  <[email protected]>
3318    
3319          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window
3320          is long enough. The same check for the mail address.          pos from the coordinates from the registry.
3321            (keymanager_dlg_proc): Store the window pos in the registry.
3322          Thanks to Achim.          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.
3323            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when
3324  2004-02-03  Timo Schulz  <[email protected]>          a revcert was found.
3325            * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does
3326          * WinPT.cpp (check_crypto_engine): New. Factor out common code.          not succeed.
3327          (WinMain): Check the crypto engine after the first start.          (keyserver_dlg_proc): Corrected some listview index values.
3328            * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.
3329          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is  
3330          issued if the values could not stored. Revamped the core.  2002-12-23  Timo Schulz  <[email protected]>
3331    
3332          * Removed the last appearance of the GPG agent support.          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver
3333            directory if does not exist.
3334          * wptGPG.cpp (init_gnupg_table): Do not use static buffers.          * wptKeyserver.cpp: Simpliefied config file.
3335          (free_gnupg_table): Free memory.          (kserver_change_proxy): Write config to the registry. Remove
3336            code for the config file.
3337          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the          * wptProxySettingsDlg.cpp (read_proxy): More robust code.
3338          ctx pointer get malloced and set the contents to zero.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature
3339            to send keys. The Key Manager is better for this.
3340    
3341  2004-02-04  Timo Schulz  <[email protected]>  
3342    2002-12-21  Timo Schulz  <[email protected]>
3343          * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.  
3344            * Fixed some language mistakes.
3345  2004-02-05  Timo Schulz  <[email protected]>          * wptMainproc.cpp: Use the desktop window as the parent window
3346            for the main dialogs so they are visible in the taskbar.
3347          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle          * wptKeyManagerDlg.cpp: Enable minimize.
3348          CMD_DISHOTKEYS. Thanks to the user who reminded me.          * wptFileManager.cpp (fm_parse_command_line): Support for detached
3349          * wptMainProc.cpp (spawn_cryptdisk): New interface to          signatures.
3350          the Cryptdisk application.          (fm_encrypt_directory): New.
3351            * wptKeylist.cpp (keylist_add_key): Check the current key if it
3352  2004-02-08  Timo Schulz  <[email protected]>          is not expired, not the primary (idx=0).
3353    
3354          * wptCryptdisk.{cpp,h}: New. Support for the extended  2002-12-18  Timo Schulz  <[email protected]>
3355          filedisk application.  
3356          * wptMainProc.cpp (winpt_main_proc): Likewise.          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead
3357          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.          of the old name "options".
3358            * WinPT.cpp (WinMain): Try to repair broken home directories
3359  2004-02-09  Timo Schulz  <[email protected]>          in the registry. Thanks to Gustavo who reminded me of it.
3360            * wptKeyserver.cpp (check_hkp_response): Only copy the text
3361          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.          between <p> and </p> when possible.
3362          (do_reaping): New. Release the list if all items are 'expired'.          * wptAgent.cpp: Re-activated the old code. Now the passphrase
3363          (cryptdisk_mount_dlg_proc): New.          timer can be used.
3364          (init_drives): New.  
3365          * wptMainProc.cpp (cryptdisk_proc): Renamed from...  2002-12-14  Timo Schulz  <[email protected]>
3366          (handle_cryptdisk): this. And filled with life.  
3367            * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean
3368  2004-02-12  Timo Schulz  <[email protected]>          any longer there is also a secret key.
3369            (km_check_photo): New.
3370          * wptErrors.cpp: New error codes for the cryptdisk feature.          (km_complete_status_bar): New.
3371          * wptCryptdisk.cpp (do_dispatch): Better error handling.          * wptFileManager.cpp (fm_verify): Support for bad signatures.
3372          (cryptdisk_mount_dlg_proc): Use it here.          Set the sigmode if not set.
3373          (cryptdisk_umount_dlg_proc): Likewise.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when
3374          (init_drives): Use system list.          the ownertrust of a non-valid (not signed) key is changed.
3375            * wptRegistry.cpp (expand_path): New. Use this code because it's
3376          Localized all strings.          much shorter.
3377    
3378  2004-02-17  Timo Schulz  <[email protected]>  2002-10-14  Timo Schulz  <[email protected]>
3379    
3380          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt          * wptKeyserver.c: Replaced all strdup's with m_strdup and free
3381          to the signers key. Suggested by Alexander.          with free_if_alloc.
3382          Use new keycache system, we use the public key part of the          (ldap_recvkey): Fill with life. We use the GPG plugin to avoid
3383          cache because it has all flags set.          all the LDAP overhead.
3384          * wptGPG.cpp (default_key_from_cache): Use new cache system.  
3385          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.  2002-10-13  Timo Schulz  <[email protected]>
3386    
3387            * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static
3388  2004-02-18  Timo Schulz  <[email protected]>          any longer.
3389    
3390          * Modify the cryptdisk code for crosscrypt 0.4.1.  2002-10-31  Timo Schulz  <[email protected]>
3391          * wptCryptDisk.cpp (do_mount): Add key algorithm param.  
3392            * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.
3393  2004-02-21  Timo Schulz  <[email protected]>          Thanks to Gustavo.
3394            * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect
3395          * wptCryptdisk.cpp (cryptdisk_cleanup): New.          whether it's a key pair or not.
3396          (is_nt4): Because my Platform-SDK is too old I need to load          * Callback struct into KEY so we can modify the values in the background.
3397          some prototypes dynamically.          * wptKeyPropsDlg.cpp (change_ownertrust): New.
3398          (init_drives): Return the first useable drive letter if  
3399          called with appropriate parameters.  2002-10-30  Timo Schulz  <[email protected]>
3400          * wptMainProc.cpp (winpt_main_proc): Use it here.  
3401            * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe
3402  2004-02-22  Timo Schulz  <[email protected]>          LDAP plugin for this purpose.
3403            * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.
3404          * PTD: Cryptdisk seems to have problems with locking. Use          * wldap32.lib is now not longer needed.
3405          a forced flag to tell the code if it should bail out or          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.
3406          ignore locking errors.          * Updated the resource file.
3407            * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff
3408          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new          for 'Decrypt', 'Verify', 'Import'.
3409          locking code.  
3410          (cryptdisk_new_dlg_proc): Adjust size of the volume.  2002-10-15  Timo Schulz  <[email protected]>
3411    
3412  2004-02-24  Timo Schulz  <[email protected]>          * Changed all s(n)printf -> msg_box constructs to log_box.
3413    
3414          * WinPT.cpp (WinMain): Call a selftest check procedure to  2002-10-13  Timo Schulz  <[email protected]>
3415          make sure all cryptographic code works as expected.  
3416            * wptKeylist.cpp (get_key_expire_date): New.
3417  2004-02-25  Timo Schulz  <[email protected]>          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.
3418    
3419          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and          * Removed global keycache from GPGME. It's a bad style to mix
3420          do not mix the names in the different menus.          general and specific interfaces.
3421    
3422          * wptSigList.cpp: Support to show the signature class.          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation
3423            details. Useful to replace it later.
3424          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo          (get_seckey): Ditto.
3425          box when there is no secret key available.          (keycache_reload): Moved from the GPGME library.
3426            (keycache_release): New.
3427          (do_init_keylist): Do not allow to use the owners key as a desig          (keycache_init): New.
3428          revoker.          (keycache_set_reload): New.
3429            (keycache_get_reload): New.
3430          * wptKeylist.cpp (get_key_trust): New.          (keycache_get_ctx): New.
3431          (do_addkey): Use it here.  
3432            * wptSigList.cpp (siglist_add_key): Use the new code.
3433  2004-02-26  Timo Schulz  <[email protected]>          (siglist_build): Ditto.
3434    
3435          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error  
3436          if no recipient was selected.  2002-10-10  Timo Schulz  <[email protected]>
3437    
3438          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.
3439          is destroyed. This fixes the bug that the dialog sometimes exist even          Changed all callers.
3440          after the procedure ended.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the
3441            new get_filename_dlg.
3442          * wptProgressDlg.cpp (progress_callback): Change the if-then-else          * wptFileManager.cpp (fm_export): Likewise.
3443          struct to prevent zombie dialogs.          * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.
3444            * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.
3445          * wptKeyserver.cpp: Removed unused prototypes.          Use signature class dialog.
3446            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the
3447  2004-02-29  Timo Schulz  <[email protected]>          keyid instead of the userid to avoid charset problems.
3448            (err_message): New.
3449          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.  
3450            * Moved all wipe specific code (random, rmd160) to the DLL so we can
3451          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself          save some memory for the tray section.
3452          so we are not allowing to sign ourself.  
3453            * wptKeyRevokersDlg.cpp (revokelist_build): New.
3454          * wptSigList.cpp (siglist_add_key): Support for the signature          (revokelist_init): New.
3455          flags (local, non-revocably, ...).          (key_revokers_dlg_proc): New.
3456    
3457          * Key signing with GPG 1.2.x should work again. Hopefully.          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker
3458            code here when available.
3459  2004-03-02  Timo Schulz  <[email protected]>  
3460    2002-09-25  Timo Schulz  <[email protected]>
3461          * wptGPG.cpp (check_keyring): Handle the case that the keyring  
3462          is set in the gpg.conf file and the pubring.gpg file is zero bytes.          * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text
3463            is dash escaped. This is useful for keys to avoid errors.
3464          (gnupg_backup_keyrings): Support backup of keyrings which were set          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an
3465          in gpg.conf. Thanks to the user who reminded me of this problem.          OpenPGP key from the clipboard which is dash escaped.
3466            (km_clip_import): Use the new code here.
3467          (gnupg_check_file_ext): Make check not case sentensive.  
3468    2002-09-23  Timo Schulz  <[email protected]>
3469          * (sfree_if_alloc): Overwrite the memory with zeros before freeing  
3470          it. This only works with c-strings! Use it everywhere we handle          * wptParser.cpp (add_multi_option): Support for values with more ' 's
3471          sentensive information (passphrases).          and skip the ' ' after the name.
3472            (modify_entry): New.
3473          * Try to improve the usability with better menu names and new          * wptGPG.cpp (gnupg_save_options): Removed.
3474          ordering.          (gnupg_load_options): Removed.
3475            (gnupg_release_options): Removed.
3476          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.
3477    
3478          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now  2002-09-17  Timo Schulz  <[email protected]>
3479          it is part of the WinPt about dialog. This way we can minimize the  
3480          elements in the popup menu.          * winpt.cpp (WinMain): Use make_filename and no static buffer.
3481            Modified for the new gnupg interface.
3482  2004-03-04  Timo Schulz  <[email protected]>          * wptFile.cpp (make_filename): New.
3483            * wptGpgCmds.h: New from GPG 1.1.92
3484          * wptKeyserver.cpp (finger_recvkey): Error if key was not found          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers
3485          or garbled.          and make_filename.
3486            * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and
3487          * wptGPG.cpp (gpg_check_permissions): Take care of the entries          make_filename instead of static buffers.
3488          in gpg.conf.          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.
3489            * wptParser.cpp: Changed to new allocation instead of malloc.
3490          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select          * wptGPGOptSkel.h: Updated from GPG 1.1.92
3491          the signer. Suggested by Sebastian.          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.
3492    
3493          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to  2002-09-13  Timo Schulz  <[email protected]>
3494          this file.  
3495          (seclist_free): Likewise.          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the
3496          (seclist_select_key): Likewise.          image and do NOT free it.
3497            * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.
3498          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was          (find_user_id): Use keyid to find the key. Changed all callers.
3499          already set.  
3500            * Removed global gpg_version variable. Now we also support GPG 1.1.9x
3501  2004-03-07  Timo Schulz  <[email protected]>          so we don't need to check this after the start again.
3502    
3503          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats  2002-09-12  Timo Schulz  <[email protected]>
3504          dummy keyrings with a size of zero in the homedir.  
3505            * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.
3506          (gpg_check_permissions): Check for read-only keyrings and add code          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret
3507          for this case.          key export.
3508            * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to
3509          This problem fixes a lof of other problems related to the OpenPGP          check if the encryption failed.
3510          parsing stuff for the key cache.          (km_show_photo): Fixed offset calculation.
3511            Use keyid as filename and delete the tempfile after use.
3512          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.          * wptFile.cpp (init_file_lock): Use dynamic buffer.
3513            (release_file_lock): Free this buffer.
3514  2004-03-08  Timo Schulz  <[email protected]>          * wptFileManager.cpp (quote_filename): Removed.
3515            (quote_file): New. Use dynamic buffers.
3516          * wptGPG.cpp (gnupg_import_keyrings): cleanups.          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):
3517            Use it here.
3518          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.
3519          CP.          Initalize packet at the begin and during the loop.
3520          (wincp_to_utf8): Likewise.          * wptFileManager.cpp: Replaced all static memory handling with
3521          (conv_charset): Now internal and static.          dynamic routines.
3522            * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust
3523          * wptUTF8.h: New prototypes and remove the old prototypes.          functions.
3524            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.        
3525          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.  
3526    2002-09-10  Timo Schulz  <[email protected]>
3527    
3528  2004-03-11  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.
3529            (fm_decrypt): Only cut off the extension if it belong to GPG.
3530          * The DLL is now complety C-source.          Added user ID to the box if the file was signed.
3531            Ask for the filename if the name has no valid GPG extension.
3532  2004-03-15  Timo Schulz  <[email protected]>  
3533    2002-09-09  Timo Schulz  <[email protected]>
3534          * Decrypt list box has now a vertical scroll bar.  
3535            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for
3536  2004-05-14  Timo Schulz  <[email protected]>          the privat key (export).
3537    
3538          * WinPT.cpp (check_crypto_engine): Due to some  2002-09-08  Timo Schulz  <[email protected]>
3539          internal  GPG changes the min. version for smart card  
3540          support is now 1.3.6.          * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process
3541            really succeeded.
3542          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix          (mbox): Alias for msg_box with fixed title to avoid long lines.
3543          handling. Thanks to the folks who reported this via SF.net.          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow
3544            to generate keys with a length til 4096 bits.
3545          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for
3546          Thanks to the folks on winpt-users who reported it.          invalid recipients and print out the reasons.
3547            * wptKeylist.cpp (keylist_add_to_recipients): Improved error message
3548          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of          and corrected the validity checking.
3549          the hotkeys are disabled.  
3550    2002-09-07  Timo Schulz  <[email protected]>
3551          * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.  
3552            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):
3553          * wptFileManager.cpp (fm_get_file_type): Do not parse the entire          Print notation data when available.
3554          file if the size is >= 256MB.          Show if the signature is expired or not.
3555    
3556  2004-05-31  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo
3557            command to the context menu.
3558          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the  
3559          'X' close button. Noted by a friendly user.          * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.
3560                    This is 256 bits more than the old size. Hopefully it's enough
3561          Disable 'Save' button.          security to protect against the most enemies ;-).
3562    
3563          * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.  2002-09-04  Timo Schulz  <[email protected]>
3564    
3565          * wptFileManager.cpp (fm_set_status): Do not use the data file name          * wptKeyManager.cpp (km_check_key_status): Parse new fields.
3566          for signatures but keep the original file name.  
3567    2002-09-03  Timo Schulz  <[email protected]>
3568          (fm_verify_pasted_detsig): Try to verify detached signatures from  
3569          the clipboard.          Removed all OpenCDK code from PTD. The code is not tested very
3570            well and it might contain some errors. Now we used a stripped down
3571  2004-06-02  Timo Schulz  <[email protected]>          version of GnuPG code. This has two advantages. First the code is
3572            stable and second we can easier port other parts to native GPG code.
3573          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error  
3574          if there is no clipboard data.          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.
3575            * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the
3576          Release memory in case of an error.          keyring when present to the keycache.
3577            * wptKeyManager.cpp (km_show_photo): Fixes to work again with the
3578          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.          modified code.
3579            (km_check_for_seckey): Check substrings of the value because we
3580          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.          don't use '**' values any longer.
3581            * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.
3582            (file_stat_dlg_proc): Uses the new code.
3583  2004-06-08  Timo Schulz  <[email protected]>  
3584    2002-09-02  Timo Schulz  <[email protected]>
3585          * wptInet.cpp: New.  
3586          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http          * wptKeyManager.cpp (km_privkey_export): Check return codes and
3587          transfers.          some types has been changed.
3588          * wptKeyManager.cpp (km_http_import): New.          (km_file_export): Likewise.
3589    
3590    2002-09-01  Timo Schulz  <[email protected]>
3591  2004-06-12  Timo Schulz  <[email protected]>  
3592            * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice
3593          * wptInet.cpp: Updated.          of the dialog.
3594          * wptKeyManager.cpp (km_http_import): Use http_send_request2() to          * WinPT.cpp (WinMain): Use it here. Reworded the error message.
3595          parse the URL.          * wptGPG.cpp (gpg_import_keyrings): New.
3596          * wptCommonDlg.cpp (http_file_dlg_proc): New.          Let the user chose the keyrings and then they are copied to the
3597          (get_http_file_dlg): New.          homedir. After the procedure, the key cache will be reloaded.
3598            * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.
3599  2004-06-19  Timo Schulz  <[email protected]>          * wptSigClassDlg.cpp (sig_class_dlg_proc): New.
3600            (get_sig_class_choice): New.
3601          * wptInet.cpp: Renamed to ...          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable
3602          * wptHttp.c: ... this.          fingerprint.
3603          * wptKeyManager.cpp (km_http_import): Release 'p' not too early.          (keysign_dlg_proc): Added new value for the GPG callback to handle
3604          * WinPT.cpp (WinMain): If there is a problem with the homedir,          the signature class.
3605          jump to the first start settings.          * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the
3606            userID by calling edit-key with colons.
3607  2004-07-11  Timo Schulz  <[email protected]>          (keyuid_dlg_proc): Use it here.
3608    
3609          * Bug fix for the validity revoked status. Now it is 'revoked'  2002-08-31  Timo Schulz  <[email protected]>
3610          and not 'unknown' any longer.  
3611            * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.
3612          * Feature to disable encryption. This might be useful for filetypes          (check_homedir): Ask the user whether to create the directory.
3613          GPG does not recognize as compress (movies, ...).          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works
3614            to retrieve missing keys from a HKP server.
3615          * wptFileManager.cpp (fm_get_file_type): Skip packet detction if          (recv_missing_keys): Likewise.
3616          the file is large and it has no openpgp extension.          * wptPassphraseCB.cpp (passphrase_callback_proc):
3617            Implemented     the "Hide Typing" feature.
3618  2004-07-12  Timo Schulz <[email protected]>          (hide_typing): New.
3619            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.
3620          * wptRegistry.cpp: Support for disable compression of multi-media files.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.
3621          (set_reg_winpt_single): New.          Due to some attacks a MDC error is treated as a fatal error and a
3622          (get_reg_winpt_single): New.          possible security risk.
3623            * wptClipImportDlg.cpp (print_import_status): Use a dialog instead
3624          * wptFileManager.cpp (is_multi_media): New.          of a silly message box. Furthermore the user gets more information
3625          (fm_encrypt): Disable compression of multi-media files.          about the import procedure.
3626          (fm_state_new): Set comment to indicate armored files were generated          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.
3627          by WinPT. This is a replacement due to the fact the WinPT string is not          * wptFileManager.cpp (fm_import): Report invalid user ID's.
3628          added in the 'Version' for larger files.          (fm_verify): Try to guess the data name for detached signatures
3629            before we bother the user. When it's found, use it.
3630          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.          * wptKeyManager.cpp (km_file_import): Ditto.
3631    
3632  2004-07-13  Timo Schulz  <[email protected]>  2002-08-28  Timo Schulz  <[email protected]>
3633    
3634          * wptFileManager.cpp (fm_assume_onepass_sig): New.          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.
3635          Thanks to Vedaal who found out that armored one-pass sigs are not          * wptFileMananger.cpp (fm_check_armor_type): Ditto.
3636          correctly recognized.  
3637    
3638          (ask_filename): New.  2002-08-26  Timo Schulz  <[email protected]>
3639          Again thanks to Vedaal who suggested to ask for a new output name  
3640          for the case the user does not want to overwrite the file.          * wptTypes.h (free_if_alloc, CHECK_BOUND): New.
3641            * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure
3642          (fm_encrypt): Use it here.          the memory is really released. Some strict checks for return values.
3643          (fm_decrypt): Likewise.          Ident file.
3644          (fm_sign): Likewise.  
3645            * wptAboutDlg.cpp: Ditto. (ident)
3646          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry          * wptGPGAboutDlg.cpp: Ditto.
3647          to set secret keys to ultimate trust.            * wptClipDecryptDlg.cpp: Ditto.
3648            (clip_decrypt_dlg): Stricter return value checkings.
3649          * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the          Avoid one indent level.
3650          key has ultimate trust.  
3651          (km_set_implicit_trust): New.          * wptImportList.cpp (implist_add_key): More strict return value
3652            checking.
3653  2004-07-27  Timo Schulz  <[email protected]>          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.
3654            (add_key): New key status system.
3655          * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new          (keylist_get_keyflags): New.
3656          value for the ownertrust.          (keylist_enum_recipients): Simplified and use the new key flags.
3657    
3658          * wptKeyManager.cpp (get_key_trust): Make it public.          * wptSiglist.cpp (siglist_add_key): Fix possible overflows.
3659          (get_key_trust_str): New.          (verlist_add_sig_log): More stricter checks.
3660          (km_refresh_from_keyserver): Allow to select random keys.  
3661          (km_refresh_one_key): New.          * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.
3662    
3663          * wptKeyserver.cpp: Use default keyserver if possible.  2002-06-16      Timo Schulz <[email protected]>
3664    
3665  2004-08-02  Timo Schulz  <[email protected]>          Don't put the questions in the message box title bar.
3666    
3667          * wptKeysigDlg.cpp (do_create_popup): New.          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it
3668          (do_load_keyprops): New.          is really opened. Thanks to Nelson.
3669    
3670          (keysig_dlg_proc): Factor out some common code and use          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title
3671          do_load_keyprops.          for chaning the passphrase. Suggested by Ed.
3672    
3673          * wptKeyServer.cpp (kserver_check_inet_connection): New.  2002-06-07      Timo Schulz <[email protected]>
3674    
3675          * wptKeyManger.cpp (km_refresh_from_keyserver): First check          * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.
3676          for an active internet connection. It's annoying for the          * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.
3677          user to confirm an connection error for each key (n>40).          * wptListView.cpp (listview_select_all): New.
3678            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.
3679  2004-08-04  Timo Schulz  <[email protected]>  
3680    2002-05-31      Timo Schulz <[email protected]>
3681          * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the  
3682          edit-field to display the text. Now a RichEdit field is          * wptTrayPop.cpp: Revamped some parts of the code.
3683          used. This solves the XP problem that the viewer is empty  
3684          even if there is text in it.          Changed all status_box functions to show_msg. The advantage
3685            is that we only wait a fixed time and the user doesn't need
3686          * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.          to hit the OK key. We should add  the time delay in the preferences.
3687    
3688          * wptKeySigDlg.cpp (sigprops_dlg_proc): New.          * wptKeyManager.cpp (km_show_photo): New.
3689          (keysig_dlg_proc): Add new 'Properties' button and implement  
3690          the code for it.  2002-05-30  Timo Schulz <[email protected]>
3691    
3692          * wptSigList.cpp: Add support to show the expiration date.          * wptFileManager.cpp (fm_verify): Corrected the handling
3693            for detached RSA signatures.
3694          * wptGPGME.cpp (keycache_init): Support to show the progress bar.          (fm_add_sig_stat): Added support for short fingerprints.
3695          (keycache_release): Store the amount of keys in the registry for  
3696          the progress dialog.  2002-05-08      Timo Schulz <[email protected]>
3697    
3698          * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate          * wptKeyserver.cpp (kserver_change_proxy): Check the values.
3699          default keyserver.conf.          Thanks to njek for reporting it.
3700    
3701          * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.  2002-05-07      Timo Schulz <[email protected]>
3702          Fix possible buffer overflow.  
3703          (wsock_end): Release stored keyserver list.          * wptGPG.cpp (check_gpg_engine): New.
3704    
3705          * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible
3706          a specific recipient and select it.          routines.
3707    
3708  2004-08-05  Timo Schulz  <[email protected]>          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.
3709    
3710          * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.
3711          when possible.  
3712          New dialog layout to enhance the readability of the text. Use  2002-05-06      Timo Schulz <[email protected]>
3713          flat check boxes for the same reason.  
3714            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of
3715          * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to          the buttons.
3716          the right column (3 not 4).  
3717    2002-05-05      Timo Schulz <[email protected]>
3718          * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile  
3719          uses a unique name.          * Fixed problem with rev certs for imports stats.
3720    
3721            * Cosmetical changes for the GPGME libraray.
3722  2004-08-06  Timo Schulz  <[email protected]>  
3723    2002-05-01      Timo Schulz <[email protected]>
3724          * wptContext.h: Move subclass_s context to this file.  
3725            * wptKeygenDlg.cpp (fill_keytype_box): New.
3726          * wptKeysigDlg.cpp (subclass_dlg_proc): New.          (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7
3727            there is full RSA support.
3728    
3729  2004-08-19  Timo Schulz  <[email protected]>          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out
3730            what the problem was when no encryption was done.
3731          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected  
3732          key numbers.          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make
3733            sure it was not already signed (ALREADY_SIGNED).
3734          * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.  
3735          (is_sig): Change code to allow to check pre-defined fields.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,
3736            now we also support to sign ultimate trusted keys.
3737          * WinPT.cpp (WinMain): Allow read-only support for keyrings.  
3738            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button
3739  2004-08-20  Timo Schulz  <[email protected]>          is checked and do not check it.
3740    
3741          * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify
3742          mode the menu is not available.          box and now we also support the date of the signature.
3743          (popup_gpg_readonly): New.  
3744          (menu_gpg_readonly): New.          Applied Rich's spelling and grammer mistakes.
3745          (keymanager_dlg_proc): Use it here. Do not check the permissions          Fixed a lot of minor spelling mistakes and capital letters for dialogs.
3746          any longer since this is now handle via the read-only code.  
3747          * wptMainProc.cpp (winpt_main_proc): Check if the keyrings  2002-04-30      Timo Schulz <[email protected]>
3748          are in read-only mode.  
3749          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.          Merge ownertrust handling into the keycache. Now GPG outputs the
3750          * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably          ownertrust in the key listing which means we can get the ownertrust
3751          signatures in expert mode.          value from the keycache.
3752          * wptKEyEditDlgs.cpp (do_find_userid): Release context.  
3753          * wptGPG.cpp (gpg_check_permissions): Only print out a warning          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.
3754          in the interactive mode.          Please not that this is not the same as the key cache! The key cache
3755          * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left          will be updated when a new key was imported or a subkey was added/changed.
3756          mouse button is clicked.          The signature cache only affects the validity of the keys.
3757    
3758  2004-08-24  Timo Schulz  <[email protected]>          Removed the MyGPGME trustlist code. Now we can use the field in the key
3759            listing to determine the ownertrust (which makes things a lot of easier).
3760          * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for  
3761          the user-ids.  2002-04-29      Timo Schulz <[email protected]>
3762          * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into  
3763          expert mode when the non-interactive mode is used.          Adjustments for GPG 1.0.7
3764          * WinPT.cpp (WinMain): Start the keygen wizard instead of the  
3765          expert dialog and allow to switch to it.          * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust
3766            and ask the user if he knows what he's doing.
3767  2004-08-25  Timo Schulz  <[email protected]>          * wptKeyManager.cpp
3768            (keylist_subclass_proc): Use double click to open the props.
3769          * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a
3770          and skip to read large files on floppy discs.          ultimate ownertrust value.
3771          (fm_wipe): Display a 'wait' cursor until the wipe is complete.          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for
3772          (is_floppy_disc): New.          new RSA keys.
3773          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.  
3774          (file_manager_dlg_proc): Use subclassing to allow some hotkeys.  2002-04-28      Timo Schulz <[email protected]>
3775    
3776  2004-08-26  Timo Schulz  <[email protected]>          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.
3777            (set_reg_winpt_prefs): Ditto.
3778          * WinPT.cpp (load_keyserver_conf): New. Factored out some code          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.
3779          from WinMain ().          (set_keylist_mode): New.
3780          (WinMain): Load keyserver config at the begin. Thanks to Bodo A�ner  
3781          * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver          Implement minimal keylist mode. Suggested by Fabian.
3782          in the list control, add at least the internal default HKP server.  
3783          * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.
3784          * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3785          (keysign_dlg_proc): Likewise.          * wptKeylist.cpp (keylist_add_key): Ditto.
3786          * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.          (keylist_load): Ditto.
3787          * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.          (keylist_build): Ditto.
3788          (kserver_connect): use it here.  
3789          (kserver_send_request): Likewise.  2002-04-27      Timo Schulz <[email protected]>
3790          (kserver_recvkey): Likewise.  
3791            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.
3792  2004-08-27  Timo Schulz  <[email protected]>          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.
3793            * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.
3794          * wptKeyserver.cpp (skip_whitespace): New.          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.
3795          * Fix a problem with the key cache. The new hash item was          (currwnd_gpg_dlg): Ditto.
3796          not initialized to zero and thus the free caused an illegal access.          
3797          Thanks to Ralf for pointing this out.          Now it's possible to parse cleartext signatures which contains an
3798          * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.          encrypted message inside the body.
3799          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.  
3800          * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and          * wptTextInputDlg.cpp (load_file_contents): New.
3801          use a context to store the value. Loalize all text strings.          (text_input_dlg_proc): Support for choosing the data file.
3802          * wptKeyList.cpp (key_check_validity): Cannot use gettext here.  
3803          (keylist_get_recipients): Increase buffer for gettext messages.          * wptFileManager.cpp (fm_verify): Support for detached signatures.
3804            (fm_parse_files): Ditto.
3805  2004-08-28  Timo Schulz  <[email protected]>  
3806    
3807          * WinPT.cpp (WinMain): Free gpg table in case of an error.  2002-04-26      Timo Schulz <[email protected]>
3808          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.  
3809          (filemanager_dlg_proc): Subclass the list control.          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.
3810          * Fix Alt+C for the winpt_prefs_dlg_proc.          * wptKeyUidDlg.cpp: Ditto.
3811          * wptKeyserver.cpp (kserver_load_conf): Ignore lines with  
3812          just whitespaces. Thanks to the folks on winpt-users.  2002-04-25      Timo Schulz <[email protected]>
3813    
3814  2004-09-01  Timo Schulz  <[email protected]>          * wptImplist.cpp (implist_add_key): Catch possible segfault.
3815            * wptVerifyList.cpp (verlist_add_sig): Ditto.
3816          * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.          * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.
3817          (default_key_from_cache): Use new key attribute 'usable'.          * wptKeylist.cpp (find_secret_key): New.
3818          * WinPT.cpp (show_unprotected_keys): Removed.          (add_key): Use it here.
3819          * wptKeylist.cpp (check_key): Removed.          (keylist_add_key): And here.
3820          (seclist_init): Use new 'usable' key attribute.  
3821          (keylist_add_key): Likewise.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent
3822          * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to          to fetch the key.
3823          add keys via 'INSERT'.  
3824          * wptListView.cpp (listview_select_one): New.  2002-04-24      Timo Schulz <[email protected]>
3825          (listview_find): New.  
3826          * wptFileManager.cpp (fm_get_current_pos): If there is only          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.
3827          one item, return 0 but also select it. Thanks to Christian.          
3828            Changed the way to modify the "Version:" string.
3829  2004-09-07  Timo Schulz  <[email protected]>  
3830            * wptKeyserver.cpp (add_node): New.
3831          * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.          (kserver_change_proxy): New.
3832          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.          (kserver_read_config): New.
3833            (kserver_write_config): New.    
3834  2004-09-08  Timo Schulz  <[email protected]>          (kserver_cfgfile_release): New.
3835            (proxy_release): New.
3836          * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is  
3837          in the list, return zero.          * wptProxySettingsDlg.cpp (read_proxy): New.
3838            * wptFileStatDlg.cpp (file_stat_dlg_proc): New.
3839  2004-09-20  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_list): New.
3840            (fm_parse_files): Support the new list command.
3841          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in  
3842          context menus when the key is flagged as revoked.  2002-04-23      Timo Schulz <[email protected]>
3843          (update_ui_items): Likewise and set the 'ShowPhoto' flag only if  
3844          the key has such an item.          * wptRFC2440.cpp: Removed. We now use the OpenCDK package.
3845            * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.
3846  2004-10-01  Timo Schulz  <[email protected]>          (fm_encrypt): Modified code to allow sign & encrypt.
3847            (fm_parse_file): Ditto.
3848          * wptClipSignDlg.cpp: Really use the selected subkey with the          (fm_decrypt): Support for checking signatures.
3849          right '!' syntax. Thanks to Vedaal for pointing this out.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.
3850          * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device  
3851          is accessable and writeable, otherwise inform the user. Kudos to  2002-04-19      Timo Schulz <[email protected]>
3852          the one who reported this problem.  
3853            * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.
3854  2004-10-07  Timo Schulz  <[email protected]>  
3855    2002-04-05      Timo Schulz <[email protected]>
3856          * wptErrors.cpp (winpt_errmsg): Use a generic header when no  
3857          filename is supplied.          * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.
3858          * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.
3859          an error message which is more clean. Thanks to Ralf.          * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.
3860          * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.
3861          admin mode.  
3862          * wptKeySignDlg.cpp (do_check_protection): Also check for smart  2002-03-31      Timo Schulz <[email protected]>
3863          card protection.  
3864          (get_keyinfo): Return if this is a smart card key.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to
3865          * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before          select the key used for signing.
3866          comparing the names.          * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.
3867          * winpt.cpp: Now depends on PTD 0.7.1.          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).
3868            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after
3869  2004-10-15  Timo Schulz  <[email protected]>          fetching keys via HKP and try to update the Gpgmekey inside.
3870            * wptVerifyList.cpp (verlist_add_sig): Check if the key context was
3871          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt          set inside the signature. Fixes some segfaults related to the HKP key
3872          is really initialized.          fetching during verification. Thanks to Julian. And force to use UTF8
3873            for user ID's.
3874  2004-10-25  Timo Schulz  <[email protected]>          * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,
3875            prevent that the dialog is loaded and ask for the passphrase directly.
3876          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box  
3877          if the PGP message is complete but broken during the transport.  
3878          Thanks to Werner and Achim.  2002-03-29      Timo Schulz <[email protected]>
3879          * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks  
3880          to the gnupg-users.          * wptGPG.cpp (create_groupdb): Only close the file handling if it
3881          * Automatically add '\r\n' to the text before signing. This solves          really exists. Thanks to Mark.
3882          the problem the last line is not included if no \r\n is present.          (gpg_check_homedir): Applied the patch. Now we're a little stricter
3883          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode          about the homedir checks.
3884          which prepends the text with '> '. This makes it easier to quote          (check_homedir): Fixed a possible memory leak.
3885          decrypted text.          * WinPT.cpp (WinMain): Check the homedir functions to exit the program
3886          * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored          if      we've found some problems.
3887          out from..          * wptErrors.cpp (winpt_strerror): New value if a directory could not
3888          (keyserver_dlg_proc): ..here.          created.
3889            * wptMainProc (winpt_main_proc): Use new code for the current window mode.
3890  2004-11-04  Timo Schulz  <[email protected]>          * wptCurrWnd.cpp (get_curr_wnd): Ditto.
3891            (get_window_contents): Always set focus to the current window.
3892          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred  
3893          keyserver sub packets.  2002-03-22      Timo Schulz <[email protected]>
3894    
3895          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to          * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't
3896          indicate we need to reload the cache. If a user deletes a key          set window contents for some commands.
3897          and exits the manager and loads it again the deleted key is          (winpt_main_proc): Use the code here.
3898          still in cache and provoked an error.          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.
3899                    * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.
3900          * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.
3901            * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.
3902          * wptW32API.cpp (center_window): Replaced with real code which calculates  
3903          the position relative to the desktop window.  2002-03-02      Timo Schulz <[email protected]>
3904    
3905  2004-12-02  Timo Schulz  <[email protected]>          * Use capital letters in the main menus and applied Patricks spelling
3906            corrections.
3907          * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.  
3908            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string
3909  2004-12-11  Timo Schulz  <[email protected]>          not an integer. Thanks to scrumpy.      
3910            * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.
3911          * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect          (overwrite): Some bugfixes to set the pointer to the begin of the file.
3912          the file type.          * wptVerlist.cpp (verlist_build): New keyID column.
3913          (fm_parse_command_line): Likewise.          (verlist_add_sig): Use it here.
3914    
3915  2004-12-15  Timo Schulz  <[email protected]>  2002-03-01      Timo Schulz <[email protected]>
3916    
3917          * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right          * wptWipeFile: Replaced all low level I/O functions with W32 API
3918          temp name.          functions. And support for more wiping modes. I don't know to
3919          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button          support all, but those makes sense for me:
3920          when no secret key is available.          1. Simple (2 random passes)
3921            2. DoD (as described in the standard)
3922  2004-12-20  Timo Schulz  <[email protected]>          3. Peter Gutmanns method (from the paper)
3923    
3924          * wptGPG.cpp (check_gnupg_engine): Fixed version checking.  
3925          * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the  2002-02-28      Timo Schulz <[email protected]>
3926          cache if it is not valid.  
3927                    * wptImplist.cpp (implist_add_key): UTF8 support.
3928          Fix problem with a NULL pointer.          Handle invalid userID's.
3929            * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.
3930  2004-12-30  Timo Schulz  <[email protected]>          (passphrase_callback_proc): Ditto.
3931    
3932          * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.  
3933          This fixes the problem that the dialog crashes when the user selects  2002-02-23      Timo Schulz     <[email protected]>
3934          anything. Thanks to my users.  
3935          (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.          * wptListview.cpp (listview_del_items): New.
3936                    * wptKeyManager.cpp (km_delete_keys): Use it here.
3937  2005-01-07  Timo Schulz  <[email protected]>          * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.
3938            * wptKeylist.cpp (add_key): UTF8 support.
3939          * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.  
3940          (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.  2002-02-08      Timo Schulz <[email protected]>
3941          (ldap_recvkey): Likewise.  
3942          (check_hkp_response): Be more liberal with error strings.          * wptNLS.c: Now it's C-source because GPGME needs gettext too.
3943          (kserver_connect): Prevent buffer overflow and use the right return          (stpcpy): Makes it static.
3944          code for inet_addr().          * errors.c: localize all error strings.
3945          (kserver_search_chkresp): New.          * WinPT.cpp (get_gettext_lang): Move the code in this file because
3946          (kserver_search): Fixed. Now it works with modern keyservers.          we can't use it in plain C.
3947          * wptKeylist.cpp (seclist_init): Add new flags param.  
3948          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key  2002-02-05      Timo Schulz <[email protected]>
3949          listing.  
3950          * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.          * wptGPG.cpp (gpg_save_options): Catch the case when the options file
3951          * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.          exist but it has a length of zero.
3952          * WinPT.cpp (WinMain): call GPGME init.          (gpg_display_error): Print out the data from the GPG stderr
3953          Reword the 'you have no keyring' problem and revamp the first run dialog.          (when available).
3954          * wptGPG.cpp (gnupg_access_keyring): New.          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if
3955          (gnupg_check_keyring): Removed unused code.          not, return NULL.
3956          * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret
3957          new texts and remove unused elements.          keys.
3958          * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The  
3959          last annoying typo.          * Fixed a lot of memory allocation all over the place.
3960          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of  
3961          an error.  2002-02-05      Timo Schulz <[email protected]>
3962            
3963  2005-01-08  Timo Schulz  <[email protected]>          wptGPG.cpp (gpg_save_options): Fixed the code for the case the
3964            values don't exist in the options file. Thanks to Lutz who found this out.
3965          * Applied the patches to make the source G++ compatible.          (get_gpg_default): First search for "default-key" then for "encrypt-to".
3966          * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.  
3967          * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.  2002-02-04      Timo Schulz <[email protected]>
3968          * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.  
3969            * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements
3970  2005-01-10  Timo Schulz  <[email protected]>          which need it. Thanks to Timo who find this out.
3971            * WinPT.cpp (WinMain): We don't quit in the case the user changed
3972          * WinPT.cpp (load_gettext): New.          the preferences.
3973          (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.          (update_keycache): New. Handy function to update the keycache.
3974    
3975  2005-01-20  Timo Schulz  <[email protected]>          * Use quotation for the options file in any case.
3976    
3977          * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status
3978          keyring check. If the file exists, it is enough.          is set, we don' try to get the sig key.
3979          * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.  
3980          Several cleanups and allow to specify the port of the keyserver.          * wptGPG.cpp (get_gpg_default_key): Revamped.
3981          * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure  
3982          the application terminates clearly when Windows shutdown.  2002-01-26      Timo Schulz <[email protected]>
3983    
3984  2005-01-21  Timo Schulz  <[email protected]>          * wptKeylist.cpp (keylist_add_key): Use flags for the file manager
3985            to avoid to show all userid's. Thanks to Frank.
3986          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys          * wptDateDlg.cpp (date_dlg_proc): New context to use different
3987          which are not in the keyring. Suggested by djek.          window texts and some other features.
3988          * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic          * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.
3989          'Always on Top'.          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.
3990          Allow to send encrypted files via MAPI.                  * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if
3991          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache          it doesn't exist.
3992          if the HKP retrieval succeeded.          * WinPT.cpp (WinMain): Use the new code here.
3993          * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer  
3994          is not NULL.  2002-01-23      Timo Schulz <[email protected]>
3995          * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with  
3996          a header similar to 'gpg -k name'.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for
3997          * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible          loading a file.
3998          with 'Always on Top' windows.          Add new code to save file with clipboard contents.
3999          * wptFileManager.cpp (fm_parse_files): Set progress callback for  
4000          wiping files.  2002-01-20      Timo Schulz <[email protected]>
4001          (fm_add_opened_files): Do not add the file in case of an error.  
4002          * wptKeyserverDlg.cpp (kserver_get_port): New.          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user
4003          (save_default_ks): Save port.          have to click twice before the menu appears. Richard told me this.
4004          * wptKeyserver.cpp (set_default_kserver): Get port or use default.  
4005          (kserver_connect): Logging.  
4006          (kserver_send_request): Likewise. Thanks to Markus.  2002-01-18      Timo Schulz <[email protected]>
4007          * wptError.cpp (w32_fmt_msg): New.  
4008          (winpt_strerror): Show the W32 API error if the hotkey could not          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.
4009          be registered.          * wptPassphraseCB.cpp (parse_gpg_description): Support when no
4010            description was given. One example is when symmetric was used.
4011  2005-01-25  Timo Schulz  <[email protected]>  
4012    2002-01-13      Timo Schulz <[email protected]>
4013          * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default  
4014          and that all values are 7-bit ASCII.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche
4015          Use '*' for the passphrase field.          settings.
4016          * wptGPG.cpp (multi_gnupg_path): New.          * wptGPG.cpp (gpg_backup_options): New.
4017          (get_gnupg_path): Use it here.          (gpg_load_options): Ignore comment lines.
4018          (check_homedir): Likewise.          (gpg_save_options): Rewritten.
4019          * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port  
4020          is actually set.  2002-01-06  Timo Schulz <[email protected]>
4021          * wptFileManager.cpp (fm_clearsign_8bit): New.  
4022          (fm_parse_files): Check if the file to clearsign is really 7-bit.      * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt
4023          Thanks to djek.      hotkey.
4024          (fm_set_ftype): Factored out some code from...          * wptRegistry.cpp: Ditto.
4025          (fm_add_dropped_files): ...here. Simplied the code.          * wptRegistry.h: Ditto.
4026          (fm_add_dir_files): New.          * wptHotkey.h: Ditto.
4027          * Removed MD5 from MyGPGME and the new default sym cipher is AES.          * wptGPG.cpp (gpg_load_options): New.
4028          * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var          (gpg_save_options): New.
4029          to track the window handle.  
4030          (progress_cleanup): Try to close tracking handle first.  2002-01-01      Timo Schulz <[email protected]>
4031    
4032  2005-01-26  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_verify): Support for the case there is
4033            no public key to verify the signature.
4034          * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.  
4035          * wptKeyManagerDlg.cpp: Add 'Select All' feature.  2001-12-30      Timo Schulz <[email protected]>
4036          Move 'Edit->Key' to 'Key->Edit'.  
4037          * wptFileManagerDlg.cpp: Likewise.          * wptFileManager.cpp (fm_sign): Always use callbacks for the
4038          * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.          passphrase.
4039          * wptKeyManager.cpp (spawn_loadimage): Removed.          (fm_decrypt): Ditto.
4040          (km_show_photo): Removed.          (fm_parse_files): Cache the passphrase for the session and check
4041          * wptRevokersDlg.cpp (revokelist_init): Fixed index.          if the file still exists.
4042          * wptErrors.cpp (winpt_strerror): Show system error for registry          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use
4043          related problems.          low level stuff here.
4044            * wptFile.cpp (get_keyid_from_file): Ditto.
4045  2005-02-02  Timo Schulz  <[email protected]>  
4046    2001-12-21      Timo Schulz <[email protected]>
4047          * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise  
4048          it is invisible.          * wptTextInputDlg.cpp (text_input_dlg_proc): New.
4049          * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric          * wptMainProc (clip_gpg_dlg): Support for deached signatures.
4050          passphrases.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
4051          * Enable the progress dialog for symmetric encryption.  
4052          * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in  2001-12-19      Timo Schulz <[email protected]>
4053          FM_ENCRYPT mode.  
4054          * WinPT.cpp (WinMain): SETUP_EXISTING implemented.          * Completed work on the temporary file support for GPG.
4055          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when          * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the
4056          no value is entered.          plaintext viewer option. Suggested by Markus Winkler.
4057            (get_reg_winpt_prefs): Ditto.
4058  2005-02-04  Timo Schulz  <[email protected]>          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.
4059            * wptMainProc.cpp (winpt_main_proc): Ditto.
4060          * wptProgressDlg.cpp (progress_cb_thread): Set root window if available.  
4061          If the progress window survives by accident, it will be closed when the  2001-12-15  Timo Schulz <[email protected]>
4062          File Manager (root window) is closed.  
4063        * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for
4064  2005-02-07  Timo Schulz  <[email protected]>      copy and paste.
4065    
4066          * wptFileManager.cpp (fm_parse_files): Do not use the progress dialog  2001-12-02      Timo Schulz <[email protected]>
4067          for signing and verifying. But this does not fix the problem tha the  
4068          dialog sometimes stay and is not destroyed.          * wptGroups.c: Revamped from the base. Arggg.
4069    
4070  2005-02-23  Timo Schulz  <[email protected]>  2001-11-29      Timo Schulz <[email protected]>
4071    
4072          * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.
4073          (kserver_search): Be more strict.          * wptMainProc.cpp (clip_gpg_dlg): New.
4074          * WinPT.cpp (WinMain): Enable FM progress by default.          Modify the whole event loop so we don't need all the same code
4075          * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.          for each command. And we use the new foreground code.
4076          (fm_parse_files): Use progress dialog only if it is          * wptW32API.cpp (check_date): Fixed.
4077          enabled.  
4078    2001-11-27      Timo Schulz <[email protected]>
4079  2005-03-03  Timo Schulz  <[email protected]>  
4080            * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP
4081          * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the          proxy authentifcation support for each command.
4082          new PIN. Suggested by Achim.          (kserver_update_proxyuser): New. Ditto.
4083          Support to show the unmasked PIN.          (kserver_send_request): Ditto.
4084          Modified TAB-order.          (kserver_recv_request): Ditto.
4085          * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.          (kserver_search_init): Ditto.
4086    
4087          * Fixed wrong GPG --command-fd strings. Thanks to Achim.  2001-11-24      Timo Schulz <[email protected]>
4088    
4089  2005-03-04  Timo Schulz  <[email protected]>          * wptKeyManager.cpp (km_groups_new): New.
4090            (km_groups_release): New.
4091          * GPG asks twice for the new PIN. Thanks to Achim.          (km_groups_load): Rewritten.
4092          * wptCardDlg.cpp (card_changepin_dlg_proc): Reset the 'safety' pin also.          (km_groups_add): New.
4093          Only check the passphrase if the backup flag is enabled. Again thanks to          (km_groups_del): New.
4094          Achim.          (km_groupdb_open): New.
4095            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.
4096  2005-03-06  Timo Schulz  <[email protected]>          * wptGroups.c (groupdb_enum_read): Store the record before increment it.
4097    
4098          * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without  2001-11-23      Timo Schulz <[email protected]>
4099          a public key. Noted by Kurt Fitzner.  
4100            * wptW32API.cpp (set_active_window): New.
4101  2005-03-22  Timo Schulz  <[email protected]>          (reset_active_window): New.
4102            (window_reminder): New. This is a delayed thread procedure to
4103          * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.          force the focus (foreground) to the dialogs for the current
4104          (enable_mobile_mode): New.          window mode.
4105          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new          * wptMainProc.cpp (winpt_main_proc): Use it here.
4106          ID's for adding subkeys.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.
4107            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4108  2005-04-04  Timo Schulz  <[email protected]>          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
4109            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
4110          * WinPT.cpp (check_crypto_engine): Correct version  
4111          check. Noted by Werner.  2001-11-22      Timo Schulz <[email protected]>
4112    
4113            * wptW32API.cpp (set_foreground_wnd): New.
4114    
4115            Fixed the return value of all EndDialogs.
4116    
4117            * wptMainProc.cpp: Remove all code parts which did the same for the
4118            current window support. Now the code uses a dialog switch which is
4119            much smaller.
4120    
4121    2001-11-18  Timo Schulz <[email protected]>
4122    
4123        * wptKeyManager.cpp: New. Contains all handy functions from the
4124        wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.
4125        (km_quote_uid): New.
4126        (km_check_for_seckey): New.
4127        (km_check_key_status): New.
4128        (km_clip_export): New.
4129        (km_clip_import): New.
4130        (km_file_export): New.
4131        (km_file_import): New.
4132        (km_delete_keys): New.
4133        (km_send_to_keyserver): New.
4134        (km_refersh_from_keyserver): New.
4135        (km_update_default_key_str): New.
4136            * wptKeygenDlg.cpp (ask_for_backup): New.
4137            (keygen_dlg_proc): Use new function to give the chance to the
4138            user for a complete backup.
4139    
4140    2001-11-13      Timo Schulz <[email protected]>
4141    
4142            * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry
4143            is set but to "". Then use default gpg directory.
4144            * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.
4145            (refresh_from_keyserver): New. Context entry for update keys.
4146            (keymisc_dlg_proc): Modify the way the popup is shown.
4147    
4148    2001-11-07      Timo Schulz <[email protected]>
4149    
4150            * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing
4151            the key id.
4152            * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret
4153            key imports.
4154            * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and
4155            the user doesn't set the field, try to do this automatically.
4156    
4157    2001-11-03      Timo Schulz <[email protected]>
4158    
4159            (fm_remove_crit_file_attrs): First check if the file exists.
4160            Thanks to Peter.
4161    
4162    2001-11-02      Timo Schulz <[email protected]>
4163    
4164            * WinPT.cpp (WinMain): Add the chance to start the preferences dialog
4165            in the case a GPG error was detected.
4166            * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected
4167            keys.
4168    
4169    2001-10-30      Timo Schulz <[email protected]>
4170    
4171            * wptHotkey.h: Fixed typo. Thanks to Timo.
4172            * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.
4173            (get_gpg_default_key): Skip comment lines immediately.
4174            * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.
4175            * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure
4176            for subclassing.
4177    
4178            Remove all unsafe WM_NOTIFY stuff because this was propably the
4179            reason for the crashes. And add as a sanity check if the control
4180            sent the message.
4181    
4182    2001-10-28      Timo Schulz <[email protected]>
4183    
4184            * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support
4185            for ENTER/SPACE and DELETE. Suggested by Graham.
4186            * wptKeyList.cpp (add_key): New code to figure out how trustworthy
4187            a expired/revoked secret key is.
4188            (keylist_enum_recipients): Show the key ID of the key when it's
4189            revoked.
4190            * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not
4191            only the first to figure out if a secret is available. Thanks to
4192            Graham.
4193            * wptFile.cpp (get_keyid_from_file): Ditto.
4194    
4195    2001-10-27      Timo Schulz <[email protected]>
4196    
4197            * wptKeylist.cpp (keylist_enum_recipients): Add a type to make
4198            the code more flexible.
4199            * wptKeyMiscDlg.cpp (file_import): New.
4200            (file_export): New.
4201            * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.
4202    
4203            Removed all OE code snippets.
4204    
4205    2001-10-26      Timo Schulz <[email protected]>
4206    
4207            * wptExtensions.cpp: Removed.
4208            * wptLDAPExt.cpp: Removed.
4209            * wptLDAP.cpp: New. This code now contains a direct interface to
4210            the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.
4211            (wldap_init): New.
4212            (wldap_end): New.
4213            (ldap_set_verbose): New.
4214            (ldap_get_key_info): New.
4215            (ldap_recvkey): New.
4216            (init_ldap): New. Internal use only.
4217            (get_key): New. Ditto.
4218            (send_key): New. Ditto.
4219            * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.
4220    
4221    2001-10-25      Timo Schulz <[email protected]>
4222    
4223            * wptGPG.cpp (get_gpg_default_key): Support for the users options file.
4224            (check_gpg_path): Ditto.
4225            (get_gpg_options): Ditto.
4226            (set_gpg_default_key): Ditto.
4227            (set_gpg_options): Ditto.
4228            (gpg_check_keyring): Ditto.
4229            (set_gpg_default_keyid): Fix a typo.
4230            * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.
4231    
4232    2001-10-23      Timo Schulz <[email protected]>
4233    
4234            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while
4235            because it's shorter.
4236            * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of
4237            the default keyid.
4238            * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now
4239            we use the signer from the keylist.
4240            * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix
4241            some silly bugs.
4242            * WinPT.cpp (WinMain): if there is no valid keyring after the new
4243            preferences, start the key generation dialog.
4244    
4245    2001-10-22      Timo Schulz <[email protected]>
4246    
4247            Remove all MyGPGME code from the main project. Now we use the
4248            libmygpgme.dll to provide all cryptographic functions and interfaces.
4249    
4250            * wptKeylist.cpp (key_array_new): New.
4251            (key_array_release): New.
4252            (key_array_search): New.
4253            * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was
4254            already checked and don't bother the user if all userid's were selected.
4255            * wptPassphraseCB.cpp (passphrase_cb_init): Now void.
4256            (passphrase_cb_gpgme): Ditto.
4257            (passphrase_callback_proc): Support for a list of recipients.
4258            * wptImportList.cpp (implist_add_key): Support for secret keys.
4259    
4260    2001-10-19  Timo Schulz <[email protected]>
4261    
4262        * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various
4263        option files.
4264        * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and
4265        use a popup menu.
4266        * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE
4267        plug-in.
4268        (gpgoe_unload_plugin): New.
4269    
4270    2001-10-17  Timo Schulz <[email protected]>
4271    
4272        * wptCurrWnd.cpp (get_window_contents): Only minimize the window
4273        when the clipboard contains text.
4274        * wptKeylist.cpp (keylist_add_key): Check only for invalid keys
4275        in the mainloop. The other flags are checked in the various cases.
4276        (add_key): Use the ** foo ** notation for invalid flags instead of
4277        skipping the key.
4278        * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print
4279        out a warning.
4280        Change all error messages to one header.
4281        (check_key_status): Check if the key is valid in the sense of
4282        revocation and expire dates. If not, print out a warning.
4283        (keymisc_dlg_proc): Use the new code.
4284    
4285    2001-10-16  Timo Schulz <[email protected]>
4286    
4287        * wptW32API.cpp (check_date): New.
4288        (get_open_filename): New.
4289        * wptDlgs.cpp (init_dtp): New. Initialize a special common control.
4290        * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.
4291    
4292    2001-10-15  Timo Schulz <[email protected]>
4293    
4294        * wptFileManager.cpp (fm_wipe): New.
4295        (fm_set_status): Add temporary wipe status and handle default values.
4296        (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped
4297        files with a successful opeation.
4298        * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.
4299        (keygen_cb_thread): New. Static dialog thread.
4300        (keygen_cb_dlg_create): New. Interface.
4301        (keygen_cb_dlg_destroy): New. Destroy the dialog.
4302        (keygen_cb): GPGME interface.
4303    
4304    2001-10-13  Timo Schulz <[email protected]>
4305    
4306        Set all ListviewControls to 'NULL' in all dialogs to be more crash
4307        resistent.
4308    
4309        * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.
4310        * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.
4311        * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.
4312        * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
4313        * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.
4314        * wptStringUtil.cpp: Removed.
4315        * wptFileManager.cpp: Rewrote the complete interface code for
4316        the file manager.
4317        * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.
4318    
4319    2001-10-10      Timo Schulz <[email protected]>
4320    
4321            * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the
4322            file is longer then the keyid.
4323            (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the
4324            entry is an userid.
4325            * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file
4326            more then one time.
4327            (fm_add_dropped_files): Use it here.
4328        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common
4329        keys.
4330    
4331    2001-10-09  Timo Schulz <[email protected]>
4332    
4333        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return
4334        code of sunlink.
4335        * wptGPG.cpp (get_keyring_from_optfile): New.
4336        Renamed gpg_errstr to gpg_strerror.
4337        (set_default_key): New.
4338        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.
4339        
4340    2001-10-08  Timo Schulz <[email protected]>
4341    
4342        * wptKeyserver (kserver_connect): If the proxy settings are valid,
4343        use the proxy port instead of the HKP port.
4344        (kserver_recvkey): Proxy support.
4345        (kserver_search_init): Ditto.
4346    
4347    2001-10-06  Timo Schulz <[email protected]>
4348    
4349        * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.
4350    
4351    2001-10-05  Timo Schulz <[email protected]>
4352    
4353        * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.
4354        In the case it is, use the first userID.
4355        * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.
4356        Remove the Pos column and add a status column instead.
4357        Add expire stuff for subkeys.
4358        (init_dtp): Initialize the common control.
4359        * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file
4360        into the clipboard.
4361        * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description
4362        of the ownertrust value.
4363        (keyprops_dlg_proc): Fixed ownertrust handling.
4364    
4365    2001-10-04  Timo Schulz <[email protected]>
4366    
4367        * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.
4368        * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.
4369        Both were pointed out my Timo (not me ;-)).
4370        * wptKeylist.cpp (add_key): Fix a typo and now the code is more
4371        strict with returned attributes.
4372        * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface
4373        for local signatures.
4374    
4375    2001-09-28  Timo Schulz <[email protected]>
4376    
4377        * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle
4378        the double click messages.
4379        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
4380        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4381        * wptFileManager.cpp (overwrite_file): Check if the file exists and
4382        then let the user decide.
4383        (fm_encrypt): Use the code here.
4384        (fm_sign): And here.
4385        (fm_sym_encrypt): And here. Now we use the passphrase dialog.
4386        (fm_decrypt): And here.
4387        * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need
4388        a secure wipe.
4389    
4390        Make the memory checking more strict.
4391    
4392    2001-09-27  Timo Schulz <[email protected]>
4393    
4394        * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who
4395        discovered this.
4396        * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the
4397        passphrase.
4398        * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to
4399        the various other dialogs to make the use more easier.
4400        * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.
4401        * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.
4402    
4403    
4404    2001-09-26  Timo Schulz <[email protected]>
4405    
4406        * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.
4407        (listbox_get_cursel): Ditto.
4408    
4409    
4410    2001-09-23  Timo Schulz <[email protected]>
4411    
4412        * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.
4413        The same as the userid dialog.
4414        * wptWndSwitchDlg.cpp: Removed.
4415        * wptWipeExt.cpp: Removed. Code is now included.
4416        * wptGPGME.cpp (get_default_keyid): If the keyid from the options
4417        file is in the keycache.
4418        * wptKeylist.cpp (keylist_reload): New. Reload a keylist.
4419    
4420    2001-09-17  Timo Schulz <[email protected]>
4421    
4422        * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs
4423        who prevent the correct return value in the case of an clipboard error.
4424        (clip_parse_pgp_id): New. Returns the PGP message type.
4425        * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.
4426        (hotkey_single_register): Return correct error value.
4427        (hotkey_single_unregister): Ditto.
4428        * wptW32API.cpp (get_thread_id): Removed.
4429        (attach_thread_input): Ditto.
4430        (detach_thread_input): Ditto.
4431        * wptCurrWnd.cpp (get_window_contents): Store main and focused window
4432        for later use.
4433        (set_window_contents): Use the new code.
4434    
4435    2001-09-16  Timo Schulz <[email protected]>
4436    
4437        * wptExtensions.h: New. This file is now used for the extenion
4438        declarations.
4439        * wptExtensions.new: (register_extensions): New. Enumerate and
4440        load all possible extensions.
4441        (unregister_extentions): New. Release all loaded extensions.
4442        * wptKeyserver.cpp (kserver_load_conf): Added support for different
4443        keyservers. Currently only HTTP/LDAP.
4444        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.
4445        (hkp_recv_key): Ditto.
4446        * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents
4447        to set the focus.
4448        * (oe_check_recipient): New. Checks if the key is able to encrypt
4449        and valid in the sense of revocation.
4450    
4451    2001-09-14  Timo Schulz <[email protected]>
4452    
4453        * wptWAB.cpp: (wab_read): New. Interface to read all address book
4454        entries.
4455        (wab_open): New. Internal function to load the WAB.
4456        (wab_release): New. Release the WAB contexts.
4457        (wab_load): New. Load the contents of the WAB into a linked list.
4458        (addr_list_new): New. Linked address list.
4459        (addr_list_add): New.
4460        (addr_list_release): New.
4461    
4462    2001-09-13  Timo Schulz <[email protected]>
4463    
4464        * Revamped the whole plugin code for OE5.
4465        * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.
4466        (oe_plugin_releae): New.
4467        (oe_plugin_init): New. Searches for the OE main window and select
4468        all the recipients from the fields.
4469        (oe_get_msg): This code now uses the menu command id's to
4470        execute the commands.
4471        (oe_set_msg): Ditto.
4472        (oe_encrypt): Changed for the new code.
4473        * wptMainProc.cpp (wpt_main_proc): Re-activate the code.
4474        * wptHotkeys.cpp: Ditto.
4475        * Removed the hook project.
4476    
4477    2001-09-12  Timo Schulz <[email protected]>
4478    
4479        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.
4480        Thanks to Rich who pointed this out.
4481    
4482    2001-09-07  Timo Schulz <[email protected]>
4483    
4484        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.
4485    
4486    2001-09-05  Timo Schulz <[email protected]>
4487    
4488        * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.
4489        (clip_import): New. Handy function to import keys.
4490        * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase
4491        is too short.
4492    
4493    2001-09-04  Timo Schulz <[email protected]>
4494    
4495        * Rewrote most parts of the keymanager.
4496        * Ditto for the filemanager.
4497    
4498    2001-09-01  Timo Schulz <[email protected]>
4499    
4500        * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.
4501        These code is now part of the key manager.
4502        * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.
4503        * wptKeylist.cpp (get_key_algo): New.
4504        (get_key_created): New.
4505        (get_key_type): New.
4506        (get_key_size): New.
4507        (get_key_fpr): New.
4508        * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now
4509        a part of the keymanager.
4510    
4511    2001-08-31  Timo Schulz <[email protected]>
4512    
4513        * wptFileManager.cpp (fm_add_opened_files): New. Use a standard
4514        file open dialog instead of drag & drop.
4515        * wptHotkeys.cpp (hotkey_strerror): More detailed information which
4516        hotkey couldn't set up.
4517        (hotkey_register_single): Ditto.
4518    
4519    2001-08-30  Timo Schulz <[email protected]>
4520    
4521        * wptFilemanager.cpp (fm_encrypt): Add minor changes.
4522         (fm_decrypt): Ditto.
4523         (fm_sign): Ditto.
4524         (fm_verify): Make the code more modular.
4525         (fm_add_sig_stat): New. For new fm_verify code.
4526    
4527    2001-08-28  Timo Schulz <[email protected]>
4528    
4529        * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.
4530        * wptKeyserver.cpp (kserver_load_conf): Proxy support
4531        (kserver_connect): Ditto.
4532    
4533    2001-08-26  Timo Schulz <[email protected]>
4534    
4535        * wptFileManager.cpp (fm_entry_new): New.
4536        (fm_entry_release): New.
4537        (fm_state_new): New.
4538        (fm_state_release). New.
4539        (fm_get_current_file): New.
4540        * wptKeylist.cpp (strlist_add_recipients): New.
4541    
4542    2001-08-25  Timo Schulz <[email protected]>
4543    
4544        * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.
4545        (strlist_release): New. Release the linked list.
4546        (strlist_add): New.
4547    
4548    2001-08-21  Timo Schulz <[email protected]>
4549    
4550        * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it
4551        also supports "encrypt-to" entries as default keys.
4552        * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide
4553        secure wiping.
4554        (wipe_deinit_ext): New. Unload the DLL and free all pointer.
4555        (wipe_loaded_ext): New. Checks wether the DLL was loaded.
4556        * wptW32API.cpp (set_menu_state): New.
4557    
4558    2001-08-20  Timo Schulz <[email protected]>
4559    
4560        * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.
4561        * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable
4562        the hotkeys. Automatically enable or disable the hotkey field depend
4563        on the switch.
4564    
4565    2001-08-17  Timo Schulz <[email protected]>
4566    
4567        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only
4568        one by default.
4569        * wptKeyList.cpp (keylist_add_to_recipients): Ditto.
4570        * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram
4571        entry in the registry in the case it's missing (whenever it's possible!).
4572        (check_gpg_path): Rewrite parts of the code.
4573    
4574    2001-08-11  Timo Schulz <[email protected]>
4575    
4576        * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and
4577        separate the fingerprint from the othr information.
4578        * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the
4579        file, specified in the options line, does exist.
4580    
4581    2001-08-08  Timo Schulz <[email protected]>
4582    
4583        * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.
4584        Support for more configurations.
4585        * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.
4586        Add all strings to the translation suite.
4587        * Updated all NLS dialog strings.
4588        * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.
4589        * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,
4590        with a dynamic callback for the passphrase.
4591    
4592    2001-08-06  Timo Schulz <[email protected]>
4593    
4594        * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.
4595    
4596    2001-08-05  Timo Schulz <[email protected]>
4597    
4598        * wptKeylist.cpp (keylist_add_key): Change the schematics to support
4599        all keyids.
4600        * wptSigList.cpp (siglist_build): New. Interface code to load the
4601        signature list.
4602        * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.
4603    
4604    2001-08-03  Timo Schulz <[email protected]>
4605    
4606        * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now
4607        we support this code in the key manager.
4608        * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.
4609        * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):
4610        Removed. The code moved into the main functions.
4611        (kserver_send), (kserver_recv): Ditto.
4612        (sock_write): Improved code.
4613        (sock_read): Ditto and some additional timeout.
4614        (sock_select): New. Figure out the socket state.
4615        (kserver_search_init): New. Make connection to the server.
4616        * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new
4617        keyserver code.
4618        * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker
4619        packet. Thanks to Alan.
4620        (check_for_symenc_data): Ditto.
4621        * wptFileManager.cpp (fm_get_file_type): Ditto.
4622        (fm_decrypt): Move the keycache in the if loop and fix the keycache
4623        type.
4624    
4625    2001-08-02  Timo Schulz <[email protected]>
4626    
4627        * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.
4628        Useful in the case the file was generated but it's empty.
4629        * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.
4630    
4631    
4632    2001-08-01  Timo Schulz <[email protected]>
4633    
4634        * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible
4635        request for uploading a key.
4636        (kserver_send_request): Use the urlencode to send the key.
4637        (sock_read): New. Improved read function to replace recv.
4638        (sock_write): New. Improved write function to replace send.
4639        * wptFileManager.cpp (fm_get_file_type): If the data is armored,
4640        call fm_check_armor_type().
4641        (fm_check_armor_type): New. Figure out the armor type of the data.
4642        * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the
4643        buttons. Optimized the code.
4644    
4645    2001-07-30  Timo Schulz <[email protected]>
4646    
4647        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code
4648        for the agent.
4649        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4650    
4651    2001-07-29  Timo Schulz <[email protected]>
4652    
4653        * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating
4654        a key revocation certificate. Add a hint to show how sentensive this
4655        data is.
4656        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the
4657        revocation.
4658        * wptAgent.cpp: Source for the server interface removed.
4659        (agent_is_avail): New. Checks if the agent is available.
4660        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code
4661        for the agent.
4662    
4663    2001-07-26  Timo Schulz <[email protected]>
4664    
4665        * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring
4666        exists. Useful if the keyring was moved during some commands.
4667        * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to
4668        Rich to discover this.
4669    
4670    2001-07-25  Timo Schulz <[email protected]>
4671    
4672        * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect
4673        serious GPG errors.
4674        * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.
4675        Suggested by Graham.
4676        (fm_decrypt): Change code to support symmetric decryption.
4677        (fm_get_file_type): Fixed some typos.
4678    
4679    2001-07-24  Timo Schulz <[email protected]>
4680    
4681        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after
4682        reloading the keycache. Fixed the memory leaks. Thanks to Andreas.
4683        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform
4684        the user about errors.
4685        * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure
4686        in our own context.
4687        (treeview_insert_item): New. Handy function to insert an entry.
4688        (treeview_create_child_item): New. Insert a trustlist node.
4689        (treeview_add_trustpath): New. Add recursively the whole trust path
4690        int the tree view.
4691        * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the
4692        signature list contains entries with a NOKEY status.
4693        (recv_missing_keys): New. Receive all keys with a NOKEY as the signature
4694        status.
4695        * wptImportList.cpp (implist_load): New. Initialize the listview item
4696        with an import overview.
4697        * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead
4698        of the code.
4699        (print_import_status): Summarize the results. We need this because file
4700        import needs the same function.
4701        * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the
4702        file manager.
4703        * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key
4704        import from file.
4705        * wptFileManager.cpp (fm_import): New. Ditto.
4706        * wptKeyserver.cpp (kserver_connect): Take care for some return values
4707        and set the socket to non blocking mode.
4708        Moved the Winsock2 init code to wptMainProc.cpp
4709        * wptMainProc.cpp (wpt_main_proc): Wsock2 code.
4710        * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.
4711    
4712    2001-07-22  Timo Schulz <[email protected]>
4713    
4714         * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.
4715         (get_key_created): New. Transform ulong timestamp to ascii.
4716         (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).
4717         (get_key_size): New. Returns a formatted size depend (depend on subkeys).
4718         * wptSigList.cpp (siglist_add_key): Fix the timestamp.
4719         * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace
4720         this with list trust path.
4721         * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function
4722         because we always check the signatures.
4723         * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.
4724        
4725    2001-07-21  Timo Schulz <[email protected]>
4726    
4727        * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in
4728        the case of IDCANCEL.
4729        * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
4730        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair
4731        pair and only if activate the passphrase dlg items.
4732        Do sanity checks for all buttons that require key pairs.
4733        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.
4734        
4735    2001-07-20  Timo Schulz <[email protected]>
4736    
4737        * wptKeyserver.cpp: (kserver_send_request): Correct the octect length
4738        of the request.
4739        (check_hkp_response): If an error ocurred, copy the error message into
4740        the static buffer.
4741        (kserver_strerror): Interface for the static error buffer.
4742        * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message
4743        box.
4744        (hkp_send_key): Add more verbose messages at the end.
4745        (hkp_recv_key): Ditto.
4746        (check_pattern): Rewrote the entire code to be more bug proof.
4747        * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate
4748        that the recipient list contains untrusted entries.
4749        * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to
4750        force GPG to add the need options.
4751        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4752    
4753    2001-07-19  Timo Schulz <[email protected]>
4754    
4755        * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more
4756        detailed error messages in the case for a missing key or an included
4757        signature.
4758    
4759    2001-07-17  Timo Schulz <[email protected]>
4760    
4761        * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox
4762        and increment the 'cols' variable inside the structure for further use.
4763        (add_key): Watch for the 'cols' variable to figure out how much columns
4764        are used.
4765        * wptListView.cpp (listview_set_ext_style): Set an extended style for
4766        the given listview.
4767        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the
4768        selected server.
4769        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
4770        * wptKeyserver.cpp (kserver_connect): IP address support. This is faster
4771        and no DNS lookup is needed.
4772    
4773    2001-07-14  Timo Schulz <[email protected]>
4774    
4775        * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding
4776        it to the signing keylist.
4777        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase
4778        is empty.
4779        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4780    
4781    
4782    2001-07-13  Timo Schulz <[email protected]>
4783    
4784        * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to
4785        the request. Arggg!
4786        (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.
4787    
4788    
4789    2001-07-12  Timo Schulz <[email protected]>
4790    
4791        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,
4792        just quit without any messages. Suggested by Rich.
4793    
4794    
4795    2001-07-11  Timo Schulz <[email protected]>
4796    
4797        * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add
4798        the integer.
4799        (keyserver_create_conf): Create a config file instead of the error.
4800        * wptGPG.cpp (create_gpg_options): If the file doesn't exist create
4801        a default file. This prevents confusing error messages.
4802        (get_gpg_options): Use new code.
4803        * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells
4804        the user how to find the files.
4805    
4806    2001-07-05  Timo Schulz <[email protected]>
4807    
4808        * wptHotkey.cpp (mod_hotkeys): Fix a small typo.
4809    
4810    2001-07-04  Timo Schulz <[email protected]>
4811    
4812        * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key
4813        if the user agree.
4814        * wptKeylist.cpp (keyload_load): Use the mode from the param, not
4815        the hardcoded.
4816        * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.
4817        Rename 'load' to 'reload' to make sense with the new code.
4818        * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the
4819        registry stuff.
4820        * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.
4821        (get_reg_winpt_prefs): Ditto.
4822        (regist_inst_winpt): Remove the old code.
4823        (register_single_filetype): Replacement for the old code.
4824    
4825    2001-07-01  Timo Schulz <[email protected]>
4826    
4827        * wptFileManager.cpp (fm_verify): New.
4828        (fm_decrypt): New.
4829        * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.
4830    
4831    
4832    2001-06-30  Timo Schulz <[email protected]>
4833    
4834        * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase
4835        code.
4836        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
4837        * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.
4838        * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.
4839        (fm_delete): New.
4840        (fm_encrypt): New.
4841        (fm_get_current_pos): New.
4842        (fm_get_file_type): New.
4843        (fm_add_dropped_files): New.
4844    
4845    2001-06-29  Timo Schulz <[email protected]>
4846    
4847        * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent
4848        to send data to the clipboard.
4849        * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to
4850        destroy the window immediately.
4851        * wptKeyserver.cpp (kserver_getip): Removed.
4852        (kserver_get_langname): Removed.
4853        (kserver_load_conf): New. Load the keyserver.conf file and set the
4854        included keyserver addresses into the global context.
4855        * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the
4856        keyserver context.
4857        * wptImplist.cpp (get_key_date): New. Transform integer timestamp
4858        to ISO date.
4859        (implist_add_key): Now it uses the context instead of all single
4860        variables.
4861    
4862    2001-06-28  Timo Schulz <[email protected]>
4863    
4864        * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new
4865        flag variables to support RFC1991.
4866        (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.
4867        (get_rfc1991_pktlen): Ditto.
4868    
4869    2001-06-27  Timo Schulz <[email protected]>
4870    
4871        * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.
4872        (get_pkt_len): New. Extract the OpenPGP packet length.
4873        (parse_pke_sesskey): Read a public key encrypted session key
4874        but without data.
4875        * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the
4876        filename contains spaces. Just to make GPG happy.
4877        (file_manager_dlg_proc): Check if the file exist after encryption.
4878        * wptFile.cpp (get_keyid_from_file): Checks the file for an valid
4879        packet and then extract the keyid.
4880    
4881    2001-06-25  Timo Schulz <[email protected]>
4882    
4883        * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with
4884        the contents from the given cache context.
4885        (keylist_add_to_recipients): New. Add the selected keys to the
4886        recipient set.
4887        * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist
4888        function to load the listview.
4889        * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.
4890        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4891        * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid
4892        and the keyid hint.
4893    
4894    2001-06-24  Timo Schulz <[email protected]>
4895    
4896        * wptGPG.cpp (get_gpg_path): Add null termination to the string.
4897        Thanks to Jonathan who pointed this out.
4898        (get_gpg_prog): Ditto.
4899        (gpg_check_file_ext): Check the file extension for the given GPG
4900        type.
4901        (get_gpg_default_keyid): Return null if there isn't an entry in the
4902        options file.
4903        * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx
4904        style functions.
4905        * wptImpList.cpp (implist_add_key): Ditto.
4906        * wptSigList.cpp (siglist_add_key): Ditto.
4907        * wptVerifyList.cpp (verlist_add_key): Ditto.
4908    
4909    2001-06-23  Timo Schulz <[email protected]>
4910    
4911        * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the
4912        options file.
4913    
4914    2001-06-22  Timo Schulz <[email protected]>
4915    
4916        * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform
4917        keyserver seraching. As an additional feature it's also posible to
4918        import the keys directly.
4919    
4920    2001-06-18  Timo Schulz <[email protected]>
4921    
4922        * wptKeyserver.cpp (check_hkp_response): More detailed error check
4923        of the http response.
4924        (kserver_send_request): Debug mode now uses logfile.
4925        (kserver_recv_request): Ditto.
4926        (kserver_index_request): New. Create a request for a key index.
4927        (kserver_send): Now uses check_hkp_response.
4928        (kserver_recv): Ditto.
4929        (kserver_search): New. Start the key index loop.
4930        * wptKeyserverDlg.cpp (recv_key): Check if the key was really
4931        imported and received.
4932    
4933    2001-06-17  Timo Schulz <[email protected]>
4934    
4935        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the
4936        default key for signing.
4937    
4938    2001-06-16  Timo Schulz <[email protected]>
4939    
4940        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.
4941        Corrected return values.
4942        * wptErrors.cpp (winpt_strerror): Removed all unused error strings.
4943        * wptGPG.cpp (get_gpg_path): Change to default path and prevent
4944        buffer overflows.
4945        (get_gpg_prog): Ditto.
4946    
4947    
4948    2001-06-15  Timo Schulz <[email protected]>
4949    
4950        * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.
4951        Differ between the new keylist styles.
4952        * wptGPGME.cpp (keycache_xxx): Move the caching interface to this
4953        file. For an easier handling between dialogs and code.
4954        (keycache_rewind): New. Rewind a global keycache context.
4955        (keycache_next_key): New. Retrieve the next key from the keycache.
4956        (get_default_key): New. Return the default key, this is the secret
4957        key with the index 0.
4958        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key
4959        handling. Now the signer is set in any case. Prevent hanging GPG
4960        processes.
4961        * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.
4962        (vm_safe_init_noswap): New. Initialize safe memory with tail data.
4963        See source for more information.
4964        (vm_safe_free): New. Free all used pointer and burn all buffers.
4965        (vm_safe_get): New. Get the begin of the alloced buffer.
4966        (vm_safe_set_swapfile): New. Set global swapfile name.
4967        (vm_safe_create_swapfile): New. Creats a swapfile and set its
4968        contents to zero.
4969    
4970    2001-06-12  Timo Schulz <[email protected]>
4971    
4972        * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is
4973        a big letter, otherwise convert.
4974        (preferences_dlg_proc): Check hotkeys.
4975        * wptKeylist.cpp (add_keys): Static functions to add a single key.
4976        (keylist_add_key): Now it adds all subkeys to the dialog.
4977        (keylist_alloc): Remove because it's not needed any longer.
4978        * wptImportList.cpp (implist_alloc): Ditto.    
4979        * wptSigList.cpp (siglist_alloc): Ditto.
4980        * wptVerifyList.cpp (verlist_alloc): Ditto.
4981    
4982    2001-06-10  Timo Schulz <[email protected]>
4983    
4984        * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single
4985        hotkey.
4986        (mod_hotkeys): Take care of the enable flags.
4987        (register_hotkeys): Ditto.
4988        (unregister_hotkeys): Ditto.
4989        * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,
4990        don't try to modify hotkeys.
4991        * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to
4992        the foreground.
4993    
4994    2001-06-08  Timo Schulz <[email protected]>
4995    
4996        * wptHotkey.cpp (mod_hotkeys): Change code to support the new
4997        registry style.
4998        * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable
4999        single hotkeys. Suggested by Jonathan.
5000        * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable
5001        single hotkeys.
5002        * wptKeyserver.cpp (kserver_connect): Reset winsock error var.
5003        (keyserver_recv): Ditto.
5004        (keyserver_send): Ditto.
5005        (wsock_strerror): Returns a description of the winsock problem.
5006        * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer
5007        is valid.
5008    
5009    2001-06-07  Timo Schulz <[email protected]>
5010    
5011        * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,
5012        add windows title.
5013    
5014    2001-06-05  Timo Schulz <[email protected]>
5015    
5016        * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned
5017        buffer is valid. Remove the fixme, because it's possible that there
5018        were new cipher modules loaded.
5019        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the
5020        context is valid.
5021        * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.
5022        * wptW32API.cpp (status_box): New. Message box that is always forced
5023        to the foreground.
5024    
5025    2001-06-04  Timo Schulz <[email protected]>
5026    
5027        * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for
5028        the improved import status.
5029    
5030    
5031    2001-06-01  Timo Schulz <[email protected]>
5032    
5033        * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:
5034        Release context in the case of an error.
5035        * wptMainProc.cpp (wpt_main_proc): Fix typo.
5036        * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use
5037        a static gpg object array that contains all filenames.
5038    
5039    
5040    2001-05-27  Timo Schulz <[email protected]>
5041    
5042        * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.
5043        (get_reg_winpt_prefs): Ditto.
5044        * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the
5045        gpg process finished.
5046        * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to
5047        a humand readable date.
5048    
5049    
5050    2001-05-25  Timo Schulz <[email protected]>
5051    
5052        * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen
5053        user id. End the dialog if there was an error during the Gpgme operations.
5054        * wptClipboard.cpp (clip_istext_avail): First check if the pointer is
5055        valid and then look at the length. Avoid crashes for some texts.
5056    
5057    2001-05-21  Timo Schulz <[email protected]>
5058    
5059        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid
5060        management.
5061        * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids
5062        from a special key.
5063    
5064    2001-05-20  Timo Schulz <[email protected]>
5065    
5066        * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries
5067        to figure out if both parts are available.
5068    
5069    2001-05-19  Timo Schulz <[email protected]>
5070    
5071        * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey
5072        flag is set, also disable all input items.
5073        (disable_dlg_item): New. Disable dialog items (windows).
5074        * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys
5075        flag isn't set.
5076        * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as
5077        a result the code only sended parts of the key.
5078        * wptConfig.cpp: Removed. Not used any longer.
5079    
5080    2001-05-18  Timo Schulz <[email protected]>
5081    
5082        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various
5083        edit key commands. In the case the dialog was canceled, return without
5084        modifying anything.
5085        * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the
5086        signature. If it doesn't contain a valid key, do nothing.
5087        * wptMainProc: (wpt_main_proc): If the hotkey setup doesn't work, don't
5088        quit the program. In some cases the hotkeys are possible locked.
5089        * WinPT.cpp (WinMain): If there is an error with the gpg program/path,
5090        give the user the chance to start the GPG preference dialog.
5091        * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey
5092        support. Flag to disable all hotkeys. Reload new hotkeys (in the case
5093        they changed). Load the registry entry on startup.
5094        * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the
5095        stored registry entries.
5096    
5097    2001-05-13  Timo Schulz <[email protected]>
5098    
5099        * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist
5100        the function create it.
5101        (set_reg_winpt_prefs): Use the new function to set the subkey values.
5102        All functions now return WPTERR_REGISTRY instead of 1.
5103        Add some error handling to prevent errors in the registry.
5104        * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard
5105        hotkeys and the caching time.
5106    
5107    
5108    2001-05-12  Timo Schulz <[email protected]>
5109    
5110        * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption
5111        call.
5112    
5113    2001-05-11  Timo Schulz <[email protected]>
5114    
5115        * wptMainProc (wpt_main_proc): Change all related menu entries from
5116        Encrypt & sign to Sign & Encrypt. Added the command to the current
5117        window menu and the handling of the window messages.
5118        * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.
5119        * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT
5120        preferences in the registry.
5121        (get_reg_winpt_prefs): Read all preferences from the registry into
5122        the options context.
5123        * WinPT.cpp (WinMain): Read in the registry preferences at the begin
5124        and store it.
5125        * wptAgent.cpp (agent_init): Check if the environment variable
5126        GPG_AGENT_INFO is set, otherwise set it.
5127        (agent_is_running): Check wether the agent is running.
5128        (agent_start): Automated function that read all needed information
5129        from global variables.
5130    
5131    2001-05-10  Timo Schulz <[email protected]>
5132    
5133        * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve
5134        the handle of the specified window.
5135        * wptAgent.cpp (agent_timer_proc): Changed the agent interface
5136        to window messages instead of socket connections.
5137        * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog
5138        and menu entry.
5139        * wptPreferencesDlg.cpp: New.
5140    
5141    2001-05-09  Timo Schulz <[email protected]>
5142    
5143        * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.
5144        (gpga_readn): Read 'n' bytes from a socket.
5145        (gpga_open): Open the interface to the GPG-Agent.
5146        (gpga_close): Close the GPG-Agent socket.
5147        (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.
5148        (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,
5149        this keys will be remove from the GPG-Agent cache.
5150        (agent_delete_fpr): Remove a fingerprint from the cache.
5151        (agent_init): Clear the cache.
5152        (agent_timer_proc): Remove all stored passphrases which were
5153        requested through the chache.
5154    
5155    2001-05-08  Timo Schulz <[email protected]>
5156    
5157        * wptKeyserver.cpp (wsock_init): Replace the kserver init
5158        code which initialized the Wsock2 interface.
5159        (wsock_end): Ditto.
5160        * wptAgent.cpp: Remove the passphrase caching code and add
5161        the GPG agent code.
5162    
5163    2001-05-05  Timo Schulz <[email protected]>
5164    
5165        * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve
5166        the current window handle. This code doesn't use the hook DLL.
5167        Thanks to Oliver Nittka for his patch.
5168        * wptErrors.cpp (winpt_strerror): Fixed a small typo.
5169        * wptGPG.cpp (check_last_gpg_access): Remove debug code.
5170        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading
5171        scheme to prevent reloading the cache twice.
5172    
5173    2001-05-04  Timo Schulz <[email protected]>
5174    
5175        * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.
5176        * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):
5177        Move all the GPGME specific code to the main dialog. Now only
5178        the context values are set.
5179        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust
5180        code.
5181    
5182    2001-05-02  Timo Schulz <[email protected]>
5183    
5184        * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional
5185        subkeys for the mainkeys.
5186        * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground
5187        window flag.
5188        * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the
5189        addkey feature.
5190    
5191    2001-05-01  Timo Schulz <[email protected]>
5192    
5193        * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence
5194        to a window.
5195        (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.
5196        (wnd_msg_paste): New. Send the CTRL+v key sequence to a window.
5197        (wnd_msg_em_set_pos): Manipulate an edit multiline control text pos.
5198        * wptMainProc.cpp (wpt_main_proc): Fix some message string for
5199        the hotkey handling. Quit the program if a registration procedure
5200        failed.
5201        * wptErrors.cpp (log_box): Improved log handling to dump states
5202        of variables during regression tests.
5203    
5204    2001-04-30  Timo Schulz <[email protected]>
5205    
5206        * wptClipEditDlg.cpp: Now the dialog uses the Courier font to
5207        enhance the format of keys and other GPG data.
5208        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod
5209        flag after receiving a key.
5210        * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when
5211        no listbox entry was choosen.
5212        * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to
5213        the NLS suite.
5214        * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag
5215        instead of refresh the keycache.
5216    
5217    2001-04-29  Timo Schulz <[email protected]>
5218    
5219        * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.
5220        (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the
5221        adduid command.
5222        * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize
5223        the dialog with a KEY structure that holds the keyid and the userid.
5224        * wptWndHook.cpp: Remove the global context and use instead of it
5225        static variables. Put all static variables into the SHARED data
5226        segment in the DLL.
5227    
5228    2001-04-28  Timo Schulz <[email protected]>
5229    
5230        * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.
5231        So it's easier to update GPGME and we can use NLS to translate
5232        error strings.
5233        * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code
5234        because we only use it here.
5235        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'
5236        feature to the edit-key interface.
5237    
5238    2001-04-27  Timo Schulz <[email protected]>
5239    
5240        * wptCurrWnd.cpp (get_window_contents): Change the code for the last
5241        window concept. Thanks to Oliver.
5242        (set_window_contents): Add some stuff to set the position if the
5243        current window is an edit control.
5244        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'
5245        stuff.
5246        * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to
5247        create a new user id for a GPG key.
5248    
5249    2001-04-26  Timo Schulz <[email protected]>
5250    
5251        * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various
5252        edit-key commands.
5253        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit
5254        key code.
5255    
5256    2001-04-25  Timo Schulz <[email protected]>
5257    
5258        * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME
5259        callback system to pass the keyedit information to GPG.
5260        * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.
5261    
5262    2001-04-24  Timo Schulz <[email protected]>
5263    
5264        * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview
5265        item and set it to zero.
5266        * wptSignDlg.cpp (sign_dlg_proc): Ditto.
5267        * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.
5268        * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.
5269        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.
5270        (keymisc_dlg_proc): Provide the functionality to delete key pairs
5271        secret+public.
5272        * wptWndHook.cpp (is_winpt_wnd): Remove this function and put
5273        all code into (check_wnd).
5274        (check_wnd): Check if the window doesn't is a application related
5275        window.
5276    
5277    2001-04-23  Timo Schulz <[email protected]>
5278    
5279        * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality
5280        is not needed because all dialog windows are top level windows.
5281    
5282    2001-04-22  Timo Schulz <[email protected]>
5283    
5284        * wptGPG.cpp (check_last_gpg_access): Reset switch before testing
5285        the condition.
5286        * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate
5287        all children windows.
5288        (find_parent_wnd_proc): New. Callback to enumerate all parent windows.
5289        (find_window): New. Return if the specified windows as found.
5290        * wptW32API.cpp: (dialog_box_param): New. Alias with the additional
5291        feature to check if the dialog already exist (and then preventing
5292        the creation).
5293        * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with
5294        then new dialog_box_param function. Thanks to Martin who told me
5295        about this dialog problem.
5296        * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.
5297        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the
5298        new signature buttons.
5299    
5300    2001-04-21  Timo Schulz <[email protected]>
5301    
5302        * wptWndHook.cpp (install_cbt_hook): Remove the thread because the
5303        system already is into a DLL.
5304        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use
5305        instead of it a button to check the key signatures.
5306        * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp
5307        from the given gpg object.
5308        (check_last_gpg_access): New. Compare the last file timestamp with the
5309        new timestamp.
5310        (init_gpg_table): New. Initialize the table with gpg objects who shall
5311        be watched.
5312        (keyring_check_last_access): Use the new code.
5313        * wptCurrWnd.cpp (set_window_contents): Restore the window if it is
5314        now iconic.
5315        * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the
5316        current window stuff.
5317    
5318    2001-04-17  Timo Schulz <[email protected]>
5319    
5320        * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window
5321        belongs to the taskbar area.
5322        (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.
5323        (cbt_proc): Change code to include both functions.
5324        * wptCurrWnd.cpp (get_window_contents): Add switch if we use the
5325        foreground or the CBT window.
5326        * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the
5327        current window mode set the no_cbt variable.
5328        * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring
5329        was modified by an external program.
5330        * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external
5331        keyring changes.
5332    
5333    2001-04-16  Timo Schulz <[email protected]>
5334    
5335        * wptWndHook,cpp (cbt_proc): Compare process ids to differ between
5336        WinPT and normal windows.
5337        (install_cbt_hook): Add pid to the context.
5338    
5339    2001-04-14  Timo Schulz <[email protected]>
5340    
5341        * wptCurrWnd.cpp: (get_window_contents): Add an event to switch
5342        the windows. This is needed by the current code.
5343        (set_window_contents): Ditto.
5344        * wptWndSwitchDlg.cpp: (wndswitch_dlg_proc): Create a hidden dialog
5345        and force it to the foreground. This is the event needed by the code
5346        above.
5347        (create_wndswitch_event): Execute the dialog.
5348        * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey
5349        section. Add message entries for the code.
5350        * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE
5351        mailer code.
5352        (insert_window_from_clip): Ditto.
5353        * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add
5354        the event to switch the windows.
5355        (oe_get_message): Ditto.
5356    
5357    2001-04-13  Timo Schulz <[email protected]>
5358    
5359        * wptMailPlugin.cpp: (oe_set_message): Change the id's for
5360        the attach_thread_input.
5361        (oe_get_message): Ditto.
5362        * wptCurrWnd.cpp: (get_window_contents): Ditto.
5363        (set_window_contents): Ditto.
5364    
5365    2001-04-12  Timo Schulz <[email protected]>
5366    
5367        * wptHotkeys.cpp: (register_single_hotkey): Add code for the current
5368        window stuff.
5369        * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window
5370        hotkeys.
5371        * wptW32API.cpp: (attach_thread_input): Split up the functions into
5372        two parts. The attach flags is always set.
5373        (detach_thread_input): See above. The attach flags is never set.
5374        * wptCurrWnd.cpp: New. Code for the current window stuff.
5375        (get_window_contents): Extract the text from the given window to
5376        the clipboard.
5377        (set_window_contents): Insert clipboard into the given window.
5378    
5379    2001-04-09  Timo Schulz <[email protected]>
5380    
5381        * wptGPG.cpp: (check_line): Ignore empty lines.
5382        (check_gpg_options): Ditto.
5383    
5384    2001-04-09  Timo Schulz <[email protected]>
5385    
5386        * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet
5387        type. Kludge for decrypt/verify.
5388        * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the
5389        code into the decrypt routine.
5390        * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start
5391        the key management after import.
5392    
5393    2001-04-07  Timo Schulz <[email protected]>
5394    
5395        * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.
5396        (agent_destroy): Ditto.
5397        (agent_passphrase_cache): Ditto.
5398        (agent_passphrase_remove): Ditto.
5399        (agent_passphrase_get): Ditto.
5400    
5401    2001-04-06  Timo Schulz <[email protected]>
5402    
5403        * wptGPG.cpp: (check_gpg_path): Fix a small error.
5404        * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the
5405        first time a user started WinPT.
5406        * wptClipboard.cpp: (clip_isalready_secured): Check the begin and
5407        end PGP header.
5408    
5409    2001-04-06  Timo Schulz <[email protected]>
5410    
5411        * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.
5412        * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the
5413        ownertrust dialog.
5414    
5415    2001-04-04  Timo Schulz <[email protected]>
5416    
5417        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static
5418        passphrase. Now a callback context is used.
5419        (passphrase_cb): Ditto.
5420        (clip_decrypt_dlg): Ditto.
5421        * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.
5422        (install_cbt_hook): Modify for the new thread model.
5423        (remove_cbt_hook): Ditto.
5424        * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.
5425        (delete_critical_section): Ditto.
5426        (lock): Ditto.
5427        (unlock): Ditto.
5428    
5429    2001-04-02  Timo Schulz <[email protected]>
5430    
5431        * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.
5432        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only
5433        contains valid keys.
5434        * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.
5435    
5436    2001-03-31  Timo Schulz <[email protected]>
5437    
5438        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,
5439        the GPG default key will be used.
5440    
5441    2001-03-30  Timo Schulz <[email protected]>
5442    
5443        * wptW32API.cpp: (new_strdup): Remove.
5444        * wptW32API.h: Ditto.
5445        * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.
5446        * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.
5447    
5448    2001-03-28  Timo Schulz <[email protected]>
5449    
5450        * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):
5451        Added the keyid to the "no trust" message.
5452        * wptKeyserverDlg.cpp: (check_pattern): New:
5453        Do some sanity checks of the search pattern.
5454        * wptMainProc.cpp: (wpt_main_proc): Add agent support.
5455        * wptHotkey.cpp: Add agent support.
5456    
5457    2001-03-21  Timo Schulz <[email protected]>
5458    
5459        * WinPT.cpp: (WinMain): Re-activate the enable debug switch.
5460        * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.
5461    
5462    2001-03-20  Timo Schulz <[email protected]>
5463    
5464        * wptClipDecryptDlg.cpp: Rewrote
5465    
5466    2001-03-19  Timo Schulz <[email protected]>
5467    
5468        * wptVerifyList.cpp: New control for the verify dialog.
5469        * wptClipVerifyDlg.cpp: Rewrote
5470    
5471    2001-03-18  Timo Schulz <[email protected]>
5472    
5473        * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.
5474        * wptAgent.cpp: New: Experimental passphrase caching.
5475    
5476    2001-03-16  Timo Schulz <[email protected]>
5477    
5478        * wptDlgs.h: Add new dialog callback function.
5479        * wptKeysigDlg.cpp: New. Key signature listing dialog.
5480    
5481    2001-03-15  Timo Schulz <[email protected]>
5482    
5483        * wptClipEncryptDlg.cpp: Fix translation.
5484        * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).
5485        * wptKeymiscDlg.cpp: Fix the key deleting stuff.
5486    
5487    2001-02-27  Timo Schulz <[email protected]>
5488    
5489        * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.
5490        * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):
5491        Fixed.
5492    
5493    2001-02-25  Timo Schulz <[email protected]>
5494    
5495        * wptGPGPrefsDlg.cpp: Add some new translation strings.
5496        * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.
5497        * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.
5498        * wptClipImportDlg.cpp: Finished basic interface.
5499    
5500    2001-02-24  Timo Schulz <[email protected]>
5501    
5502        * wptGPG.cpp: (check_gpg_path): Fix a bug.
5503       (check_gpg_options): Fix some bugs.
5504    
5505    2001-02-22  Timo Schulz <[email protected]>
5506    
5507        * wptGPG.cpp: (check_line): New. Check if the line contains a valid
5508        gpg argument.
5509        (check_gpg_options): New. Parses each buffer line to check_line().
5510    
5511    2001-02-21  Timo Schulz <[email protected]>
5512    
5513        * wptGPG.cpp: Fix the check_gpg_optfile() code.
5514            (gpg_errstr): Define some error constants to be more verbose.
5515            (set_gpg_options): New. Manipulate the options file.
5516            (get_gpg_options): New. Read in the options file.
5517        * wptFile.cpp: (get_file_size): New.
5518        * wptGPGOptDlg.cpp: New. Dialog for editing the options file
5519    
5520    2001-02-20  Timo Schulz <[email protected]>
5521    
5522        * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.
5523        * wptClipImportDlg.cpp: Add some new code.
5524    
5525    2001-02-19  Timo Schulz <[email protected]>
5526    
5527        * wptRegistry.cpp: (is_installed): Remove.
5528        (regist_inst_winpt): Add selfcheck.
5529        (regist_inst_gpg): New. Add gpg releated registry entries.
5530        (regist_inst_mo): New. Add nls related path.
5531        (get_reg_entry), set_reg_entry(): Modify to be more flexible.
5532        (set_reg_entry_gpg): Handy functions for get_reg_entry.
5533        (set_reg_entry_mo): Ditto.
5534        (get_reg_entry_gpg): Ditto.
5535        (get_reg_entry_mo(): Ditto.
5536        * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.
5537        * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.
5538        include keyring entries (2x)
5539        (check_gpg_path): Include the check_gpg_optfile() check.
5540    
5541    2001-02-17  Timo Schulz <[email protected]>
5542    
5543        * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from
5544        the registry.
5545        (set_reg_entry): Set a gnupg registry key.
5546        * wptGPG.cpp: Modify all function for the use with get_reg_entry().
5547        * WinPT.cpp: Change the way for the gpg searching mechanism.
5548        * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.
5549        * wptClipImportDlg.cpp: (key import dialog): New.
5550        * wptKeylistElement.cpp:
5551        (wpt_lv_implist_build): Build up the key import list.
5552        (wpt_lv_implist_add_key): Insert a key into the import list.
5553        (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.
5554    
5555    2001-02-10  Timo Schulz <[email protected]>
5556    
5557        * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.
5558        * wptKeylistElement.cpp: New.
5559        * wptListElement.cpp: Remove.
5560        * wptW32API.cpp: Insert all lv_*** functions.
5561        * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.
5562        (wpt_lv_keylist_release_keys): Ditto.
5563        * wptW32API.cpp: (w32_get_thread_id): New.
5564        (w32_attach_thread_input): New.
5565        * wptMailPlugin.cpp: (oe_get_message): Add thread attach mechanism.
5566        (oe_get_message): Add thread attach mechanism.
5567        (oe_encrypt): Modify for the attach treach mechanism.
5568        Add sanity check for recipients.
5569    
5570    2001-02-07    Timo Schulz <[email protected]>
5571    
5572        * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.
5573        * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.
5574    
5575    2001-02-04    Timo Schulz <[email protected]>
5576    
5577        * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.
5578        * wptMainProc.cpp: (wpt_main_proc):
5579        Remove ciphertext checks for signing and encrypting.
5580        (allow double encryption).
5581    
5582    2001-02-03  Timo Schulz <[email protected]>
5583    
5584        * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.
5585        (oe_find_addr_window): Ditto.
5586        (oe_find_main_window): Ditto.
5587    
5588    2001-02-02  Timo Schulz <[email protected]>
5589    
5590        * wptW32API.cpp: (w32_hit_key): New.
5591        (w32_rel_key): New.
5592        (w32_copy_to_clip): New.
5593        (w32_insert_from_clip): New.
5594        (w32_get_clip_text): New.
5595        (w32_set_clip_text: New.
5596        (w32_show_if_icon): New.
5597    
5598    2001-02-01 Timo Schulz <[email protected]>
5599    
5600        * wptW32API.cpp: (w32_get_edit_text): New.
5601        (w32_set_menu_text): New.
5602        (w32_strdup): New.
5603        * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.
5604        * Create all dialogs windows in the foreground.
5605    
5606    2001-01-31  Timo Schulz <[email protected]>
5607    
5608        * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.
5609        * wptW32API.cpp: New.
5610        * WinPT.cpp: (WinMain): Change the keyring checking code.
5611    
5612    2001-01-29  Timo Schulz <[email protected]>
5613    
5614        * wptClipboard.cpp: (clip_is_already_secure):
5615        Modify the pgp data detection.
5616    
5617    2001-01-28  Timo Schulz <[email protected]>
5618    
5619        * wptHotkey.cpp: (register_hotkey): Hotkey registration.
5620        (unregister_hotkey): Hotkey removing.
5621        * wptHokey.h: New.
5622        * wptWndHook.cpp:
5623        (wpt_cpt_proc): Window hook to save the current windows.
5624        * wptWndHoo.h: New.
5625        * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.
5626        * WinPT.cpp: (WinMain): Add hotkey registration.
5627    
5628    2001-01-21  Timo Schulz <[email protected]>
5629    
5630        * wptNLS.cpp: ported to C++.
5631        (gettext): Remove CP850 to ISO88591 conversation.
5632    

Legend:
Removed from v.8  
changed lines
  Added in v.201

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26