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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26