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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.12  
changed lines
  Added in v.384

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26