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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26