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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26