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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26