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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26