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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26