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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.19  
changed lines
  Added in v.231

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26