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

Diff of /trunk/Src/ChangeLog

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

revision 6 by twoaday, Mon Apr 4 06:59:24 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    
1744    2005-10-28  Werner Koch  <[email protected]>
1745    
1746            * wptProxySettingsDlg.cpp (check_number): Cast isdigit() arg to
1747            unsigned.  Never ever use a possible signed char as argument for
1748            ctype tests.  An alternative is to first test using isascii ().
1749            (keyserver_proxy_dlg_proc): Removed unused variable.
1750    
1751    2005-10-27  Timo Schulz  <[email protected]>
1752    
1753            * wptKeyPropsDlg.cpp (get_validity): Take care of disabled keys.
1754            * wptKeylist.cpp (keylist_add_key): Check global key flag to
1755            see if the key is disabled and not each subkey.
1756            (seclist_init): Likewise.
1757            * wptClipDecryptDlg.cpp (gpgme_op_clip_decrypt): Use
1758            gpgme_op_decrypt_verify.
1759            (clip_decrypt_dlg_proc): Fixed fingerprint
1760            to keyid conversation. This also fixes a crash.
1761            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
1762            * wptKeyEditDlgs.cpp (do_editkey_expire): Ask if the key
1763            already expired if the user wants to change the date.
1764            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Replace old
1765            'v3 sig' option with the 'ask cert level' option. Sync
1766            with global preferences.
1767            * wptKeySignDlg.cpp (keysign_dlg_proc): Watch if the
1768            gpg.conf contains 'ask-cert-level'. If not disable button.
1769            * wptKeySigDlg.cpp (keysig_dlg_proc): Automatically disable
1770            the button when the key is available.
1771            Reload key directly, not the entire cache.
1772            
1773    2005-10-26  Timo Schulz  <[email protected]>
1774    
1775            * wptFileManager.cpp (is_floppy_disc): Prevent very unlikely but
1776            possible overflow.
1777            (is_openpgp_ext): Compare case insentensive.
1778            (add_single_file): New.
1779            (fm_add_opened_files): Support multi file selection.
1780            * wptKeyPropsDlg.cpp (do_change_ownertrust): Removed.
1781            * wptKeyManager.cpp (km_enable_disable_key): Do not set cache
1782            reload flag. Just update the single key.
1783            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Remove static var
1784            and disable anonymize recipient for now.
1785    
1786            Begin to port code to GCC. Fix all warning issued by the gcc
1787            compiler.
1788    
1789    2005-10-25  Timo Schulz  <[email protected]>
1790    
1791            * wptGPGUtil.cpp (create_process): Hide window.
1792            * wptKeyPropsDlg.cpp (get_photo_tmpname): New.
1793            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Remove
1794            static var 'enable'.
1795            * wptKeygenDlg.cpp (keygen_dlg_proc): Likewise.
1796            (gpg_genkey_params): Make sure all primary keys are capable
1797            for signing and certification.
1798            * wptKeySigDlg.cpp (is_sig): If no item is selected, return 0.
1799            * wptGPG.cpp (gnupg_access_keyring): Check return value for
1800            NULL. Noted by Ralf.
1801            (get_gnupg_prog): Simplified.
1802            (check_homedir): Fixed. Return 0 when the dir is successfully created.
1803            * wptKeyManagerDlg.cpp (km_file_import): Use the hourglass to
1804            indicate a pending GPG process.
1805            * wptFileManager.cpp (op_begin, op_end): New. Indicate an start
1806            and and of an operation. For now just the cursor changes.
1807            (fm_parse_command_line): Remove debug output. Thanks to Ralf again.
1808            * WinPT.cpp (WinMain): Check if there is already an instance and
1809            set a variable early as possible.
1810            (load_gettext): If a previous instance was found, do not output
1811            any errors. Kudos to Ralf.      
1812    
1813    2005-10-24  Timo Schulz  <[email protected]>
1814    
1815            * wptPassphraseCB.cpp (passphrase_callback_proc): Allow to use
1816            pre-defined recipients.
1817            (release_gpg_passphrase_cb): Release recipients.
1818            * wptKeyPropsDlg.cpp (keyprops_load_photo): Set photo-id
1819            validity if needed.
1820            (keyprops_dlg_proc): Issue a warning if the photo is valid.
1821    
1822    2005-10-23  Timo Schulz  <[email protected]>
1823    
1824            * wptFileManager.cpp (fm_get_file_type): Detect detached sigs.  
1825            * wptKeyList.cpp (keylist_cmp_cb): Take care of expired/revoked keys.
1826            (get_ext_validity): New.
1827            * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Several cleanups.
1828            * wptClipEditDlg.cpp (load_clipboard): Factored out some code into
1829            this function.
1830            (load_clipboard_from_file): Likewise.
1831            (save_clipboard_to_file): New.
1832            * wptKeyManagerDlg.cpp (keyprops_dlg_proc): Fix stack overflow.
1833    
1834    2005-10-22  Timo Schulz  <[email protected]>
1835    
1836            Localized a lot of more strings.
1837    
1838            * wptMainProc.cpp (load_smartcard): New.
1839            * wptFileManager.cpp (fm_parse_command_line): Simplify code.
1840            (fm_check_armor_type): Add new arg. Change all callers.
1841            (fm_get_file_type): Likewise.
1842            * wptKeyPropsDlg.cpp (display_key_info): New.  
1843            (keyprops_show_photo): Factored out some code into..
1844            (keyprops_load_photo): ..this function.
1845    
1846    2005-10-21  Timo Schulz  <[email protected]>
1847    
1848            * wptFileManagerDlg.cpp (file_manager_dlg_proc): Use
1849            WM_INITPOPUPMENU to localize popup menu texts.
1850            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
1851            * wptClipSignDlg.cpp (one_key_proc): Use wipememory instead of memset.  
1852    
1853    2005-10-20  Timo Schulz  <[email protected]>
1854    
1855            Now WinPT depends on GPG 1.4.3 and GPGME 1.2.0.
1856    
1857            * wptPassphraseCB.cpp (passphrase_cb): Complete card support.
1858            * wptCardEdit.cpp (genKey): Handle cancel case.
1859            * keycache.c: Renamed into...
1860            * wptKeyCache.cpp: ...this.
1861            * wptW32API.cpp (set_menu_text): Removed unused code.
1862            (set_menu_text_bypos): New.
1863            * wptCrypto.h: New.
1864            * wptMainProc.cpp (winpt_main_proc): Complete localize
1865            menu texts.
1866            * wptErrors.cpp (log_debug): Use a static var so the file
1867            is only opened once.
1868            (debug_end): Cleanup. Currently just close the log file.
1869            * wptErrors.h (wipememory): New.
1870            (sfree_if_alloc): Use it here.
1871            * WinPT.cpp (WinMain): Display the min. GPGME version which
1872            is needed in case of an error.
1873    
1874    2005-10-17  Timo Schulz  <[email protected]>
1875    
1876            Free all memory returned by the GPGME dll with gpgme_free ().
1877    
1878            s/GPG_ERR_CARD_REMOVED/GPG_ERR_CARD_NOT_PRESENT.
1879    
1880            * wptKeyEdit.cpp (getCardStatus): Remove dummy key.
1881            (list_handler): With user interaction to allow to insert
1882            the card into the reader.
1883            * wptKeyEditCB.cpp (gpg_edit_card): Likewise.
1884            (common_card_handler): Fixed incorrect command string.
1885            * wptKeyPropsDlg.cpp (get_card_type): New.
1886            (keyprops_dlg_proc): Show card information if present.
1887            * wptFileManager.cpp (secret_key_available): Make the code faster.
1888            
1889    
1890    2005-10-16  Timo Schulz  <[email protected]>
1891    
1892            * wptPassphraseCB.cpp (passphrase_cb): Fix problem
1893            with hanging GPG process on cancel.
1894            * keycache.c (gpg_keycache_release): Release all objects.
1895    
1896    2005-10-15  Timo Schulz  <[email protected]>
1897    
1898            * wptCardEdit.cpp (setResult, getResult): New.
1899            (reset): New.
1900            (getCardStatus): Check return codes and release all objects
1901            in case of errors.
1902            * wptCardEditCB.cpp (change_pin_handler): Call reset()
1903            before quit.
1904            (editcard_handler): Likewise.
1905            (common_card_handler): New.
1906            * wptCardDlg.cpp (card_changepin_dlg_proc): Also unmask
1907            the old PIN when 'Hide Typing' is disabled.
1908            * wptPassphraseCB.cpp (passphrase_cb): The card detection
1909            works again. Support to re-enter passphrase.
1910    
1911    2005-10-14  Timo Schulz  <[email protected]>
1912    
1913            * wptCardDlg.cpp (card_status): New fields for the
1914            fingerprint creation time. Display card info as title.
1915            (get_printable_version): New.
1916            * wptCardEditCB.cpp (editcard_handler): Fix problem
1917            with the counter comparison.
1918    
1919    2005-10-11  Timo Schulz  <[email protected]>
1920    
1921            Port to GPGME basically finished.
1922    
1923    2005-09-20  Timo Schulz  <[email protected]>
1924    
1925            * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc):
1926            Do not use gpgme_recipients_t but the listview directly
1927            to add the selected files.
1928    
1929    2005-09-07  Timo Schulz  <[email protected]>
1930    
1931            * Make sure all GetOpenFileName filters are terminated by \0\0.
1932    
1933    2005-09-01  Timo Schulz  <[email protected]>
1934    
1935            * wptW32API.cpp (center_window): New argument for parent window.
1936            Change all callers.
1937            (center_window2): Likewise.
1938            * GPGME now can read gpgProgram entries with 'REG_EXPAND_SZ'.
1939            * wptGPG.cpp (gnupg_backup_options): Remove param. One backup
1940            file is enough. Changed all callers.
1941    
1942    2005-08-15  Timo Schulz  <[email protected]>
1943    
1944            * wptKeyEditDlgs.cpp (do_editkey_showpref): Take care of v3 keys.
1945            * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Fixed name of title.
1946            * Make sure the passphrase is always overwritten before it is
1947            freed (or the function returns).
1948            * wptKeyPropDlg.cpp (get_pref_cipher): New.
1949            (keyprops_dlg_proc): Use it here.
1950    
1951    2005-08-06  Timo Schulz  <[email protected]>
1952    
1953            * wptGPGME.cpp (keycache_update): Reload OpenPGP parts
1954            of the secret key.
1955            (keycache_init): cache name of secret keyring.
1956            * wptKeyList.cpp (keylist_upd_key): Do not add long keyid.
1957            (get_key_type): Do not assume 'ultimate' means key pair.
1958            * wptKeyEditDlgs.cpp (diff_time): New.
1959            (keyedit_addsubkey_dlg_proc): Changed design and use
1960            diff_time. Drop checks for invalid keylength (< 1024, > 4096)
1961            because the combo box automatically handles this.
1962            * wptKeyManager.cpp (km_set_implicit_trust): Return error code.
1963            * wptGPG.cpp (get_backup_name): New.
1964            (gnupg_backup_keyrings): Rotate backup names, from 0..3.
1965            * wptClipImportDialog.cpp (clip_import_dlg_proc): Free memory.
1966            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use 0x short keyid and
1967            not the long keyid.
1968    
1969    2005-08-05  Timo Schulz  <[email protected]>
1970    
1971            * wptListView.cpp (listview_set_item2): New.
1972            * wptKeyManager.cpp (km_check_if_protected): Directly
1973            retrieve gpgme_key_t from the list.
1974            (km_check_key_status): Likewise.        
1975            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Also use
1976            a human-readable name for secret key export.
1977            Reload just the keys which were affected by updates
1978            (edit-key).
1979            (update_key): New.
1980            * wptKeyList.cpp ((keylist_upd_key): Stripped down
1981            version of keylist_add_key.
1982            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Do not
1983            reload the keycache here, just flag 'update'. Give the
1984            control to the calling dialog.
1985            * wptKeySignDlg.cpp (keysign_dlg_proc): Use winpt_key_t
1986            as parameter. Changed all callers.
1987            Add date of expiration to the key info.
1988            (get_expire_date): New.
1989            Use a checkbox to allow to ask for the cert level.
1990            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Do no reload
1991            the cache.
1992    
1993    2005-08-04  Timo Schulz  <[email protected]>
1994    
1995            * wptListView.cpp (listview_scroll): New.
1996            (listview_get_item2): New.
1997            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If the
1998            item was found, make it visible with scrolling.
1999            * wptKeyManager.cpp (km_find_key): New.
2000            (keylist_subclass_proc): Support to handle some acceleators.
2001            Strg+{C, P, F, A}.
2002            (km_get_key_status): Get the gpgme_key_t object directly
2003            from the list.
2004            * wptGPGPRefsDlg.cpp (gpgprefs_dlg_proc): Also try to set
2005            the config file (if it exists).
2006            * wptKeySignDlg.cpp (keysign_dlg_proc): Use easier code
2007            to handle the click->activate situation.
2008            * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
2009            Support to check the passphrase quality.
2010            * wptPassphraseDlg.cpp (passwd_dlg_proc): Likewise.
2011            (request_passphrase): Rename 'init' to 'flags' to allow more
2012            options.
2013            * wptMAPI.cpp: Check all *alloc results.
2014            * wptKeyGenDlg.cpp (keygen_dlg_proc): Use a rudimentary
2015            passphrase quality check.
2016            * wptMDSumDlg.cpp (mdsum_dlg_proc): Use md5/sha1sum file
2017            format and allow to save the checksum in a file.
2018            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Issue a warning
2019            when the PGP mode is disabled.
2020            wptKeyEditDlgs.cpp (do_editkey_primary): Return if just
2021            one user-ID exists.
2022            (keyedit_dlg_proc): Fixed index problem.
2023            * wptKeyPropsDlg.cpp (get_validity): New.
2024            (keyprops_dlg_proc): Actually show extended validity if possible.
2025            * wptKeyList.cpp (get_key_fpr): Support for old v3 format.
2026            (do_addkey): Use listview_add_item2 to store key as opaque
2027            param inside the list.
2028            * wptFileStatDlg.cpp (get_digest_algo): Add SHAxxx.
2029            (file_stat_dlg_proc): End dialog if no PGP data was found.
2030            (do_list_packets): Return the number of valid PGP packets
2031            of the file.
2032    
2033    2005-08-02  Timo Schulz  <[email protected]>
2034    
2035            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Instead of
2036            using 'Default Keyserver' add the real keyserver name to
2037            the menu.
2038            The rebuild command does not reload the cache any longer.
2039            Use ATTR_NAME + .asc as the filename and not keyid + .asc.
2040            * wptProxySettingsDlg.cpp (enable_proxy_auth): New.
2041            (keyserver_proxy_dlg_proc): Changed the design a little
2042            and add some additional sanity checks.
2043            * wptGPGParser.cpp (commit_gpg_options): Use W32 line endings.
2044            This fixes the problem that the GPG option dialog does not show
2045            very nice lines.
2046            * wptGPGOptDlg.cpp (gpgopt_dlg_proc): s/options/config.
2047            * wptKeySigDlg.cpp (keysig_dlg_proc): If a single key is selected
2048            check for 'NOKEY' before asking a keyserver.
2049            * wptKeyManager.cpp (km_delete_keys): Do not set 'refresh' flag.
2050            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            * wptFileManagerDlg.cpp (file_import_dlg_proc): Display how much
2053            keys the file contain.
2054            * wptKeyList.cpp (get_key_algo): Beautified.
2055            (get_key_status): Drop the "[XYZ] Unknown" format, it is too
2056            confusing for users.
2057            * wptKeyManager.cpp (km_check_key_status): Adjustments for the
2058            new code.
2059            (km_check_for_seckey): Reset utrust parameter. Return -1 for
2060            invalid (exp+rev+dis) keys.
2061    
2062    2005-08-01  Timo Schulz  <[email protected]>
2063    
2064            * wptKeyserver.cpp (kserver_urlencode): Use unsigned for all given
2065            sizes.
2066            (check_IP_or_hostname): New.
2067            (kserver_load_conf): Correct finger URL parsing problem.
2068            (port_from_proto): New.
2069            (keyserver_load_conf): Guess the port.
2070            (keyserver_set_default): Allocate new buffer.
2071            (kserver_load_conf): Likewise.
2072            * wptHTTP.c (parse_reqline, parse_request): Removed.
2073            Use WinPT error code and remove all unused code.
2074            * wptKeyserverDlg.cpp (keyserver_dlg_proc): Properly handle finger URLs.
2075            * wptProxySettingsDlg.cpp (read_proxy): Simple check for
2076            invalid host/IP addresses.
2077            * wptGPG.cpp (multi_gnupg_path): Return allocated buffer.
2078            Changed all callers.
2079            * wptPreferencesDlg.cpp (prefs_dlg_proc): At the first start,
2080            automatically set 'backup to homedir'.
2081            * WinPT.cpp (WinMain): Use desktop window as the parent window
2082            to load 'first-start' dialogs.
2083            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Do not set 'refresh'
2084            flag after deleting keys.
2085            * wptFirstRunDlg.cpp (first_run_dlg_proc): Use a new structure
2086            for passing the arguments.
2087            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Do not store "" for
2088            the OptFile. This was responsible for a lot of 'General Errors'
2089            after the first start related to key caching.
2090            Automatically set the gpg binary if possible.
2091    
2092    2005-07-22  Timo Schulz  <[email protected]>
2093    
2094            * wptMainProc.cpp (winpt_main_proc): Take care for shutdown
2095            messages and make sure WinPT make a keyring backup in this case.
2096            * wptGPGME.cpp (keycache_reload): Do not rebuild the signature
2097            cache each time. Just do it on startup.
2098            * wptKeyManager.cpp (km_key_is_v3): Use new ATTR_VERSION.
2099            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Assume the v3 flag
2100            was set by the calling function.
2101            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): Ask for backups.
2102            (keygen_dlg_proc): Only add the generated key to the keycache
2103            and do not reload the entire cache.
2104            * wptKeyManager.cpp (km_delete_keys): Store the number of keys
2105            because in each loop iteration it will be new calculated.
2106            * wptListView.cpp (listview_del_items): Likewise.
2107            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Directly add the
2108            generated key to the list instead of reloading the entire cache.
2109            * wptKeyEditDlgs.cpp (parse_preflist): Support fpr SHAnnn.
2110    
2111    2005-05-09  Timo Schulz  <[email protected]>
2112    
2113            * wptCommonDlg.cpp (http_file_dlg_proc): Renamed to..
2114            (http_dlg_proc): ..this.
2115            (get_keyserver_URL_dlg): New.
2116            (check_URL): New.
2117            * wptKeyEditDlgs.cpp (keyedit_set_pref_keyserver): New.
2118            (keyedit_main_dlg_proc): Avoid massive keycache reloads, just reload
2119            the single key.
2120            * wptKeyRevokersDlg.cpp (key_revokers_dlg_proc): Show the key
2121            properties of the selected desig. revoker.
2122            * wptVerifyList.cpp (verlist_build): Increase the column
2123            size of 'keyid'.
2124            * wptGPGME.cpp (keycache_update): New.
2125            * wptKeySigDlg.cpp (keysig_dlg_proc): Update the key if a signature
2126            was deleted.
2127            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Zeroing the key struct
2128            before we set any values.      
2129    
2130    2005-05-03  Timo Schulz  <[email protected]>
2131    
2132            * wptFileManager.cpp (fm_parse_command_line): Handle
2133            'SYMKEYENC' files. Thanks to the user who reported it.
2134            * wptKeyEditDlgs.cpp (do_find_userid): Optionally return the context.
2135            (showpref_dlg_proc): New.
2136            (keyedit_main_dlg_proc): Support SHOWPREF.
2137            (userid_list_init): New field 'Email'. Split userID into 'Name' + 'Email'.
2138            (do_add_new_userid): Adjust for new ListView.
2139            (do_find_userid): Use email for searching.
2140            (parse_preflist): New.
2141    
2142    2005-04-19  Timo Schulz  <[email protected]>
2143    
2144            * wptKeyserver.cpp (kserver_update_proxyuser): Fixed
2145            buffer overflow that occurred when the proxy password
2146            is > 29 chars. Thanks to the friendly user who reported this.
2147            (kserver_search): Handle the case the key is revoked. Thanks
2148            to Ralf.
2149            (kserver_connect): More logging.
2150            (kserver_sendkey): Likewise.
2151            * wptProxySettingsDlg.cpp (check_number): New.
2152            (read_proxy): Check the entered port number.
2153            * wptKeySignDlg.cpp (sig_class_dlg_proc): Check default button.
2154            * wptW32API.cpp (get_folder_dlg): Free memory.
2155    
2156    2005-04-11  Timo Schulz  <[email protected]>
2157    
2158            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Reset
2159            'enable' flag always at the begin.
2160            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Show correct
2161            key trust. Noted by a friendly user.
2162            * wptListView.cpp (listview_add_item_pos): New.
2163            * wptKeyEditDlgs.cpp (get_subkey_fingerprint): Due to
2164            the fact that GPG does not return the fingerprint of
2165            the generated subkey any longer, we need to get it manually.
2166            Thanks to Maxime Brandt.
2167            (keyedit_addsubkey_dlg_proc): If key size too large, ask
2168            if this was a mistake.
2169            (keyedit_add_subkey): Use it here.
2170            (do_add_new_subkey): Fix list contrl insertion.
2171            * wptTypes.h (DEFAULT_KEYSIZE): Define new default keysize constant.
2172    
2173    2005-04-04  Timo Schulz  <[email protected]>
2174    
2175            * WinPT.cpp (check_crypto_engine): Correct version
2176            check. Noted by Werner.
2177    
2178    2005-03-22  Timo Schulz  <[email protected]>
2179    
2180            * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.
2181            (enable_mobile_mode): New.
2182            * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new
2183            ID's for adding subkeys.
2184    
2185    2005-03-06  Timo Schulz  <[email protected]>
2186    
2187            * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without
2188            a public key. Noted by Kurt Fitzner.
2189    
2190    2005-03-04  Timo Schulz  <[email protected]>
2191    
2192            * GPG asks twice for the new PIN. Thanks to Achim.
2193            * 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            Achim.
2196    
2197    2005-03-03  Timo Schulz  <[email protected]>
2198    
2199            * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the
2200            new PIN. Suggested by Achim.
2201            Support to show the unmasked PIN.
2202            Modified TAB-order.
2203            * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.
2204    
2205            * Fixed wrong GPG --command-fd strings. Thanks to Achim.
2206    
2207    2005-02-23  Timo Schulz  <[email protected]>
2208    
2209            * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.
2210            (kserver_search): Be more strict.
2211            * WinPT.cpp (WinMain): Enable FM progress by default.
2212            * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.
2213            (fm_parse_files): Use progress dialog only if it is
2214            enabled.
2215    
2216    2005-02-07  Timo Schulz  <[email protected]>
2217    
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            dialog sometimes stay and is not destroyed.
2221    
2222    2005-02-04  Timo Schulz  <[email protected]>
2223    
2224            * 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            File Manager (root window) is closed.
2227    
2228    2005-02-02  Timo Schulz  <[email protected]>
2229    
2230            * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise
2231            it is invisible.
2232            * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric
2233            passphrases.
2234            * Enable the progress dialog for symmetric encryption.
2235            * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in
2236            FM_ENCRYPT mode.
2237            * WinPT.cpp (WinMain): SETUP_EXISTING implemented.
2238            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when
2239            no value is entered.
2240    
2241    2005-01-26  Timo Schulz  <[email protected]>
2242    
2243            * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.
2244            * wptKeyManagerDlg.cpp: Add 'Select All' feature.
2245            Move 'Edit->Key' to 'Key->Edit'.
2246            * wptFileManagerDlg.cpp: Likewise.
2247            * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.
2248            * wptKeyManager.cpp (spawn_loadimage): Removed.
2249            (km_show_photo): Removed.
2250            * wptRevokersDlg.cpp (revokelist_init): Fixed index.
2251            * wptErrors.cpp (winpt_strerror): Show system error for registry
2252            related problems.
2253    
2254    2005-01-25  Timo Schulz  <[email protected]>
2255    
2256            * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default
2257            and that all values are 7-bit ASCII.
2258            Use '*' for the passphrase field.
2259            * wptGPG.cpp (multi_gnupg_path): New.
2260            (get_gnupg_path): Use it here.
2261            (check_homedir): Likewise.
2262            * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port
2263            is actually set.
2264            * wptFileManager.cpp (fm_clearsign_8bit): New.
2265            (fm_parse_files): Check if the file to clearsign is really 7-bit.
2266            Thanks to djek.
2267            (fm_set_ftype): Factored out some code from...
2268            (fm_add_dropped_files): ...here. Simplied the code.
2269            (fm_add_dir_files): New.
2270            * Removed MD5 from MyGPGME and the new default sym cipher is AES.
2271            * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var
2272            to track the window handle.
2273            (progress_cleanup): Try to close tracking handle first.
2274    
2275    2005-01-21  Timo Schulz  <[email protected]>
2276    
2277            * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys
2278            which are not in the keyring. Suggested by djek.
2279            * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic
2280            'Always on Top'.
2281            Allow to send encrypted files via MAPI.        
2282            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache
2283            if the HKP retrieval succeeded.
2284            * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer
2285            is not NULL.
2286            * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with
2287            a header similar to 'gpg -k name'.
2288            * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible
2289            with 'Always on Top' windows.
2290            * wptFileManager.cpp (fm_parse_files): Set progress callback for
2291            wiping files.
2292            (fm_add_opened_files): Do not add the file in case of an error.
2293            * wptKeyserverDlg.cpp (kserver_get_port): New.
2294            (save_default_ks): Save port.
2295            * wptKeyserver.cpp (set_default_kserver): Get port or use default.
2296            (kserver_connect): Logging.
2297            (kserver_send_request): Likewise. Thanks to Markus.
2298            * wptError.cpp (w32_fmt_msg): New.
2299            (winpt_strerror): Show the W32 API error if the hotkey could not
2300            be registered.
2301    
2302    2005-01-20  Timo Schulz  <[email protected]>
2303    
2304            * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the
2305            keyring check. If the file exists, it is enough.
2306            * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.
2307            Several cleanups and allow to specify the port of the keyserver.
2308            * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure
2309            the application terminates clearly when Windows shutdown.
2310    
2311    2005-01-10  Timo Schulz  <[email protected]>
2312    
2313            * WinPT.cpp (load_gettext): New.
2314            (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.
2315    
2316    2005-01-08  Timo Schulz  <[email protected]>
2317    
2318            * Applied the patches to make the source G++ compatible.
2319            * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.
2320            * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.
2321            * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.
2322    
2323    2005-01-07  Timo Schulz  <[email protected]>
2324    
2325            * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.
2326            (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.
2327            (ldap_recvkey): Likewise.
2328            (check_hkp_response): Be more liberal with error strings.
2329            (kserver_connect): Prevent buffer overflow and use the right return
2330            code for inet_addr().
2331            (kserver_search_chkresp): New.
2332            (kserver_search): Fixed. Now it works with modern keyservers.
2333            * wptKeylist.cpp (seclist_init): Add new flags param.
2334            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key
2335            listing.
2336            * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
2337            * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.
2338            * WinPT.cpp (WinMain): call GPGME init.
2339            Reword the 'you have no keyring' problem and revamp the first run dialog.
2340            * wptGPG.cpp (gnupg_access_keyring): New.
2341            (gnupg_check_keyring): Removed unused code.
2342            * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the
2343            new texts and remove unused elements.
2344            * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The
2345            last annoying typo.
2346            * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of
2347            an error.
2348    
2349    2004-12-30  Timo Schulz  <[email protected]>
2350    
2351            * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.
2352            This fixes the problem that the dialog crashes when the user selects
2353            anything. Thanks to my users.
2354            (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.
2355            
2356    2004-12-20  Timo Schulz  <[email protected]>
2357    
2358            * wptGPG.cpp (check_gnupg_engine): Fixed version checking.
2359            * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the
2360            cache if it is not valid.
2361            
2362            Fix problem with a NULL pointer.
2363    
2364    2004-12-15  Timo Schulz  <[email protected]>
2365    
2366            * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right
2367            temp name.
2368            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button
2369            when no secret key is available.
2370    
2371    2004-12-11  Timo Schulz  <[email protected]>
2372    
2373            * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect
2374            the file type.
2375            (fm_parse_command_line): Likewise.
2376    
2377    2004-12-02  Timo Schulz  <[email protected]>
2378    
2379            * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.
2380    
2381    2004-11-04  Timo Schulz  <[email protected]>
2382    
2383            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred
2384            keyserver sub packets.
2385    
2386            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to
2387            indicate we need to reload the cache. If a user deletes a key
2388            and exits the manager and loads it again the deleted key is
2389            still in cache and provoked an error.
2390            
2391            * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.
2392    
2393            * wptW32API.cpp (center_window): Replaced with real code which calculates
2394            the position relative to the desktop window.
2395    
2396    2004-10-25  Timo Schulz  <[email protected]>
2397    
2398            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box
2399            if the PGP message is complete but broken during the transport.
2400            Thanks to Werner and Achim.
2401            * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks
2402            to the gnupg-users.
2403            * Automatically add '\r\n' to the text before signing. This solves
2404            the problem the last line is not included if no \r\n is present.
2405            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode
2406            which prepends the text with '> '. This makes it easier to quote
2407            decrypted text.
2408            * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored
2409            out from..
2410            (keyserver_dlg_proc): ..here.
2411    
2412    2004-10-15  Timo Schulz  <[email protected]>
2413    
2414            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt
2415            is really initialized.
2416    
2417    2004-10-07  Timo Schulz  <[email protected]>
2418    
2419            * wptErrors.cpp (winpt_errmsg): Use a generic header when no
2420            filename is supplied.
2421            * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but
2422            an error message which is more clean. Thanks to Ralf.
2423            * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card
2424            admin mode.
2425            * wptKeySignDlg.cpp (do_check_protection): Also check for smart
2426            card protection.
2427            (get_keyinfo): Return if this is a smart card key.
2428            * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before
2429            comparing the names.
2430            * winpt.cpp: Now depends on PTD 0.7.1.
2431    
2432    2004-10-01  Timo Schulz  <[email protected]>
2433    
2434            * wptClipSignDlg.cpp: Really use the selected subkey with the
2435            right '!' syntax. Thanks to Vedaal for pointing this out.
2436            * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device
2437            is accessable and writeable, otherwise inform the user. Kudos to
2438            the one who reported this problem.
2439    
2440    2004-09-20  Timo Schulz  <[email protected]>
2441    
2442            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in
2443            context menus when the key is flagged as revoked.
2444            (update_ui_items): Likewise and set the 'ShowPhoto' flag only if
2445            the key has such an item.
2446    
2447    2004-09-08  Timo Schulz  <[email protected]>
2448    
2449            * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is
2450            in the list, return zero.
2451    
2452    2004-09-07  Timo Schulz  <[email protected]>
2453    
2454            * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.
2455            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
2456    
2457    2004-09-01  Timo Schulz  <[email protected]>
2458    
2459            * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.
2460            (default_key_from_cache): Use new key attribute 'usable'.
2461            * WinPT.cpp (show_unprotected_keys): Removed.
2462            * wptKeylist.cpp (check_key): Removed.
2463            (seclist_init): Use new 'usable' key attribute.
2464            (keylist_add_key): Likewise.
2465            * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to
2466            add keys via 'INSERT'.
2467            * wptListView.cpp (listview_select_one): New.
2468            (listview_find): New.
2469            * wptFileManager.cpp (fm_get_current_pos): If there is only
2470            one item, return 0 but also select it. Thanks to Christian.
2471    
2472    2004-08-28  Timo Schulz  <[email protected]>
2473    
2474            * WinPT.cpp (WinMain): Free gpg table in case of an error.
2475            * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
2476            (filemanager_dlg_proc): Subclass the list control.
2477            * Fix Alt+C for the winpt_prefs_dlg_proc.
2478            * wptKeyserver.cpp (kserver_load_conf): Ignore lines with
2479            just whitespaces. Thanks to the folks on winpt-users.
2480    
2481    2004-08-27  Timo Schulz  <[email protected]>
2482    
2483            * 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            Thanks to Ralf for pointing this out.
2487            * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.
2488            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
2489            * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and
2490            use a context to store the value. Loalize all text strings.
2491            * wptKeyList.cpp (key_check_validity): Cannot use gettext here.
2492            (keylist_get_recipients): Increase buffer for gettext messages.
2493    
2494    2004-08-26  Timo Schulz  <[email protected]>
2495    
2496            * WinPT.cpp (load_keyserver_conf): New. Factored out some code
2497            from WinMain ().
2498            (WinMain): Load keyserver config at the begin. Thanks to Bodo Aßner
2499            * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver
2500            in the list control, add at least the internal default HKP server.
2501            * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.
2502            * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.
2503            (keysign_dlg_proc): Likewise.
2504            * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.
2505            * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.
2506            (kserver_connect): use it here.
2507            (kserver_send_request): Likewise.
2508            (kserver_recvkey): Likewise.
2509    
2510    2004-08-25  Timo Schulz  <[email protected]>
2511    
2512            * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB
2513            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            * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
2517            (file_manager_dlg_proc): Use subclassing to allow some hotkeys.
2518    
2519    2004-08-24  Timo Schulz  <[email protected]>
2520    
2521            * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for
2522            the user-ids.
2523            * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into
2524            expert mode when the non-interactive mode is used.
2525            * WinPT.cpp (WinMain): Start the keygen wizard instead of the
2526            expert dialog and allow to switch to it.
2527    
2528    2004-08-20  Timo Schulz  <[email protected]>
2529    
2530            * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only
2531            mode the menu is not available.
2532            (popup_gpg_readonly): New.
2533            (menu_gpg_readonly): New.
2534            (keymanager_dlg_proc): Use it here. Do not check the permissions
2535            any longer since this is now handle via the read-only code.
2536            * wptMainProc.cpp (winpt_main_proc): Check if the keyrings
2537            are in read-only mode.
2538            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.
2539            * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably
2540            signatures in expert mode.
2541            * wptKEyEditDlgs.cpp (do_find_userid): Release context.
2542            * wptGPG.cpp (gpg_check_permissions): Only print out a warning
2543            in the interactive mode.
2544            * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left
2545            mouse button is clicked.
2546    
2547    2004-08-19  Timo Schulz  <[email protected]>
2548    
2549            * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected
2550            key numbers.
2551    
2552            * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.
2553            (is_sig): Change code to allow to check pre-defined fields.
2554    
2555            * WinPT.cpp (WinMain): Allow read-only support for keyrings.
2556    
2557    2004-08-06  Timo Schulz  <[email protected]>
2558    
2559            * wptContext.h: Move subclass_s context to this file.
2560    
2561            * wptKeysigDlg.cpp (subclass_dlg_proc): New.
2562    
2563    
2564    2004-08-05  Timo Schulz  <[email protected]>
2565    
2566            * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag
2567            when possible.
2568            New dialog layout to enhance the readability of the text. Use
2569            flat check boxes for the same reason.
2570    
2571            * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to
2572            the right column (3 not 4).
2573    
2574            * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile
2575            uses a unique name.
2576    
2577    
2578    2004-08-04  Timo Schulz  <[email protected]>
2579    
2580            * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the
2581            edit-field to display the text. Now a RichEdit field is
2582            used. This solves the XP problem that the viewer is empty
2583            even if there is text in it.
2584    
2585            * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.
2586    
2587            * wptKeySigDlg.cpp (sigprops_dlg_proc): New.
2588            (keysig_dlg_proc): Add new 'Properties' button and implement
2589            the code for it.
2590    
2591            * wptSigList.cpp: Add support to show the expiration date.
2592    
2593            * wptGPGME.cpp (keycache_init): Support to show the progress bar.
2594            (keycache_release): Store the amount of keys in the registry for
2595            the progress dialog.
2596    
2597            * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate
2598            default keyserver.conf.
2599    
2600            * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.
2601            Fix possible buffer overflow.
2602            (wsock_end): Release stored keyserver list.
2603    
2604            * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for
2605            a specific recipient and select it.
2606    
2607    2004-08-02  Timo Schulz  <[email protected]>
2608    
2609            * wptKeysigDlg.cpp (do_create_popup): New.
2610            (do_load_keyprops): New.
2611    
2612            (keysig_dlg_proc): Factor out some common code and use
2613            do_load_keyprops.
2614    
2615            * wptKeyServer.cpp (kserver_check_inet_connection): New.
2616    
2617            * wptKeyManger.cpp (km_refresh_from_keyserver): First check
2618            for an active internet connection. It's annoying for the
2619            user to confirm an connection error for each key (n>40).
2620    
2621    2004-07-27  Timo Schulz  <[email protected]>
2622    
2623            * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new
2624            value for the ownertrust.
2625    
2626            * wptKeyManager.cpp (get_key_trust): Make it public.
2627            (get_key_trust_str): New.
2628            (km_refresh_from_keyserver): Allow to select random keys.
2629            (km_refresh_one_key): New.
2630    
2631            * wptKeyserver.cpp: Use default keyserver if possible.
2632    
2633    2004-07-13  Timo Schulz  <[email protected]>
2634    
2635            * wptFileManager.cpp (fm_assume_onepass_sig): New.
2636            Thanks to Vedaal who found out that armored one-pass sigs are not
2637            correctly recognized.
2638    
2639            (ask_filename): New.
2640            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    
2643            (fm_encrypt): Use it here.
2644            (fm_decrypt): Likewise.
2645            (fm_sign): Likewise.
2646    
2647            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry
2648            to set secret keys to ultimate trust.  
2649    
2650            * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the
2651            key has ultimate trust.
2652            (km_set_implicit_trust): New.
2653    
2654    2004-07-12  Timo Schulz <[email protected]>
2655    
2656            * wptRegistry.cpp: Support for disable compression of multi-media files.
2657            (set_reg_winpt_single): New.
2658            (get_reg_winpt_single): New.
2659    
2660            * wptFileManager.cpp (is_multi_media): New.
2661            (fm_encrypt): Disable compression of multi-media files.
2662            (fm_state_new): Set comment to indicate armored files were generated
2663            by WinPT. This is a replacement due to the fact the WinPT string is not
2664            added in the 'Version' for larger files.
2665    
2666            * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.
2667    
2668    2004-07-11  Timo Schulz  <[email protected]>
2669    
2670            * Bug fix for the validity revoked status. Now it is 'revoked'
2671            and not 'unknown' any longer.
2672    
2673            * Feature to disable encryption. This might be useful for filetypes
2674            GPG does not recognize as compress (movies, ...).
2675    
2676            * wptFileManager.cpp (fm_get_file_type): Skip packet detction if
2677            the file is large and it has no openpgp extension.
2678    
2679    2004-06-19  Timo Schulz  <[email protected]>
2680    
2681            * wptInet.cpp: Renamed to ...
2682            * wptHttp.c: ... this.
2683            * wptKeyManager.cpp (km_http_import): Release 'p' not too early.
2684            * WinPT.cpp (WinMain): If there is a problem with the homedir,
2685            jump to the first start settings.
2686    
2687    2004-06-12  Timo Schulz  <[email protected]>
2688    
2689            * wptInet.cpp: Updated.
2690            * wptKeyManager.cpp (km_http_import): Use http_send_request2() to
2691            parse the URL.
2692            * wptCommonDlg.cpp (http_file_dlg_proc): New.
2693            (get_http_file_dlg): New.
2694    
2695    2004-06-08  Timo Schulz  <[email protected]>
2696    
2697            * wptInet.cpp: New.
2698            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http
2699            transfers.
2700            * wptKeyManager.cpp (km_http_import): New.
2701    
2702    
2703    2004-06-02  Timo Schulz  <[email protected]>
2704    
2705            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error
2706            if there is no clipboard data.
2707    
2708            Release memory in case of an error.
2709    
2710            * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.
2711    
2712            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
2713    
2714    
2715    2004-05-31  Timo Schulz  <[email protected]>
2716    
2717            * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the
2718            'X' close button. Noted by a friendly user.
2719            
2720            Disable 'Save' button.
2721    
2722            * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.
2723    
2724            * wptFileManager.cpp (fm_set_status): Do not use the data file name
2725            for signatures but keep the original file name.
2726    
2727            (fm_verify_pasted_detsig): Try to verify detached signatures from
2728            the clipboard.
2729    
2730    2004-05-14  Timo Schulz  <[email protected]>
2731    
2732            * WinPT.cpp (check_crypto_engine): Due to some
2733            internal  GPG changes the min. version for smart card
2734            support is now 1.3.6.
2735    
2736            * wptProxySettingsDlg.cpp (read_proxy): Correct prefix
2737            handling. Thanks to the folks who reported this via SF.net.
2738    
2739            * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.
2740            Thanks to the folks on winpt-users who reported it.
2741    
2742            * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of
2743            the hotkeys are disabled.
2744    
2745            * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.
2746    
2747            * wptFileManager.cpp (fm_get_file_type): Do not parse the entire
2748            file if the size is >= 256MB.
2749    
2750    2004-03-15  Timo Schulz  <[email protected]>
2751    
2752            * Decrypt list box has now a vertical scroll bar.
2753    
2754    2004-03-11  Timo Schulz  <[email protected]>
2755    
2756            * The DLL is now complety C-source.
2757    
2758    2004-03-08  Timo Schulz  <[email protected]>
2759    
2760            * wptGPG.cpp (gnupg_import_keyrings): cleanups.
2761    
2762            * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows
2763            CP.
2764            (wincp_to_utf8): Likewise.
2765            (conv_charset): Now internal and static.
2766    
2767            * wptUTF8.h: New prototypes and remove the old prototypes.
2768    
2769            * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.
2770    
2771    
2772    2004-03-07  Timo Schulz  <[email protected]>
2773    
2774            * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats
2775            dummy keyrings with a size of zero in the homedir.
2776    
2777            (gpg_check_permissions): Check for read-only keyrings and add code
2778            for this case.
2779    
2780            This problem fixes a lof of other problems related to the OpenPGP
2781            parsing stuff for the key cache.
2782    
2783            * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.
2784    
2785    2004-03-04  Timo Schulz  <[email protected]>
2786    
2787            * wptKeyserver.cpp (finger_recvkey): Error if key was not found
2788            or garbled.
2789    
2790            * wptGPG.cpp (gpg_check_permissions): Take care of the entries
2791            in gpg.conf.
2792    
2793            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select
2794            the signer. Suggested by Sebastian.
2795    
2796            * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to
2797            this file.
2798            (seclist_free): Likewise.
2799            (seclist_select_key): Likewise.
2800    
2801            * wptFileManager.cpp (fm_encrypt): Handle the case the signer was
2802            already set.
2803    
2804    2004-03-02  Timo Schulz  <[email protected]>
2805    
2806            * wptGPG.cpp (check_keyring): Handle the case that the keyring
2807            is set in the gpg.conf file and the pubring.gpg file is zero bytes.
2808    
2809            (gnupg_backup_keyrings): Support backup of keyrings which were set
2810            in gpg.conf. Thanks to the user who reminded me of this problem.
2811    
2812            (gnupg_check_file_ext): Make check not case sentensive.
2813    
2814            * (sfree_if_alloc): Overwrite the memory with zeros before freeing
2815            it. This only works with c-strings! Use it everywhere we handle
2816            sentensive information (passphrases).
2817    
2818            * Try to improve the usability with better menu names and new
2819            ordering.
2820    
2821            * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.
2822    
2823            * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now
2824            it is part of the WinPt about dialog. This way we can minimize the
2825            elements in the popup menu.
2826    
2827    2004-02-29  Timo Schulz  <[email protected]>
2828    
2829            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.
2830    
2831            * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself
2832            so we are not allowing to sign ourself.
2833    
2834            * wptSigList.cpp (siglist_add_key): Support for the signature
2835            flags (local, non-revocably, ...).
2836    
2837            * Key signing with GPG 1.2.x should work again. Hopefully.
2838    
2839    2004-02-26  Timo Schulz  <[email protected]>
2840    
2841            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error
2842            if no recipient was selected.
2843    
2844            * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog
2845            is destroyed. This fixes the bug that the dialog sometimes exist even
2846            after the procedure ended.
2847    
2848            * wptProgressDlg.cpp (progress_callback): Change the if-then-else
2849            struct to prevent zombie dialogs.
2850    
2851            * wptKeyserver.cpp: Removed unused prototypes.
2852    
2853    2004-02-25  Timo Schulz  <[email protected]>
2854    
2855            * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and
2856            do not mix the names in the different menus.
2857    
2858            * wptSigList.cpp: Support to show the signature class.
2859    
2860            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo
2861            box when there is no secret key available.
2862    
2863            (do_init_keylist): Do not allow to use the owners key as a desig
2864            revoker.
2865    
2866            * wptKeylist.cpp (get_key_trust): New.
2867            (do_addkey): Use it here.
2868    
2869    2004-02-24  Timo Schulz  <[email protected]>
2870    
2871            * WinPT.cpp (WinMain): Call a selftest check procedure to
2872            make sure all cryptographic code works as expected.
2873    
2874    2004-02-22  Timo Schulz  <[email protected]>
2875    
2876            * PTD: Cryptdisk seems to have problems with locking. Use
2877            a forced flag to tell the code if it should bail out or
2878            ignore locking errors.
2879    
2880            * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new
2881            locking code.
2882            (cryptdisk_new_dlg_proc): Adjust size of the volume.
2883    
2884    2004-02-21  Timo Schulz  <[email protected]>
2885    
2886            * wptCryptdisk.cpp (cryptdisk_cleanup): New.
2887            (is_nt4): Because my Platform-SDK is too old I need to load
2888            some prototypes dynamically.
2889            (init_drives): Return the first useable drive letter if
2890            called with appropriate parameters.
2891            * wptMainProc.cpp (winpt_main_proc): Use it here.
2892    
2893    2004-02-18  Timo Schulz  <[email protected]>
2894    
2895            * Modify the cryptdisk code for crosscrypt 0.4.1.
2896            * wptCryptDisk.cpp (do_mount): Add key algorithm param.
2897    
2898    2004-02-17  Timo Schulz  <[email protected]>
2899    
2900            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt
2901            to the signers key. Suggested by Alexander.
2902            Use new keycache system, we use the public key part of the
2903            cache because it has all flags set.
2904            * wptGPG.cpp (default_key_from_cache): Use new cache system.
2905            * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
2906    
2907    
2908    2004-02-12  Timo Schulz  <[email protected]>
2909    
2910            * wptErrors.cpp: New error codes for the cryptdisk feature.
2911            * wptCryptdisk.cpp (do_dispatch): Better error handling.
2912            (cryptdisk_mount_dlg_proc): Use it here.
2913            (cryptdisk_umount_dlg_proc): Likewise.
2914            (init_drives): Use system list.
2915    
2916            Localized all strings.
2917    
2918    2004-02-09  Timo Schulz  <[email protected]>
2919    
2920            * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.
2921            (do_reaping): New. Release the list if all items are 'expired'.
2922            (cryptdisk_mount_dlg_proc): New.
2923            (init_drives): New.
2924            * wptMainProc.cpp (cryptdisk_proc): Renamed from...
2925            (handle_cryptdisk): this. And filled with life.
2926    
2927    2004-02-08  Timo Schulz  <[email protected]>
2928    
2929            * wptCryptdisk.{cpp,h}: New. Support for the extended
2930            filedisk application.
2931            * wptMainProc.cpp (winpt_main_proc): Likewise.
2932            * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.
2933    
2934    2004-02-05  Timo Schulz  <[email protected]>
2935    
2936            * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle
2937            CMD_DISHOTKEYS. Thanks to the user who reminded me.
2938            * wptMainProc.cpp (spawn_cryptdisk): New interface to
2939            the Cryptdisk application.
2940    
2941    2004-02-04  Timo Schulz  <[email protected]>
2942    
2943            * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.
2944    
2945    2004-02-03  Timo Schulz  <[email protected]>
2946    
2947            * WinPT.cpp (check_crypto_engine): New. Factor out common code.
2948            (WinMain): Check the crypto engine after the first start.
2949    
2950            * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is
2951            issued if the values could not stored. Revamped the core.
2952    
2953            * Removed the last appearance of the GPG agent support.
2954    
2955            * wptGPG.cpp (init_gnupg_table): Do not use static buffers.
2956            (free_gnupg_table): Free memory.
2957    
2958            * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the
2959            ctx pointer get malloced and set the contents to zero.
2960    
2961    
2962    2004-02-02  Timo Schulz  <[email protected]>
2963    
2964            * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name
2965            is long enough. The same check for the mail address.
2966    
2967            Thanks to Achim.
2968    
2969    2004-01-28  Timo Schulz  <[email protected]>
2970    
2971            * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued
2972            if keys on the card exist but the user does not said overwrite.
2973    
2974            Make sure the expire date is not in the past.
2975    
2976            * wptMainProc.cpp (winpt_main_proc): Avoid to release the file
2977            lock twice. Not sure if this fixes some other problems but it
2978            was definitely a bug.
2979    
2980            * 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            encrypted mail with zero ore more encrypted attachments.
2984            (secure_attachment): New.
2985            (parse_recipients): New.
2986    
2987    2004-01-25  Timo Schulz  <[email protected]>
2988    
2989            * WinPT.cpp (WinMain): Silently die when an instance is already
2990            running. Do not confuse the user with a message. Suggested by
2991            Sebastian.
2992            * wptKeyManager.cpp (delete_keys_from_cache): New.
2993            (km_delete_keys): Use it here. Thanks to Achim.
2994    
2995    2004-01-23  Timo Schulz  <[email protected]>
2996    
2997            * wptCardDlg.cpp (check_pin_len): New. Check if the
2998            PIN is long enough and give an appropriate error.
2999            (card_changepin_dlg_proc): Use the new check function.
3000    
3001    2004-01-22  Timo Schulz  <[email protected]>
3002    
3003            * Remove all internal card reader config. It's up to the
3004            user to do this. It would be too error proune to offer it.
3005            * wptCard.h: Removed all card driver stuff.
3006            * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ
3007            between the admin and the user (normal) PIN.
3008    
3009    2004-01-04  Timo Schulz  <[email protected]>
3010    
3011            * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.
3012            * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas
3013            and minor changes.
3014            * wptListView.cpp (listview_sort_items): Likewise.
3015            * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.
3016            (regist_sep_wnd): Factored out some code.
3017    
3018    2004-01-03  Timo Schulz  <[email protected]>
3019    
3020            * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow
3021            to import secret keys.
3022    
3023    2003-12-31  Timo Schulz  <[email protected]>
3024    
3025            * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort
3026            the list otherwise the index is wrong.
3027            * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set
3028            a signature expire date.
3029    
3030    2003-12-30  Timo Schulz  <[email protected]>
3031    
3032            * fixed the GPG edit-key commands sign and addrevoker.
3033    
3034    2003-12-23  Timo Schulz  <[email protected]>
3035    
3036            * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove
3037            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            * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the
3041            key sign procedure. If it is already signed, the process
3042            sometimes hangs.
3043    
3044    2003-12-14  Timo Schulz  <[email protected]>
3045    
3046            * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.
3047            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.
3048            (do_editkey_setpref): Implement updpref command.
3049    
3050    
3051    2003-12-10  Timo Schulz  <[email protected]>
3052    
3053            * GPGME support to change key preferences.
3054            * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.
3055            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.
3056    
3057    
3058    2003-11-29  Timo Schulz  <[email protected]>
3059    
3060            * wptMAPI.cpp (mapi_init): New.
3061            (mapi_deinit): New.
3062            (mapi_send_pubkey): New.
3063            * wptKeyManager.cpp (km_send_to_mail_recipient): New.
3064            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support
3065            to send the public key via MAPI to a recipient.
3066            * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind
3067            the secret key cache so it's not at the end.
3068            (keysign_dlg_proc): Issue a warning when no secret key was
3069            found which could be used for signing the key.
3070            * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.
3071            * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
3072    
3073    2003-11-28  Timo Schulz  <[email protected]>
3074    
3075            * Remove all support for ElGamal sign+encrypt keys.
3076    
3077            There is a flaw in GPG which makes all such keys useable and
3078            they are comprised even if one signature they made is accessable.
3079            And due to the fact the key is self signed, such a sig is always
3080            available for the public.
3081    
3082            We warn the user at startup if such keys were found!
3083    
3084            * wptMainProc.cpp (elgamal_warn_dlg_proc): New.
3085            * wptGPGME.cpp (count_insecure_elgkeys): New.
3086            * WinPT (WinMain): Use it here.
3087    
3088    2003-11-14  Timo Schulz  <[email protected]>
3089    
3090            * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.
3091    
3092    2003-11-13  Timo Schulz  <[email protected]>
3093    
3094            * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.
3095            * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.
3096            Thanks to Achim.
3097            * Change PIN interface. Now it is easier when an operation requires
3098            both PINs.
3099            * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs
3100            to change card attributes. Do not ask me why, but now the user
3101            needs to enter 2 PINs.
3102    
3103            Name parts were swapped, now they have the right order again.
3104    
3105    2003-10-02  Timo Schulz  <[email protected]>
3106    
3107            * Prepare test release.
3108            * wptGPGCmds.h: New from GPG 1.3.4-cvs.
3109    
3110    2003-10-29  Timo Schulz  <[email protected]>
3111    
3112            * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.
3113    
3114            * Create a new interface for an interactive card callback. GPG
3115            provides card control status messages if the wrong card is inserted.
3116    
3117            * wptCardManager.cpp (card_cb_dlg_proc): New.
3118            (card_callback): New.
3119    
3120            * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use
3121            the ASCII functions and not the Unicode function names. Thanks to
3122            Werner for pointing this out.
3123    
3124            * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the
3125            serial card number is shown to help the user to find the right card.
3126    
3127            * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.
3128    
3129    2003-10-26  Timo Schulz  <[email protected]>
3130    
3131            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.
3132    
3133            * Changed the code at several other places to support the new logging
3134            scheme.
3135    
3136    
3137    2003-10-24  Timo Schulz  <[email protected]>
3138    
3139            * Implemented a better logging system. If the return code
3140            of GPG is != 0 and the error is not known, display the errors
3141            from stderr.
3142    
3143            * wptGPGME.cpp (logging_cb): New.
3144    
3145    2003-10-23  Timo Schulz  <[email protected]>
3146    
3147            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output
3148            if the error is unknown.
3149            (clip_sign_dlg_proc): Likewise.
3150            (clip_signenc_dlg_proc): Likewise.
3151            (clip_import_dlg_proc): Likewise.
3152    
3153    2003-10-21  Timo Schulz  <[email protected]>
3154    
3155            * wptClipDecryptDlg.cpp (list_recipients): New.
3156            (algo_from_list): New.
3157            (clip_decrypt_dlg): New concept to list all recipients.
3158            * wptFileManager.cpp (fm_list_keys): New.
3159            (fm_decrypt): Same changes as for the clipboard decryption.
3160    
3161    2003-10-21  Timo Schulz  <[email protected]>
3162    
3163            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase
3164            was wrong, delete the cache item (if available).
3165            * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.
3166            * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.
3167            * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'
3168            flag to zero.
3169            
3170    
3171    2003-10-19  Timo Schulz  <[email protected]>
3172    
3173            * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and
3174            the working PIN.
3175            wptCardDlg.cpp (free_pincb): New.
3176            (card_keygen_dlg_proc): Pin callback implemented.
3177            Simple check for the e-mail address.
3178            (card_edit_dlg_proc): End the dialog if no changes were made.
3179    
3180            * Expanded GPGME passphrase interface to work both with PINs
3181            and passphrases.
3182    
3183    2003-10-18  Timo Schulz  <[email protected]>
3184    
3185            * wptCardDlg.cpp (card_keygen_dlg_proc): New.
3186            (do_askpin): Handle the case there is no card.
3187            (card_edit_dlg_proc): Add 'New Keys' feature.
3188            (card_changepin_dlg_proc): Implemented.
3189            * WinPT.cpp (WinMain): Ability to start the card manager directly.
3190            * wptMainProc.cpp (smartcard_init): Global stuff to init the reader
3191            driver and the inserted card.
3192    
3193    2003-10-17  Timo Schulz  <[email protected]>
3194    
3195            * wptGPGME.cpp (keycache_init): Do not use secring the first time.
3196            * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short
3197            keyid will be displayed.        
3198    
3199    2003-10-16  Timo Schulz  <[email protected]>
3200    
3201            * Changed GPGME interface for edit card. Now one context is
3202            used for all edit card operations.
3203            * wptCardDlg.cpp (card_edit_dlg_proc): Support for working
3204            and admin PIN. Changed gpgme interface.
3205            (ask_pin): Renamed to..
3206            (do_askpin): this. Provide more information about the card
3207            and its holder.
3208            (do_proc_card_cmds): If no error, reset modify flags for
3209            all controls. Show a short message that the operation ended.
3210            * wptCardPCSC.c (pcsc_free_readers): New.
3211            (pcsc_scan_readers): New.
3212            (pcsc_get_reader): New.
3213            (pcsc_get_card_status): New.
3214    
3215    
3216    2003-10-14  Timo Schulz  <[email protected]>
3217    
3218            * wptKeyList.cpp (do_addkey): Add the case the secret key
3219            is stored on a smart card.
3220            (km_check_for_seckey): Take care of the new code.
3221            * wptKeyManager.cpp (km_delete_keys): Extra warning when
3222            the secret key is stored on a card.
3223            * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities
3224            to the list view. Now the user can see if the key is useable
3225            for: signing, certifying or encrypting.
3226    
3227    2003-10-13  Timo Schulz  <[email protected]>
3228    
3229            * Extended the GPGME API that it is possible to retrieve
3230            the key data. This is for the planned card login but it
3231            might be also useful for other purposes.
3232    
3233            * wptCardPCSC.c: New. General code for PC/SC card readers.
3234    
3235    
3236    2003-10-12  Timo Schulz  <[email protected]>
3237    
3238            * wptCardDlg.cpp (guess_libname): New.
3239            (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            the given name are two fields and not one field.
3243            * wptMainProc.cpp (winpt_main_proc): Check if the card
3244            reader is configured where appropriate.
3245    
3246    2003-10-09  Timo Schulz  <[email protected]>
3247    
3248            * wptCardDlg.cpp (get_card_status): New.
3249            (show_card_status): New. Retrieve the card status and show an
3250            error if approprioate.
3251            * Make sure that WinPT does not try to use non-OpenPGP cards.
3252            * Add GPGME support for the forthcoming AUTH flag for keys.
3253            * Implemented the detection of keys where the secret key components
3254            are stored on a smart card.
3255    
3256    
3257    2003-10-08  Timo Schulz  <[email protected]>
3258    
3259            * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII
3260            is used. Otherwise reject the value.
3261            (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    
3264    2003-10-07  Timo Schulz  <[email protected]>
3265    
3266            * wptPINDlg.cpp (pin_cb_dlg_proc): New.
3267            * wptCardDlg.cpp (do_proc_card_cmds): New.
3268            (card_edit_dlg_proc): Use it here.
3269    
3270    2003-10-06  Timo Schulz  <[email protected]>
3271    
3272            * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.
3273            * wptGPG.cpp (gnupg_display_error): Display general error
3274            when the file does not exit.
3275            * wptW32API.cpp (get_folder_dlg): New.
3276            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select
3277            the folder for the home directory.
3278            * wptKeyManager.cpp (km_update_default_key_str): Return length
3279            of the string.
3280            (km_complete_status_bar): Use the offset of the default
3281            key string so it is not appened twice.
3282            * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.
3283            * wptCard.h: New.
3284            * wptCardDlg.cpp (new_card_driver): New.
3285            (load_card_driver): New.
3286            (free_card_driver): New.
3287            (card_config_dlg_proc): If the reader is configured, load the
3288            values. This is needful to change the driver later.
3289            (gpg_load_scard): Use driver as a parameter.
3290            * wptMainProc.cpp (winpt_main_proc): Load card driver and
3291            unload it after use.
3292    
3293    2003-09-28  Timo Schulz  <[email protected]>
3294    
3295            * wptCardDlg.cpp (card_edit_dlg_proc): New.
3296            (gpg_load_scard): New. Try to use GPG load the card info.
3297            (print_fpr): New. Print beautified fingerprint.
3298            (card_status): New. Set all dialog fields with the values from
3299            the card.
3300            (prepare_dialog): New. Load combo boxes with pre-defined strings.
3301    
3302    
3303    2003-09-25  Timo Schulz  <[email protected]>
3304    
3305            * wptProgressDlg.cpp (progress_cb_thread): New.
3306            (progress_callback): Use asynchron code.
3307            * wptFileManager.cpp (fm_parse_files): Implement progress callback.
3308    
3309    
3310    2003-09-25  Timo Schulz  <[email protected]>
3311    
3312            * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.
3313            (check_key): New.
3314            Removed the old Secret Key List dialog. Now the key can be directly
3315            chose in the dialog.
3316            (seclist_init): New.
3317            (seclist_destroy): New.
3318            (seclist_select_key): New.
3319            * wptFileManager.cpp (fm_sign): Ask for output file if needed.
3320    
3321            * Client side implementation of the --enable-progress-filter feature.
3322    
3323            * wptProgressDlg.cpp: Server side implementation.
3324            (progress_dlg_proc): New. The actual dialog procedure.
3325            (progress_callback): The GPGME wrapper callback.
3326    
3327    2003-09-24  Timo Schulz  <[email protected]>
3328    
3329            * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.
3330            * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.
3331            * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from
3332            the menu. We use import internally, but export was not useful and
3333            thus the code were removed.
3334            * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at
3335            startup when they are not allowed.
3336            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.
3337            Make the parsing code much shorter (read).
3338    
3339    
3340    2003-09-22  Timo Schulz  <[email protected]>
3341    
3342            * wptSigList.cpp (extract_filename): Make sure there is a '\',
3343            otherwise just dup the string and return.
3344            * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key
3345            to make the code more readable.
3346            * Implemented the GPGME part of the new smartcard interface.
3347            The WinPT interface will be open until the scard stuff is back
3348            ported to GPG 1.3.x.
3349            * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.
3350            Several code cleanups.
3351    
3352    2003-09-08  Timo Schulz  <[email protected]>
3353    
3354            * wptRegistry.cpp: Remove some hotkeys to correct index calculation.
3355            (get_reg_winpt_flag): Check buffer first.
3356            (get_reg_winpt_prefs): Support for the new backup system.
3357            (set_reg_winpt_prefs): Likewise.
3358            * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.
3359            * wptRegistry.h: Cleaned up the hotkey interface.
3360            * wptPreferenceDlg.cpp (enable_backup_items): New.
3361            (prefs_dlg_proc): Simplified hotkey handling. Use new code.
3362            * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for
3363            im- and export. Use the code directly.
3364            (currwnd_gpg_dlg): Likewise.
3365            * wptGPG.cpp (gnupg_backup_keyrings): New.
3366            (backup_one_file): New.
3367    
3368    2003-09-04  Timo Schulz  <[email protected]>
3369    
3370            * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,
3371            the packet parsing return value check was wrong again. Now it does
3372            not recognize Word documents as SECKEY or ENCRYPTED any longer.
3373    
3374    2003-09-03  Timo Schulz  <[email protected]>
3375    
3376            * The secret key listing does not contain any 'validity' or
3377            'status' flags any longer. Thus we only can use the cache to
3378            make sure we have a secret key. All attributes need to be retrieved
3379            from the public key listing.
3380    
3381            * wptGPG.cpp (default_key_from_cache): New.
3382            (get_gnupg_default_key): Use new function to make sure we try
3383            to get the key from cache if there is a problem with the config
3384            file.
3385    
3386    2003-08-30  Timo Schulz  <[email protected]>
3387    
3388            * wptGPG.h: Support for the GPG status messages REVKEYSIG and
3389            EXPKEYSIG. With this new feature, GPG 1.2.3 is required.
3390            * Make sure that the signature status does not cause an
3391            segfault.
3392            * WinPT.cpp: Use new check to detect the GPG version and make sure
3393            it is the minimum.
3394            * wptGPG.cpp (parse_version_nr): New.
3395            (check_gnupg_engine): Improved. Now it returns the actual version.
3396    
3397    2003-08-24  Timo Schulz <[email protected]>
3398    
3399            * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable
3400            dialog controls.
3401    
3402    2003-08-17  Timo Schulz  <[email protected]>
3403    
3404            * wptKeyManagerDlg.cpp (keymanager_dlg_proc):
3405            #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The
3406            value was malformed.
3407            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.
3408            * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,
3409            don't bother the user with an error message. Closes #782751.
3410            * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the
3411            "primary" edit key command.
3412            * 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            keyring will be refreshed.
3415            * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.
3416            (quote_file): Avoid double quotes.
3417            * GPGME support for quoted file names.
3418            (fm_sym_encrypt): Double check password and to additional 8-bit checks.
3419            * WinPT.cpp (my_acces): Moved to this file..
3420            * wptGPG.cpp: ..here.
3421            (gpg_check_permissions): Renamed from check_permissions and make it global.
3422            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we
3423            have write access to the keyring for some commands.
3424    
3425    2003-07-22  Timo Schulz  <[email protected]>
3426    
3427            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of
3428            the text instead of allocating the maximum.
3429    
3430    2003-07-13  Timo Schulz  <[email protected]>
3431    
3432            * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains
3433            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            * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.
3436            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.
3437            * wptHotkey.cpp (hotkeys_strerror): Use capital letters.
3438    
3439    2003-07-12  Timo Schulz  <[email protected]>
3440    
3441            * wptFileManager.cpp (fm_verify): Support for multiple signatures.
3442            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
3443            * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.
3444            * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.
3445            (kserver_connect): Likewise.
3446            (kserver_read_config): Likewise.
3447            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases
3448            are not equal.
3449            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to
3450            generate a key pair.
3451    
3452    2003-06-24  Timo Schulz  <[email protected]>
3453    
3454            * Fixed filter code in Get{Open,Save}FileName. Changed all callers.
3455            Thanks to Alex.
3456            * wptKeyManager.cpp (km_delete_keys): Quote the user-id.
3457    
3458    
3459    2003-06-13  Timo Schulz  <[email protected]>
3460    
3461            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.
3462            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to
3463            the fact the signer is now dymanic and not static.
3464            * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and
3465            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            can revoke v3 keys.
3468            (do_editkey_revoke): Clarify command because it can be only used
3469            for secondary keys.
3470            * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error
3471            is issued when no key was selected. Thanks to vedaal.
3472    
3473    2003-06-11  Timo Schulz  <[email protected]>
3474    
3475            * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the
3476            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            * wptGPGME.cpp (get_default_keyid): Removed. Some better code
3479            were added to get_gnupg_default_key.
3480    
3481    2003-06-10  Timo Schulz  <[email protected]>
3482    
3483            * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys
3484            are skipped.
3485            (keysign_dlg_proc): Removed some redundant code.
3486            * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if
3487            it is possible to change the passphrase.
3488    
3489    2003-06-06  Timo Schulz  <[email protected]>
3490    
3491            * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning
3492            message and include the user-id.
3493            * Encryption: use force overwrite (--yes) to make sure there are
3494            no complications with GPG.
3495            * Import: skip all record types we do not understand.
3496    
3497    
3498    2003-06-05  Timo Schulz  <[email protected]>
3499    
3500            * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog
3501            shows all involved recipients and also the public key algorithm.
3502            * wptRegistry.cpp (reg_inst_winpt): If the user does not want
3503            the extensions, set the entry to "1" so the message is not shown
3504            again.
3505    
3506    2003-06-04  Timo Schulz  <[email protected]>
3507    
3508            * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact
3509            that GPG uses the newest subkey by default, we always return
3510            the info of this subkey and not the first.
3511            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one
3512            bug. Now the indicies are correctly.
3513            * wptGPG.cpp (gnupg_check_keyring): Do not free the value before
3514            get_file_size is called.
3515            * WinPT.cpp (WinMain): Only check the GPG engine version if there
3516            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    
3519    
3520    2003-06-01      Timo Schulz  <[email protected]>
3521    
3522            * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...
3523            (KEYDOWN, KEYUP): macros for the functions above.
3524    
3525    2003-05-31  Timo Schulz  <[email protected]>
3526    
3527            * wptKeyManager.cpp (km_key_is_v3): Return if the selected
3528            key is an old PGP 2 (v3) key.
3529            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow
3530            (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.
3531            to add extented items if the key is NOT version 3.
3532            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the
3533            key is v3 and forbid most commands.
3534            (is_cmd_openpgp): New.
3535    
3536    2003-05-28  Timo Schulz  <[email protected]>
3537    
3538            * wptKeyManager.cpp (km_set_clip_info): New.
3539            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.
3540            * wptImportList.cpp (implist_build): Some column changes for
3541            the listview control.
3542            (implist_load): Return if secret keys were found.
3543            * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys
3544            were found.
3545            (clip_import_dlg_proc): New message if secret keys were found.
3546    
3547    
3548    2003-05-25  Timo Schulz  <[email protected]>
3549    
3550            * wptImportList.cpp (implist_add_key): Address charset problem.
3551            * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.
3552            * wptKeyserver.cpp (set_default_kserver): New.
3553            (wsock_init): Call the new function.
3554            (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            item has a value.
3557    
3558    2003-05-24  Timo Schulz  <[email protected]>
3559    
3560            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists
3561            to allow to use virtual keys (DEL, INS).
3562            Release the uid control context when the dialog will be destroyed.
3563    
3564    
3565    2003-05-22  Timo Schulz  <[email protected]>
3566    
3567            * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current
3568            window mode sign+encrypt. This fixes a couple of other problems.
3569            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the
3570            key when the cache was reloaded.
3571    
3572    
3573    2003-05-21  Timo Schulz  <[email protected]>
3574    
3575            * wptSiglist.cpp (siglist_add_key): Only list signatures which are
3576            user-id certificates (0x10-0x13) and ignore key and subkey sigs.
3577            c-strings are now handle correctly and decoded into GPGME.
3578    
3579    2003-05-20  Timo Schulz  <[email protected]>
3580    
3581            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change
3582            the passphrase from here to...
3583            * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.
3584    
3585    2003-05-19  Timo Schulz  <[email protected]>
3586    
3587            * wptPasswdDlg.cpp (create_passwd_dlg): Removed.
3588            (request_passphrase): New.
3589            The passphrase_s context is now internal, all externl function use now
3590            request_passphrase. Changed all callers.
3591            * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase
3592            warning and a check for the comment field was added.
3593            * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which
3594            has shown the subkeys and the userids.
3595            * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.
3596    
3597    2003-05-17  Timo Schulz  <[email protected]>
3598    
3599            * wptFileManager.cpp: Moved gpgme_file_get_extension to this file
3600            and renamed it to...
3601            (file_get_extension): this. gpgme_control now also returns the
3602            (get_file_name): Corrected the calculation of the basename.
3603            state of the command if you use -1 as the value.
3604            * wptImportList.cpp (implist_load): Make sure we really have the key ID.
3605            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over
3606            the place.
3607    
3608    2003-05-14  Timo Schulz  <[email protected]>
3609    
3610            * wptKeyManager.cpp (km_enable_disable_key): New.
3611    
3612    2003-05-13  Timo Schulz  <[email protected]>
3613    
3614            * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.
3615            (key_check_validity): Moved from GPGME to this file.
3616            * wptKeyManager.cpp (km_get_key_status): New.
3617    
3618    2003-05-09  Timo Schulz  <[email protected]>
3619    
3620            * wptMDSumDlg.cpp (mdsum_dlg_proc): New.
3621            * wptFileManager.cpp (fm_print_md): New.
3622            * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD
3623            command.
3624    
3625    2003-05-08  Timo Schulz  <[email protected]>
3626    
3627            * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current
3628            window mode.
3629            (currwnd_gpg_dlg): Likewise.
3630            * 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            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            keys.
3635            * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.
3636            This makes the priority of the rc2 update more urgent.
3637    
3638    2003-05-07  Timo Schulz  <[email protected]>
3639    
3640            * Clean up the outer GPGME interface. Internal functions should be
3641            invisible in gpgme.h.
3642            Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.
3643            * wptKeyserver.cpp: Some cleanups.
3644            (finger_recvkey): Skip URL postfix if there.
3645    
3646    2003-05-06  Timo Schulz  <[email protected]>
3647    
3648            * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys
3649            are available. Removed old [unused] code.
3650            Make sure we really have the key in the cache.
3651    
3652    2003-05-04  Timo Schulz  <[email protected]>
3653    
3654            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients
3655            were found, output a more precise error message. Now the GPGME code
3656            first tests for special cases and if no one hit the nail on the head,
3657            a general error is used.
3658    
3659    2003-05-03  Timo Schulz  <[email protected]>
3660    
3661            * wptParser.cpp: Renamed to...
3662            * wptGPGParser.cpp: this.
3663            (release_option): Renamed to...
3664            (release_gpg_options): this.
3665            (commit_option): Renamed to...
3666            (commit_gpg_options): this.
3667            (parse_option): Renamed to...
3668            (parse_gpg_options): this.
3669            * wptGPG.cpp: Use new parser function names.
3670            (set_gnupg_default_key): Free memory.
3671            * wptKeylist.cpp (keylist_add_groups): New group code.
3672            * wptGroups.{c,h}: Removed. Now we use the GPG group command.
3673            * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from
3674            2 to 4.
3675            (recv_missing_keys): Likewise. Now it is possible to retrieve
3676            missing keys. Thanks to Klaus.
3677            * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather
3678            than a static buffer to avoid garbled keys. There are some very
3679            large keys and these cause some trouble with a 16k buffer.
3680            (keyserver_dlg_proc): Localized some strings.
3681            * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column
3682            names which are equal to the names we use in the Key Manager.
3683            * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but
3684            should be "==" bug.
3685            * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.
3686            * Add --expert option for the GPG procedure call if needed.
3687    
3688    2003-05-02  Timo Schulz  <[email protected]>
3689    
3690            * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.
3691    
3692    2003-04-30  Timo Schulz  <[email protected]>
3693    
3694            * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the
3695            next context menu ("Add"). Make sure the entries are disabled
3696            when the key has no secret key.
3697            * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.
3698            * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't
3699            cause a segfault when the pointer free tries to deallocate the
3700            pointer.
3701    
3702    2003-04-27  Timo Schulz  <[email protected]>
3703    
3704            * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows
3705            to show the properties of the signers keys.
3706            * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.
3707    
3708    2003-04-26  Timo Schulz  <[email protected]>
3709    
3710            * wptParser.cpp: A lot of structural changes. Always add items
3711            at the end of the list so we don't need to make a copy of the list
3712            to restore the original order. Fix the group problem.
3713            * wptKeylist.cpp (keylist_build): Use OR to get the flags and
3714            not ==.
3715            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command
3716            (file) does not use the keyid as the file name when more than one
3717            keys were selected.
3718            Allow allow to set default keys which are not revoked or expired.
3719            * 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            with no validity.
3723    
3724    2003-04-25  Timo Schulz  <[email protected]>
3725    
3726            * 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            with extended signature information. This means the notation
3730            data and a possible policy URL.
3731    
3732    
3733    2003-04-24  Timo Schulz  <[email protected]>
3734    
3735            * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init
3736            default values to make it easier for newbies.
3737            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error
3738            when no secret key was found. Also mention the public key algo.
3739            * wptFileManager.cpp (fm_decrypt): Likewise.
3740    
3741    2003-04-23  Timo Schulz  <[email protected]>
3742    
3743            * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function
3744            from GPGME#gpgme_ownertrust_to_string into WinPT.
3745    
3746    2003-04-20  Timo Schulz  <[email protected]>
3747    
3748            * wptClipboard.cpp: Removed. All these functions and constants
3749            are now available in MyGPGME/clip.c and thus part of GPGME.
3750            * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...
3751            (keylist_get_recipients): this. Return the context instead of
3752            an argument.
3753            (get_key_size): Add key index.
3754            (get_key_algo): Likewise.
3755            (keylist_build): Use a special mode when signing is used.
3756            (keylist_enum_recipients): Return a malloced pointer to the
3757            recipients.
3758            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint
3759            when we have a signature result and we do not trust the key.
3760    
3761    2003-04-20  Timo Schulz <[email protected]>
3762    
3763            * wptFindWnd.h: Removed. We don't use it any longer.
3764            * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.
3765            (gpg_strerror): Removed. Now it is handled in winpt_strerror.
3766            * wptFileManager.cpp (fm_get_file_name): move this to
3767            * wptVerifyList.cpp (get_file_name): ..this place and declare
3768            it as static because no other file need this function.
3769    
3770    2003-04-15  Timo Schulz  <[email protected]>
3771    
3772            * wptClipImportDlg.cpp (data_cb_dlg_proc): New.
3773            (data_cb_thread): New.
3774            (data_cb_dlg_create): New.
3775            (data_cb_dlg_destroy): New.
3776            (data_cb_new): New.
3777            (clip_import_dlg_proc): Use a callback dialog to
3778            show the user the data decoding procedure is in
3779            progress. This dialog is destroyed in the key
3780            import statistics dialog.
3781    
3782    
3783    2003-04-13  Timo Schulz  <[email protected]>
3784    
3785            * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback
3786            context.
3787            * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.
3788            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect
3789            flag inside the KEY contect if needed.
3790            * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a
3791            passphrase if the protect flag is set.
3792            Display the callback dialog to show the progress.
3793            Implemented the "revkey" feature.
3794            * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.
3795            (do_add_new_userid): New. Add an entry to the list box
3796            after the GPG process finished.
3797            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig
3798            to zero to avoid segfaults.
3799    
3800    2003-04-12  Timo Schulz  <[email protected]>
3801    
3802            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new
3803            GPGME code.
3804            * wptVerifyList.cpp (verlist_add_sig_log): Likewise.
3805            * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.
3806            * wptFileManager.cpp (fm_decrypt): Likewise.
3807            * WinPT.cpp (check_default_key): Check if the keys in gpg.conf
3808            are valid and in the keyring.
3809            * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase
3810            item if the key is not protected.
3811    
3812    
3813    2003-04-09  Timo Schulz  <[email protected]>
3814    
3815            * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as
3816            invalid for cancel.
3817    
3818    2003-03-20  Timo Schulz  <[email protected]>
3819    
3820            * wptFindWnd.cpp: Removed.
3821            * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of
3822            find_window.
3823            * Whenever it's possible, use case insentensive searches to avoid
3824            problems.
3825    
3826    2003-03-19  Timo Schulz  <[email protected]>
3827    
3828            * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.
3829            * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly
3830            in the code.
3831            * wptPasswdDlg.cpp: Likewise.
3832            (passphrase_cb_init): Declare as static.
3833            (passphrase_cb_gpgme): Modified to use the static function and rename
3834            it to...
3835            (passphrase_gpgme_set_cb): ..this. New.
3836            * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA
3837            and friends to assign data to each item.
3838            Move dialog code to...
3839            * wptClipSignEncDlg.cpp: ..here.
3840            * MyGPGME/keycache.c: We first look for directly key signatures and
3841            then we skip all other signatures if we've already seen the key. This
3842            is needed to gather the designated revoker keys.
3843    
3844    2003-03-18  Timo Schulz  <[email protected]>
3845    
3846            * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index
3847            of revocation from 9 to 8.
3848            Set the text that no key was updated only if no new sig, subkey,
3849            userid and no public were added.
3850            Add more information: new {subkeys, signatures, userid}.
3851            * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.
3852            * wptDlgs.cpp: Removed.
3853            * wptDlgs.h: (dlg_fatal_error): New. Macro.
3854    
3855    2002-03-16  Timo Schulz  <[email protected]>
3856    
3857            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the
3858            optional text in UTF-8 to avoid charset problems.
3859            * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead
3860            of a static buffer. Changed all callers.
3861            * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions
3862            for the rest of the columns.
3863            (keylist_handle_column_click): New.
3864            * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):
3865            Removed the 'Advanced' button because it only confuses users
3866            and it is not often used.
3867            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-
3868            and import the trustdb values (ownertrust).
3869            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to
3870            sort columns.
3871    
3872    2002-03-09  Timo Schulz  <[email protected]>
3873    
3874            * 64-bit support for wipe operations.
3875    
3876    2002-03-08  Timo Schulz  <[email protected]>
3877    
3878            * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'
3879            because they are options rather than files.
3880            * WinPT.cpp (WinMain): Allow to start the key manager directly
3881            via --keymanager.
3882            * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.
3883            (wipe_cb): New. Wipe callback function.
3884            (fill_drive_combobox): New. Fill in all logical drives into
3885            the given combo box.
3886            (wipe_thread): New. Worker thread.
3887            (update_disc_stats): New. Set the disc statistics for the
3888            given drive entry.
3889            (space_wipefrees_dlg_proc): New.
3890    
3891    2002-03-01  Timo Schulz  <[email protected]>
3892    
3893            * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection
3894            logic. Now we can decrypt symmetrically encrypted files again.
3895            Be stricter on memory alloaction checks.
3896            (fm_get_file_type): Be more strict with the return code of
3897            parse_packet. This avoids bogus file types for MS-Word files and
3898            other non-PGP data.
3899            (fm_wipe): Use the wipe mode from the registry and not a fixed value.
3900            * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.
3901            (get_reg_winpt_prefs): Likewise.
3902            * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.
3903            * wptDlgs.h: Corrected all dialog protypes to BOOL.
3904            LRESULT was not correct.
3905    
3906    2002-02-08  Timo Schulz  <[email protected]>
3907    
3908            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export
3909            the secret key when a file was chosen.
3910    
3911    2002-02-01  Timo Schulz  <[email protected]>
3912    
3913            * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.
3914    
3915    2002-01-25  Timo Schulz  <[email protected]>
3916    
3917            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id
3918            and the fingerprint to the clipboard. Closes #674455.
3919            Automatically reload the keycache when a command is chosen and the cache
3920            state is set to 'reload requested'. Closes #671218.
3921            * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts
3922            are not invalid.
3923            * WinPT.cpp (check_permissions): Make sure we have the permission to
3924            write the keyring. Stop if not because it's expected at many other places.
3925            * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.
3926            (siglist_build): Use a placeholder sig to avoid the position chaos.
3927            * wptKeyUidDlg.cpp: Unified text for 'user-ID'.
3928            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,
3929            display more information and use a GPG like output.
3930            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is
3931            an invalid key in the list of recipients. Closes #674965.
3932    
3933    
3934    2002-01-21  Timo Schulz  <[email protected]>
3935    
3936            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to
3937            avoid typing mistakes.
3938    
3939    2003-01-19  Timo Schulz  <[email protected]>
3940    
3941            * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.
3942            * wptKeyManagerDlg.cpp (do_resize_window): New.
3943            (do_create_minpopup): New. Closes #669730.
3944            * wptVerifyList.cpp (get_sig_date): Renamed to...
3945            (longdate_to_strdate): New. Changed all callers.
3946            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains
3947            a signature, also display the time of it. Closes #669780.
3948            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.
3949            * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.
3950            * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability
3951            to choose the signer.
3952            (keysign_dlg_proc): Implemented a feature request. See above.
3953    
3954    2003-01-08  Timo Schulz   <[email protected]>
3955    
3956            * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning
3957            if the user tries to add the email address in the name field.
3958            * wptKeyserver.cpp: Add support for protocols.
3959            (finger_readline): New.
3960            (finger_recvkey): New.
3961            * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke
3962            message box to show it's a serious decision.
3963            * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.
3964            * wptRegistry.cpp (regist_single_filetype): Now internal and we use
3965            an easier way to get the location of the binary.
3966            (regist_inst_winpt): Implemented the 'with_ext' part and add a registry
3967            entry to avoid double file registering.
3968    
3969    2003-01-07  Timo Schulz  <[email protected]>
3970    
3971            * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window
3972            pos from the coordinates from the registry.
3973            (keymanager_dlg_proc): Store the window pos in the registry.
3974            * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.
3975            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when
3976            a revcert was found.
3977            * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does
3978            not succeed.
3979            (keyserver_dlg_proc): Corrected some listview index values.
3980            * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.
3981    
3982    2002-12-23  Timo Schulz  <[email protected]>
3983    
3984            * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver
3985            directory if does not exist.
3986            * wptKeyserver.cpp: Simpliefied config file.
3987            (kserver_change_proxy): Write config to the registry. Remove
3988            code for the config file.
3989            * wptProxySettingsDlg.cpp (read_proxy): More robust code.
3990            * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature
3991            to send keys. The Key Manager is better for this.
3992    
3993    
3994    2002-12-21  Timo Schulz  <[email protected]>
3995    
3996            * Fixed some language mistakes.
3997            * wptMainproc.cpp: Use the desktop window as the parent window
3998            for the main dialogs so they are visible in the taskbar.
3999            * wptKeyManagerDlg.cpp: Enable minimize.
4000            * wptFileManager.cpp (fm_parse_command_line): Support for detached
4001            signatures.
4002            (fm_encrypt_directory): New.
4003            * wptKeylist.cpp (keylist_add_key): Check the current key if it
4004            is not expired, not the primary (idx=0).
4005    
4006    2002-12-18  Timo Schulz  <[email protected]>
4007    
4008            * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead
4009            of the old name "options".
4010            * WinPT.cpp (WinMain): Try to repair broken home directories
4011            in the registry. Thanks to Gustavo who reminded me of it.
4012            * wptKeyserver.cpp (check_hkp_response): Only copy the text
4013            between <p> and </p> when possible.
4014            * wptAgent.cpp: Re-activated the old code. Now the passphrase
4015            timer can be used.
4016    
4017    2002-12-14  Timo Schulz  <[email protected]>
4018    
4019            * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean
4020            any longer there is also a secret key.
4021            (km_check_photo): New.
4022            (km_complete_status_bar): New.
4023            * wptFileManager.cpp (fm_verify): Support for bad signatures.
4024            Set the sigmode if not set.
4025            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when
4026            the ownertrust of a non-valid (not signed) key is changed.
4027            * wptRegistry.cpp (expand_path): New. Use this code because it's
4028            much shorter.
4029    
4030    2002-10-14  Timo Schulz  <[email protected]>
4031    
4032            * wptKeyserver.c: Replaced all strdup's with m_strdup and free
4033            with free_if_alloc.
4034            (ldap_recvkey): Fill with life. We use the GPG plugin to avoid
4035            all the LDAP overhead.
4036    
4037    2002-10-13  Timo Schulz  <[email protected]>
4038    
4039            * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static
4040            any longer.
4041    
4042    2002-10-31  Timo Schulz  <[email protected]>
4043    
4044            * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.
4045            Thanks to Gustavo.
4046            * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect
4047            whether it's a key pair or not.
4048            * Callback struct into KEY so we can modify the values in the background.
4049            * wptKeyPropsDlg.cpp (change_ownertrust): New.
4050    
4051    2002-10-30  Timo Schulz  <[email protected]>
4052    
4053            * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe
4054            LDAP plugin for this purpose.
4055            * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.
4056            * wldap32.lib is now not longer needed.
4057            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.
4058            * Updated the resource file.
4059            * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff
4060            for 'Decrypt', 'Verify', 'Import'.
4061    
4062    2002-10-15  Timo Schulz  <[email protected]>
4063    
4064            * Changed all s(n)printf -> msg_box constructs to log_box.
4065    
4066    2002-10-13  Timo Schulz  <[email protected]>
4067    
4068            * wptKeylist.cpp (get_key_expire_date): New.
4069            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.
4070    
4071            * Removed global keycache from GPGME. It's a bad style to mix
4072            general and specific interfaces.
4073    
4074            * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation
4075            details. Useful to replace it later.
4076            (get_seckey): Ditto.
4077            (keycache_reload): Moved from the GPGME library.
4078            (keycache_release): New.
4079            (keycache_init): New.
4080            (keycache_set_reload): New.
4081            (keycache_get_reload): New.
4082            (keycache_get_ctx): New.
4083    
4084            * wptSigList.cpp (siglist_add_key): Use the new code.
4085            (siglist_build): Ditto.
4086    
4087    
4088    2002-10-10  Timo Schulz  <[email protected]>
4089    
4090            * wptW32API.cpp (get_filename_dlg): Added default filename parameter.
4091            Changed all callers.
4092            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the
4093            new get_filename_dlg.
4094            * wptFileManager.cpp (fm_export): Likewise.
4095            * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.
4096            * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.
4097            Use signature class dialog.
4098            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the
4099            keyid instead of the userid to avoid charset problems.
4100            (err_message): New.
4101    
4102            * Moved all wipe specific code (random, rmd160) to the DLL so we can
4103            save some memory for the tray section.
4104    
4105            * wptKeyRevokersDlg.cpp (revokelist_build): New.
4106            (revokelist_init): New.
4107            (key_revokers_dlg_proc): New.
4108    
4109            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker
4110            code here when available.
4111    
4112    2002-09-25  Timo Schulz  <[email protected]>
4113    
4114            * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text
4115            is dash escaped. This is useful for keys to avoid errors.
4116            * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an
4117            OpenPGP key from the clipboard which is dash escaped.
4118            (km_clip_import): Use the new code here.
4119    
4120    2002-09-23  Timo Schulz  <[email protected]>
4121    
4122            * wptParser.cpp (add_multi_option): Support for values with more ' 's
4123            and skip the ' ' after the name.
4124            (modify_entry): New.
4125            * wptGPG.cpp (gnupg_save_options): Removed.
4126            (gnupg_load_options): Removed.
4127            (gnupg_release_options): Removed.
4128            * 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    
         * wptGPG.cpp (create_groupdb): Only close the file handling if it  
         really exists. Thanks to Mark.  
         (gpg_check_homedir): Applied the patch. Now we're a little stricter  
         about the homedir checks.  
         (check_homedir): Fixed a possible memory leak.  
         * WinPT.cpp (WinMain): Check the homedir functions to exit the program  
         if      we've found some problems.  
         * wptErrors.cpp (winpt_strerror): New value if a directory could not  
         created.  
         * wptMainProc (winpt_main_proc): Use new code for the current window mode.  
         * wptCurrWnd.cpp (get_curr_wnd): Ditto.  
         (get_window_contents): Always set focus to the current window.  
   
 2002-03-31      Timo Schulz <[email protected]>  
   
         * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to  
         select the key used for signing.  
         * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.  
         * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).  
         * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after  
         fetching keys via HKP and try to update the Gpgmekey inside.  
         * wptVerifyList.cpp (verlist_add_sig): Check if the key context was  
         set inside the signature. Fixes some segfaults related to the HKP key  
         fetching during verification. Thanks to Julian. And force to use UTF8  
         for user ID's.  
         * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,  
         prevent that the dialog is loaded and ask for the passphrase directly.  
   
   
 2002-04-05      Timo Schulz <[email protected]>  
   
         * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.  
         * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.  
         * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.  
         * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.  
   
 2002-04-19      Timo Schulz <[email protected]>  
   
         * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.  
   
 2002-04-23      Timo Schulz <[email protected]>  
   
         * wptRFC2440.cpp: Removed. We now use the OpenCDK package.  
         * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.  
         (fm_encrypt): Modified code to allow sign & encrypt.  
         (fm_parse_file): Ditto.  
         (fm_decrypt): Support for checking signatures.  
         * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.  
   
 2002-04-24      Timo Schulz <[email protected]>  
   
         * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.  
           
         Changed the way to modify the "Version:" string.  
   
         * wptKeyserver.cpp (add_node): New.  
         (kserver_change_proxy): New.  
         (kserver_read_config): New.  
         (kserver_write_config): New.      
         (kserver_cfgfile_release): New.  
         (proxy_release): New.  
   
         * wptProxySettingsDlg.cpp (read_proxy): New.  
         * wptFileStatDlg.cpp (file_stat_dlg_proc): New.  
         * wptFileManager.cpp (fm_list): New.  
         (fm_parse_files): Support the new list command.  
   
 2002-04-25      Timo Schulz <[email protected]>  
   
         * wptImplist.cpp (implist_add_key): Catch possible segfault.  
         * wptVerifyList.cpp (verlist_add_sig): Ditto.  
         * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.  
         * wptKeylist.cpp (find_secret_key): New.  
         (add_key): Use it here.  
         (keylist_add_key): And here.  
   
         * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent  
         to fetch the key.  
   
4459  2002-04-26      Timo Schulz <[email protected]>  2002-04-26      Timo Schulz <[email protected]>
4460    
4461          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.
4462          * wptKeyUidDlg.cpp: Ditto.          * wptKeyUidDlg.cpp: Ditto.
4463    
4464  2002-04-27      Timo Schulz <[email protected]>  2002-04-25      Timo Schulz <[email protected]>
4465    
4466          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.          * wptImplist.cpp (implist_add_key): Catch possible segfault.
4467          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.          * wptVerifyList.cpp (verlist_add_sig): Ditto.
4468          * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.          * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.
4469          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.          * wptKeylist.cpp (find_secret_key): New.
4470          (currwnd_gpg_dlg): Ditto.          (add_key): Use it here.
4471                    (keylist_add_key): And here.
4472          Now it's possible to parse cleartext signatures which contains an  
4473          encrypted message inside the body.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent
4474            to fetch the key.
4475          * wptTextInputDlg.cpp (load_file_contents): New.  
4476          (text_input_dlg_proc): Support for choosing the data file.  2002-04-24      Timo Schulz <[email protected]>
4477    
4478          * wptFileManager.cpp (fm_verify): Support for detached signatures.          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.
4479          (fm_parse_files): Ditto.          
4480            Changed the way to modify the "Version:" string.
4481    
4482  2002-04-28      Timo Schulz <[email protected]>          * wptKeyserver.cpp (add_node): New.
4483            (kserver_change_proxy): New.
4484          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.          (kserver_read_config): New.
4485          (set_reg_winpt_prefs): Ditto.          (kserver_write_config): New.    
4486          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.          (kserver_cfgfile_release): New.
4487          (set_keylist_mode): New.          (proxy_release): New.
4488    
4489          Implement minimal keylist mode. Suggested by Fabian.          * wptProxySettingsDlg.cpp (read_proxy): New.
4490            * wptFileStatDlg.cpp (file_stat_dlg_proc): New.
4491          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.          * wptFileManager.cpp (fm_list): New.
4492          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (fm_parse_files): Support the new list command.
4493          * wptKeylist.cpp (keylist_add_key): Ditto.  
4494          (keylist_load): Ditto.  2002-04-23      Timo Schulz <[email protected]>
4495          (keylist_build): Ditto.  
4496            * wptRFC2440.cpp: Removed. We now use the OpenCDK package.
4497  2002-04-29      Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.
4498            (fm_encrypt): Modified code to allow sign & encrypt.
4499          Adjustments for GPG 1.0.7          (fm_parse_file): Ditto.
4500            (fm_decrypt): Support for checking signatures.
4501          * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.
4502          and ask the user if he knows what he's doing.  
4503          * wptKeyManager.cpp  2002-04-19      Timo Schulz <[email protected]>
4504          (keylist_subclass_proc): Use double click to open the props.  
4505          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a          * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.
4506          ultimate ownertrust value.  
4507          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for  2002-04-05      Timo Schulz <[email protected]>
4508          new RSA keys.  
4509            * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.
4510  2002-04-30      Timo Schulz <[email protected]>          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.
4511            * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.
4512          Merge ownertrust handling into the keycache. Now GPG outputs the          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.
4513          ownertrust in the key listing which means we can get the ownertrust  
4514          value from the keycache.  2002-03-31      Timo Schulz <[email protected]>
4515    
4516          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to
4517          Please not that this is not the same as the key cache! The key cache          select the key used for signing.
4518          will be updated when a new key was imported or a subkey was added/changed.          * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.
4519          The signature cache only affects the validity of the keys.          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).
4520            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after
4521          Removed the MyGPGME trustlist code. Now we can use the field in the key          fetching keys via HKP and try to update the Gpgmekey inside.
4522          listing to determine the ownertrust (which makes things a lot of easier).          * 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  2002-05-01      Timo Schulz <[email protected]>          fetching during verification. Thanks to Julian. And force to use UTF8
4525            for user ID's.
4526          * wptKeygenDlg.cpp (fill_keytype_box): New.          * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,
4527          (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7          prevent that the dialog is loaded and ask for the passphrase directly.
4528          there is full RSA support.  
4529    
4530          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out  2002-03-29      Timo Schulz <[email protected]>
4531          what the problem was when no encryption was done.  
4532            * wptGPG.cpp (create_groupdb): Only close the file handling if it
4533          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make          really exists. Thanks to Mark.
4534          sure it was not already signed (ALREADY_SIGNED).          (gpg_check_homedir): Applied the patch. Now we're a little stricter
4535            about the homedir checks.
4536          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,          (check_homedir): Fixed a possible memory leak.
4537          now we also support to sign ultimate trusted keys.          * WinPT.cpp (WinMain): Check the homedir functions to exit the program
4538            if      we've found some problems.
4539          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button          * wptErrors.cpp (winpt_strerror): New value if a directory could not
4540          is checked and do not check it.          created.
4541            * wptMainProc (winpt_main_proc): Use new code for the current window mode.
4542          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify          * wptCurrWnd.cpp (get_curr_wnd): Ditto.
4543          box and now we also support the date of the signature.          (get_window_contents): Always set focus to the current window.
4544    
4545          Applied Rich's spelling and grammer mistakes.  2002-03-22      Timo Schulz <[email protected]>
4546          Fixed a lot of minor spelling mistakes and capital letters for dialogs.  
4547            * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't
4548  2002-05-05      Timo Schulz <[email protected]>          set window contents for some commands.
4549            (winpt_main_proc): Use the code here.
4550          * Fixed problem with rev certs for imports stats.          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.
4551            * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.
4552          * Cosmetical changes for the GPGME libraray.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.
4553            * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.
4554  2002-05-06      Timo Schulz <[email protected]>  
4555    2002-03-02      Timo Schulz <[email protected]>
4556          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of  
4557          the buttons.          * Use capital letters in the main menus and applied Patricks spelling
4558            corrections.
4559  2002-05-07      Timo Schulz <[email protected]>  
4560            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string
4561          * wptGPG.cpp (check_gpg_engine): New.          not an integer. Thanks to scrumpy.      
4562            * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.
4563          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible          (overwrite): Some bugfixes to set the pointer to the begin of the file.
4564          routines.          * wptVerlist.cpp (verlist_build): New keyID column.
4565            (verlist_add_sig): Use it here.
4566          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.  
4567    2002-03-01      Timo Schulz <[email protected]>
4568          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.  
4569            * wptWipeFile: Replaced all low level I/O functions with W32 API
4570  2002-05-08      Timo Schulz <[email protected]>          functions. And support for more wiping modes. I don't know to
4571            support all, but those makes sense for me:
4572          * wptKeyserver.cpp (kserver_change_proxy): Check the values.          1. Simple (2 random passes)
4573          Thanks to njek for reporting it.          2. DoD (as described in the standard)
4574            3. Peter Gutmanns method (from the paper)
4575  2002-05-30  Timo Schulz <[email protected]>  
4576    
4577          * wptFileManager.cpp (fm_verify): Corrected the handling  2002-02-28      Timo Schulz <[email protected]>
4578          for detached RSA signatures.  
4579          (fm_add_sig_stat): Added support for short fingerprints.          * wptImplist.cpp (implist_add_key): UTF8 support.
4580            Handle invalid userID's.
4581  2002-05-31      Timo Schulz <[email protected]>          * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.
4582            (passphrase_callback_proc): Ditto.
4583          * wptTrayPop.cpp: Revamped some parts of the code.  
4584    
4585          Changed all status_box functions to show_msg. The advantage  2002-02-23      Timo Schulz     <[email protected]>
4586          is that we only wait a fixed time and the user doesn't need  
4587          to hit the OK key. We should add  the time delay in the preferences.          * wptListview.cpp (listview_del_items): New.
4588            * wptKeyManager.cpp (km_delete_keys): Use it here.
4589          * wptKeyManager.cpp (km_show_photo): New.          * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.
4590            * wptKeylist.cpp (add_key): UTF8 support.
4591  2002-06-07      Timo Schulz <[email protected]>  
4592    2002-02-08      Timo Schulz <[email protected]>
4593          * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.  
4594          * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.          * wptNLS.c: Now it's C-source because GPGME needs gettext too.
4595          * wptListView.cpp (listview_select_all): New.          (stpcpy): Makes it static.
4596          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.          * errors.c: localize all error strings.
4597            * WinPT.cpp (get_gettext_lang): Move the code in this file because
4598  2002-06-16      Timo Schulz <[email protected]>          we can't use it in plain C.
4599    
4600          Don't put the questions in the message box title bar.  2002-02-05      Timo Schulz <[email protected]>
4601    
4602          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it          * wptGPG.cpp (gpg_save_options): Catch the case when the options file
4603          is really opened. Thanks to Nelson.          exist but it has a length of zero.
4604            (gpg_display_error): Print out the data from the GPG stderr
4605          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title          (when available).
4606          for chaning the passphrase. Suggested by Ed.          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if
4607            not, return NULL.
4608  2002-08-26  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret
4609            keys.
4610          * wptTypes.h (free_if_alloc, CHECK_BOUND): New.  
4611          * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure          * Fixed a lot of memory allocation all over the place.
4612          the memory is really released. Some strict checks for return values.  
4613          Ident file.  2002-02-05      Timo Schulz <[email protected]>
4614            
4615          * wptAboutDlg.cpp: Ditto. (ident)          wptGPG.cpp (gpg_save_options): Fixed the code for the case the
4616          * wptGPGAboutDlg.cpp: Ditto.          values don't exist in the options file. Thanks to Lutz who found this out.
4617          * wptClipDecryptDlg.cpp: Ditto.          (get_gpg_default): First search for "default-key" then for "encrypt-to".
4618          (clip_decrypt_dlg): Stricter return value checkings.  
4619          Avoid one indent level.  2002-02-04      Timo Schulz <[email protected]>
4620    
4621          * wptImportList.cpp (implist_add_key): More strict return value          * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements
4622          checking.          which need it. Thanks to Timo who find this out.
4623          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.          * WinPT.cpp (WinMain): We don't quit in the case the user changed
4624          (add_key): New key status system.          the preferences.
4625          (keylist_get_keyflags): New.          (update_keycache): New. Handy function to update the keycache.
4626          (keylist_enum_recipients): Simplified and use the new key flags.  
4627            * Use quotation for the options file in any case.
4628          * wptSiglist.cpp (siglist_add_key): Fix possible overflows.  
4629          (verlist_add_sig_log): More stricter checks.          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status
4630            is set, we don' try to get the sig key.
4631          * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.  
4632            * wptGPG.cpp (get_gpg_default_key): Revamped.
4633  2002-08-28  Timo Schulz  <[email protected]>  
4634    2002-01-26      Timo Schulz <[email protected]>
4635          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.  
4636          * wptFileMananger.cpp (fm_check_armor_type): Ditto.          * 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  2002-08-31  Timo Schulz  <[email protected]>          window texts and some other features.
4640            * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.
4641          * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.
4642          (check_homedir): Ask the user whether to create the directory.          * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if
4643          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works          it doesn't exist.
4644          to retrieve missing keys from a HKP server.          * WinPT.cpp (WinMain): Use the new code here.
4645          (recv_missing_keys): Likewise.  
4646          * wptPassphraseCB.cpp (passphrase_callback_proc):  2002-01-23      Timo Schulz <[email protected]>
4647          Implemented     the "Hide Typing" feature.  
4648          (hide_typing): New.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for
4649          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.          loading a file.
4650          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.          Add new code to save file with clipboard contents.
4651          Due to some attacks a MDC error is treated as a fatal error and a  
4652          possible security risk.  2002-01-20      Timo Schulz <[email protected]>
4653          * wptClipImportDlg.cpp (print_import_status): Use a dialog instead  
4654          of a silly message box. Furthermore the user gets more information          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user
4655          about the import procedure.          have to click twice before the menu appears. Richard told me this.
4656          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.  
4657          * wptFileManager.cpp (fm_import): Report invalid user ID's.  
4658          (fm_verify): Try to guess the data name for detached signatures  2002-01-18      Timo Schulz <[email protected]>
4659          before we bother the user. When it's found, use it.  
4660          * wptKeyManager.cpp (km_file_import): Ditto.          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.
4661            * wptPassphraseCB.cpp (parse_gpg_description): Support when no
4662  2002-09-01  Timo Schulz  <[email protected]>          description was given. One example is when symmetric was used.
4663    
4664          * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice  2002-01-13      Timo Schulz <[email protected]>
4665          of the dialog.  
4666          * WinPT.cpp (WinMain): Use it here. Reworded the error message.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche
4667          * wptGPG.cpp (gpg_import_keyrings): New.          settings.
4668          Let the user chose the keyrings and then they are copied to the          * wptGPG.cpp (gpg_backup_options): New.
4669          homedir. After the procedure, the key cache will be reloaded.          (gpg_load_options): Ignore comment lines.
4670          * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.          (gpg_save_options): Rewritten.
4671          * wptSigClassDlg.cpp (sig_class_dlg_proc): New.  
4672          (get_sig_class_choice): New.  2002-01-06  Timo Schulz <[email protected]>
4673          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable  
4674          fingerprint.      * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt
4675          (keysign_dlg_proc): Added new value for the GPG callback to handle      hotkey.
4676          the signature class.          * wptRegistry.cpp: Ditto.
4677          * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the          * wptRegistry.h: Ditto.
4678          userID by calling edit-key with colons.          * wptHotkey.h: Ditto.
4679          (keyuid_dlg_proc): Use it here.          * wptGPG.cpp (gpg_load_options): New.
4680            (gpg_save_options): New.
4681  2002-09-02  Timo Schulz  <[email protected]>  
4682    2002-01-01      Timo Schulz <[email protected]>
4683          * wptKeyManager.cpp (km_privkey_export): Check return codes and  
4684          some types has been changed.          * wptFileManager.cpp (fm_verify): Support for the case there is
4685          (km_file_export): Likewise.          no public key to verify the signature.
4686    
4687  2002-09-03  Timo Schulz  <[email protected]>  2001-12-30      Timo Schulz <[email protected]>
4688    
4689          Removed all OpenCDK code from PTD. The code is not tested very          * wptFileManager.cpp (fm_sign): Always use callbacks for the
4690          well and it might contain some errors. Now we used a stripped down          passphrase.
4691          version of GnuPG code. This has two advantages. First the code is          (fm_decrypt): Ditto.
4692          stable and second we can easier port other parts to native GPG code.          (fm_parse_files): Cache the passphrase for the session and check
4693            if the file still exists.
4694          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use
4695          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the          low level stuff here.
4696          keyring when present to the keycache.          * wptFile.cpp (get_keyid_from_file): Ditto.
4697          * wptKeyManager.cpp (km_show_photo): Fixes to work again with the  
4698          modified code.  2001-12-21      Timo Schulz <[email protected]>
4699          (km_check_for_seckey): Check substrings of the value because we  
4700          don't use '**' values any longer.          * wptTextInputDlg.cpp (text_input_dlg_proc): New.
4701          * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.          * wptMainProc (clip_gpg_dlg): Support for deached signatures.
4702          (file_stat_dlg_proc): Uses the new code.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
4703    
4704  2002-09-04  Timo Schulz  <[email protected]>  2001-12-19      Timo Schulz <[email protected]>
4705    
4706          * wptKeyManager.cpp (km_check_key_status): Parse new fields.          * Completed work on the temporary file support for GPG.
4707            * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the
4708  2002-09-07  Timo Schulz  <[email protected]>          plaintext viewer option. Suggested by Markus Winkler.
4709            (get_reg_winpt_prefs): Ditto.
4710          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.
4711          Print notation data when available.          * wptMainProc.cpp (winpt_main_proc): Ditto.
4712          Show if the signature is expired or not.  
4713    2001-12-15  Timo Schulz <[email protected]>
4714          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo  
4715          command to the context menu.      * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for
4716        copy and paste.
4717          * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.  
4718          This is 256 bits more than the old size. Hopefully it's enough  2001-12-02      Timo Schulz <[email protected]>
4719          security to protect against the most enemies ;-).  
4720            * wptGroups.c: Revamped from the base. Arggg.
4721  2002-09-08  Timo Schulz  <[email protected]>  
4722    2001-11-29      Timo Schulz <[email protected]>
4723          * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process  
4724          really succeeded.          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.
4725          (mbox): Alias for msg_box with fixed title to avoid long lines.          * wptMainProc.cpp (clip_gpg_dlg): New.
4726          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow          Modify the whole event loop so we don't need all the same code
4727          to generate keys with a length til 4096 bits.          for each command. And we use the new foreground code.
4728          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for          * wptW32API.cpp (check_date): Fixed.
4729          invalid recipients and print out the reasons.  
4730          * wptKeylist.cpp (keylist_add_to_recipients): Improved error message  2001-11-27      Timo Schulz <[email protected]>
4731          and corrected the validity checking.  
4732            * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP
4733  2002-09-09  Timo Schulz  <[email protected]>          proxy authentifcation support for each command.
4734            (kserver_update_proxyuser): New. Ditto.
4735          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for          (kserver_send_request): Ditto.
4736          the privat key (export).          (kserver_recv_request): Ditto.
4737            (kserver_search_init): Ditto.
4738  2002-09-10  Timo Schulz  <[email protected]>  
4739    2001-11-24      Timo Schulz <[email protected]>
4740          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.  
4741          (fm_decrypt): Only cut off the extension if it belong to GPG.          * wptKeyManager.cpp (km_groups_new): New.
4742          Added user ID to the box if the file was signed.          (km_groups_release): New.
4743          Ask for the filename if the name has no valid GPG extension.          (km_groups_load): Rewritten.
4744            (km_groups_add): New.
4745  2002-09-12  Timo Schulz  <[email protected]>          (km_groups_del): New.
4746            (km_groupdb_open): New.
4747          * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.
4748          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret          * wptGroups.c (groupdb_enum_read): Store the record before increment it.
4749          key export.  
4750          * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to  2001-11-23      Timo Schulz <[email protected]>
4751          check if the encryption failed.  
4752          (km_show_photo): Fixed offset calculation.          * wptW32API.cpp (set_active_window): New.
4753          Use keyid as filename and delete the tempfile after use.          (reset_active_window): New.
4754          * wptFile.cpp (init_file_lock): Use dynamic buffer.          (window_reminder): New. This is a delayed thread procedure to
4755          (release_file_lock): Free this buffer.          force the focus (foreground) to the dialogs for the current
4756          * wptFileManager.cpp (quote_filename): Removed.          window mode.
4757          (quote_file): New. Use dynamic buffers.          * wptMainProc.cpp (winpt_main_proc): Use it here.
4758          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.
4759          Use it here.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4760          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
4761          Initalize packet at the begin and during the loop.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
4762          * wptFileManager.cpp: Replaced all static memory handling with  
4763          dynamic routines.  2001-11-22      Timo Schulz <[email protected]>
4764          * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust  
4765          functions.          * wptW32API.cpp (set_foreground_wnd): New.
4766          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.          
4767            Fixed the return value of all EndDialogs.
4768  2002-09-13  Timo Schulz  <[email protected]>  
4769            * wptMainProc.cpp: Remove all code parts which did the same for the
4770          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the          current window support. Now the code uses a dialog switch which is
4771          image and do NOT free it.          much smaller.
4772          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.  
4773          (find_user_id): Use keyid to find the key. Changed all callers.  2001-11-18  Timo Schulz <[email protected]>
4774    
4775          * Removed global gpg_version variable. Now we also support GPG 1.1.9x      * wptKeyManager.cpp: New. Contains all handy functions from the
4776          so we don't need to check this after the start again.      wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.
4777        (km_quote_uid): New.
4778  2002-09-17  Timo Schulz  <[email protected]>      (km_check_for_seckey): New.
4779        (km_check_key_status): New.
4780          * winpt.cpp (WinMain): Use make_filename and no static buffer.      (km_clip_export): New.
4781          Modified for the new gnupg interface.      (km_clip_import): New.
4782          * wptFile.cpp (make_filename): New.      (km_file_export): New.
4783          * wptGpgCmds.h: New from GPG 1.1.92      (km_file_import): New.
4784          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers      (km_delete_keys): New.
4785          and make_filename.      (km_send_to_keyserver): New.
4786          * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and      (km_refersh_from_keyserver): New.
4787          make_filename instead of static buffers.      (km_update_default_key_str): New.
4788          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.          * wptKeygenDlg.cpp (ask_for_backup): New.
4789          * wptParser.cpp: Changed to new allocation instead of malloc.          (keygen_dlg_proc): Use new function to give the chance to the
4790          * wptGPGOptSkel.h: Updated from GPG 1.1.92          user for a complete backup.
4791          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.  
4792    2001-11-13      Timo Schulz <[email protected]>
4793  2002-09-23  Timo Schulz  <[email protected]>  
4794            * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry
4795          * wptParser.cpp (add_multi_option): Support for values with more ' 's          is set but to "". Then use default gpg directory.
4796          and skip the ' ' after the name.          * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.
4797          (modify_entry): New.          (refresh_from_keyserver): New. Context entry for update keys.
4798          * wptGPG.cpp (gnupg_save_options): Removed.          (keymisc_dlg_proc): Modify the way the popup is shown.
4799          (gnupg_load_options): Removed.  
4800          (gnupg_release_options): Removed.  2001-11-07      Timo Schulz <[email protected]>
4801          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.  
4802            * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing
4803  2002-09-25  Timo Schulz  <[email protected]>          the key id.
4804            * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret
4805          * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text          key imports.
4806          is dash escaped. This is useful for keys to avoid errors.          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and
4807          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an          the user doesn't set the field, try to do this automatically.
4808          OpenPGP key from the clipboard which is dash escaped.  
4809          (km_clip_import): Use the new code here.  2001-11-03      Timo Schulz <[email protected]>
4810    
4811  2002-10-10  Timo Schulz  <[email protected]>          (fm_remove_crit_file_attrs): First check if the file exists.
4812            Thanks to Peter.
4813          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.  
4814          Changed all callers.  2001-11-02      Timo Schulz <[email protected]>
4815          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the  
4816          new get_filename_dlg.          * WinPT.cpp (WinMain): Add the chance to start the preferences dialog
4817          * wptFileManager.cpp (fm_export): Likewise.          in the case a GPG error was detected.
4818          * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.          * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected
4819          * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.          keys.
4820          Use signature class dialog.  
4821          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the  2001-10-30      Timo Schulz <[email protected]>
4822          keyid instead of the userid to avoid charset problems.  
4823          (err_message): New.          * wptHotkey.h: Fixed typo. Thanks to Timo.
4824            * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.
4825          * Moved all wipe specific code (random, rmd160) to the DLL so we can          (get_gpg_default_key): Skip comment lines immediately.
4826          save some memory for the tray section.          * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.
4827            * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure
4828          * wptKeyRevokersDlg.cpp (revokelist_build): New.          for subclassing.
4829          (revokelist_init): New.  
4830          (key_revokers_dlg_proc): New.          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          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker          sent the message.
4833          code here when available.  
4834    2001-10-28      Timo Schulz <[email protected]>
4835  2002-10-13  Timo Schulz  <[email protected]>  
4836            * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support
4837          * wptKeylist.cpp (get_key_expire_date): New.          for ENTER/SPACE and DELETE. Suggested by Graham.
4838          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.          * wptKeyList.cpp (add_key): New code to figure out how trustworthy
4839            a expired/revoked secret key is.
4840          * Removed global keycache from GPGME. It's a bad style to mix          (keylist_enum_recipients): Show the key ID of the key when it's
4841          general and specific interfaces.          revoked.
4842            * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not
4843          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation          only the first to figure out if a secret is available. Thanks to
4844          details. Useful to replace it later.          Graham.
4845          (get_seckey): Ditto.          * wptFile.cpp (get_keyid_from_file): Ditto.
4846          (keycache_reload): Moved from the GPGME library.  
4847          (keycache_release): New.  2001-10-27      Timo Schulz <[email protected]>
4848          (keycache_init): New.  
4849          (keycache_set_reload): New.          * wptKeylist.cpp (keylist_enum_recipients): Add a type to make
4850          (keycache_get_reload): New.          the code more flexible.
4851          (keycache_get_ctx): New.          * wptKeyMiscDlg.cpp (file_import): New.
4852            (file_export): New.
4853          * wptSigList.cpp (siglist_add_key): Use the new code.          * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.
4854          (siglist_build): Ditto.  
4855            Removed all OE code snippets.
4856    
4857  2002-10-15  Timo Schulz  <[email protected]>  2001-10-26      Timo Schulz <[email protected]>
4858    
4859          * Changed all s(n)printf -> msg_box constructs to log_box.          * wptExtensions.cpp: Removed.
4860            * wptLDAPExt.cpp: Removed.
4861  2002-10-30  Timo Schulz  <[email protected]>          * 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          * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe          (wldap_init): New.
4864          LDAP plugin for this purpose.          (wldap_end): New.
4865          * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.          (ldap_set_verbose): New.
4866          * wldap32.lib is now not longer needed.          (ldap_get_key_info): New.
4867          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.          (ldap_recvkey): New.
4868          * Updated the resource file.          (init_ldap): New. Internal use only.
4869          * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff          (get_key): New. Ditto.
4870          for 'Decrypt', 'Verify', 'Import'.          (send_key): New. Ditto.
4871            * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.
4872  2002-10-31  Timo Schulz  <[email protected]>  
4873    2001-10-25      Timo Schulz <[email protected]>
4874          * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.  
4875          Thanks to Gustavo.          * wptGPG.cpp (get_gpg_default_key): Support for the users options file.
4876          * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect          (check_gpg_path): Ditto.
4877          whether it's a key pair or not.          (get_gpg_options): Ditto.
4878          * Callback struct into KEY so we can modify the values in the background.          (set_gpg_default_key): Ditto.
4879          * wptKeyPropsDlg.cpp (change_ownertrust): New.          (set_gpg_options): Ditto.
4880            (gpg_check_keyring): Ditto.
4881  2002-10-13  Timo Schulz  <[email protected]>          (set_gpg_default_keyid): Fix a typo.
4882            * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.
4883          * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static  
4884          any longer.  2001-10-23      Timo Schulz <[email protected]>
4885    
4886  2002-10-14  Timo Schulz  <[email protected]>          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while
4887            because it's shorter.
4888          * wptKeyserver.c: Replaced all strdup's with m_strdup and free          * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of
4889          with free_if_alloc.          the default keyid.
4890          (ldap_recvkey): Fill with life. We use the GPG plugin to avoid          * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now
4891          all the LDAP overhead.          we use the signer from the keylist.
4892            * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix
4893  2002-12-14  Timo Schulz  <[email protected]>          some silly bugs.
4894            * WinPT.cpp (WinMain): if there is no valid keyring after the new
4895          * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean          preferences, start the key generation dialog.
4896          any longer there is also a secret key.  
4897          (km_check_photo): New.  2001-10-22      Timo Schulz <[email protected]>
4898          (km_complete_status_bar): New.  
4899          * wptFileManager.cpp (fm_verify): Support for bad signatures.          Remove all MyGPGME code from the main project. Now we use the
4900          Set the sigmode if not set.          libmygpgme.dll to provide all cryptographic functions and interfaces.
4901          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when  
4902          the ownertrust of a non-valid (not signed) key is changed.          * wptKeylist.cpp (key_array_new): New.
4903          * wptRegistry.cpp (expand_path): New. Use this code because it's          (key_array_release): New.
4904          much shorter.          (key_array_search): New.
4905            * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was
4906  2002-12-18  Timo Schulz  <[email protected]>          already checked and don't bother the user if all userid's were selected.
4907            * wptPassphraseCB.cpp (passphrase_cb_init): Now void.
4908          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead          (passphrase_cb_gpgme): Ditto.
4909          of the old name "options".          (passphrase_callback_proc): Support for a list of recipients.
4910          * WinPT.cpp (WinMain): Try to repair broken home directories          * wptImportList.cpp (implist_add_key): Support for secret keys.
4911          in the registry. Thanks to Gustavo who reminded me of it.  
4912          * wptKeyserver.cpp (check_hkp_response): Only copy the text  2001-10-19  Timo Schulz <[email protected]>
4913          between <p> and </p> when possible.  
4914          * wptAgent.cpp: Re-activated the old code. Now the passphrase      * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various
4915          timer can be used.      option files.
4916        * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and
4917  2002-12-21  Timo Schulz  <[email protected]>      use a popup menu.
4918        * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE
4919          * Fixed some language mistakes.      plug-in.
4920          * wptMainproc.cpp: Use the desktop window as the parent window      (gpgoe_unload_plugin): New.
4921          for the main dialogs so they are visible in the taskbar.  
4922          * wptKeyManagerDlg.cpp: Enable minimize.  2001-10-17  Timo Schulz <[email protected]>
4923          * wptFileManager.cpp (fm_parse_command_line): Support for detached  
4924          signatures.      * wptCurrWnd.cpp (get_window_contents): Only minimize the window
4925          (fm_encrypt_directory): New.      when the clipboard contains text.
4926          * wptKeylist.cpp (keylist_add_key): Check the current key if it      * wptKeylist.cpp (keylist_add_key): Check only for invalid keys
4927          is not expired, not the primary (idx=0).      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  2002-12-23  Timo Schulz  <[email protected]>      skipping the key.
4930        * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print
4931          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver      out a warning.
4932          directory if does not exist.      Change all error messages to one header.
4933          * wptKeyserver.cpp: Simpliefied config file.      (check_key_status): Check if the key is valid in the sense of
4934          (kserver_change_proxy): Write config to the registry. Remove      revocation and expire dates. If not, print out a warning.
4935          code for the config file.      (keymisc_dlg_proc): Use the new code.
4936          * wptProxySettingsDlg.cpp (read_proxy): More robust code.  
4937          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature  2001-10-16  Timo Schulz <[email protected]>
4938          to send keys. The Key Manager is better for this.  
4939        * wptW32API.cpp (check_date): New.
4940        (get_open_filename): New.
4941  2003-01-07  Timo Schulz  <[email protected]>      * wptDlgs.cpp (init_dtp): New. Initialize a special common control.
4942        * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.
4943          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window  
4944          pos from the coordinates from the registry.  2001-10-15  Timo Schulz <[email protected]>
4945          (keymanager_dlg_proc): Store the window pos in the registry.  
4946          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.      * wptFileManager.cpp (fm_wipe): New.
4947          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when      (fm_set_status): Add temporary wipe status and handle default values.
4948          a revcert was found.      (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped
4949          * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does      files with a successful opeation.
4950          not succeed.      * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.
4951          (keyserver_dlg_proc): Corrected some listview index values.      (keygen_cb_thread): New. Static dialog thread.
4952          * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.      (keygen_cb_dlg_create): New. Interface.
4953        (keygen_cb_dlg_destroy): New. Destroy the dialog.
4954  2003-01-08  Timo Schulz   <[email protected]>      (keygen_cb): GPGME interface.
4955    
4956          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning  2001-10-13  Timo Schulz <[email protected]>
4957          if the user tries to add the email address in the name field.  
4958          * wptKeyserver.cpp: Add support for protocols.      Set all ListviewControls to 'NULL' in all dialogs to be more crash
4959          (finger_readline): New.      resistent.
4960          (finger_recvkey): New.  
4961          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.
4962          message box to show it's a serious decision.      * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.
4963          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.      * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.
4964          * wptRegistry.cpp (regist_single_filetype): Now internal and we use      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
4965          an easier way to get the location of the binary.      * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.
4966          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry      * wptStringUtil.cpp: Removed.
4967          entry to avoid double file registering.      * wptFileManager.cpp: Rewrote the complete interface code for
4968        the file manager.
4969  2003-01-19  Timo Schulz  <[email protected]>      * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.
4970    
4971          * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.  2001-10-10      Timo Schulz <[email protected]>
4972          * wptKeyManagerDlg.cpp (do_resize_window): New.  
4973          (do_create_minpopup): New. Closes #669730.          * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the
4974          * wptVerifyList.cpp (get_sig_date): Renamed to...          file is longer then the keyid.
4975          (longdate_to_strdate): New. Changed all callers.          (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the
4976          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains          entry is an userid.
4977          a signature, also display the time of it. Closes #669780.          * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file
4978          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.          more then one time.
4979          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.          (fm_add_dropped_files): Use it here.
4980          * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common
4981          to choose the signer.      keys.
4982          (keysign_dlg_proc): Implemented a feature request. See above.  
4983    2001-10-09  Timo Schulz <[email protected]>
4984  2002-01-21  Timo Schulz  <[email protected]>  
4985        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return
4986          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to      code of sunlink.
4987          avoid typing mistakes.      * wptGPG.cpp (get_keyring_from_optfile): New.
4988        Renamed gpg_errstr to gpg_strerror.
4989  2002-01-25  Timo Schulz  <[email protected]>      (set_default_key): New.
4990        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.
4991          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id      
4992          and the fingerprint to the clipboard. Closes #674455.  2001-10-08  Timo Schulz <[email protected]>
4993          Automatically reload the keycache when a command is chosen and the cache  
4994          state is set to 'reload requested'. Closes #671218.      * wptKeyserver (kserver_connect): If the proxy settings are valid,
4995          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts      use the proxy port instead of the HKP port.
4996          are not invalid.      (kserver_recvkey): Proxy support.
4997          * WinPT.cpp (check_permissions): Make sure we have the permission to      (kserver_search_init): Ditto.
4998          write the keyring. Stop if not because it's expected at many other places.  
4999          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.  2001-10-06  Timo Schulz <[email protected]>
5000          (siglist_build): Use a placeholder sig to avoid the position chaos.  
5001          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.      * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.
5002          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,  
5003          display more information and use a GPG like output.  2001-10-05  Timo Schulz <[email protected]>
5004          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is  
5005          an invalid key in the list of recipients. Closes #674965.      * 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  2002-02-01  Timo Schulz  <[email protected]>      Remove the Pos column and add a status column instead.
5009        Add expire stuff for subkeys.
5010          * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.      (init_dtp): Initialize the common control.
5011        * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file
5012  2002-02-08  Timo Schulz  <[email protected]>      into the clipboard.
5013        * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description
5014          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export      of the ownertrust value.
5015          the secret key when a file was chosen.      (keyprops_dlg_proc): Fixed ownertrust handling.
5016    
5017  2002-03-01  Timo Schulz  <[email protected]>  2001-10-04  Timo Schulz <[email protected]>
5018    
5019          * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection      * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.
5020          logic. Now we can decrypt symmetrically encrypted files again.      * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.
5021          Be stricter on memory alloaction checks.      Both were pointed out my Timo (not me ;-)).
5022          (fm_get_file_type): Be more strict with the return code of      * wptKeylist.cpp (add_key): Fix a typo and now the code is more
5023          parse_packet. This avoids bogus file types for MS-Word files and      strict with returned attributes.
5024          other non-PGP data.      * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface
5025          (fm_wipe): Use the wipe mode from the registry and not a fixed value.      for local signatures.
5026          * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.  
5027          (get_reg_winpt_prefs): Likewise.  2001-09-28  Timo Schulz <[email protected]>
5028          * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.  
5029          * wptDlgs.h: Corrected all dialog protypes to BOOL.      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle
5030          LRESULT was not correct.      the double click messages.
5031        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
5032  2002-03-08  Timo Schulz  <[email protected]>      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
5033        * wptFileManager.cpp (overwrite_file): Check if the file exists and
5034          * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'      then let the user decide.
5035          because they are options rather than files.      (fm_encrypt): Use the code here.
5036          * WinPT.cpp (WinMain): Allow to start the key manager directly      (fm_sign): And here.
5037          via --keymanager.      (fm_sym_encrypt): And here. Now we use the passphrase dialog.
5038          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.      (fm_decrypt): And here.
5039          (wipe_cb): New. Wipe callback function.      * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need
5040          (fill_drive_combobox): New. Fill in all logical drives into      a secure wipe.
5041          the given combo box.  
5042          (wipe_thread): New. Worker thread.      Make the memory checking more strict.
5043          (update_disc_stats): New. Set the disc statistics for the  
5044          given drive entry.  2001-09-27  Timo Schulz <[email protected]>
5045          (space_wipefrees_dlg_proc): New.  
5046        * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who
5047  2002-03-09  Timo Schulz  <[email protected]>      discovered this.
5048        * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the
5049          * 64-bit support for wipe operations.      passphrase.
5050        * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to
5051  2002-03-16  Timo Schulz  <[email protected]>      the various other dialogs to make the use more easier.
5052        * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.
5053          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the      * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.
5054          optional text in UTF-8 to avoid charset problems.  
5055          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead  
5056          of a static buffer. Changed all callers.  2001-09-26  Timo Schulz <[email protected]>
5057          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions  
5058          for the rest of the columns.      * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.
5059          (keylist_handle_column_click): New.      (listbox_get_cursel): Ditto.
5060          * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):  
5061          Removed the 'Advanced' button because it only confuses users  
5062          and it is not often used.  2001-09-23  Timo Schulz <[email protected]>
5063          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-  
5064          and import the trustdb values (ownertrust).      * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.
5065          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to      The same as the userid dialog.
5066          sort columns.      * wptWndSwitchDlg.cpp: Removed.
5067        * wptWipeExt.cpp: Removed. Code is now included.
5068  2003-03-18  Timo Schulz  <[email protected]>      * wptGPGME.cpp (get_default_keyid): If the keyid from the options
5069        file is in the keycache.
5070          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index      * wptKeylist.cpp (keylist_reload): New. Reload a keylist.
5071          of revocation from 9 to 8.  
5072          Set the text that no key was updated only if no new sig, subkey,  2001-09-17  Timo Schulz <[email protected]>
5073          userid and no public were added.  
5074          Add more information: new {subkeys, signatures, userid}.      * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs
5075          * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.      who prevent the correct return value in the case of an clipboard error.
5076          * wptDlgs.cpp: Removed.      (clip_parse_pgp_id): New. Returns the PGP message type.
5077          * wptDlgs.h: (dlg_fatal_error): New. Macro.      * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.
5078        (hotkey_single_register): Return correct error value.
5079  2003-03-19  Timo Schulz  <[email protected]>      (hotkey_single_unregister): Ditto.
5080        * wptW32API.cpp (get_thread_id): Removed.
5081          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.      (attach_thread_input): Ditto.
5082          * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly      (detach_thread_input): Ditto.
5083          in the code.      * wptCurrWnd.cpp (get_window_contents): Store main and focused window
5084          * wptPasswdDlg.cpp: Likewise.      for later use.
5085          (passphrase_cb_init): Declare as static.      (set_window_contents): Use the new code.
5086          (passphrase_cb_gpgme): Modified to use the static function and rename  
5087          it to...  2001-09-16  Timo Schulz <[email protected]>
5088          (passphrase_gpgme_set_cb): ..this. New.  
5089          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA      * wptExtensions.h: New. This file is now used for the extenion
5090          and friends to assign data to each item.      declarations.
5091          Move dialog code to...      * wptExtensions.new: (register_extensions): New. Enumerate and
5092          * wptClipSignEncDlg.cpp: ..here.      load all possible extensions.
5093          * MyGPGME/keycache.c: We first look for directly key signatures and      (unregister_extentions): New. Release all loaded extensions.
5094          then we skip all other signatures if we've already seen the key. This      * wptKeyserver.cpp (kserver_load_conf): Added support for different
5095          is needed to gather the designated revoker keys.      keyservers. Currently only HTTP/LDAP.
5096        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.
5097  2003-03-20  Timo Schulz  <[email protected]>      (hkp_recv_key): Ditto.
5098        * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents
5099          * wptFindWnd.cpp: Removed.      to set the focus.
5100          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of      * (oe_check_recipient): New. Checks if the key is able to encrypt
5101          find_window.      and valid in the sense of revocation.
5102          * Whenever it's possible, use case insentensive searches to avoid  
5103          problems.  2001-09-14  Timo Schulz <[email protected]>
5104    
5105  2003-04-09  Timo Schulz  <[email protected]>      * wptWAB.cpp: (wab_read): New. Interface to read all address book
5106        entries.
5107          * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as      (wab_open): New. Internal function to load the WAB.
5108          invalid for cancel.      (wab_release): New. Release the WAB contexts.
5109        (wab_load): New. Load the contents of the WAB into a linked list.
5110  2003-04-12  Timo Schulz  <[email protected]>      (addr_list_new): New. Linked address list.
5111        (addr_list_add): New.
5112          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new      (addr_list_release): New.
5113          GPGME code.  
5114          * wptVerifyList.cpp (verlist_add_sig_log): Likewise.  2001-09-13  Timo Schulz <[email protected]>
5115          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.  
5116          * wptFileManager.cpp (fm_decrypt): Likewise.      * Revamped the whole plugin code for OE5.
5117          * WinPT.cpp (check_default_key): Check if the keys in gpg.conf      * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.
5118          are valid and in the keyring.      (oe_plugin_releae): New.
5119          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase      (oe_plugin_init): New. Searches for the OE main window and select
5120          item if the key is not protected.      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  2003-04-13  Timo Schulz  <[email protected]>      (oe_set_msg): Ditto.
5124        (oe_encrypt): Changed for the new code.
5125          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback      * wptMainProc.cpp (wpt_main_proc): Re-activate the code.
5126          context.      * wptHotkeys.cpp: Ditto.
5127          * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.      * Removed the hook project.
5128          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect  
5129          flag inside the KEY contect if needed.  2001-09-12  Timo Schulz <[email protected]>
5130          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a  
5131          passphrase if the protect flag is set.      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.
5132          Display the callback dialog to show the progress.      Thanks to Rich who pointed this out.
5133          Implemented the "revkey" feature.  
5134          * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.  2001-09-07  Timo Schulz <[email protected]>
5135          (do_add_new_userid): New. Add an entry to the list box  
5136          after the GPG process finished.      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.
5137          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig  
5138          to zero to avoid segfaults.  2001-09-05  Timo Schulz <[email protected]>
5139    
5140  2003-04-15  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.
5141        (clip_import): New. Handy function to import keys.
5142          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.      * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase
5143          (data_cb_thread): New.      is too short.
5144          (data_cb_dlg_create): New.  
5145          (data_cb_dlg_destroy): New.  2001-09-04  Timo Schulz <[email protected]>
5146          (data_cb_new): New.  
5147          (clip_import_dlg_proc): Use a callback dialog to      * Rewrote most parts of the keymanager.
5148          show the user the data decoding procedure is in      * Ditto for the filemanager.
5149          progress. This dialog is destroyed in the key  
5150          import statistics dialog.  2001-09-01  Timo Schulz <[email protected]>
5151    
5152        * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.
5153  2003-04-20  Timo Schulz <[email protected]>      These code is now part of the key manager.
5154        * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.
5155          * wptFindWnd.h: Removed. We don't use it any longer.      * wptKeylist.cpp (get_key_algo): New.
5156          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.      (get_key_created): New.
5157          (gpg_strerror): Removed. Now it is handled in winpt_strerror.      (get_key_type): New.
5158          * wptFileManager.cpp (fm_get_file_name): move this to      (get_key_size): New.
5159          * wptVerifyList.cpp (get_file_name): ..this place and declare      (get_key_fpr): New.
5160          it as static because no other file need this function.      * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now
5161        a part of the keymanager.
5162  2003-04-20  Timo Schulz  <[email protected]>  
5163    2001-08-31  Timo Schulz <[email protected]>
5164          * wptClipboard.cpp: Removed. All these functions and constants  
5165          are now available in MyGPGME/clip.c and thus part of GPGME.      * wptFileManager.cpp (fm_add_opened_files): New. Use a standard
5166          * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...      file open dialog instead of drag & drop.
5167          (keylist_get_recipients): this. Return the context instead of      * wptHotkeys.cpp (hotkey_strerror): More detailed information which
5168          an argument.      hotkey couldn't set up.
5169          (get_key_size): Add key index.      (hotkey_register_single): Ditto.
5170          (get_key_algo): Likewise.  
5171          (keylist_build): Use a special mode when signing is used.  2001-08-30  Timo Schulz <[email protected]>
5172          (keylist_enum_recipients): Return a malloced pointer to the  
5173          recipients.      * wptFilemanager.cpp (fm_encrypt): Add minor changes.
5174          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint       (fm_decrypt): Ditto.
5175          when we have a signature result and we do not trust the key.       (fm_sign): Ditto.
5176         (fm_verify): Make the code more modular.
5177  2003-04-23  Timo Schulz  <[email protected]>       (fm_add_sig_stat): New. For new fm_verify code.
5178    
5179          * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function  2001-08-28  Timo Schulz <[email protected]>
5180          from GPGME#gpgme_ownertrust_to_string into WinPT.  
5181        * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.
5182  2003-04-24  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_load_conf): Proxy support
5183        (kserver_connect): Ditto.
5184          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init  
5185          default values to make it easier for newbies.  2001-08-26  Timo Schulz <[email protected]>
5186          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error  
5187          when no secret key was found. Also mention the public key algo.      * wptFileManager.cpp (fm_entry_new): New.
5188          * wptFileManager.cpp (fm_decrypt): Likewise.      (fm_entry_release): New.
5189        (fm_state_new): New.
5190  2003-04-25  Timo Schulz  <[email protected]>      (fm_state_release). New.
5191        (fm_get_current_file): New.
5192          * wptVerList.cpp (verlist_build): Change the name of some columns.      * wptKeylist.cpp (strlist_add_recipients): New.
5193          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the  
5194          notation (if present!) present the user a general message box  2001-08-25  Timo Schulz <[email protected]>
5195          with extended signature information. This means the notation  
5196          data and a possible policy URL.      * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.
5197        (strlist_release): New. Release the linked list.
5198        (strlist_add): New.
5199  2003-04-26  Timo Schulz  <[email protected]>  
5200    2001-08-21  Timo Schulz <[email protected]>
5201          * wptParser.cpp: A lot of structural changes. Always add items  
5202          at the end of the list so we don't need to make a copy of the list      * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it
5203          to restore the original order. Fix the group problem.      also supports "encrypt-to" entries as default keys.
5204          * wptKeylist.cpp (keylist_build): Use OR to get the flags and      * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide
5205          not ==.      secure wiping.
5206          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command      (wipe_deinit_ext): New. Unload the DLL and free all pointer.
5207          (file) does not use the keyid as the file name when more than one      (wipe_loaded_ext): New. Checks wether the DLL was loaded.
5208          keys were selected.      * wptW32API.cpp (set_menu_state): New.
5209          Allow allow to set default keys which are not revoked or expired.  
5210          * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort  2001-08-20  Timo Schulz <[email protected]>
5211          the columns.  
5212          Set the force trust flag in GPGME if there are some recipients      * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.
5213          with no validity.      * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable
5214        the hotkeys. Automatically enable or disable the hotkey field depend
5215  2003-04-27  Timo Schulz  <[email protected]>      on the switch.
5216    
5217          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows  2001-08-17  Timo Schulz <[email protected]>
5218          to show the properties of the signers keys.  
5219          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only
5220        one by default.
5221  2003-04-30  Timo Schulz  <[email protected]>      * wptKeyList.cpp (keylist_add_to_recipients): Ditto.
5222        * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram
5223          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the      entry in the registry in the case it's missing (whenever it's possible!).
5224          next context menu ("Add"). Make sure the entries are disabled      (check_gpg_path): Rewrite parts of the code.
5225          when the key has no secret key.  
5226          * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.  2001-08-11  Timo Schulz <[email protected]>
5227          * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't  
5228          cause a segfault when the pointer free tries to deallocate the      * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and
5229          pointer.      separate the fingerprint from the othr information.
5230        * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the
5231  2003-05-02  Timo Schulz  <[email protected]>      file, specified in the options line, does exist.
5232    
5233          * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.  2001-08-08  Timo Schulz <[email protected]>
5234    
5235  2003-05-03  Timo Schulz  <[email protected]>      * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.
5236        Support for more configurations.
5237          * wptParser.cpp: Renamed to...      * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.
5238          * wptGPGParser.cpp: this.      Add all strings to the translation suite.
5239          (release_option): Renamed to...      * Updated all NLS dialog strings.
5240          (release_gpg_options): this.      * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.
5241          (commit_option): Renamed to...      * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,
5242          (commit_gpg_options): this.      with a dynamic callback for the passphrase.
5243          (parse_option): Renamed to...  
5244          (parse_gpg_options): this.  2001-08-06  Timo Schulz <[email protected]>
5245          * wptGPG.cpp: Use new parser function names.  
5246          (set_gnupg_default_key): Free memory.      * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.
5247          * wptKeylist.cpp (keylist_add_groups): New group code.  
5248          * wptGroups.{c,h}: Removed. Now we use the GPG group command.  2001-08-05  Timo Schulz <[email protected]>
5249          * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from  
5250          2 to 4.      * wptKeylist.cpp (keylist_add_key): Change the schematics to support
5251          (recv_missing_keys): Likewise. Now it is possible to retrieve      all keyids.
5252          missing keys. Thanks to Klaus.      * wptSigList.cpp (siglist_build): New. Interface code to load the
5253          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather      signature list.
5254          than a static buffer to avoid garbled keys. There are some very      * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.
5255          large keys and these cause some trouble with a 16k buffer.  
5256          (keyserver_dlg_proc): Localized some strings.  2001-08-03  Timo Schulz <[email protected]>
5257          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column  
5258          names which are equal to the names we use in the Key Manager.      * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now
5259          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but      we support this code in the key manager.
5260          should be "==" bug.      * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.
5261          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.      * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):
5262          * Add --expert option for the GPG procedure call if needed.      Removed. The code moved into the main functions.
5263        (kserver_send), (kserver_recv): Ditto.
5264  2003-05-04  Timo Schulz  <[email protected]>      (sock_write): Improved code.
5265        (sock_read): Ditto and some additional timeout.
5266          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients      (sock_select): New. Figure out the socket state.
5267          were found, output a more precise error message. Now the GPGME code      (kserver_search_init): New. Make connection to the server.
5268          first tests for special cases and if no one hit the nail on the head,      * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new
5269          a general error is used.      keyserver code.
5270        * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker
5271  2003-05-06  Timo Schulz  <[email protected]>      packet. Thanks to Alan.
5272        (check_for_symenc_data): Ditto.
5273          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys      * wptFileManager.cpp (fm_get_file_type): Ditto.
5274          are available. Removed old [unused] code.      (fm_decrypt): Move the keycache in the if loop and fix the keycache
5275          Make sure we really have the key in the cache.      type.
5276    
5277  2003-05-07  Timo Schulz  <[email protected]>  2001-08-02  Timo Schulz <[email protected]>
5278    
5279          * Clean up the outer GPGME interface. Internal functions should be      * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.
5280          invisible in gpgme.h.      Useful in the case the file was generated but it's empty.
5281          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.      * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.
5282          * wptKeyserver.cpp: Some cleanups.  
5283          (finger_recvkey): Skip URL postfix if there.  
5284    2001-08-01  Timo Schulz <[email protected]>
5285  2003-05-08  Timo Schulz  <[email protected]>  
5286        * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible
5287          * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current      request for uploading a key.
5288          window mode.      (kserver_send_request): Use the urlencode to send the key.
5289          (currwnd_gpg_dlg): Likewise.      (sock_read): New. Improved read function to replace recv.
5290          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.      (sock_write): New. Improved write function to replace send.
5291          * WinPT.cpp (WinMain): If the default key was not found, show the string      * wptFileManager.cpp (fm_get_file_type): If the data is armored,
5292          in the error message to make it easier for the user to fix the problem.      call fm_check_armor_type().
5293          * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret      (fm_check_armor_type): New. Figure out the armor type of the data.
5294          keys.      * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the
5295          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.      buttons. Optimized the code.
5296          This makes the priority of the rc2 update more urgent.  
5297    2001-07-30  Timo Schulz <[email protected]>
5298  2003-05-09  Timo Schulz  <[email protected]>  
5299        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code
5300          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.      for the agent.
5301          * wptFileManager.cpp (fm_print_md): New.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
5302          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD  
5303          command.  2001-07-29  Timo Schulz <[email protected]>
5304    
5305  2003-05-13  Timo Schulz  <[email protected]>      * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating
5306        a key revocation certificate. Add a hint to show how sentensive this
5307          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.      data is.
5308          (key_check_validity): Moved from GPGME to this file.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the
5309          * wptKeyManager.cpp (km_get_key_status): New.      revocation.
5310        * wptAgent.cpp: Source for the server interface removed.
5311  2003-05-14  Timo Schulz  <[email protected]>      (agent_is_avail): New. Checks if the agent is available.
5312        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code
5313          * wptKeyManager.cpp (km_enable_disable_key): New.      for the agent.
5314    
5315  2003-05-17  Timo Schulz  <[email protected]>  2001-07-26  Timo Schulz <[email protected]>
5316    
5317          * wptFileManager.cpp: Moved gpgme_file_get_extension to this file      * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring
5318          and renamed it to...      exists. Useful if the keyring was moved during some commands.
5319          (file_get_extension): this. gpgme_control now also returns the      * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to
5320          (get_file_name): Corrected the calculation of the basename.      Rich to discover this.
5321          state of the command if you use -1 as the value.  
5322          * wptImportList.cpp (implist_load): Make sure we really have the key ID.  2001-07-25  Timo Schulz <[email protected]>
5323          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over  
5324          the place.      * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect
5325        serious GPG errors.
5326  2003-05-19  Timo Schulz  <[email protected]>      * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.
5327        Suggested by Graham.
5328          * wptPasswdDlg.cpp (create_passwd_dlg): Removed.      (fm_decrypt): Change code to support symmetric decryption.
5329          (request_passphrase): New.      (fm_get_file_type): Fixed some typos.
5330          The passphrase_s context is now internal, all externl function use now  
5331          request_passphrase. Changed all callers.  2001-07-24  Timo Schulz <[email protected]>
5332          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase  
5333          warning and a check for the comment field was added.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after
5334          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which      reloading the keycache. Fixed the memory leaks. Thanks to Andreas.
5335          has shown the subkeys and the userids.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform
5336          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.      the user about errors.
5337        * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure
5338  2003-05-20  Timo Schulz  <[email protected]>      in our own context.
5339        (treeview_insert_item): New. Handy function to insert an entry.
5340          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change      (treeview_create_child_item): New. Insert a trustlist node.
5341          the passphrase from here to...      (treeview_add_trustpath): New. Add recursively the whole trust path
5342          * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.      int the tree view.
5343        * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the
5344  2003-05-21  Timo Schulz  <[email protected]>      signature list contains entries with a NOKEY status.
5345        (recv_missing_keys): New. Receive all keys with a NOKEY as the signature
5346          * wptSiglist.cpp (siglist_add_key): Only list signatures which are      status.
5347          user-id certificates (0x10-0x13) and ignore key and subkey sigs.      * wptImportList.cpp (implist_load): New. Initialize the listview item
5348          c-strings are now handle correctly and decoded into GPGME.      with an import overview.
5349        * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead
5350  2003-05-22  Timo Schulz  <[email protected]>      of the code.
5351        (print_import_status): Summarize the results. We need this because file
5352          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current      import needs the same function.
5353          window mode sign+encrypt. This fixes a couple of other problems.      * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the
5354          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the      file manager.
5355          key when the cache was reloaded.      * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key
5356        import from file.
5357        * wptFileManager.cpp (fm_import): New. Ditto.
5358  2003-05-24  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_connect): Take care for some return values
5359        and set the socket to non blocking mode.
5360          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists      Moved the Winsock2 init code to wptMainProc.cpp
5361          to allow to use virtual keys (DEL, INS).      * wptMainProc.cpp (wpt_main_proc): Wsock2 code.
5362          Release the uid control context when the dialog will be destroyed.      * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.
5363    
5364    2001-07-22  Timo Schulz <[email protected]>
5365  2003-05-25  Timo Schulz  <[email protected]>  
5366         * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.
5367          * wptImportList.cpp (implist_add_key): Address charset problem.       (get_key_created): New. Transform ulong timestamp to ascii.
5368          * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.       (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).
5369          * wptKeyserver.cpp (set_default_kserver): New.       (get_key_size): New. Returns a formatted size depend (depend on subkeys).
5370          (wsock_init): Call the new function.       * wptSigList.cpp (siglist_add_key): Fix the timestamp.
5371          (kserver_load_conf): If the FP is invalid, skip to read the file.       * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace
5372          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the       this with list trust path.
5373          item has a value.       * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function
5374         because we always check the signatures.
5375  2003-05-28  Timo Schulz  <[email protected]>       * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.
5376        
5377          * wptKeyManager.cpp (km_set_clip_info): New.  2001-07-21  Timo Schulz <[email protected]>
5378          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.  
5379          * wptImportList.cpp (implist_build): Some column changes for      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in
5380          the listview control.      the case of IDCANCEL.
5381          (implist_load): Return if secret keys were found.      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
5382          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair
5383          were found.      pair and only if activate the passphrase dlg items.
5384          (clip_import_dlg_proc): New message if secret keys were found.      Do sanity checks for all buttons that require key pairs.
5385        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.
5386        
5387  2003-05-31  Timo Schulz  <[email protected]>  2001-07-20  Timo Schulz <[email protected]>
5388    
5389          * wptKeyManager.cpp (km_key_is_v3): Return if the selected      * wptKeyserver.cpp: (kserver_send_request): Correct the octect length
5390          key is an old PGP 2 (v3) key.      of the request.
5391          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow      (check_hkp_response): If an error ocurred, copy the error message into
5392          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.      the static buffer.
5393          to add extented items if the key is NOT version 3.      (kserver_strerror): Interface for the static error buffer.
5394          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the      * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message
5395          key is v3 and forbid most commands.      box.
5396          (is_cmd_openpgp): New.      (hkp_send_key): Add more verbose messages at the end.
5397        (hkp_recv_key): Ditto.
5398  2003-06-01      Timo Schulz  <[email protected]>      (check_pattern): Rewrote the entire code to be more bug proof.
5399        * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate
5400          * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...      that the recipient list contains untrusted entries.
5401          (KEYDOWN, KEYUP): macros for the functions above.      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to
5402        force GPG to add the need options.
5403  2003-06-04  Timo Schulz  <[email protected]>      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
5404    
5405          * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact  2001-07-19  Timo Schulz <[email protected]>
5406          that GPG uses the newest subkey by default, we always return  
5407          the info of this subkey and not the first.      * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more
5408          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one      detailed error messages in the case for a missing key or an included
5409          bug. Now the indicies are correctly.      signature.
5410          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before  
5411          get_file_size is called.  2001-07-17  Timo Schulz <[email protected]>
5412          * WinPT.cpp (WinMain): Only check the GPG engine version if there  
5413          were no problems with the GPG config. And differ between a problem      * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox
5414          to get the version and if a wrong version were detected.      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  2003-06-05  Timo Schulz  <[email protected]>      * wptListView.cpp (listview_set_ext_style): Set an extended style for
5418        the given listview.
5419          * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the
5420          shows all involved recipients and also the public key algorithm.      selected server.
5421          * wptRegistry.cpp (reg_inst_winpt): If the user does not want      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
5422          the extensions, set the entry to "1" so the message is not shown      * wptKeyserver.cpp (kserver_connect): IP address support. This is faster
5423          again.      and no DNS lookup is needed.
5424    
5425  2003-06-06  Timo Schulz  <[email protected]>  2001-07-14  Timo Schulz <[email protected]>
5426    
5427          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning      * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding
5428          message and include the user-id.      it to the signing keylist.
5429          * Encryption: use force overwrite (--yes) to make sure there are      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase
5430          no complications with GPG.      is empty.
5431          * Import: skip all record types we do not understand.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
5432    
5433    
5434  2003-06-10  Timo Schulz  <[email protected]>  2001-07-13  Timo Schulz <[email protected]>
5435    
5436          * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys      * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to
5437          are skipped.      the request. Arggg!
5438          (keysign_dlg_proc): Removed some redundant code.      (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.
5439          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if  
5440          it is possible to change the passphrase.  
5441    2001-07-12  Timo Schulz <[email protected]>
5442  2003-06-11  Timo Schulz  <[email protected]>  
5443        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,
5444          * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the      just quit without any messages. Suggested by Rich.
5445          right order and we do not use the last user-id but the first  
5446          because this is always the primary user-id or the newest user-id.  
5447          * wptGPGME.cpp (get_default_keyid): Removed. Some better code  2001-07-11  Timo Schulz <[email protected]>
5448          were added to get_gnupg_default_key.  
5449        * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add
5450  2003-06-13  Timo Schulz  <[email protected]>      the integer.
5451        (keyserver_create_conf): Create a config file instead of the error.
5452          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.      * wptGPG.cpp (create_gpg_options): If the file doesn't exist create
5453          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to      a default file. This prevents confusing error messages.
5454          the fact the signer is now dymanic and not static.      (get_gpg_options): Use new code.
5455          * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and      * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells
5456          change all code that it only shows an error if no plug-in was loaded.      the user how to find the files.
5457          * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you  
5458          can revoke v3 keys.  2001-07-05  Timo Schulz <[email protected]>
5459          (do_editkey_revoke): Clarify command because it can be only used  
5460          for secondary keys.      * wptHotkey.cpp (mod_hotkeys): Fix a small typo.
5461          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error  
5462          is issued when no key was selected. Thanks to vedaal.  2001-07-04  Timo Schulz <[email protected]>
5463    
5464  2003-06-24  Timo Schulz  <[email protected]>      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key
5465        if the user agree.
5466          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.      * wptKeylist.cpp (keyload_load): Use the mode from the param, not
5467          Thanks to Alex.      the hardcoded.
5468          * wptKeyManager.cpp (km_delete_keys): Quote the user-id.      * 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  2003-07-12  Timo Schulz  <[email protected]>      registry stuff.
5472        * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.
5473          * wptFileManager.cpp (fm_verify): Support for multiple signatures.      (get_reg_winpt_prefs): Ditto.
5474          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.      (regist_inst_winpt): Remove the old code.
5475          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.      (register_single_filetype): Replacement for the old code.
5476          * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.  
5477          (kserver_connect): Likewise.  2001-07-01  Timo Schulz <[email protected]>
5478          (kserver_read_config): Likewise.  
5479          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases      * wptFileManager.cpp (fm_verify): New.
5480          are not equal.      (fm_decrypt): New.
5481          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.
5482          generate a key pair.  
5483    
5484  2003-07-13  Timo Schulz  <[email protected]>  2001-06-30  Timo Schulz <[email protected]>
5485    
5486          * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains      * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase
5487          characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850      code.
5488          it would be a bad idea to use such passphrases. And thus we disallow it.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
5489          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.      * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.
5490          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.      * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.
5491          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.      (fm_delete): New.
5492        (fm_encrypt): New.
5493  2003-07-22  Timo Schulz  <[email protected]>      (fm_get_current_pos): New.
5494        (fm_get_file_type): New.
5495          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of      (fm_add_dropped_files): New.
5496          the text instead of allocating the maximum.  
5497    2001-06-29  Timo Schulz <[email protected]>
5498  2003-08-17  Timo Schulz  <[email protected]>  
5499        * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent
5500          * wptKeyManagerDlg.cpp (keymanager_dlg_proc):      to send data to the clipboard.
5501          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The      * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to
5502          value was malformed.      destroy the window immediately.
5503          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.      * wptKeyserver.cpp (kserver_getip): Removed.
5504          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,      (kserver_get_langname): Removed.
5505          don't bother the user with an error message. Closes #782751.      (kserver_load_conf): New. Load the keyserver.conf file and set the
5506          * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the      included keyserver addresses into the global context.
5507          "primary" edit key command.      * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the
5508          * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is      keyserver context.
5509          possible to supress the status message. This is useful when the whole      * wptImplist.cpp (get_key_date): New. Transform integer timestamp
5510          keyring will be refreshed.      to ISO date.
5511          * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.      (implist_add_key): Now it uses the context instead of all single
5512          (quote_file): Avoid double quotes.      variables.
5513          * GPGME support for quoted file names.  
5514          (fm_sym_encrypt): Double check password and to additional 8-bit checks.  2001-06-28  Timo Schulz <[email protected]>
5515          * WinPT.cpp (my_acces): Moved to this file..  
5516          * wptGPG.cpp: ..here.      * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new
5517          (gpg_check_permissions): Renamed from check_permissions and make it global.      flag variables to support RFC1991.
5518          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we      (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.
5519          have write access to the keyring for some commands.      (get_rfc1991_pktlen): Ditto.
5520    
5521  2003-08-24  Timo Schulz <[email protected]>  2001-06-27  Timo Schulz <[email protected]>
5522    
5523          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable      * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.
5524          dialog controls.      (get_pkt_len): New. Extract the OpenPGP packet length.
5525        (parse_pke_sesskey): Read a public key encrypted session key
5526  2003-08-30  Timo Schulz  <[email protected]>      but without data.
5527        * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the
5528          * wptGPG.h: Support for the GPG status messages REVKEYSIG and      filename contains spaces. Just to make GPG happy.
5529          EXPKEYSIG. With this new feature, GPG 1.2.3 is required.      (file_manager_dlg_proc): Check if the file exist after encryption.
5530          * Make sure that the signature status does not cause an      * wptFile.cpp (get_keyid_from_file): Checks the file for an valid
5531          segfault.      packet and then extract the keyid.
5532          * WinPT.cpp: Use new check to detect the GPG version and make sure  
5533          it is the minimum.  2001-06-25  Timo Schulz <[email protected]>
5534          * wptGPG.cpp (parse_version_nr): New.  
5535          (check_gnupg_engine): Improved. Now it returns the actual version.      * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with
5536        the contents from the given cache context.
5537  2003-09-03  Timo Schulz  <[email protected]>      (keylist_add_to_recipients): New. Add the selected keys to the
5538        recipient set.
5539          * The secret key listing does not contain any 'validity' or      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist
5540          'status' flags any longer. Thus we only can use the cache to      function to load the listview.
5541          make sure we have a secret key. All attributes need to be retrieved      * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.
5542          from the public key listing.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
5543        * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid
5544          * wptGPG.cpp (default_key_from_cache): New.      and the keyid hint.
5545          (get_gnupg_default_key): Use new function to make sure we try  
5546          to get the key from cache if there is a problem with the config  2001-06-24  Timo Schulz <[email protected]>
5547          file.  
5548        * wptGPG.cpp (get_gpg_path): Add null termination to the string.
5549  2003-09-04  Timo Schulz  <[email protected]>      Thanks to Jonathan who pointed this out.
5550        (get_gpg_prog): Ditto.
5551          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,      (gpg_check_file_ext): Check the file extension for the given GPG
5552          the packet parsing return value check was wrong again. Now it does      type.
5553          not recognize Word documents as SECKEY or ENCRYPTED any longer.      (get_gpg_default_keyid): Return null if there isn't an entry in the
5554        options file.
5555  2003-09-08  Timo Schulz  <[email protected]>      * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx
5556        style functions.
5557          * wptRegistry.cpp: Remove some hotkeys to correct index calculation.      * wptImpList.cpp (implist_add_key): Ditto.
5558          (get_reg_winpt_flag): Check buffer first.      * wptSigList.cpp (siglist_add_key): Ditto.
5559          (get_reg_winpt_prefs): Support for the new backup system.      * wptVerifyList.cpp (verlist_add_key): Ditto.
5560          (set_reg_winpt_prefs): Likewise.  
5561          * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.  2001-06-23  Timo Schulz <[email protected]>
5562          * wptRegistry.h: Cleaned up the hotkey interface.  
5563          * wptPreferenceDlg.cpp (enable_backup_items): New.      * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the
5564          (prefs_dlg_proc): Simplified hotkey handling. Use new code.      options file.
5565          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for  
5566          im- and export. Use the code directly.  2001-06-22  Timo Schulz <[email protected]>
5567          (currwnd_gpg_dlg): Likewise.  
5568          * wptGPG.cpp (gnupg_backup_keyrings): New.      * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform
5569          (backup_one_file): New.      keyserver seraching. As an additional feature it's also posible to
5570        import the keys directly.
5571  2003-09-22  Timo Schulz  <[email protected]>  
5572    2001-06-18  Timo Schulz <[email protected]>
5573          * wptSigList.cpp (extract_filename): Make sure there is a '\',  
5574          otherwise just dup the string and return.      * wptKeyserver.cpp (check_hkp_response): More detailed error check
5575          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key      of the http response.
5576          to make the code more readable.      (kserver_send_request): Debug mode now uses logfile.
5577          * Implemented the GPGME part of the new smartcard interface.      (kserver_recv_request): Ditto.
5578          The WinPT interface will be open until the scard stuff is back      (kserver_index_request): New. Create a request for a key index.
5579          ported to GPG 1.3.x.      (kserver_send): Now uses check_hkp_response.
5580          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.      (kserver_recv): Ditto.
5581          Several code cleanups.      (kserver_search): New. Start the key index loop.
5582        * wptKeyserverDlg.cpp (recv_key): Check if the key was really
5583  2003-09-24  Timo Schulz  <[email protected]>      imported and received.
5584    
5585          * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.  2001-06-17  Timo Schulz <[email protected]>
5586          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.  
5587          * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the
5588          the menu. We use import internally, but export was not useful and      default key for signing.
5589          thus the code were removed.  
5590          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at  2001-06-16  Timo Schulz <[email protected]>
5591          startup when they are not allowed.  
5592          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.
5593          Make the parsing code much shorter (read).      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  2003-09-25  Timo Schulz  <[email protected]>      buffer overflows.
5597        (get_gpg_prog): Ditto.
5598          * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.  
5599          (check_key): New.  
5600          Removed the old Secret Key List dialog. Now the key can be directly  2001-06-15  Timo Schulz <[email protected]>
5601          chose in the dialog.  
5602          (seclist_init): New.      * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.
5603          (seclist_destroy): New.      Differ between the new keylist styles.
5604          (seclist_select_key): New.      * wptGPGME.cpp (keycache_xxx): Move the caching interface to this
5605          * wptFileManager.cpp (fm_sign): Ask for output file if needed.      file. For an easier handling between dialogs and code.
5606        (keycache_rewind): New. Rewind a global keycache context.
5607          * Client side implementation of the --enable-progress-filter feature.      (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          * wptProgressDlg.cpp: Server side implementation.      key with the index 0.
5610          (progress_dlg_proc): New. The actual dialog procedure.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key
5611          (progress_callback): The GPGME wrapper callback.      handling. Now the signer is set in any case. Prevent hanging GPG
5612        processes.
5613  2003-09-25  Timo Schulz  <[email protected]>      * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.
5614        (vm_safe_init_noswap): New. Initialize safe memory with tail data.
5615          * wptProgressDlg.cpp (progress_cb_thread): New.      See source for more information.
5616          (progress_callback): Use asynchron code.      (vm_safe_free): New. Free all used pointer and burn all buffers.
5617          * wptFileManager.cpp (fm_parse_files): Implement progress callback.      (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  2003-09-28  Timo Schulz  <[email protected]>      contents to zero.
5621    
5622          * wptCardDlg.cpp (card_edit_dlg_proc): New.  2001-06-12  Timo Schulz <[email protected]>
5623          (gpg_load_scard): New. Try to use GPG load the card info.  
5624          (print_fpr): New. Print beautified fingerprint.      * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is
5625          (card_status): New. Set all dialog fields with the values from      a big letter, otherwise convert.
5626          the card.      (preferences_dlg_proc): Check hotkeys.
5627          (prepare_dialog): New. Load combo boxes with pre-defined strings.      * 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  2003-10-06  Timo Schulz  <[email protected]>      * wptImportList.cpp (implist_alloc): Ditto.    
5631        * wptSigList.cpp (siglist_alloc): Ditto.
5632          * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.      * wptVerifyList.cpp (verlist_alloc): Ditto.
5633          * wptGPG.cpp (gnupg_display_error): Display general error  
5634          when the file does not exit.  2001-06-10  Timo Schulz <[email protected]>
5635          * wptW32API.cpp (get_folder_dlg): New.  
5636          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select      * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single
5637          the folder for the home directory.      hotkey.
5638          * wptKeyManager.cpp (km_update_default_key_str): Return length      (mod_hotkeys): Take care of the enable flags.
5639          of the string.      (register_hotkeys): Ditto.
5640          (km_complete_status_bar): Use the offset of the default      (unregister_hotkeys): Ditto.
5641          key string so it is not appened twice.      * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,
5642          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.      don't try to modify hotkeys.
5643          * wptCard.h: New.      * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to
5644          * wptCardDlg.cpp (new_card_driver): New.      the foreground.
5645          (load_card_driver): New.  
5646          (free_card_driver): New.  2001-06-08  Timo Schulz <[email protected]>
5647          (card_config_dlg_proc): If the reader is configured, load the  
5648          values. This is needful to change the driver later.      * wptHotkey.cpp (mod_hotkeys): Change code to support the new
5649          (gpg_load_scard): Use driver as a parameter.      registry style.
5650          * wptMainProc.cpp (winpt_main_proc): Load card driver and      * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable
5651          unload it after use.      single hotkeys. Suggested by Jonathan.
5652        * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable
5653  2003-10-07  Timo Schulz  <[email protected]>      single hotkeys.
5654        * wptKeyserver.cpp (kserver_connect): Reset winsock error var.
5655          * wptPINDlg.cpp (pin_cb_dlg_proc): New.      (keyserver_recv): Ditto.
5656          * wptCardDlg.cpp (do_proc_card_cmds): New.      (keyserver_send): Ditto.
5657          (card_edit_dlg_proc): Use it here.      (wsock_strerror): Returns a description of the winsock problem.
5658        * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer
5659  2003-10-08  Timo Schulz  <[email protected]>      is valid.
5660    
5661          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII  2001-06-07  Timo Schulz <[email protected]>
5662          is used. Otherwise reject the value.  
5663          (ask_pin): New. Enable PIN caching for the 'dialog session' so      * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,
5664          the user does not need to re-enter it again and again.      add windows title.
5665    
5666  2003-10-09  Timo Schulz  <[email protected]>  2001-06-05  Timo Schulz <[email protected]>
5667    
5668          * wptCardDlg.cpp (get_card_status): New.      * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned
5669          (show_card_status): New. Retrieve the card status and show an      buffer is valid. Remove the fixme, because it's possible that there
5670          error if approprioate.      were new cipher modules loaded.
5671          * Make sure that WinPT does not try to use non-OpenPGP cards.      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the
5672          * Add GPGME support for the forthcoming AUTH flag for keys.      context is valid.
5673          * Implemented the detection of keys where the secret key components      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.
5674          are stored on a smart card.      * wptW32API.cpp (status_box): New. Message box that is always forced
5675        to the foreground.
5676    
5677  2003-10-12  Timo Schulz  <[email protected]>  2001-06-04  Timo Schulz <[email protected]>
5678    
5679          * wptCardDlg.cpp (guess_libname): New.      * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for
5680          (card_status): Simplified the code with an attribute      the improved import status.
5681          table. Now it is a loop and not hard coded.  
5682          * The card interface has changed. Now the surname and  
5683          the given name are two fields and not one field.  2001-06-01  Timo Schulz <[email protected]>
5684          * wptMainProc.cpp (winpt_main_proc): Check if the card  
5685          reader is configured where appropriate.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:
5686        Release context in the case of an error.
5687  2003-10-13  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Fix typo.
5688        * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use
5689          * Extended the GPGME API that it is possible to retrieve      a static gpg object array that contains all filenames.
5690          the key data. This is for the planned card login but it  
5691          might be also useful for other purposes.  
5692    2001-05-27  Timo Schulz <[email protected]>
5693          * wptCardPCSC.c: New. General code for PC/SC card readers.  
5694        * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.
5695        (get_reg_winpt_prefs): Ditto.
5696  2003-10-14  Timo Schulz  <[email protected]>      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the
5697        gpg process finished.
5698          * wptKeyList.cpp (do_addkey): Add the case the secret key      * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to
5699          is stored on a smart card.      a humand readable date.
5700          (km_check_for_seckey): Take care of the new code.  
5701          * wptKeyManager.cpp (km_delete_keys): Extra warning when  
5702          the secret key is stored on a card.  2001-05-25  Timo Schulz <[email protected]>
5703          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities  
5704          to the list view. Now the user can see if the key is useable      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen
5705          for: signing, certifying or encrypting.      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  2003-10-16  Timo Schulz  <[email protected]>      valid and then look at the length. Avoid crashes for some texts.
5708    
5709          * Changed GPGME interface for edit card. Now one context is  2001-05-21  Timo Schulz <[email protected]>
5710          used for all edit card operations.  
5711          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid
5712          and admin PIN. Changed gpgme interface.      management.
5713          (ask_pin): Renamed to..      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids
5714          (do_askpin): this. Provide more information about the card      from a special key.
5715          and its holder.  
5716          (do_proc_card_cmds): If no error, reset modify flags for  2001-05-20  Timo Schulz <[email protected]>
5717          all controls. Show a short message that the operation ended.  
5718          * wptCardPCSC.c (pcsc_free_readers): New.      * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries
5719          (pcsc_scan_readers): New.      to figure out if both parts are available.
5720          (pcsc_get_reader): New.  
5721          (pcsc_get_card_status): New.  2001-05-19  Timo Schulz <[email protected]>
5722    
5723        * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey
5724  2003-10-17  Timo Schulz  <[email protected]>      flag is set, also disable all input items.
5725        (disable_dlg_item): New. Disable dialog items (windows).
5726          * wptGPGME.cpp (keycache_init): Do not use secring the first time.      * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys
5727          * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short      flag isn't set.
5728          keyid will be displayed.              * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as
5729        a result the code only sended parts of the key.
5730  2003-10-18  Timo Schulz  <[email protected]>      * wptConfig.cpp: Removed. Not used any longer.
5731    
5732          * wptCardDlg.cpp (card_keygen_dlg_proc): New.  2001-05-18  Timo Schulz <[email protected]>
5733          (do_askpin): Handle the case there is no card.  
5734          (card_edit_dlg_proc): Add 'New Keys' feature.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various
5735          (card_changepin_dlg_proc): Implemented.      edit key commands. In the case the dialog was canceled, return without
5736          * WinPT.cpp (WinMain): Ability to start the card manager directly.      modifying anything.
5737          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the
5738          driver and the inserted card.      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  2003-10-19  Timo Schulz  <[email protected]>      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          * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and      give the user the chance to start the GPG preference dialog.
5743          the working PIN.      * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey
5744          wptCardDlg.cpp (free_pincb): New.      support. Flag to disable all hotkeys. Reload new hotkeys (in the case
5745          (card_keygen_dlg_proc): Pin callback implemented.      they changed). Load the registry entry on startup.
5746          Simple check for the e-mail address.      * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the
5747          (card_edit_dlg_proc): End the dialog if no changes were made.      stored registry entries.
5748    
5749          * Expanded GPGME passphrase interface to work both with PINs  2001-05-13  Timo Schulz <[email protected]>
5750          and passphrases.  
5751        * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist
5752  2003-10-21  Timo Schulz  <[email protected]>      the function create it.
5753        (set_reg_winpt_prefs): Use the new function to set the subkey values.
5754          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase      All functions now return WPTERR_REGISTRY instead of 1.
5755          was wrong, delete the cache item (if available).      Add some error handling to prevent errors in the registry.
5756          * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.      * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard
5757          * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.      hotkeys and the caching time.
5758          * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'  
5759          flag to zero.  
5760            2001-05-12  Timo Schulz <[email protected]>
5761    
5762  2003-10-21  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption
5763        call.
5764          * wptClipDecryptDlg.cpp (list_recipients): New.  
5765          (algo_from_list): New.  2001-05-11  Timo Schulz <[email protected]>
5766          (clip_decrypt_dlg): New concept to list all recipients.  
5767          * wptFileManager.cpp (fm_list_keys): New.      * wptMainProc (wpt_main_proc): Change all related menu entries from
5768          (fm_decrypt): Same changes as for the clipboard decryption.      Encrypt & sign to Sign & Encrypt. Added the command to the current
5769        window menu and the handling of the window messages.
5770  2003-10-23  Timo Schulz  <[email protected]>      * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.
5771        * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT
5772          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output      preferences in the registry.
5773          if the error is unknown.      (get_reg_winpt_prefs): Read all preferences from the registry into
5774          (clip_sign_dlg_proc): Likewise.      the options context.
5775          (clip_signenc_dlg_proc): Likewise.      * WinPT.cpp (WinMain): Read in the registry preferences at the begin
5776          (clip_import_dlg_proc): Likewise.      and store it.
5777        * wptAgent.cpp (agent_init): Check if the environment variable
5778  2003-10-24  Timo Schulz  <[email protected]>      GPG_AGENT_INFO is set, otherwise set it.
5779        (agent_is_running): Check wether the agent is running.
5780          * Implemented a better logging system. If the return code      (agent_start): Automated function that read all needed information
5781          of GPG is != 0 and the error is not known, display the errors      from global variables.
5782          from stderr.  
5783    2001-05-10  Timo Schulz <[email protected]>
5784          * wptGPGME.cpp (logging_cb): New.  
5785        * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve
5786  2003-10-26  Timo Schulz  <[email protected]>      the handle of the specified window.
5787        * wptAgent.cpp (agent_timer_proc): Changed the agent interface
5788          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.      to window messages instead of socket connections.
5789        * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog
5790          * Changed the code at several other places to support the new logging      and menu entry.
5791          scheme.      * wptPreferencesDlg.cpp: New.
5792    
5793    2001-05-09  Timo Schulz <[email protected]>
5794  2003-10-29  Timo Schulz  <[email protected]>  
5795        * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.
5796          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.      (gpga_readn): Read 'n' bytes from a socket.
5797        (gpga_open): Open the interface to the GPG-Agent.
5798          * Create a new interface for an interactive card callback. GPG      (gpga_close): Close the GPG-Agent socket.
5799          provides card control status messages if the wrong card is inserted.      (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.
5800        (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,
5801          * wptCardManager.cpp (card_cb_dlg_proc): New.      this keys will be remove from the GPG-Agent cache.
5802          (card_callback): New.      (agent_delete_fpr): Remove a fingerprint from the cache.
5803        (agent_init): Clear the cache.
5804          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use      (agent_timer_proc): Remove all stored passphrases which were
5805          the ASCII functions and not the Unicode function names. Thanks to      requested through the chache.
5806          Werner for pointing this out.  
5807    2001-05-08  Timo Schulz <[email protected]>
5808          * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the  
5809          serial card number is shown to help the user to find the right card.      * wptKeyserver.cpp (wsock_init): Replace the kserver init
5810        code which initialized the Wsock2 interface.
5811          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.      (wsock_end): Ditto.
5812        * wptAgent.cpp: Remove the passphrase caching code and add
5813  2003-10-02  Timo Schulz  <[email protected]>      the GPG agent code.
5814    
5815          * Prepare test release.  2001-05-05  Timo Schulz <[email protected]>
5816          * wptGPGCmds.h: New from GPG 1.3.4-cvs.  
5817        * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve
5818  2003-11-13  Timo Schulz  <[email protected]>      the current window handle. This code doesn't use the hook DLL.
5819        Thanks to Oliver Nittka for his patch.
5820          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.      * wptErrors.cpp (winpt_strerror): Fixed a small typo.
5821          * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.      * wptGPG.cpp (check_last_gpg_access): Remove debug code.
5822          Thanks to Achim.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading
5823          * Change PIN interface. Now it is easier when an operation requires      scheme to prevent reloading the cache twice.
5824          both PINs.  
5825          * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs  2001-05-04  Timo Schulz <[email protected]>
5826          to change card attributes. Do not ask me why, but now the user  
5827          needs to enter 2 PINs.      * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.
5828        * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):
5829          Name parts were swapped, now they have the right order again.      Move all the GPGME specific code to the main dialog. Now only
5830        the context values are set.
5831  2003-11-14  Timo Schulz  <[email protected]>      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust
5832        code.
5833          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.  
5834    2001-05-02  Timo Schulz <[email protected]>
5835  2003-11-28  Timo Schulz  <[email protected]>  
5836        * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional
5837          * Remove all support for ElGamal sign+encrypt keys.      subkeys for the mainkeys.
5838        * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground
5839          There is a flaw in GPG which makes all such keys useable and      window flag.
5840          they are comprised even if one signature they made is accessable.      * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the
5841          And due to the fact the key is self signed, such a sig is always      addkey feature.
5842          available for the public.  
5843    2001-05-01  Timo Schulz <[email protected]>
5844          We warn the user at startup if such keys were found!  
5845        * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence
5846          * wptMainProc.cpp (elgamal_warn_dlg_proc): New.      to a window.
5847          * wptGPGME.cpp (count_insecure_elgkeys): New.      (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.
5848          * WinPT (WinMain): Use it here.      (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  2003-11-29  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Fix some message string for
5851        the hotkey handling. Quit the program if a registration procedure
5852          * wptMAPI.cpp (mapi_init): New.      failed.
5853          (mapi_deinit): New.      * wptErrors.cpp (log_box): Improved log handling to dump states
5854          (mapi_send_pubkey): New.      of variables during regression tests.
5855          * wptKeyManager.cpp (km_send_to_mail_recipient): New.  
5856          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support  2001-04-30  Timo Schulz <[email protected]>
5857          to send the public key via MAPI to a recipient.  
5858          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind      * wptClipEditDlg.cpp: Now the dialog uses the Courier font to
5859          the secret key cache so it's not at the end.      enhance the format of keys and other GPG data.
5860          (keysign_dlg_proc): Issue a warning when no secret key was      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod
5861          found which could be used for signing the key.      flag after receiving a key.
5862          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when
5863          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.      no listbox entry was choosen.
5864        * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to
5865  2003-12-10  Timo Schulz  <[email protected]>      the NLS suite.
5866        * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag
5867          * GPGME support to change key preferences.      instead of refresh the keycache.
5868          * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.  
5869          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.  2001-04-29  Timo Schulz <[email protected]>
5870    
5871        * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.
5872  2003-12-14  Timo Schulz  <[email protected]>      (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the
5873        adduid command.
5874          * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.      * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize
5875          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.      the dialog with a KEY structure that holds the keyid and the userid.
5876          (do_editkey_setpref): Implement updpref command.      * 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  2003-12-23  Timo Schulz  <[email protected]>  
5880    2001-04-28  Timo Schulz <[email protected]>
5881          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove  
5882          ElGamal s+e support. Oops, this should be already done.      * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.
5883          * wptGPGME.cpp (keycache_init): Sync both key caches. In other      So it's easier to update GPGME and we can use NLS to translate
5884          words transfer some flags from the sec-cache to the pub-cache.      error strings.
5885          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the      * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code
5886          key sign procedure. If it is already signed, the process      because we only use it here.
5887          sometimes hangs.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'
5888        feature to the edit-key interface.
5889  2003-12-30  Timo Schulz  <[email protected]>  
5890    2001-04-27  Timo Schulz <[email protected]>
5891          * fixed the GPG edit-key commands sign and addrevoker.  
5892        * wptCurrWnd.cpp (get_window_contents): Change the code for the last
5893  2003-12-31  Timo Schulz  <[email protected]>      window concept. Thanks to Oliver.
5894        (set_window_contents): Add some stuff to set the position if the
5895          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort      current window is an edit control.
5896          the list otherwise the index is wrong.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'
5897          * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set      stuff.
5898          a signature expire date.      * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to
5899        create a new user id for a GPG key.
5900  2004-01-03  Timo Schulz  <[email protected]>  
5901    2001-04-26  Timo Schulz <[email protected]>
5902          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow  
5903          to import secret keys.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various
5904        edit-key commands.
5905  2004-01-04  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit
5906        key code.
5907          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.  
5908          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas  2001-04-25  Timo Schulz <[email protected]>
5909          and minor changes.  
5910          * wptListView.cpp (listview_sort_items): Likewise.      * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME
5911          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.      callback system to pass the keyedit information to GPG.
5912          (regist_sep_wnd): Factored out some code.      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.
5913    
5914  2004-01-22  Timo Schulz  <[email protected]>  2001-04-24  Timo Schulz <[email protected]>
5915    
5916          * Remove all internal card reader config. It's up to the      * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview
5917          user to do this. It would be too error proune to offer it.      item and set it to zero.
5918          * wptCard.h: Removed all card driver stuff.      * wptSignDlg.cpp (sign_dlg_proc): Ditto.
5919          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ      * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.
5920          between the admin and the user (normal) PIN.      * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.
5921        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.
5922  2004-01-23  Timo Schulz  <[email protected]>      (keymisc_dlg_proc): Provide the functionality to delete key pairs
5923        secret+public.
5924          * wptCardDlg.cpp (check_pin_len): New. Check if the      * wptWndHook.cpp (is_winpt_wnd): Remove this function and put
5925          PIN is long enough and give an appropriate error.      all code into (check_wnd).
5926          (card_changepin_dlg_proc): Use the new check function.      (check_wnd): Check if the window doesn't is a application related
5927        window.
5928  2004-01-25  Timo Schulz  <[email protected]>  
5929    2001-04-23  Timo Schulz <[email protected]>
5930          * WinPT.cpp (WinMain): Silently die when an instance is already  
5931          running. Do not confuse the user with a message. Suggested by      * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality
5932          Sebastian.      is not needed because all dialog windows are top level windows.
5933          * wptKeyManager.cpp (delete_keys_from_cache): New.  
5934          (km_delete_keys): Use it here. Thanks to Achim.  2001-04-22  Timo Schulz <[email protected]>
5935    
5936  2004-01-28  Timo Schulz  <[email protected]>      * wptGPG.cpp (check_last_gpg_access): Reset switch before testing
5937        the condition.
5938          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued      * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate
5939          if keys on the card exist but the user does not said overwrite.      all children windows.
5940        (find_parent_wnd_proc): New. Callback to enumerate all parent windows.
5941          Make sure the expire date is not in the past.      (find_window): New. Return if the specified windows as found.
5942        * wptW32API.cpp: (dialog_box_param): New. Alias with the additional
5943          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file      feature to check if the dialog already exist (and then preventing
5944          lock twice. Not sure if this fixes some other problems but it      the creation).
5945          was definitely a bug.      * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with
5946        then new dialog_box_param function. Thanks to Martin who told me
5947          * wptMapi.cpp (mapi_init): Make sure all function ptrs are      about this dialog problem.
5948          initialized otherwise bail out.      * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.
5949          (mapi_send_message): New. Interface to allow to send an      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the
5950          encrypted mail with zero ore more encrypted attachments.      new signature buttons.
5951          (secure_attachment): New.  
5952          (parse_recipients): New.  2001-04-21  Timo Schulz <[email protected]>
5953    
5954  2004-02-02  Timo Schulz  <[email protected]>      * wptWndHook.cpp (install_cbt_hook): Remove the thread because the
5955        system already is into a DLL.
5956          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use
5957          is long enough. The same check for the mail address.      instead of it a button to check the key signatures.
5958        * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp
5959          Thanks to Achim.      from the given gpg object.
5960        (check_last_gpg_access): New. Compare the last file timestamp with the
5961  2004-02-03  Timo Schulz  <[email protected]>      new timestamp.
5962        (init_gpg_table): New. Initialize the table with gpg objects who shall
5963          * WinPT.cpp (check_crypto_engine): New. Factor out common code.      be watched.
5964          (WinMain): Check the crypto engine after the first start.      (keyring_check_last_access): Use the new code.
5965        * wptCurrWnd.cpp (set_window_contents): Restore the window if it is
5966          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is      now iconic.
5967          issued if the values could not stored. Revamped the core.      * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the
5968        current window stuff.
5969          * Removed the last appearance of the GPG agent support.  
5970    2001-04-17  Timo Schulz <[email protected]>
5971          * wptGPG.cpp (init_gnupg_table): Do not use static buffers.  
5972          (free_gnupg_table): Free memory.      * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window
5973        belongs to the taskbar area.
5974          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the      (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.
5975          ctx pointer get malloced and set the contents to zero.      (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  2004-02-04  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the
5979        current window mode set the no_cbt variable.
5980          * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.      * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring
5981        was modified by an external program.
5982  2004-02-05  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external
5983        keyring changes.
5984          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle  
5985          CMD_DISHOTKEYS. Thanks to the user who reminded me.  2001-04-16  Timo Schulz <[email protected]>
5986          * wptMainProc.cpp (spawn_cryptdisk): New interface to  
5987          the Cryptdisk application.      * wptWndHook,cpp (cbt_proc): Compare process ids to differ between
5988        WinPT and normal windows.
5989  2004-02-08  Timo Schulz  <[email protected]>      (install_cbt_hook): Add pid to the context.
5990    
5991          * wptCryptdisk.{cpp,h}: New. Support for the extended  2001-04-14  Timo Schulz <[email protected]>
5992          filedisk application.  
5993          * wptMainProc.cpp (winpt_main_proc): Likewise.      * wptCurrWnd.cpp: (get_window_contents): Add an event to switch
5994          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.      the windows. This is needed by the current code.
5995        (set_window_contents): Ditto.
5996  2004-02-09  Timo Schulz  <[email protected]>      * 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          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.      above.
5999          (do_reaping): New. Release the list if all items are 'expired'.      (create_wndswitch_event): Execute the dialog.
6000          (cryptdisk_mount_dlg_proc): New.      * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey
6001          (init_drives): New.      section. Add message entries for the code.
6002          * wptMainProc.cpp (cryptdisk_proc): Renamed from...      * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE
6003          (handle_cryptdisk): this. And filled with life.      mailer code.
6004        (insert_window_from_clip): Ditto.
6005  2004-02-12  Timo Schulz  <[email protected]>      * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add
6006        the event to switch the windows.
6007          * wptErrors.cpp: New error codes for the cryptdisk feature.      (oe_get_message): Ditto.
6008          * wptCryptdisk.cpp (do_dispatch): Better error handling.  
6009          (cryptdisk_mount_dlg_proc): Use it here.  2001-04-13  Timo Schulz <[email protected]>
6010          (cryptdisk_umount_dlg_proc): Likewise.  
6011          (init_drives): Use system list.      * wptMailPlugin.cpp: (oe_set_message): Change the id's for
6012        the attach_thread_input.
6013          Localized all strings.      (oe_get_message): Ditto.
6014        * wptCurrWnd.cpp: (get_window_contents): Ditto.
6015  2004-02-17  Timo Schulz  <[email protected]>      (set_window_contents): Ditto.
6016    
6017          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt  2001-04-12  Timo Schulz <[email protected]>
6018          to the signers key. Suggested by Alexander.  
6019          Use new keycache system, we use the public key part of the      * wptHotkeys.cpp: (register_single_hotkey): Add code for the current
6020          cache because it has all flags set.      window stuff.
6021          * wptGPG.cpp (default_key_from_cache): Use new cache system.      * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window
6022          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.      hotkeys.
6023        * wptW32API.cpp: (attach_thread_input): Split up the functions into
6024        two parts. The attach flags is always set.
6025  2004-02-18  Timo Schulz  <[email protected]>      (detach_thread_input): See above. The attach flags is never set.
6026        * wptCurrWnd.cpp: New. Code for the current window stuff.
6027          * Modify the cryptdisk code for crosscrypt 0.4.1.      (get_window_contents): Extract the text from the given window to
6028          * wptCryptDisk.cpp (do_mount): Add key algorithm param.      the clipboard.
6029        (set_window_contents): Insert clipboard into the given window.
6030  2004-02-21  Timo Schulz  <[email protected]>  
6031    2001-04-09  Timo Schulz <[email protected]>
6032          * wptCryptdisk.cpp (cryptdisk_cleanup): New.  
6033          (is_nt4): Because my Platform-SDK is too old I need to load      * wptGPG.cpp: (check_line): Ignore empty lines.
6034          some prototypes dynamically.      (check_gpg_options): Ditto.
6035          (init_drives): Return the first useable drive letter if  
6036          called with appropriate parameters.  2001-04-09  Timo Schulz <[email protected]>
6037          * wptMainProc.cpp (winpt_main_proc): Use it here.  
6038        * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet
6039  2004-02-22  Timo Schulz  <[email protected]>      type. Kludge for decrypt/verify.
6040        * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the
6041          * PTD: Cryptdisk seems to have problems with locking. Use      code into the decrypt routine.
6042          a forced flag to tell the code if it should bail out or      * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start
6043          ignore locking errors.      the key management after import.
6044    
6045          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new  2001-04-07  Timo Schulz <[email protected]>
6046          locking code.  
6047          (cryptdisk_new_dlg_proc): Adjust size of the volume.      * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.
6048        (agent_destroy): Ditto.
6049  2004-02-24  Timo Schulz  <[email protected]>      (agent_passphrase_cache): Ditto.
6050        (agent_passphrase_remove): Ditto.
6051          * WinPT.cpp (WinMain): Call a selftest check procedure to      (agent_passphrase_get): Ditto.
6052          make sure all cryptographic code works as expected.  
6053    2001-04-06  Timo Schulz <[email protected]>
6054  2004-02-25  Timo Schulz  <[email protected]>  
6055        * wptGPG.cpp: (check_gpg_path): Fix a small error.
6056          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and      * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the
6057          do not mix the names in the different menus.      first time a user started WinPT.
6058        * wptClipboard.cpp: (clip_isalready_secured): Check the begin and
6059          * wptSigList.cpp: Support to show the signature class.      end PGP header.
6060    
6061          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo  2001-04-06  Timo Schulz <[email protected]>
6062          box when there is no secret key available.  
6063        * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.
6064          (do_init_keylist): Do not allow to use the owners key as a desig      * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the
6065          revoker.      ownertrust dialog.
6066    
6067          * wptKeylist.cpp (get_key_trust): New.  2001-04-04  Timo Schulz <[email protected]>
6068          (do_addkey): Use it here.  
6069        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static
6070  2004-02-26  Timo Schulz  <[email protected]>      passphrase. Now a callback context is used.
6071        (passphrase_cb): Ditto.
6072          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error      (clip_decrypt_dlg): Ditto.
6073          if no recipient was selected.      * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.
6074        (install_cbt_hook): Modify for the new thread model.
6075          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog      (remove_cbt_hook): Ditto.
6076          is destroyed. This fixes the bug that the dialog sometimes exist even      * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.
6077          after the procedure ended.      (delete_critical_section): Ditto.
6078        (lock): Ditto.
6079          * wptProgressDlg.cpp (progress_callback): Change the if-then-else      (unlock): Ditto.
6080          struct to prevent zombie dialogs.  
6081    2001-04-02  Timo Schulz <[email protected]>
6082          * wptKeyserver.cpp: Removed unused prototypes.  
6083        * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.
6084  2004-02-29  Timo Schulz  <[email protected]>      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only
6085        contains valid keys.
6086          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.
6087    
6088          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself  2001-03-31  Timo Schulz <[email protected]>
6089          so we are not allowing to sign ourself.  
6090        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,
6091          * wptSigList.cpp (siglist_add_key): Support for the signature      the GPG default key will be used.
6092          flags (local, non-revocably, ...).  
6093    2001-03-30  Timo Schulz <[email protected]>
6094          * Key signing with GPG 1.2.x should work again. Hopefully.  
6095        * wptW32API.cpp: (new_strdup): Remove.
6096  2004-03-02  Timo Schulz  <[email protected]>      * wptW32API.h: Ditto.
6097        * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.
6098          * wptGPG.cpp (check_keyring): Handle the case that the keyring      * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.
6099          is set in the gpg.conf file and the pubring.gpg file is zero bytes.  
6100    2001-03-28  Timo Schulz <[email protected]>
6101          (gnupg_backup_keyrings): Support backup of keyrings which were set  
6102          in gpg.conf. Thanks to the user who reminded me of this problem.      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):
6103        Added the keyid to the "no trust" message.
6104          (gnupg_check_file_ext): Make check not case sentensive.      * wptKeyserverDlg.cpp: (check_pattern): New:
6105        Do some sanity checks of the search pattern.
6106          * (sfree_if_alloc): Overwrite the memory with zeros before freeing      * wptMainProc.cpp: (wpt_main_proc): Add agent support.
6107          it. This only works with c-strings! Use it everywhere we handle      * wptHotkey.cpp: Add agent support.
6108          sentensive information (passphrases).  
6109    2001-03-21  Timo Schulz <[email protected]>
6110          * Try to improve the usability with better menu names and new  
6111          ordering.      * WinPT.cpp: (WinMain): Re-activate the enable debug switch.
6112        * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.
6113          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.  
6114    2001-03-20  Timo Schulz <[email protected]>
6115          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now  
6116          it is part of the WinPt about dialog. This way we can minimize the      * wptClipDecryptDlg.cpp: Rewrote
6117          elements in the popup menu.  
6118    2001-03-19  Timo Schulz <[email protected]>
6119  2004-03-04  Timo Schulz  <[email protected]>  
6120        * wptVerifyList.cpp: New control for the verify dialog.
6121          * wptKeyserver.cpp (finger_recvkey): Error if key was not found      * wptClipVerifyDlg.cpp: Rewrote
6122          or garbled.  
6123    2001-03-18  Timo Schulz <[email protected]>
6124          * wptGPG.cpp (gpg_check_permissions): Take care of the entries  
6125          in gpg.conf.      * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.
6126        * wptAgent.cpp: New: Experimental passphrase caching.
6127          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select  
6128          the signer. Suggested by Sebastian.  2001-03-16  Timo Schulz <[email protected]>
6129    
6130          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to      * wptDlgs.h: Add new dialog callback function.
6131          this file.      * wptKeysigDlg.cpp: New. Key signature listing dialog.
6132          (seclist_free): Likewise.  
6133          (seclist_select_key): Likewise.  2001-03-15  Timo Schulz <[email protected]>
6134    
6135          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was      * wptClipEncryptDlg.cpp: Fix translation.
6136          already set.      * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).
6137        * wptKeymiscDlg.cpp: Fix the key deleting stuff.
6138  2004-03-07  Timo Schulz  <[email protected]>  
6139    2001-02-27  Timo Schulz <[email protected]>
6140          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats  
6141          dummy keyrings with a size of zero in the homedir.      * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.
6142        * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):
6143          (gpg_check_permissions): Check for read-only keyrings and add code      Fixed.
6144          for this case.  
6145    2001-02-25  Timo Schulz <[email protected]>
6146          This problem fixes a lof of other problems related to the OpenPGP  
6147          parsing stuff for the key cache.      * wptGPGPrefsDlg.cpp: Add some new translation strings.
6148        * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.
6149          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.      * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.
6150        * wptClipImportDlg.cpp: Finished basic interface.
6151  2004-03-08  Timo Schulz  <[email protected]>  
6152    2001-02-24  Timo Schulz <[email protected]>
6153          * wptGPG.cpp (gnupg_import_keyrings): cleanups.  
6154        * wptGPG.cpp: (check_gpg_path): Fix a bug.
6155          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows     (check_gpg_options): Fix some bugs.
6156          CP.  
6157          (wincp_to_utf8): Likewise.  2001-02-22  Timo Schulz <[email protected]>
6158          (conv_charset): Now internal and static.  
6159        * wptGPG.cpp: (check_line): New. Check if the line contains a valid
6160          * wptUTF8.h: New prototypes and remove the old prototypes.      gpg argument.
6161        (check_gpg_options): New. Parses each buffer line to check_line().
6162          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.  
6163    2001-02-21  Timo Schulz <[email protected]>
6164    
6165  2004-03-11  Timo Schulz  <[email protected]>      * wptGPG.cpp: Fix the check_gpg_optfile() code.
6166            (gpg_errstr): Define some error constants to be more verbose.
6167          * The DLL is now complety C-source.          (set_gpg_options): New. Manipulate the options file.
6168            (get_gpg_options): New. Read in the options file.
6169  2004-03-15  Timo Schulz  <[email protected]>      * wptFile.cpp: (get_file_size): New.
6170        * wptGPGOptDlg.cpp: New. Dialog for editing the options file
6171          * Decrypt list box has now a vertical scroll bar.  
6172    2001-02-20  Timo Schulz <[email protected]>
6173  2004-05-14  Timo Schulz  <[email protected]>  
6174        * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.
6175          * WinPT.cpp (check_crypto_engine): Due to some      * wptClipImportDlg.cpp: Add some new code.
6176          internal  GPG changes the min. version for smart card  
6177          support is now 1.3.6.  2001-02-19  Timo Schulz <[email protected]>
6178    
6179          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix      * wptRegistry.cpp: (is_installed): Remove.
6180          handling. Thanks to the folks who reported this via SF.net.      (regist_inst_winpt): Add selfcheck.
6181        (regist_inst_gpg): New. Add gpg releated registry entries.
6182          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.      (regist_inst_mo): New. Add nls related path.
6183          Thanks to the folks on winpt-users who reported it.      (get_reg_entry), set_reg_entry(): Modify to be more flexible.
6184        (set_reg_entry_gpg): Handy functions for get_reg_entry.
6185          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of      (set_reg_entry_mo): Ditto.
6186          the hotkeys are disabled.      (get_reg_entry_gpg): Ditto.
6187        (get_reg_entry_mo(): Ditto.
6188          * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.      * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.
6189        * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.
6190          * wptFileManager.cpp (fm_get_file_type): Do not parse the entire      include keyring entries (2x)
6191          file if the size is >= 256MB.      (check_gpg_path): Include the check_gpg_optfile() check.
6192    
6193  2004-05-31  Timo Schulz  <[email protected]>  2001-02-17  Timo Schulz <[email protected]>
6194    
6195          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the      * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from
6196          'X' close button. Noted by a friendly user.      the registry.
6197                (set_reg_entry): Set a gnupg registry key.
6198          Disable 'Save' button.      * wptGPG.cpp: Modify all function for the use with get_reg_entry().
6199        * WinPT.cpp: Change the way for the gpg searching mechanism.
6200          * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.      * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.
6201        * wptClipImportDlg.cpp: (key import dialog): New.
6202          * wptFileManager.cpp (fm_set_status): Do not use the data file name      * wptKeylistElement.cpp:
6203          for signatures but keep the original file name.      (wpt_lv_implist_build): Build up the key import list.
6204        (wpt_lv_implist_add_key): Insert a key into the import list.
6205          (fm_verify_pasted_detsig): Try to verify detached signatures from      (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.
6206          the clipboard.  
6207    2001-02-10  Timo Schulz <[email protected]>
6208  2004-06-02  Timo Schulz  <[email protected]>  
6209        * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.
6210          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error      * wptKeylistElement.cpp: New.
6211          if there is no clipboard data.      * wptListElement.cpp: Remove.
6212        * wptW32API.cpp: Insert all lv_*** functions.
6213          Release memory in case of an error.      * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.
6214        (wpt_lv_keylist_release_keys): Ditto.
6215          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.      * wptW32API.cpp: (w32_get_thread_id): New.
6216        (w32_attach_thread_input): New.
6217          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.      * 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  2004-06-08  Timo Schulz  <[email protected]>      Add sanity check for recipients.
6221    
6222          * wptInet.cpp: New.  2001-02-07    Timo Schulz <[email protected]>
6223          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http  
6224          transfers.      * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.
6225          * wptKeyManager.cpp (km_http_import): New.      * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.
6226    
6227    2001-02-04    Timo Schulz <[email protected]>
6228  2004-06-12  Timo Schulz  <[email protected]>  
6229        * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.
6230          * wptInet.cpp: Updated.      * wptMainProc.cpp: (wpt_main_proc):
6231          * wptKeyManager.cpp (km_http_import): Use http_send_request2() to      Remove ciphertext checks for signing and encrypting.
6232          parse the URL.      (allow double encryption).
6233          * wptCommonDlg.cpp (http_file_dlg_proc): New.  
6234          (get_http_file_dlg): New.  2001-02-03  Timo Schulz <[email protected]>
6235    
6236  2004-06-19  Timo Schulz  <[email protected]>      * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.
6237        (oe_find_addr_window): Ditto.
6238          * wptInet.cpp: Renamed to ...      (oe_find_main_window): Ditto.
6239          * wptHttp.c: ... this.  
6240          * wptKeyManager.cpp (km_http_import): Release 'p' not too early.  2001-02-02  Timo Schulz <[email protected]>
6241          * WinPT.cpp (WinMain): If there is a problem with the homedir,  
6242          jump to the first start settings.      * wptW32API.cpp: (w32_hit_key): New.
6243        (w32_rel_key): New.
6244  2004-07-11  Timo Schulz  <[email protected]>      (w32_copy_to_clip): New.
6245        (w32_insert_from_clip): New.
6246          * Bug fix for the validity revoked status. Now it is 'revoked'      (w32_get_clip_text): New.
6247          and not 'unknown' any longer.      (w32_set_clip_text: New.
6248        (w32_show_if_icon): New.
6249          * Feature to disable encryption. This might be useful for filetypes  
6250          GPG does not recognize as compress (movies, ...).  2001-02-01 Timo Schulz <[email protected]>
6251    
6252          * wptFileManager.cpp (fm_get_file_type): Skip packet detction if      * wptW32API.cpp: (w32_get_edit_text): New.
6253          the file is large and it has no openpgp extension.      (w32_set_menu_text): New.
6254        (w32_strdup): New.
6255  2004-07-12  Timo Schulz <[email protected]>      * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.
6256        * Create all dialogs windows in the foreground.
6257          * wptRegistry.cpp: Support for disable compression of multi-media files.  
6258          (set_reg_winpt_single): New.  2001-01-31  Timo Schulz <[email protected]>
6259          (get_reg_winpt_single): New.  
6260        * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.
6261          * wptFileManager.cpp (is_multi_media): New.      * wptW32API.cpp: New.
6262          (fm_encrypt): Disable compression of multi-media files.      * WinPT.cpp: (WinMain): Change the keyring checking code.
6263          (fm_state_new): Set comment to indicate armored files were generated  
6264          by WinPT. This is a replacement due to the fact the WinPT string is not  2001-01-29  Timo Schulz <[email protected]>
6265          added in the 'Version' for larger files.  
6266        * wptClipboard.cpp: (clip_is_already_secure):
6267          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.      Modify the pgp data detection.
6268    
6269  2004-07-13  Timo Schulz  <[email protected]>  2001-01-28  Timo Schulz <[email protected]>
6270    
6271          * wptFileManager.cpp (fm_assume_onepass_sig): New.      * wptHotkey.cpp: (register_hotkey): Hotkey registration.
6272          Thanks to Vedaal who found out that armored one-pass sigs are not      (unregister_hotkey): Hotkey removing.
6273          correctly recognized.      * wptHokey.h: New.
6274        * wptWndHook.cpp:
6275          (ask_filename): New.      (wpt_cpt_proc): Window hook to save the current windows.
6276          Again thanks to Vedaal who suggested to ask for a new output name      * wptWndHoo.h: New.
6277          for the case the user does not want to overwrite the file.      * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.
6278        * WinPT.cpp: (WinMain): Add hotkey registration.
6279          (fm_encrypt): Use it here.  
6280          (fm_decrypt): Likewise.  2001-01-21  Timo Schulz <[email protected]>
6281          (fm_sign): Likewise.  
6282        * wptNLS.cpp: ported to C++.
6283          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry      (gettext): Remove CP850 to ISO88591 conversation.
6284          to set secret keys to ultimate trust.    
   
         * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the  
         key has ultimate trust.  
         (km_set_implicit_trust): New.  
   
 2004-07-27  Timo Schulz  <[email protected]>  
   
         * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new  
         value for the ownertrust.  
   
         * wptKeyManager.cpp (get_key_trust): Make it public.  
         (get_key_trust_str): New.  
         (km_refresh_from_keyserver): Allow to select random keys.  
         (km_refresh_one_key): New.  
   
         * wptKeyserver.cpp: Use default keyserver if possible.  
   
 2004-08-02  Timo Schulz  <[email protected]>  
   
         * wptKeysigDlg.cpp (do_create_popup): New.  
         (do_load_keyprops): New.  
   
         (keysig_dlg_proc): Factor out some common code and use  
         do_load_keyprops.  
   
         * wptKeyServer.cpp (kserver_check_inet_connection): New.  
   
         * wptKeyManger.cpp (km_refresh_from_keyserver): First check  
         for an active internet connection. It's annoying for the  
         user to confirm an connection error for each key (n>40).  
   
 2004-08-04  Timo Schulz  <[email protected]>  
   
         * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the  
         edit-field to display the text. Now a RichEdit field is  
         used. This solves the XP problem that the viewer is empty  
         even if there is text in it.  
   
         * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.  
   
         * wptKeySigDlg.cpp (sigprops_dlg_proc): New.  
         (keysig_dlg_proc): Add new 'Properties' button and implement  
         the code for it.  
   
         * wptSigList.cpp: Add support to show the expiration date.  
   
         * wptGPGME.cpp (keycache_init): Support to show the progress bar.  
         (keycache_release): Store the amount of keys in the registry for  
         the progress dialog.  
   
         * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate  
         default keyserver.conf.  
   
         * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.  
         Fix possible buffer overflow.  
         (wsock_end): Release stored keyserver list.  
   
         * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for  
         a specific recipient and select it.  
   
 2004-08-05  Timo Schulz  <[email protected]>  
   
         * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag  
         when possible.  
         New dialog layout to enhance the readability of the text. Use  
         flat check boxes for the same reason.  
   
         * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to  
         the right column (3 not 4).  
   
         * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile  
         uses a unique name.  
   
   
 2004-08-06  Timo Schulz  <[email protected]>  
   
         * wptContext.h: Move subclass_s context to this file.  
   
         * wptKeysigDlg.cpp (subclass_dlg_proc): New.  
   
   
 2004-08-19  Timo Schulz  <[email protected]>  
   
         * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected  
         key numbers.  
   
         * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.  
         (is_sig): Change code to allow to check pre-defined fields.  
   
         * WinPT.cpp (WinMain): Allow read-only support for keyrings.  
   
 2004-08-20  Timo Schulz  <[email protected]>  
   
         * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only  
         mode the menu is not available.  
         (popup_gpg_readonly): New.  
         (menu_gpg_readonly): New.  
         (keymanager_dlg_proc): Use it here. Do not check the permissions  
         any longer since this is now handle via the read-only code.  
         * wptMainProc.cpp (winpt_main_proc): Check if the keyrings  
         are in read-only mode.  
         * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.  
         * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably  
         signatures in expert mode.  
         * wptKEyEditDlgs.cpp (do_find_userid): Release context.  
         * wptGPG.cpp (gpg_check_permissions): Only print out a warning  
         in the interactive mode.  
         * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left  
         mouse button is clicked.  
   
 2004-08-24  Timo Schulz  <[email protected]>  
   
         * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for  
         the user-ids.  
         * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into  
         expert mode when the non-interactive mode is used.  
         * WinPT.cpp (WinMain): Start the keygen wizard instead of the  
         expert dialog and allow to switch to it.  
   
 2004-08-25  Timo Schulz  <[email protected]>  
   
         * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB  
         and skip to read large files on floppy discs.  
         (fm_wipe): Display a 'wait' cursor until the wipe is complete.  
         (is_floppy_disc): New.  
         * wptFileManagerDlg.cpp (filelist_subclass_proc): New.  
         (file_manager_dlg_proc): Use subclassing to allow some hotkeys.  
   
 2004-08-26  Timo Schulz  <[email protected]>  
   
         * WinPT.cpp (load_keyserver_conf): New. Factored out some code  
         from WinMain ().  
         (WinMain): Load keyserver config at the begin. Thanks to Bodo A�ner  
         * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver  
         in the list control, add at least the internal default HKP server.  
         * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.  
         * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.  
         (keysign_dlg_proc): Likewise.  
         * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.  
         * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.  
         (kserver_connect): use it here.  
         (kserver_send_request): Likewise.  
         (kserver_recvkey): Likewise.  
   
 2004-08-27  Timo Schulz  <[email protected]>  
   
         * wptKeyserver.cpp (skip_whitespace): New.  
         * Fix a problem with the key cache. The new hash item was  
         not initialized to zero and thus the free caused an illegal access.  
         Thanks to Ralf for pointing this out.  
         * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.  
         * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.  
         * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and  
         use a context to store the value. Loalize all text strings.  
         * wptKeyList.cpp (key_check_validity): Cannot use gettext here.  
         (keylist_get_recipients): Increase buffer for gettext messages.  
   
 2004-08-28  Timo Schulz  <[email protected]>  
   
         * WinPT.cpp (WinMain): Free gpg table in case of an error.  
         * wptFileManagerDlg.cpp (filelist_subclass_proc): New.  
         (filemanager_dlg_proc): Subclass the list control.  
         * Fix Alt+C for the winpt_prefs_dlg_proc.  
         * wptKeyserver.cpp (kserver_load_conf): Ignore lines with  
         just whitespaces. Thanks to the folks on winpt-users.  
   
 2004-09-01  Timo Schulz  <[email protected]>  
   
         * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.  
         (default_key_from_cache): Use new key attribute 'usable'.  
         * WinPT.cpp (show_unprotected_keys): Removed.  
         * wptKeylist.cpp (check_key): Removed.  
         (seclist_init): Use new 'usable' key attribute.  
         (keylist_add_key): Likewise.  
         * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to  
         add keys via 'INSERT'.  
         * wptListView.cpp (listview_select_one): New.  
         (listview_find): New.  
         * wptFileManager.cpp (fm_get_current_pos): If there is only  
         one item, return 0 but also select it. Thanks to Christian.  
   
 2004-09-07  Timo Schulz  <[email protected]>  
   
         * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.  
         * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.  
   
 2004-09-08  Timo Schulz  <[email protected]>  
   
         * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is  
         in the list, return zero.  
   
 2004-09-20  Timo Schulz  <[email protected]>  
   
         * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in  
         context menus when the key is flagged as revoked.  
         (update_ui_items): Likewise and set the 'ShowPhoto' flag only if  
         the key has such an item.  
   
 2004-10-01  Timo Schulz  <[email protected]>  
   
         * wptClipSignDlg.cpp: Really use the selected subkey with the  
         right '!' syntax. Thanks to Vedaal for pointing this out.  
         * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device  
         is accessable and writeable, otherwise inform the user. Kudos to  
         the one who reported this problem.  
   
 2004-10-07  Timo Schulz  <[email protected]>  
   
         * wptErrors.cpp (winpt_errmsg): Use a generic header when no  
         filename is supplied.  
         * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but  
         an error message which is more clean. Thanks to Ralf.  
         * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card  
         admin mode.  
         * wptKeySignDlg.cpp (do_check_protection): Also check for smart  
         card protection.  
         (get_keyinfo): Return if this is a smart card key.  
         * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before  
         comparing the names.  
         * winpt.cpp: Now depends on PTD 0.7.1.  
   
 2004-10-15  Timo Schulz  <[email protected]>  
   
         * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt  
         is really initialized.  
   
 2004-10-25  Timo Schulz  <[email protected]>  
   
         * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box  
         if the PGP message is complete but broken during the transport.  
         Thanks to Werner and Achim.  
         * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks  
         to the gnupg-users.  
         * Automatically add '\r\n' to the text before signing. This solves  
         the problem the last line is not included if no \r\n is present.  
         * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode  
         which prepends the text with '> '. This makes it easier to quote  
         decrypted text.  
         * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored  
         out from..  
         (keyserver_dlg_proc): ..here.  
   
 2004-11-04  Timo Schulz  <[email protected]>  
   
         * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred  
         keyserver sub packets.  
   
         * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to  
         indicate we need to reload the cache. If a user deletes a key  
         and exits the manager and loads it again the deleted key is  
         still in cache and provoked an error.  
           
         * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.  
   
         * wptW32API.cpp (center_window): Replaced with real code which calculates  
         the position relative to the desktop window.  
   
 2004-12-02  Timo Schulz  <[email protected]>  
   
         * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.  
   
 2004-12-11  Timo Schulz  <[email protected]>  
   
         * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect  
         the file type.  
         (fm_parse_command_line): Likewise.  
   
 2004-12-15  Timo Schulz  <[email protected]>  
   
         * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right  
         temp name.  
         * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button  
         when no secret key is available.  
   
 2004-12-20  Timo Schulz  <[email protected]>  
   
         * wptGPG.cpp (check_gnupg_engine): Fixed version checking.  
         * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the  
         cache if it is not valid.  
           
         Fix problem with a NULL pointer.  
   
 2004-12-30  Timo Schulz  <[email protected]>  
   
         * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.  
         This fixes the problem that the dialog crashes when the user selects  
         anything. Thanks to my users.  
         (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.  
           
 2005-01-07  Timo Schulz  <[email protected]>  
   
         * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.  
         (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.  
         (ldap_recvkey): Likewise.  
         (check_hkp_response): Be more liberal with error strings.  
         (kserver_connect): Prevent buffer overflow and use the right return  
         code for inet_addr().  
         (kserver_search_chkresp): New.  
         (kserver_search): Fixed. Now it works with modern keyservers.  
         * wptKeylist.cpp (seclist_init): Add new flags param.  
         * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key  
         listing.  
         * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.  
         * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.  
         * WinPT.cpp (WinMain): call GPGME init.  
         Reword the 'you have no keyring' problem and revamp the first run dialog.  
         * wptGPG.cpp (gnupg_access_keyring): New.  
         (gnupg_check_keyring): Removed unused code.  
         * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the  
         new texts and remove unused elements.  
         * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The  
         last annoying typo.  
         * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of  
         an error.  
   
 2005-01-08  Timo Schulz  <[email protected]>  
   
         * Applied the patches to make the source G++ compatible.  
         * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.  
         * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.  
         * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.  
   
 2005-01-10  Timo Schulz  <[email protected]>  
   
         * WinPT.cpp (load_gettext): New.  
         (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.  
   
 2005-01-20  Timo Schulz  <[email protected]>  
   
         * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the  
         keyring check. If the file exists, it is enough.  
         * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.  
         Several cleanups and allow to specify the port of the keyserver.  
         * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure  
         the application terminates clearly when Windows shutdown.  
   
 2005-01-21  Timo Schulz  <[email protected]>  
   
         * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys  
         which are not in the keyring. Suggested by djek.  
         * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic  
         'Always on Top'.  
         Allow to send encrypted files via MAPI.          
         * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache  
         if the HKP retrieval succeeded.  
         * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer  
         is not NULL.  
         * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with  
         a header similar to 'gpg -k name'.  
         * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible  
         with 'Always on Top' windows.  
         * wptFileManager.cpp (fm_parse_files): Set progress callback for  
         wiping files.  
         (fm_add_opened_files): Do not add the file in case of an error.  
         * wptKeyserverDlg.cpp (kserver_get_port): New.  
         (save_default_ks): Save port.  
         * wptKeyserver.cpp (set_default_kserver): Get port or use default.  
         (kserver_connect): Logging.  
         (kserver_send_request): Likewise. Thanks to Markus.  
         * wptError.cpp (w32_fmt_msg): New.  
         (winpt_strerror): Show the W32 API error if the hotkey could not  
         be registered.  
   
 2005-01-25  Timo Schulz  <[email protected]>  
   
         * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default  
         and that all values are 7-bit ASCII.  
         Use '*' for the passphrase field.  
         * wptGPG.cpp (multi_gnupg_path): New.  
         (get_gnupg_path): Use it here.  
         (check_homedir): Likewise.  
         * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port  
         is actually set.  
         * wptFileManager.cpp (fm_clearsign_8bit): New.  
         (fm_parse_files): Check if the file to clearsign is really 7-bit.  
         Thanks to djek.  
         (fm_set_ftype): Factored out some code from...  
         (fm_add_dropped_files): ...here. Simplied the code.  
         (fm_add_dir_files): New.  
         * Removed MD5 from MyGPGME and the new default sym cipher is AES.  
         * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var  
         to track the window handle.  
         (progress_cleanup): Try to close tracking handle first.  
   
 2005-01-26  Timo Schulz  <[email protected]>  
   
         * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.  
         * wptKeyManagerDlg.cpp: Add 'Select All' feature.  
         Move 'Edit->Key' to 'Key->Edit'.  
         * wptFileManagerDlg.cpp: Likewise.  
         * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.  
         * wptKeyManager.cpp (spawn_loadimage): Removed.  
         (km_show_photo): Removed.  
         * wptRevokersDlg.cpp (revokelist_init): Fixed index.  
         * wptErrors.cpp (winpt_strerror): Show system error for registry  
         related problems.  
   
 2005-02-02  Timo Schulz  <[email protected]>  
   
         * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise  
         it is invisible.  
         * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric  
         passphrases.  
         * Enable the progress dialog for symmetric encryption.  
         * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in  
         FM_ENCRYPT mode.  
         * WinPT.cpp (WinMain): SETUP_EXISTING implemented.  
         * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when  
         no value is entered.  
   
 2005-02-04  Timo Schulz  <[email protected]>  
   
         * wptProgressDlg.cpp (progress_cb_thread): Set root window if available.  
         If the progress window survives by accident, it will be closed when the  
         File Manager (root window) is closed.  
   
 2005-02-07  Timo Schulz  <[email protected]>  
   
         * wptFileManager.cpp (fm_parse_files): Do not use the progress dialog  
         for signing and verifying. But this does not fix the problem tha the  
         dialog sometimes stay and is not destroyed.  
   
 2005-02-23  Timo Schulz  <[email protected]>  
   
         * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.  
         (kserver_search): Be more strict.  
         * WinPT.cpp (WinMain): Enable FM progress by default.  
         * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.  
         (fm_parse_files): Use progress dialog only if it is  
         enabled.  
   
 2005-03-03  Timo Schulz  <[email protected]>  
   
         * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the  
         new PIN. Suggested by Achim.  
         Support to show the unmasked PIN.  
         Modified TAB-order.  
         * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.  
   
         * Fixed wrong GPG --command-fd strings. Thanks to Achim.  
   
 2005-03-04  Timo Schulz  <[email protected]>  
   
         * GPG asks twice for the new PIN. Thanks to Achim.  
         * wptCardDlg.cpp (card_changepin_dlg_proc): Reset the 'safety' pin also.  
         Only check the passphrase if the backup flag is enabled. Again thanks to  
         Achim.  
   
 2005-03-06  Timo Schulz  <[email protected]>  
   
         * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without  
         a public key. Noted by Kurt Fitzner.  
   
 2005-03-22  Timo Schulz  <[email protected]>  
   
         * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.  
         (enable_mobile_mode): New.  
         * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new  
         ID's for adding subkeys.  
   
   
   
   
   

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26