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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26