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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26