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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26