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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.14  
changed lines
  Added in v.179

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26