/[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 99 by twoaday, Fri Nov 25 07:47:51 2005 UTC
# Line 1  Line 1 
1  2001-01-21  Timo Schulz <[email protected]>  2005-11-24  Timo Schulz  <[email protected]>
2    
3      * wptNLS.cpp: ported to C++.          * wptPassphraseCB.cpp (passphrase_callback_proc): Localize
4      (gettext): Remove CP850 to ISO88591 conversation.          signing dialog items.
5            * wptMainProc.cpp (confirm_delclip_dlg): Localize dialog items.
6  2001-01-28  Timo Schulz <[email protected]>          * wptAboutDlgs.cpp (about_winpt_dlg_proc): Disable help for now.
7            * wptMDSumDlg.cpp (mdsum_dlg_proc): Localize missing items.
8      * wptHotkey.cpp: (register_hotkey): Hotkey registration.          * wptKeylist.cpp (key_check_validity): Likewise.
9      (unregister_hotkey): Hotkey removing.          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Likewise.
10      * wptHokey.h: New.          
11      * wptWndHook.cpp:  2005-11-22  Timo Schulz  <[email protected]>
12      (wpt_cpt_proc): Window hook to save the current windows.  
13      * wptWndHoo.h: New.          * wptCardEditCB.cpp (gpg_write): Due to removed _DEBUG
14      * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.          macro debug output will be generated in release version.
15      * WinPT.cpp: (WinMain): Add hotkey registration.          
16    2005-11-21  Timo Schulz  <[email protected]>
17  2001-01-29  Timo Schulz <[email protected]>  
18            * WinPT.cpp (WinMain): Implement --stop switch.
19      * wptClipboard.cpp: (clip_is_already_secure):          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Localize
20      Modify the pgp data detection.          missing string.
21            * wptPreferencesDlg.cpp (prefs_dlg_proc): Likewise.
22  2001-01-31  Timo Schulz <[email protected]>          * wptKeygenDlg.cpp (keygen_dlg_proc): Verify valid context
23            first. Thanks to Ralf.
24      * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.          * wptFileManagerDlg.cpp (update_ui_items): New.
25      * wptW32API.cpp: New.          * wptFileManager.cpp (fm_set_status): New sigmode param.
26      * WinPT.cpp: (WinMain): Change the keyring checking code.          Changed all callers.
27            
28  2001-02-01 Timo Schulz <[email protected]>  2005-11-17  Timo Schulz  <[email protected]>
29    
30      * wptW32API.cpp: (w32_get_edit_text): New.          * wptGPG.cpp (check_last_gnupg_access): Kludge to avoid that
31      (w32_set_menu_text): New.          the cache will be loaded twice.
32      (w32_strdup): New.          * wptRegistry.cpp (regist_inst_winpt): More comments.
33      * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.          * wptKeyManagerDlg.cpp (do_center_window): Make sure that
34      * Create all dialogs windows in the foreground.          neg. coordinates are never used.
35            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Localize all
36  2001-02-02  Timo Schulz <[email protected]>          strings.
37            * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
38      * wptW32API.cpp: (w32_hit_key): New.          * wptFileManagerDlg.cpp (filemanager_dlg_proc): Localize menu
39      (w32_rel_key): New.          and save 'AlwaysOnTop' in the registry.
40      (w32_copy_to_clip): New.          
41      (w32_insert_from_clip): New.  2005-11-16  Timo Schulz  <[email protected]>
42      (w32_get_clip_text): New.  
43      (w32_set_clip_text: New.          * WinPT.cpp (check_crypto_engine): Min is now GPG 1.4.2.
44      (w32_show_if_icon): New.          * wptKeylist.cpp (keylist_add_key): Add disabled keys in list
45            mode.
46  2001-02-03  Timo Schulz <[email protected]>          * wptPreferencesDlg.cpp (prefs_dlg_proc): Localize all strings.
47            * wptRegistry.cpp (regist_inst_winpt): Set install directory.
48      * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.          Useful for other programs to figure out the path to the EXE.
49      (oe_find_addr_window): Ditto.          
50      (oe_find_main_window): Ditto.  2005-11-14  Timo Schulz  <[email protected]>
51    
52  2001-02-04    Timo Schulz <[email protected]>          * wptGPG.cpp (check_gnupg_engine): Fix version check.
53            * wptMainProc.cpp (winpt_main_proc): Check keyring
54      * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.          file permissions always and do not use interative output
55      * wptMainProc.cpp: (wpt_main_proc):          when the windows session ends.
56      Remove ciphertext checks for signing and encrypting.          * wptProxySettingsDlg.cpp (proxy_settings_dlg_proc):
57      (allow double encryption).          Localize all strings.
58            * wptPassphraseDlg.cpp (passwd_dlg_proc): Likewise.
59  2001-02-07    Timo Schulz <[email protected]>          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg): Likewise.
60            * wptKeyEditDlgs.cpp (do_init_keylist): Skip all
61      * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.          non-valid keys.
62      * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.          
63    2005-11-12  Timo Schulz  <[email protected]>
64  2001-02-10  Timo Schulz <[email protected]>  
65            Fix more GCC warnings.
66      * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.  
67      * wptKeylistElement.cpp: New.  2005-11-10  Timo Schulz  <[email protected]>
68      * wptListElement.cpp: Remove.  
69      * wptW32API.cpp: Insert all lv_*** functions.          * wptClipSignDlg.cpp (one_key_proc): Use
70      * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.          release_gpg_passphrase_cb() to free the context.
71      (wpt_lv_keylist_release_keys): Ditto.          * wptListView.cpp (listview_deselect_all): New.
72      * wptW32API.cpp: (w32_get_thread_id): New.          * wptMAPI.cpp (mapi_send_pubkey): Works again.
73      (w32_attach_thread_input): New.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support encrypt &
74      * wptMailPlugin.cpp: (oe_get_message): Add thread attach mechanism.          zip.    
75      (oe_get_message): Add thread attach mechanism.          * wptPassphraseCB.cpp (passphrase_callback_proc): Fix passphrase
76      (oe_encrypt): Modify for the attach treach mechanism.          caching for signing operations.
77      Add sanity check for recipients.          * wptKeyManager.cpp (km_send_to_mail_recipient): Works again.
78            * wptFileManager.cpp (fm_send_file): Likewise.
79  2001-02-17  Timo Schulz <[email protected]>          (fm_encrypt_into_zip): New.      
80            
81      * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from  2005-11-09  Timo Schulz  <[email protected]>
82      the registry.  
83      (set_reg_entry): Set a gnupg registry key.          * wptNLS.c (get_gettext_langid): Map user language id to
84      * wptGPG.cpp: Modify all function for the use with get_reg_entry().          printable gettext language strings.
85      * WinPT.cpp: Change the way for the gpg searching mechanism.          * wptRegistry.cpp (get_reg_entry_mo): Support for the
86      * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.          gettext environment.
87      * wptClipImportDlg.cpp: (key import dialog): New.          * wptFileManager.cpp (fm_encrypt): Close all files before
88      * wptKeylistElement.cpp:          the wipe procedure is called.
89      (wpt_lv_implist_build): Build up the key import list.          * wptVerlist.cpp (verlist_add_sig): Handle the case the
90      (wpt_lv_implist_add_key): Insert a key into the import list.          issuer is not valid but the signature is.
91      (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.          (verlist_add_sig_log): Likewise. Thanks to the folks on
92            winpt-users.
93  2001-02-19  Timo Schulz <[email protected]>          
94    2005-11-08  Werner Koch  <[email protected]>
95      * wptRegistry.cpp: (is_installed): Remove.  
96      (regist_inst_winpt): Add selfcheck.          * SAFE.ICO, SIGN.ICO: Fixed capitalization.
97      (regist_inst_gpg): New. Add gpg releated registry entries.          * WinPT-en.rc: Ditto.
98      (regist_inst_mo): New. Add nls related path.          * winpt_km.ico:  Moved from ../.
99      (get_reg_entry), set_reg_entry(): Modify to be more flexible.  
100      (set_reg_entry_gpg): Handy functions for get_reg_entry.          * Makefile.am (resource_files): Add missing backslash.
101      (set_reg_entry_mo): Ditto.  
102      (get_reg_entry_gpg): Ditto.  2005-11-08  Timo Schulz  <[email protected]>
103      (get_reg_entry_mo(): Ditto.  
104      * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.          More minor changes to avoid GCC warnings.
105      * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.          
106      include keyring entries (2x)          * wptGPG.cpp (check_homedir): Free memory in case of errors.
107      (check_gpg_path): Include the check_gpg_optfile() check.          (multi_gnupg_path): Add strict mode. If non-strict mode return
108            the folder even if it does not exist.
109  2001-02-20  Timo Schulz <[email protected]>          (check_for_gpgwin): New.
110            * wptKeyserverDlg.cpp (hkp_recv_key): Make sure import_res is
111      * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.          initialized.
112      * wptClipImportDlg.cpp: Add some new code.          * wptRegistry.cpp (get_reg_entry_gpg4win): New.
113            (get_reg_entry_mo): Support for gpg4win.
114  2001-02-21  Timo Schulz <[email protected]>          
115    2005-11-07  Timo Schulz  <[email protected]>
116      * wptGPG.cpp: Fix the check_gpg_optfile() code.  
117          (gpg_errstr): Define some error constants to be more verbose.          * wptMainProc.cpp (winpt_main_proc): Disable
118          (set_gpg_options): New. Manipulate the options file.          some menu items when no secret key is available.
119          (get_gpg_options): New. Read in the options file.          
120      * wptFile.cpp: (get_file_size): New.  2005-11-05  Timo Schulz  <[email protected]>
121      * wptGPGOptDlg.cpp: New. Dialog for editing the options file  
122            More minor changes to avoid GCC warnings.
123  2001-02-22  Timo Schulz <[email protected]>          
124            * wptErrors.cp (winpt_strerror): Return w32
125      * wptGPG.cpp: (check_line): New. Check if the line contains a valid          formatted error and do not use 'break'.
126      gpg argument.          
127      (check_gpg_options): New. Parses each buffer line to check_line().  2005-11-04  Werner Koch  <[email protected]>
128    
129  2001-02-24  Timo Schulz <[email protected]>          * WinPT-en.rc: Fixed locations of icons.
130    
131      * wptGPG.cpp: (check_gpg_path): Fix a bug.  2005-11-03  Timo Schulz  <[email protected]>
132     (check_gpg_options): Fix some bugs.  
133            A lot of minor changes to avoid GCC warnings.
134  2001-02-25  Timo Schulz <[email protected]>  
135            * wptGPG.cpp (get_gnupg_keyring): Only check size for
136      * wptGPGPrefsDlg.cpp: Add some new translation strings.          public keyring.
137      * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.          * wptKeyManager.cpp (km_update_default_key_str): Do
138      * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.          not issue a bug message when no secret key was found.
139      * wptClipImportDlg.cpp: Finished basic interface.          * wptGPGPrefsDlg.cpp: Replace "" with NULL in the name struct.
140            
141  2001-02-27  Timo Schulz <[email protected]>  2005-11-02  Werner Koch  <[email protected]>
142    
143      * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.          * WinPT.cpp (WinMain): Disabled PTD version tests.
144      * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):          (check_crypto_engine): Fixed version check for scard.
145      Fixed.  
146            * wptErrors.cpp (debug_end): Add dummy function.
147  2001-03-15  Timo Schulz <[email protected]>  
148            * Makefile.am (code_files): Added wptCardEditCB.cpp and
149      * wptClipEncryptDlg.cpp: Fix translation.          wptKeyEditCB.cpp.
150      * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).  
151      * wptKeymiscDlg.cpp: Fix the key deleting stuff.  2005-10-31  Werner Koch  <[email protected]>
152    
153  2001-03-16  Timo Schulz <[email protected]>          * wptCurrWnd.cpp: Include wptVersion.h to get prototypes of PTD
154            functions.
155      * wptDlgs.h: Add new dialog callback function.  
156      * wptKeysigDlg.cpp: New. Key signature listing dialog.          * wptKeyEditDlgs.cpp: Include oleauto.h
157            * wptKeyEdit.cpp: Include time.h.
158  2001-03-18  Timo Schulz <[email protected]>          * wptRegistry.cpp (gpg_filetypes): New from ../Include/wptGPG.h.
159            * wptGPGUtil.cpp (gpg_manage_ownertrust): s/export/exportflag/.
160      * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.  
161      * wptAgent.cpp: New: Experimental passphrase caching.          * Makefile.am (code_files): Add wptGPGUtil.cpp, wptCardEdit.cpp,
162            wptKeyEdit.cpp and wptKeycache.cpp.
163  2001-03-19  Timo Schulz <[email protected]>  
164            * wptPassphraseCB.cpp: Fixed spelling of wptKeylist.h
165      * wptVerifyList.cpp: New control for the verify dialog.          * wptImportList.cpp (implist_load): Use remove and not unlink.
166      * wptClipVerifyDlg.cpp: Rewrote          * wptGPG.cpp: Fixed spelling of wptGpgCmds.h
167            * wptImportList.cpp (implist_load): Use remove and not unlink.
168  2001-03-20  Timo Schulz <[email protected]>          * wptKeyManager.cpp (km_http_import): Ditto
169            * wptMainProc.cpp: Include wptCrypto.h
170      * wptClipDecryptDlg.cpp: Rewrote          * wptKeyManager.cpp: Ditto.
171            * wptFileManager.cpp: Ditto.
172  2001-03-21  Timo Schulz <[email protected]>          * wptImportList.cpp (parse_colon_key): Need to cast argument for
173            isdigit.  Include ctype.h.
174      * WinPT.cpp: (WinMain): Re-activate the enable debug switch.          * wptGPG.cpp: Include shlobj.h.
175      * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.  
176            Fixed double inclusion of windows.h.
177  2001-03-28  Timo Schulz <[email protected]>          
178            * Makefile.am (bin_PROGRAMS): Don't build KeyManagerExe for now.
179      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):          * wptKeylist.cpp (get_key_created): Broke up trigraph.
180      Added the keyid to the "no trust" message.          (get_key_status): Removed dangerous use of sprintf.  Still other
181      * wptKeyserverDlg.cpp: (check_pattern): New:          flaws present, see comment.
182      Do some sanity checks of the search pattern.  
183      * wptMainProc.cpp: (wpt_main_proc): Add agent support.          * wptCardPCSC.c: Don't include winscard.h.
184      * wptHotkey.cpp: Add agent support.          (pcsc_readerstate_t, pcsc_context_t): New.  Changed call users to
185            use these types.
186  2001-03-30  Timo Schulz <[email protected]>          (PCSC_): Added a lot of constants, all taked from GnuPG 1.9.
187            (SCARD_S_SUCCESS): Changed all compares to test the value directly
188      * wptW32API.cpp: (new_strdup): Remove.          against zero.
189      * wptW32API.h: Ditto.  
190      * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.          * WinPT.cpp: Include wptCrypto.h.
191      * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.          (WinMain): Don't shard S. Removed usunsed variable SIZE.
192            * Makefile.am (code_files): Actually add files by adding a first
193  2001-03-31  Timo Schulz <[email protected]>          backslash.
194            * wptMDSumDlg.cpp: Include wptCrypto.h.
195      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,          * wptProxySettingsDlg.cpp: Included ctype.h.
196      the GPG default key will be used.          * wptKeysigDlg.cpp: Fixed spelling of wptKeylist.h.
197            * wptKeysignDlg.cpp: Ditto
198  2001-04-02  Timo Schulz <[email protected]>          * wptKeyRevokersDlg.cpp: Ditto. Fixed spelling of wptW32API.h.
199            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Replaced unlink by remove.
200      * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.          Removed unused variable.
201      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only          * wptClipVerifyDlg.cpp (show_notation_data): s/not/nota/ due to
202      contains valid keys.          silly c++ operator synonyms.
203      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.          * wptKeyEditDlgs.cpp: Include time.h.
204            * wptClipDecryptDlg.cpp: Include wptCrypto.h to define PGP_MESSAGE.
205  2001-04-04  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp: Ditto.
206            (space_wipefrees_dlg_proc): Replaced unlink by remove; it doesn't
207      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static          matter if it does an rmdir for a directory.
208      passphrase. Now a callback context is used.  
209      (passphrase_cb): Ditto.          Fixed include of resource.h which is not anymore in the top
210      (clip_decrypt_dlg): Ditto.          directory.
211      * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.  
212      (install_cbt_hook): Modify for the new thread model.  2005-10-28  Werner Koch  <[email protected]>
213      (remove_cbt_hook): Ditto.  
214      * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.          * wptProxySettingsDlg.cpp (check_number): Cast isdigit() arg to
215      (delete_critical_section): Ditto.          unsigned.  Never ever use a possible signed char as argument for
216      (lock): Ditto.          ctype tests.  An alternative is to first test using isascii ().
217      (unlock): Ditto.          (keyserver_proxy_dlg_proc): Removed unused variable.
218    
219  2001-04-06  Timo Schulz <[email protected]>  2005-10-27  Timo Schulz  <[email protected]>
220    
221      * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.          * wptKeyPropsDlg.cpp (get_validity): Take care of disabled keys.
222      * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the          * wptKeylist.cpp (keylist_add_key): Check global key flag to
223      ownertrust dialog.          see if the key is disabled and not each subkey.
224            (seclist_init): Likewise.
225  2001-04-06  Timo Schulz <[email protected]>          * wptClipDecryptDlg.cpp (gpgme_op_clip_decrypt): Use
226            gpgme_op_decrypt_verify.
227      * wptGPG.cpp: (check_gpg_path): Fix a small error.          (clip_decrypt_dlg_proc): Fixed fingerprint
228      * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the          to keyid conversation. This also fixes a crash.
229      first time a user started WinPT.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
230      * wptClipboard.cpp: (clip_isalready_secured): Check the begin and          * wptKeyEditDlgs.cpp (do_editkey_expire): Ask if the key
231      end PGP header.          already expired if the user wants to change the date.
232            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Replace old
233  2001-04-07  Timo Schulz <[email protected]>          'v3 sig' option with the 'ask cert level' option. Sync
234            with global preferences.
235      * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.          * wptKeySignDlg.cpp (keysign_dlg_proc): Watch if the
236      (agent_destroy): Ditto.          gpg.conf contains 'ask-cert-level'. If not disable button.
237      (agent_passphrase_cache): Ditto.          * wptKeySigDlg.cpp (keysig_dlg_proc): Automatically disable
238      (agent_passphrase_remove): Ditto.          the button when the key is available.
239      (agent_passphrase_get): Ditto.          Reload key directly, not the entire cache.
240            
241  2001-04-09  Timo Schulz <[email protected]>  2005-10-26  Timo Schulz  <[email protected]>
242    
243      * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet          * wptFileManager.cpp (is_floppy_disc): Prevent very unlikely but
244      type. Kludge for decrypt/verify.          possible overflow.
245      * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the          (is_openpgp_ext): Compare case insentensive.
246      code into the decrypt routine.          (add_single_file): New.
247      * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start          (fm_add_opened_files): Support multi file selection.
248      the key management after import.          * wptKeyPropsDlg.cpp (do_change_ownertrust): Removed.
249            * wptKeyManager.cpp (km_enable_disable_key): Do not set cache
250  2001-04-09  Timo Schulz <[email protected]>          reload flag. Just update the single key.
251            * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Remove static var
252      * wptGPG.cpp: (check_line): Ignore empty lines.          and disable anonymize recipient for now.
253      (check_gpg_options): Ditto.  
254            Begin to port code to GCC. Fix all warning issued by the gcc
255  2001-04-12  Timo Schulz <[email protected]>          compiler.
256    
257      * wptHotkeys.cpp: (register_single_hotkey): Add code for the current  2005-10-25  Timo Schulz  <[email protected]>
258      window stuff.  
259      * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window          * wptGPGUtil.cpp (create_process): Hide window.
260      hotkeys.          * wptKeyPropsDlg.cpp (get_photo_tmpname): New.
261      * wptW32API.cpp: (attach_thread_input): Split up the functions into          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Remove
262      two parts. The attach flags is always set.          static var 'enable'.
263      (detach_thread_input): See above. The attach flags is never set.          * wptKeygenDlg.cpp (keygen_dlg_proc): Likewise.
264      * wptCurrWnd.cpp: New. Code for the current window stuff.          (gpg_genkey_params): Make sure all primary keys are capable
265      (get_window_contents): Extract the text from the given window to          for signing and certification.
266      the clipboard.          * wptKeySigDlg.cpp (is_sig): If no item is selected, return 0.
267      (set_window_contents): Insert clipboard into the given window.          * wptGPG.cpp (gnupg_access_keyring): Check return value for
268            NULL. Noted by Ralf.
269  2001-04-13  Timo Schulz <[email protected]>          (get_gnupg_prog): Simplified.
270            (check_homedir): Fixed. Return 0 when the dir is successfully created.
271      * wptMailPlugin.cpp: (oe_set_message): Change the id's for          * wptKeyManagerDlg.cpp (km_file_import): Use the hourglass to
272      the attach_thread_input.          indicate a pending GPG process.
273      (oe_get_message): Ditto.          * wptFileManager.cpp (op_begin, op_end): New. Indicate an start
274      * wptCurrWnd.cpp: (get_window_contents): Ditto.          and and of an operation. For now just the cursor changes.
275      (set_window_contents): Ditto.          (fm_parse_command_line): Remove debug output. Thanks to Ralf again.
276            * WinPT.cpp (WinMain): Check if there is already an instance and
277  2001-04-14  Timo Schulz <[email protected]>          set a variable early as possible.
278            (load_gettext): If a previous instance was found, do not output
279      * wptCurrWnd.cpp: (get_window_contents): Add an event to switch          any errors. Kudos to Ralf.      
280      the windows. This is needed by the current code.  
281      (set_window_contents): Ditto.  2005-10-24  Timo Schulz  <[email protected]>
282      * wptWndSwitchDlg.cpp: (wndswitch_dlg_proc): Create a hidden dialog  
283      and force it to the foreground. This is the event needed by the code          * wptPassphraseCB.cpp (passphrase_callback_proc): Allow to use
284      above.          pre-defined recipients.
285      (create_wndswitch_event): Execute the dialog.          (release_gpg_passphrase_cb): Release recipients.
286      * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey          * wptKeyPropsDlg.cpp (keyprops_load_photo): Set photo-id
287      section. Add message entries for the code.          validity if needed.
288      * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE          (keyprops_dlg_proc): Issue a warning if the photo is valid.
289      mailer code.  
290      (insert_window_from_clip): Ditto.  2005-10-23  Timo Schulz  <[email protected]>
291      * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add  
292      the event to switch the windows.          * wptFileManager.cpp (fm_get_file_type): Detect detached sigs.  
293      (oe_get_message): Ditto.          * wptKeyList.cpp (keylist_cmp_cb): Take care of expired/revoked keys.
294            (get_ext_validity): New.
295  2001-04-16  Timo Schulz <[email protected]>          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Several cleanups.
296            * wptClipEditDlg.cpp (load_clipboard): Factored out some code into
297      * wptWndHook,cpp (cbt_proc): Compare process ids to differ between          this function.
298      WinPT and normal windows.          (load_clipboard_from_file): Likewise.
299      (install_cbt_hook): Add pid to the context.          (save_clipboard_to_file): New.
300            * wptKeyManagerDlg.cpp (keyprops_dlg_proc): Fix stack overflow.
301  2001-04-17  Timo Schulz <[email protected]>  
302    2005-10-22  Timo Schulz  <[email protected]>
303      * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window  
304      belongs to the taskbar area.          Localized a lot of more strings.
305      (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.  
306      (cbt_proc): Change code to include both functions.          * wptMainProc.cpp (load_smartcard): New.
307      * wptCurrWnd.cpp (get_window_contents): Add switch if we use the          * wptFileManager.cpp (fm_parse_command_line): Simplify code.
308      foreground or the CBT window.          (fm_check_armor_type): Add new arg. Change all callers.
309      * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the          (fm_get_file_type): Likewise.
310      current window mode set the no_cbt variable.          * wptKeyPropsDlg.cpp (display_key_info): New.  
311      * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring          (keyprops_show_photo): Factored out some code into..
312      was modified by an external program.          (keyprops_load_photo): ..this function.
313      * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external  
314      keyring changes.  2005-10-21  Timo Schulz  <[email protected]>
315    
316  2001-04-21  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Use
317            WM_INITPOPUPMENU to localize popup menu texts.
318      * wptWndHook.cpp (install_cbt_hook): Remove the thread because the          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
319      system already is into a DLL.          * wptClipSignDlg.cpp (one_key_proc): Use wipememory instead of memset.  
320      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use  
321      instead of it a button to check the key signatures.  2005-10-20  Timo Schulz  <[email protected]>
322      * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp  
323      from the given gpg object.          Now WinPT depends on GPG 1.4.3 and GPGME 1.2.0.
324      (check_last_gpg_access): New. Compare the last file timestamp with the  
325      new timestamp.          * wptPassphraseCB.cpp (passphrase_cb): Complete card support.
326      (init_gpg_table): New. Initialize the table with gpg objects who shall          * wptCardEdit.cpp (genKey): Handle cancel case.
327      be watched.          * keycache.c: Renamed into...
328      (keyring_check_last_access): Use the new code.          * wptKeyCache.cpp: ...this.
329      * wptCurrWnd.cpp (set_window_contents): Restore the window if it is          * wptW32API.cpp (set_menu_text): Removed unused code.
330      now iconic.          (set_menu_text_bypos): New.
331      * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the          * wptCrypto.h: New.
332      current window stuff.          * wptMainProc.cpp (winpt_main_proc): Complete localize
333            menu texts.
334  2001-04-22  Timo Schulz <[email protected]>          * wptErrors.cpp (log_debug): Use a static var so the file
335            is only opened once.
336      * wptGPG.cpp (check_last_gpg_access): Reset switch before testing          (debug_end): Cleanup. Currently just close the log file.
337      the condition.          * wptErrors.h (wipememory): New.
338      * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate          (sfree_if_alloc): Use it here.
339      all children windows.          * WinPT.cpp (WinMain): Display the min. GPGME version which
340      (find_parent_wnd_proc): New. Callback to enumerate all parent windows.          is needed in case of an error.
341      (find_window): New. Return if the specified windows as found.  
342      * wptW32API.cpp: (dialog_box_param): New. Alias with the additional  2005-10-17  Timo Schulz  <[email protected]>
343      feature to check if the dialog already exist (and then preventing  
344      the creation).          Free all memory returned by the GPGME dll with gpgme_free ().
345      * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with  
346      then new dialog_box_param function. Thanks to Martin who told me          s/GPG_ERR_CARD_REMOVED/GPG_ERR_CARD_NOT_PRESENT.
347      about this dialog problem.  
348      * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.          * wptKeyEdit.cpp (getCardStatus): Remove dummy key.
349      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the          (list_handler): With user interaction to allow to insert
350      new signature buttons.          the card into the reader.
351            * wptKeyEditCB.cpp (gpg_edit_card): Likewise.
352  2001-04-23  Timo Schulz <[email protected]>          (common_card_handler): Fixed incorrect command string.
353            * wptKeyPropsDlg.cpp (get_card_type): New.
354      * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality          (keyprops_dlg_proc): Show card information if present.
355      is not needed because all dialog windows are top level windows.          * wptFileManager.cpp (secret_key_available): Make the code faster.
356            
357  2001-04-24  Timo Schulz <[email protected]>  
358    2005-10-16  Timo Schulz  <[email protected]>
359      * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview  
360      item and set it to zero.          * wptPassphraseCB.cpp (passphrase_cb): Fix problem
361      * wptSignDlg.cpp (sign_dlg_proc): Ditto.          with hanging GPG process on cancel.
362      * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.          * keycache.c (gpg_keycache_release): Release all objects.
363      * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.  
364      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.  2005-10-15  Timo Schulz  <[email protected]>
365      (keymisc_dlg_proc): Provide the functionality to delete key pairs  
366      secret+public.          * wptCardEdit.cpp (setResult, getResult): New.
367      * wptWndHook.cpp (is_winpt_wnd): Remove this function and put          (reset): New.
368      all code into (check_wnd).          (getCardStatus): Check return codes and release all objects
369      (check_wnd): Check if the window doesn't is a application related          in case of errors.
370      window.          * wptCardEditCB.cpp (change_pin_handler): Call reset()
371            before quit.
372  2001-04-25  Timo Schulz <[email protected]>          (editcard_handler): Likewise.
373            (common_card_handler): New.
374      * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME          * wptCardDlg.cpp (card_changepin_dlg_proc): Also unmask
375      callback system to pass the keyedit information to GPG.          the old PIN when 'Hide Typing' is disabled.
376      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.          * wptPassphraseCB.cpp (passphrase_cb): The card detection
377            works again. Support to re-enter passphrase.
378  2001-04-26  Timo Schulz <[email protected]>  
379    2005-10-14  Timo Schulz  <[email protected]>
380      * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various  
381      edit-key commands.          * wptCardDlg.cpp (card_status): New fields for the
382      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit          fingerprint creation time. Display card info as title.
383      key code.          (get_printable_version): New.
384            * wptCardEditCB.cpp (editcard_handler): Fix problem
385  2001-04-27  Timo Schulz <[email protected]>          with the counter comparison.
386    
387      * wptCurrWnd.cpp (get_window_contents): Change the code for the last  2005-10-11  Timo Schulz  <[email protected]>
388      window concept. Thanks to Oliver.  
389      (set_window_contents): Add some stuff to set the position if the          Port to GPGME basically finished.
390      current window is an edit control.  
391      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'  2005-09-20  Timo Schulz  <[email protected]>
392      stuff.  
393      * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc):
394      create a new user id for a GPG key.          Do not use gpgme_recipients_t but the listview directly
395            to add the selected files.
396  2001-04-28  Timo Schulz <[email protected]>  
397    2005-09-07  Timo Schulz  <[email protected]>
398      * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.  
399      So it's easier to update GPGME and we can use NLS to translate          * Make sure all GetOpenFileName filters are terminated by \0\0.
400      error strings.  
401      * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code  2005-09-01  Timo Schulz  <[email protected]>
402      because we only use it here.  
403      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'          * wptW32API.cpp (center_window): New argument for parent window.
404      feature to the edit-key interface.          Change all callers.
405            (center_window2): Likewise.
406  2001-04-29  Timo Schulz <[email protected]>          * GPGME now can read gpgProgram entries with 'REG_EXPAND_SZ'.
407            * wptGPG.cpp (gnupg_backup_options): Remove param. One backup
408      * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.          file is enough. Changed all callers.
409      (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the  
410      adduid command.  2005-08-15  Timo Schulz  <[email protected]>
411      * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize  
412      the dialog with a KEY structure that holds the keyid and the userid.          * wptKeyEditDlgs.cpp (do_editkey_showpref): Take care of v3 keys.
413      * wptWndHook.cpp: Remove the global context and use instead of it          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Fixed name of title.
414      static variables. Put all static variables into the SHARED data          * Make sure the passphrase is always overwritten before it is
415      segment in the DLL.          freed (or the function returns).
416            * wptKeyPropDlg.cpp (get_pref_cipher): New.
417  2001-04-30  Timo Schulz <[email protected]>          (keyprops_dlg_proc): Use it here.
418    
419      * wptClipEditDlg.cpp: Now the dialog uses the Courier font to  2005-08-06  Timo Schulz  <[email protected]>
420      enhance the format of keys and other GPG data.  
421      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod          * wptGPGME.cpp (keycache_update): Reload OpenPGP parts
422      flag after receiving a key.          of the secret key.
423      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when          (keycache_init): cache name of secret keyring.
424      no listbox entry was choosen.          * wptKeyList.cpp (keylist_upd_key): Do not add long keyid.
425      * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to          (get_key_type): Do not assume 'ultimate' means key pair.
426      the NLS suite.          * wptKeyEditDlgs.cpp (diff_time): New.
427      * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag          (keyedit_addsubkey_dlg_proc): Changed design and use
428      instead of refresh the keycache.          diff_time. Drop checks for invalid keylength (< 1024, > 4096)
429            because the combo box automatically handles this.
430  2001-05-01  Timo Schulz <[email protected]>          * wptKeyManager.cpp (km_set_implicit_trust): Return error code.
431            * wptGPG.cpp (get_backup_name): New.
432      * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence          (gnupg_backup_keyrings): Rotate backup names, from 0..3.
433      to a window.          * wptClipImportDialog.cpp (clip_import_dlg_proc): Free memory.
434      (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use 0x short keyid and
435      (wnd_msg_paste): New. Send the CTRL+v key sequence to a window.          not the long keyid.
436      (wnd_msg_em_set_pos): Manipulate an edit multiline control text pos.  
437      * wptMainProc.cpp (wpt_main_proc): Fix some message string for  2005-08-05  Timo Schulz  <[email protected]>
438      the hotkey handling. Quit the program if a registration procedure  
439      failed.          * wptListView.cpp (listview_set_item2): New.
440      * wptErrors.cpp (log_box): Improved log handling to dump states          * wptKeyManager.cpp (km_check_if_protected): Directly
441      of variables during regression tests.          retrieve gpgme_key_t from the list.
442            (km_check_key_status): Likewise.        
443  2001-05-02  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Also use
444            a human-readable name for secret key export.
445      * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional          Reload just the keys which were affected by updates
446      subkeys for the mainkeys.          (edit-key).
447      * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground          (update_key): New.
448      window flag.          * wptKeyList.cpp ((keylist_upd_key): Stripped down
449      * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the          version of keylist_add_key.
450      addkey feature.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Do not
451            reload the keycache here, just flag 'update'. Give the
452  2001-05-04  Timo Schulz <[email protected]>          control to the calling dialog.
453            * wptKeySignDlg.cpp (keysign_dlg_proc): Use winpt_key_t
454      * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.          as parameter. Changed all callers.
455      * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):          Add date of expiration to the key info.
456      Move all the GPGME specific code to the main dialog. Now only          (get_expire_date): New.
457      the context values are set.          Use a checkbox to allow to ask for the cert level.
458      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Do no reload
459      code.          the cache.
460    
461  2001-05-05  Timo Schulz <[email protected]>  2005-08-04  Timo Schulz  <[email protected]>
462    
463      * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve          * wptListView.cpp (listview_scroll): New.
464      the current window handle. This code doesn't use the hook DLL.          (listview_get_item2): New.
465      Thanks to Oliver Nittka for his patch.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If the
466      * wptErrors.cpp (winpt_strerror): Fixed a small typo.          item was found, make it visible with scrolling.
467      * wptGPG.cpp (check_last_gpg_access): Remove debug code.          * wptKeyManager.cpp (km_find_key): New.
468      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading          (keylist_subclass_proc): Support to handle some acceleators.
469      scheme to prevent reloading the cache twice.          Strg+{C, P, F, A}.
470            (km_get_key_status): Get the gpgme_key_t object directly
471  2001-05-08  Timo Schulz <[email protected]>          from the list.
472            * wptGPGPRefsDlg.cpp (gpgprefs_dlg_proc): Also try to set
473      * wptKeyserver.cpp (wsock_init): Replace the kserver init          the config file (if it exists).
474      code which initialized the Wsock2 interface.          * wptKeySignDlg.cpp (keysign_dlg_proc): Use easier code
475      (wsock_end): Ditto.          to handle the click->activate situation.
476      * wptAgent.cpp: Remove the passphrase caching code and add          * wptPassphraseCB.cpp (passphrase_callback_proc): Likewise.
477      the GPG agent code.          Support to check the passphrase quality.
478            * wptPassphraseDlg.cpp (passwd_dlg_proc): Likewise.
479  2001-05-09  Timo Schulz <[email protected]>          (request_passphrase): Rename 'init' to 'flags' to allow more
480            options.
481      * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.          * wptMAPI.cpp: Check all *alloc results.
482      (gpga_readn): Read 'n' bytes from a socket.          * wptKeyGenDlg.cpp (keygen_dlg_proc): Use a rudimentary
483      (gpga_open): Open the interface to the GPG-Agent.          passphrase quality check.
484      (gpga_close): Close the GPG-Agent socket.          * wptMDSumDlg.cpp (mdsum_dlg_proc): Use md5/sha1sum file
485      (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.          format and allow to save the checksum in a file.
486      (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Issue a warning
487      this keys will be remove from the GPG-Agent cache.          when the PGP mode is disabled.
488      (agent_delete_fpr): Remove a fingerprint from the cache.          wptKeyEditDlgs.cpp (do_editkey_primary): Return if just
489      (agent_init): Clear the cache.          one user-ID exists.
490      (agent_timer_proc): Remove all stored passphrases which were          (keyedit_dlg_proc): Fixed index problem.
491      requested through the chache.          * wptKeyPropsDlg.cpp (get_validity): New.
492            (keyprops_dlg_proc): Actually show extended validity if possible.
493  2001-05-10  Timo Schulz <[email protected]>          * wptKeyList.cpp (get_key_fpr): Support for old v3 format.
494            (do_addkey): Use listview_add_item2 to store key as opaque
495      * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve          param inside the list.
496      the handle of the specified window.          * wptFileStatDlg.cpp (get_digest_algo): Add SHAxxx.
497      * wptAgent.cpp (agent_timer_proc): Changed the agent interface          (file_stat_dlg_proc): End dialog if no PGP data was found.
498      to window messages instead of socket connections.          (do_list_packets): Return the number of valid PGP packets
499      * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog          of the file.
500      and menu entry.  
501      * wptPreferencesDlg.cpp: New.  2005-08-02  Timo Schulz  <[email protected]>
502    
503  2001-05-11  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Instead of
504            using 'Default Keyserver' add the real keyserver name to
505      * wptMainProc (wpt_main_proc): Change all related menu entries from          the menu.
506      Encrypt & sign to Sign & Encrypt. Added the command to the current          The rebuild command does not reload the cache any longer.
507      window menu and the handling of the window messages.          Use ATTR_NAME + .asc as the filename and not keyid + .asc.
508      * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.          * wptProxySettingsDlg.cpp (enable_proxy_auth): New.
509      * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT          (keyserver_proxy_dlg_proc): Changed the design a little
510      preferences in the registry.          and add some additional sanity checks.
511      (get_reg_winpt_prefs): Read all preferences from the registry into          * wptGPGParser.cpp (commit_gpg_options): Use W32 line endings.
512      the options context.          This fixes the problem that the GPG option dialog does not show
513      * WinPT.cpp (WinMain): Read in the registry preferences at the begin          very nice lines.
514      and store it.          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): s/options/config.
515      * wptAgent.cpp (agent_init): Check if the environment variable          * wptKeySigDlg.cpp (keysig_dlg_proc): If a single key is selected
516      GPG_AGENT_INFO is set, otherwise set it.          check for 'NOKEY' before asking a keyserver.
517      (agent_is_running): Check wether the agent is running.          * wptKeyManager.cpp (km_delete_keys): Do not set 'refresh' flag.
518      (agent_start): Automated function that read all needed information          If a lot of keys were selected, ask if the user wants to confirm
519      from global variables.          each delete procedure or allow to cancel the operation.
520            * wptFileManagerDlg.cpp (file_import_dlg_proc): Display how much
521  2001-05-12  Timo Schulz <[email protected]>          keys the file contain.
522            * wptKeyList.cpp (get_key_algo): Beautified.
523      * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption          (get_key_status): Drop the "[XYZ] Unknown" format, it is too
524      call.          confusing for users.
525            * wptKeyManager.cpp (km_check_key_status): Adjustments for the
526  2001-05-13  Timo Schulz <[email protected]>          new code.
527            (km_check_for_seckey): Reset utrust parameter. Return -1 for
528      * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist          invalid (exp+rev+dis) keys.
529      the function create it.  
530      (set_reg_winpt_prefs): Use the new function to set the subkey values.  2005-08-01  Timo Schulz  <[email protected]>
531      All functions now return WPTERR_REGISTRY instead of 1.  
532      Add some error handling to prevent errors in the registry.          * wptKeyserver.cpp (kserver_urlencode): Use unsigned for all given
533      * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard          sizes.
534      hotkeys and the caching time.          (check_IP_or_hostname): New.
535            (kserver_load_conf): Correct finger URL parsing problem.
536            (port_from_proto): New.
537  2001-05-18  Timo Schulz <[email protected]>          (keyserver_load_conf): Guess the port.
538            (keyserver_set_default): Allocate new buffer.
539      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various          (kserver_load_conf): Likewise.
540      edit key commands. In the case the dialog was canceled, return without          * wptHTTP.c (parse_reqline, parse_request): Removed.
541      modifying anything.          Use WinPT error code and remove all unused code.
542      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Properly handle finger URLs.
543      signature. If it doesn't contain a valid key, do nothing.          * wptProxySettingsDlg.cpp (read_proxy): Simple check for
544      * wptMainProc: (wpt_main_proc): If the hotkey setup doesn't work, don't          invalid host/IP addresses.
545      quit the program. In some cases the hotkeys are possible locked.          * wptGPG.cpp (multi_gnupg_path): Return allocated buffer.
546      * WinPT.cpp (WinMain): If there is an error with the gpg program/path,          Changed all callers.
547      give the user the chance to start the GPG preference dialog.          * wptPreferencesDlg.cpp (prefs_dlg_proc): At the first start,
548      * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey          automatically set 'backup to homedir'.
549      support. Flag to disable all hotkeys. Reload new hotkeys (in the case          * WinPT.cpp (WinMain): Use desktop window as the parent window
550      they changed). Load the registry entry on startup.          to load 'first-start' dialogs.
551      * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Do not set 'refresh'
552      stored registry entries.          flag after deleting keys.
553            * wptFirstRunDlg.cpp (first_run_dlg_proc): Use a new structure
554  2001-05-19  Timo Schulz <[email protected]>          for passing the arguments.
555            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Do not store "" for
556      * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey          the OptFile. This was responsible for a lot of 'General Errors'
557      flag is set, also disable all input items.          after the first start related to key caching.
558      (disable_dlg_item): New. Disable dialog items (windows).          Automatically set the gpg binary if possible.
559      * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys  
560      flag isn't set.  2005-07-22  Timo Schulz  <[email protected]>
561      * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as  
562      a result the code only sended parts of the key.          * wptMainProc.cpp (winpt_main_proc): Take care for shutdown
563      * wptConfig.cpp: Removed. Not used any longer.          messages and make sure WinPT make a keyring backup in this case.
564            * wptGPGME.cpp (keycache_reload): Do not rebuild the signature
565  2001-05-20  Timo Schulz <[email protected]>          cache each time. Just do it on startup.
566            * wptKeyManager.cpp (km_key_is_v3): Use new ATTR_VERSION.
567      * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Assume the v3 flag
568      to figure out if both parts are available.          was set by the calling function.
569            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): Ask for backups.
570  2001-05-21  Timo Schulz <[email protected]>          (keygen_dlg_proc): Only add the generated key to the keycache
571            and do not reload the entire cache.
572      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid          * wptKeyManager.cpp (km_delete_keys): Store the number of keys
573      management.          because in each loop iteration it will be new calculated.
574      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids          * wptListView.cpp (listview_del_items): Likewise.
575      from a special key.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Directly add the
576            generated key to the list instead of reloading the entire cache.
577  2001-05-25  Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (parse_preflist): Support fpr SHAnnn.
578    
579      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen  2005-05-09  Timo Schulz  <[email protected]>
580      user id. End the dialog if there was an error during the Gpgme operations.  
581      * wptClipboard.cpp (clip_istext_avail): First check if the pointer is          * wptCommonDlg.cpp (http_file_dlg_proc): Renamed to..
582      valid and then look at the length. Avoid crashes for some texts.          (http_dlg_proc): ..this.
583            (get_keyserver_URL_dlg): New.
584  2001-05-27  Timo Schulz <[email protected]>          (check_URL): New.
585            * wptKeyEditDlgs.cpp (keyedit_set_pref_keyserver): New.
586      * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.          (keyedit_main_dlg_proc): Avoid massive keycache reloads, just reload
587      (get_reg_winpt_prefs): Ditto.          the single key.
588      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the          * wptKeyRevokersDlg.cpp (key_revokers_dlg_proc): Show the key
589      gpg process finished.          properties of the selected desig. revoker.
590      * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to          * wptVerifyList.cpp (verlist_build): Increase the column
591      a humand readable date.          size of 'keyid'.
592            * wptGPGME.cpp (keycache_update): New.
593            * wptKeySigDlg.cpp (keysig_dlg_proc): Update the key if a signature
594  2001-06-01  Timo Schulz <[email protected]>          was deleted.
595            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Zeroing the key struct
596      * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:          before we set any values.      
597      Release context in the case of an error.  
598      * wptMainProc.cpp (wpt_main_proc): Fix typo.  2005-05-03  Timo Schulz  <[email protected]>
599      * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use  
600      a static gpg object array that contains all filenames.          * wptFileManager.cpp (fm_parse_command_line): Handle
601            'SYMKEYENC' files. Thanks to the user who reported it.
602            * wptKeyEditDlgs.cpp (do_find_userid): Optionally return the context.
603  2001-06-04  Timo Schulz <[email protected]>          (showpref_dlg_proc): New.
604            (keyedit_main_dlg_proc): Support SHOWPREF.
605      * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for          (userid_list_init): New field 'Email'. Split userID into 'Name' + 'Email'.
606      the improved import status.          (do_add_new_userid): Adjust for new ListView.
607            (do_find_userid): Use email for searching.
608            (parse_preflist): New.
609  2001-06-05  Timo Schulz <[email protected]>  
610    2005-04-19  Timo Schulz  <[email protected]>
611      * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned  
612      buffer is valid. Remove the fixme, because it's possible that there          * wptKeyserver.cpp (kserver_update_proxyuser): Fixed
613      were new cipher modules loaded.          buffer overflow that occurred when the proxy password
614      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the          is > 29 chars. Thanks to the friendly user who reported this.
615      context is valid.          (kserver_search): Handle the case the key is revoked. Thanks
616      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.          to Ralf.
617      * wptW32API.cpp (status_box): New. Message box that is always forced          (kserver_connect): More logging.
618      to the foreground.          (kserver_sendkey): Likewise.
619            * wptProxySettingsDlg.cpp (check_number): New.
620  2001-06-07  Timo Schulz <[email protected]>          (read_proxy): Check the entered port number.
621            * wptKeySignDlg.cpp (sig_class_dlg_proc): Check default button.
622      * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,          * wptW32API.cpp (get_folder_dlg): Free memory.
623      add windows title.  
624    2005-04-11  Timo Schulz  <[email protected]>
625  2001-06-08  Timo Schulz <[email protected]>  
626            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Reset
627      * wptHotkey.cpp (mod_hotkeys): Change code to support the new          'enable' flag always at the begin.
628      registry style.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Show correct
629      * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable          key trust. Noted by a friendly user.
630      single hotkeys. Suggested by Jonathan.          * wptListView.cpp (listview_add_item_pos): New.
631      * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable          * wptKeyEditDlgs.cpp (get_subkey_fingerprint): Due to
632      single hotkeys.          the fact that GPG does not return the fingerprint of
633      * wptKeyserver.cpp (kserver_connect): Reset winsock error var.          the generated subkey any longer, we need to get it manually.
634      (keyserver_recv): Ditto.          Thanks to Maxime Brandt.
635      (keyserver_send): Ditto.          (keyedit_addsubkey_dlg_proc): If key size too large, ask
636      (wsock_strerror): Returns a description of the winsock problem.          if this was a mistake.
637      * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer          (keyedit_add_subkey): Use it here.
638      is valid.          (do_add_new_subkey): Fix list contrl insertion.
639            * wptTypes.h (DEFAULT_KEYSIZE): Define new default keysize constant.
640  2001-06-10  Timo Schulz <[email protected]>  
641    2005-04-04  Timo Schulz  <[email protected]>
642      * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single  
643      hotkey.          * WinPT.cpp (check_crypto_engine): Correct version
644      (mod_hotkeys): Take care of the enable flags.          check. Noted by Werner.
645      (register_hotkeys): Ditto.  
646      (unregister_hotkeys): Ditto.  2005-03-22  Timo Schulz  <[email protected]>
647      * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,  
648      don't try to modify hotkeys.          * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.
649      * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to          (enable_mobile_mode): New.
650      the foreground.          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new
651            ID's for adding subkeys.
652  2001-06-12  Timo Schulz <[email protected]>  
653    2005-03-06  Timo Schulz  <[email protected]>
654      * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is  
655      a big letter, otherwise convert.          * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without
656      (preferences_dlg_proc): Check hotkeys.          a public key. Noted by Kurt Fitzner.
657      * wptKeylist.cpp (add_keys): Static functions to add a single key.  
658      (keylist_add_key): Now it adds all subkeys to the dialog.  2005-03-04  Timo Schulz  <[email protected]>
659      (keylist_alloc): Remove because it's not needed any longer.  
660      * wptImportList.cpp (implist_alloc): Ditto.              * GPG asks twice for the new PIN. Thanks to Achim.
661      * wptSigList.cpp (siglist_alloc): Ditto.          * wptCardDlg.cpp (card_changepin_dlg_proc): Reset the 'safety' pin also.
662      * wptVerifyList.cpp (verlist_alloc): Ditto.          Only check the passphrase if the backup flag is enabled. Again thanks to
663            Achim.
664  2001-06-15  Timo Schulz <[email protected]>  
665    2005-03-03  Timo Schulz  <[email protected]>
666      * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.  
667      Differ between the new keylist styles.          * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the
668      * wptGPGME.cpp (keycache_xxx): Move the caching interface to this          new PIN. Suggested by Achim.
669      file. For an easier handling between dialogs and code.          Support to show the unmasked PIN.
670      (keycache_rewind): New. Rewind a global keycache context.          Modified TAB-order.
671      (keycache_next_key): New. Retrieve the next key from the keycache.          * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.
672      (get_default_key): New. Return the default key, this is the secret  
673      key with the index 0.          * Fixed wrong GPG --command-fd strings. Thanks to Achim.
674      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key  
675      handling. Now the signer is set in any case. Prevent hanging GPG  2005-02-23  Timo Schulz  <[email protected]>
676      processes.  
677      * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.          * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.
678      (vm_safe_init_noswap): New. Initialize safe memory with tail data.          (kserver_search): Be more strict.
679      See source for more information.          * WinPT.cpp (WinMain): Enable FM progress by default.
680      (vm_safe_free): New. Free all used pointer and burn all buffers.          * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.
681      (vm_safe_get): New. Get the begin of the alloced buffer.          (fm_parse_files): Use progress dialog only if it is
682      (vm_safe_set_swapfile): New. Set global swapfile name.          enabled.
683      (vm_safe_create_swapfile): New. Creats a swapfile and set its  
684      contents to zero.  2005-02-07  Timo Schulz  <[email protected]>
685    
686  2001-06-16  Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_parse_files): Do not use the progress dialog
687            for signing and verifying. But this does not fix the problem tha the
688      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.          dialog sometimes stay and is not destroyed.
689      Corrected return values.  
690      * wptErrors.cpp (winpt_strerror): Removed all unused error strings.  2005-02-04  Timo Schulz  <[email protected]>
691      * wptGPG.cpp (get_gpg_path): Change to default path and prevent  
692      buffer overflows.          * wptProgressDlg.cpp (progress_cb_thread): Set root window if available.
693      (get_gpg_prog): Ditto.          If the progress window survives by accident, it will be closed when the
694            File Manager (root window) is closed.
695    
696  2001-06-17  Timo Schulz <[email protected]>  2005-02-02  Timo Schulz  <[email protected]>
697    
698      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the          * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise
699      default key for signing.          it is invisible.
700            * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric
701  2001-06-18  Timo Schulz <[email protected]>          passphrases.
702            * Enable the progress dialog for symmetric encryption.
703      * wptKeyserver.cpp (check_hkp_response): More detailed error check          * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in
704      of the http response.          FM_ENCRYPT mode.
705      (kserver_send_request): Debug mode now uses logfile.          * WinPT.cpp (WinMain): SETUP_EXISTING implemented.
706      (kserver_recv_request): Ditto.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when
707      (kserver_index_request): New. Create a request for a key index.          no value is entered.
708      (kserver_send): Now uses check_hkp_response.  
709      (kserver_recv): Ditto.  2005-01-26  Timo Schulz  <[email protected]>
710      (kserver_search): New. Start the key index loop.  
711      * wptKeyserverDlg.cpp (recv_key): Check if the key was really          * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.
712      imported and received.          * wptKeyManagerDlg.cpp: Add 'Select All' feature.
713            Move 'Edit->Key' to 'Key->Edit'.
714  2001-06-22  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp: Likewise.
715            * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.
716      * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform          * wptKeyManager.cpp (spawn_loadimage): Removed.
717      keyserver seraching. As an additional feature it's also posible to          (km_show_photo): Removed.
718      import the keys directly.          * wptRevokersDlg.cpp (revokelist_init): Fixed index.
719            * wptErrors.cpp (winpt_strerror): Show system error for registry
720  2001-06-23  Timo Schulz <[email protected]>          related problems.
721    
722      * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the  2005-01-25  Timo Schulz  <[email protected]>
723      options file.  
724            * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default
725  2001-06-24  Timo Schulz <[email protected]>          and that all values are 7-bit ASCII.
726            Use '*' for the passphrase field.
727      * wptGPG.cpp (get_gpg_path): Add null termination to the string.          * wptGPG.cpp (multi_gnupg_path): New.
728      Thanks to Jonathan who pointed this out.          (get_gnupg_path): Use it here.
729      (get_gpg_prog): Ditto.          (check_homedir): Likewise.
730      (gpg_check_file_ext): Check the file extension for the given GPG          * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port
731      type.          is actually set.
732      (get_gpg_default_keyid): Return null if there isn't an entry in the          * wptFileManager.cpp (fm_clearsign_8bit): New.
733      options file.          (fm_parse_files): Check if the file to clearsign is really 7-bit.
734      * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx          Thanks to djek.
735      style functions.          (fm_set_ftype): Factored out some code from...
736      * wptImpList.cpp (implist_add_key): Ditto.          (fm_add_dropped_files): ...here. Simplied the code.
737      * wptSigList.cpp (siglist_add_key): Ditto.          (fm_add_dir_files): New.
738      * wptVerifyList.cpp (verlist_add_key): Ditto.          * Removed MD5 from MyGPGME and the new default sym cipher is AES.
739            * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var
740  2001-06-25  Timo Schulz <[email protected]>          to track the window handle.
741            (progress_cleanup): Try to close tracking handle first.
742      * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with  
743      the contents from the given cache context.  2005-01-21  Timo Schulz  <[email protected]>
744      (keylist_add_to_recipients): New. Add the selected keys to the  
745      recipient set.          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys
746      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist          which are not in the keyring. Suggested by djek.
747      function to load the listview.          * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic
748      * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.          'Always on Top'.
749      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          Allow to send encrypted files via MAPI.        
750      * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache
751      and the keyid hint.          if the HKP retrieval succeeded.
752            * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer
753  2001-06-27  Timo Schulz <[email protected]>          is not NULL.
754            * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with
755      * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.          a header similar to 'gpg -k name'.
756      (get_pkt_len): New. Extract the OpenPGP packet length.          * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible
757      (parse_pke_sesskey): Read a public key encrypted session key          with 'Always on Top' windows.
758      but without data.          * wptFileManager.cpp (fm_parse_files): Set progress callback for
759      * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the          wiping files.
760      filename contains spaces. Just to make GPG happy.          (fm_add_opened_files): Do not add the file in case of an error.
761      (file_manager_dlg_proc): Check if the file exist after encryption.          * wptKeyserverDlg.cpp (kserver_get_port): New.
762      * wptFile.cpp (get_keyid_from_file): Checks the file for an valid          (save_default_ks): Save port.
763      packet and then extract the keyid.          * wptKeyserver.cpp (set_default_kserver): Get port or use default.
764            (kserver_connect): Logging.
765  2001-06-28  Timo Schulz <[email protected]>          (kserver_send_request): Likewise. Thanks to Markus.
766            * wptError.cpp (w32_fmt_msg): New.
767      * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new          (winpt_strerror): Show the W32 API error if the hotkey could not
768      flag variables to support RFC1991.          be registered.
769      (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.  
770      (get_rfc1991_pktlen): Ditto.  2005-01-20  Timo Schulz  <[email protected]>
771    
772  2001-06-29  Timo Schulz <[email protected]>          * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the
773            keyring check. If the file exists, it is enough.
774      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent          * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.
775      to send data to the clipboard.          Several cleanups and allow to specify the port of the keyserver.
776      * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to          * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure
777      destroy the window immediately.          the application terminates clearly when Windows shutdown.
778      * wptKeyserver.cpp (kserver_getip): Removed.  
779      (kserver_get_langname): Removed.  2005-01-10  Timo Schulz  <[email protected]>
780      (kserver_load_conf): New. Load the keyserver.conf file and set the  
781      included keyserver addresses into the global context.          * WinPT.cpp (load_gettext): New.
782      * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the          (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.
783      keyserver context.  
784      * wptImplist.cpp (get_key_date): New. Transform integer timestamp  2005-01-08  Timo Schulz  <[email protected]>
785      to ISO date.  
786      (implist_add_key): Now it uses the context instead of all single          * Applied the patches to make the source G++ compatible.
787      variables.          * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.
788            * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.
789  2001-06-30  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.
790    
791      * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase  2005-01-07  Timo Schulz  <[email protected]>
792      code.  
793      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.
794      * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.          (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.
795      * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.          (ldap_recvkey): Likewise.
796      (fm_delete): New.          (check_hkp_response): Be more liberal with error strings.
797      (fm_encrypt): New.          (kserver_connect): Prevent buffer overflow and use the right return
798      (fm_get_current_pos): New.          code for inet_addr().
799      (fm_get_file_type): New.          (kserver_search_chkresp): New.
800      (fm_add_dropped_files): New.          (kserver_search): Fixed. Now it works with modern keyservers.
801            * wptKeylist.cpp (seclist_init): Add new flags param.
802  2001-07-01  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key
803            listing.
804      * wptFileManager.cpp (fm_verify): New.          * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
805      (fm_decrypt): New.          * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.
806      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.          * WinPT.cpp (WinMain): call GPGME init.
807            Reword the 'you have no keyring' problem and revamp the first run dialog.
808            * wptGPG.cpp (gnupg_access_keyring): New.
809  2001-07-04  Timo Schulz <[email protected]>          (gnupg_check_keyring): Removed unused code.
810            * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the
811      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key          new texts and remove unused elements.
812      if the user agree.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The
813      * wptKeylist.cpp (keyload_load): Use the mode from the param, not          last annoying typo.
814      the hardcoded.          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of
815      * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.          an error.
816      Rename 'load' to 'reload' to make sense with the new code.  
817      * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the  2004-12-30  Timo Schulz  <[email protected]>
818      registry stuff.  
819      * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.          * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.
820      (get_reg_winpt_prefs): Ditto.          This fixes the problem that the dialog crashes when the user selects
821      (regist_inst_winpt): Remove the old code.          anything. Thanks to my users.
822      (register_single_filetype): Replacement for the old code.          (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.
823            
824  2001-07-05  Timo Schulz <[email protected]>  2004-12-20  Timo Schulz  <[email protected]>
825    
826      * wptHotkey.cpp (mod_hotkeys): Fix a small typo.          * wptGPG.cpp (check_gnupg_engine): Fixed version checking.
827            * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the
828  2001-07-11  Timo Schulz <[email protected]>          cache if it is not valid.
829            
830      * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add          Fix problem with a NULL pointer.
831      the integer.  
832      (keyserver_create_conf): Create a config file instead of the error.  2004-12-15  Timo Schulz  <[email protected]>
833      * wptGPG.cpp (create_gpg_options): If the file doesn't exist create  
834      a default file. This prevents confusing error messages.          * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right
835      (get_gpg_options): Use new code.          temp name.
836      * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button
837      the user how to find the files.          when no secret key is available.
838    
839  2001-07-12  Timo Schulz <[email protected]>  2004-12-11  Timo Schulz  <[email protected]>
840    
841      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,          * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect
842      just quit without any messages. Suggested by Rich.          the file type.
843            (fm_parse_command_line): Likewise.
844    
845  2001-07-13  Timo Schulz <[email protected]>  2004-12-02  Timo Schulz  <[email protected]>
846    
847      * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to          * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.
848      the request. Arggg!  
849      (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.  2004-11-04  Timo Schulz  <[email protected]>
850    
851            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred
852  2001-07-14  Timo Schulz <[email protected]>          keyserver sub packets.
853    
854      * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to
855      it to the signing keylist.          indicate we need to reload the cache. If a user deletes a key
856      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase          and exits the manager and loads it again the deleted key is
857      is empty.          still in cache and provoked an error.
858      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          
859            * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.
860    
861  2001-07-17  Timo Schulz <[email protected]>          * wptW32API.cpp (center_window): Replaced with real code which calculates
862            the position relative to the desktop window.
863      * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox  
864      and increment the 'cols' variable inside the structure for further use.  2004-10-25  Timo Schulz  <[email protected]>
865      (add_key): Watch for the 'cols' variable to figure out how much columns  
866      are used.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box
867      * wptListView.cpp (listview_set_ext_style): Set an extended style for          if the PGP message is complete but broken during the transport.
868      the given listview.          Thanks to Werner and Achim.
869      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the          * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks
870      selected server.          to the gnupg-users.
871      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          * Automatically add '\r\n' to the text before signing. This solves
872      * wptKeyserver.cpp (kserver_connect): IP address support. This is faster          the problem the last line is not included if no \r\n is present.
873      and no DNS lookup is needed.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode
874            which prepends the text with '> '. This makes it easier to quote
875  2001-07-19  Timo Schulz <[email protected]>          decrypted text.
876            * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored
877      * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more          out from..
878      detailed error messages in the case for a missing key or an included          (keyserver_dlg_proc): ..here.
879      signature.  
880    2004-10-15  Timo Schulz  <[email protected]>
881  2001-07-20  Timo Schulz <[email protected]>  
882            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt
883      * wptKeyserver.cpp: (kserver_send_request): Correct the octect length          is really initialized.
884      of the request.  
885      (check_hkp_response): If an error ocurred, copy the error message into  2004-10-07  Timo Schulz  <[email protected]>
886      the static buffer.  
887      (kserver_strerror): Interface for the static error buffer.          * wptErrors.cpp (winpt_errmsg): Use a generic header when no
888      * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message          filename is supplied.
889      box.          * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but
890      (hkp_send_key): Add more verbose messages at the end.          an error message which is more clean. Thanks to Ralf.
891      (hkp_recv_key): Ditto.          * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card
892      (check_pattern): Rewrote the entire code to be more bug proof.          admin mode.
893      * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate          * wptKeySignDlg.cpp (do_check_protection): Also check for smart
894      that the recipient list contains untrusted entries.          card protection.
895      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to          (get_keyinfo): Return if this is a smart card key.
896      force GPG to add the need options.          * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before
897      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          comparing the names.
898            * winpt.cpp: Now depends on PTD 0.7.1.
899  2001-07-21  Timo Schulz <[email protected]>  
900    2004-10-01  Timo Schulz  <[email protected]>
901      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in  
902      the case of IDCANCEL.          * wptClipSignDlg.cpp: Really use the selected subkey with the
903      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.          right '!' syntax. Thanks to Vedaal for pointing this out.
904      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair          * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device
905      pair and only if activate the passphrase dlg items.          is accessable and writeable, otherwise inform the user. Kudos to
906      Do sanity checks for all buttons that require key pairs.          the one who reported this problem.
907      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.  
908        2004-09-20  Timo Schulz  <[email protected]>
909  2001-07-22  Timo Schulz <[email protected]>  
910            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in
911       * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.          context menus when the key is flagged as revoked.
912       (get_key_created): New. Transform ulong timestamp to ascii.          (update_ui_items): Likewise and set the 'ShowPhoto' flag only if
913       (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).          the key has such an item.
914       (get_key_size): New. Returns a formatted size depend (depend on subkeys).  
915       * wptSigList.cpp (siglist_add_key): Fix the timestamp.  2004-09-08  Timo Schulz  <[email protected]>
916       * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace  
917       this with list trust path.          * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is
918       * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function          in the list, return zero.
919       because we always check the signatures.  
920       * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.  2004-09-07  Timo Schulz  <[email protected]>
921        
922  2001-07-24  Timo Schulz <[email protected]>          * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.
923            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
924      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after  
925      reloading the keycache. Fixed the memory leaks. Thanks to Andreas.  2004-09-01  Timo Schulz  <[email protected]>
926      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform  
927      the user about errors.          * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.
928      * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure          (default_key_from_cache): Use new key attribute 'usable'.
929      in our own context.          * WinPT.cpp (show_unprotected_keys): Removed.
930      (treeview_insert_item): New. Handy function to insert an entry.          * wptKeylist.cpp (check_key): Removed.
931      (treeview_create_child_item): New. Insert a trustlist node.          (seclist_init): Use new 'usable' key attribute.
932      (treeview_add_trustpath): New. Add recursively the whole trust path          (keylist_add_key): Likewise.
933      int the tree view.          * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to
934      * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the          add keys via 'INSERT'.
935      signature list contains entries with a NOKEY status.          * wptListView.cpp (listview_select_one): New.
936      (recv_missing_keys): New. Receive all keys with a NOKEY as the signature          (listview_find): New.
937      status.          * wptFileManager.cpp (fm_get_current_pos): If there is only
938      * wptImportList.cpp (implist_load): New. Initialize the listview item          one item, return 0 but also select it. Thanks to Christian.
939      with an import overview.  
940      * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead  2004-08-28  Timo Schulz  <[email protected]>
941      of the code.  
942      (print_import_status): Summarize the results. We need this because file          * WinPT.cpp (WinMain): Free gpg table in case of an error.
943      import needs the same function.          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
944      * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the          (filemanager_dlg_proc): Subclass the list control.
945      file manager.          * Fix Alt+C for the winpt_prefs_dlg_proc.
946      * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key          * wptKeyserver.cpp (kserver_load_conf): Ignore lines with
947      import from file.          just whitespaces. Thanks to the folks on winpt-users.
948      * wptFileManager.cpp (fm_import): New. Ditto.  
949      * wptKeyserver.cpp (kserver_connect): Take care for some return values  2004-08-27  Timo Schulz  <[email protected]>
950      and set the socket to non blocking mode.  
951      Moved the Winsock2 init code to wptMainProc.cpp          * wptKeyserver.cpp (skip_whitespace): New.
952      * wptMainProc.cpp (wpt_main_proc): Wsock2 code.          * Fix a problem with the key cache. The new hash item was
953      * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.          not initialized to zero and thus the free caused an illegal access.
954            Thanks to Ralf for pointing this out.
955  2001-07-25  Timo Schulz <[email protected]>          * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.
956            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
957      * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect          * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and
958      serious GPG errors.          use a context to store the value. Loalize all text strings.
959      * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.          * wptKeyList.cpp (key_check_validity): Cannot use gettext here.
960      Suggested by Graham.          (keylist_get_recipients): Increase buffer for gettext messages.
961      (fm_decrypt): Change code to support symmetric decryption.  
962      (fm_get_file_type): Fixed some typos.  2004-08-26  Timo Schulz  <[email protected]>
963    
964  2001-07-26  Timo Schulz <[email protected]>          * WinPT.cpp (load_keyserver_conf): New. Factored out some code
965            from WinMain ().
966      * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring          (WinMain): Load keyserver config at the begin. Thanks to Bodo A�ner
967      exists. Useful if the keyring was moved during some commands.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver
968      * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to          in the list control, add at least the internal default HKP server.
969      Rich to discover this.          * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.
970            * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.
971  2001-07-29  Timo Schulz <[email protected]>          (keysign_dlg_proc): Likewise.
972            * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.
973      * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating          * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.
974      a key revocation certificate. Add a hint to show how sentensive this          (kserver_connect): use it here.
975      data is.          (kserver_send_request): Likewise.
976      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the          (kserver_recvkey): Likewise.
977      revocation.  
978      * wptAgent.cpp: Source for the server interface removed.  2004-08-25  Timo Schulz  <[email protected]>
979      (agent_is_avail): New. Checks if the agent is available.  
980      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code          * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB
981      for the agent.          and skip to read large files on floppy discs.
982            (fm_wipe): Display a 'wait' cursor until the wipe is complete.
983  2001-07-30  Timo Schulz <[email protected]>          (is_floppy_disc): New.
984            * wptFileManagerDlg.cpp (filelist_subclass_proc): New.
985      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code          (file_manager_dlg_proc): Use subclassing to allow some hotkeys.
986      for the agent.  
987      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.  2004-08-24  Timo Schulz  <[email protected]>
988    
989  2001-08-01  Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for
990            the user-ids.
991      * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible          * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into
992      request for uploading a key.          expert mode when the non-interactive mode is used.
993      (kserver_send_request): Use the urlencode to send the key.          * WinPT.cpp (WinMain): Start the keygen wizard instead of the
994      (sock_read): New. Improved read function to replace recv.          expert dialog and allow to switch to it.
995      (sock_write): New. Improved write function to replace send.  
996      * wptFileManager.cpp (fm_get_file_type): If the data is armored,  2004-08-20  Timo Schulz  <[email protected]>
997      call fm_check_armor_type().  
998      (fm_check_armor_type): New. Figure out the armor type of the data.          * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only
999      * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the          mode the menu is not available.
1000      buttons. Optimized the code.          (popup_gpg_readonly): New.
1001            (menu_gpg_readonly): New.
1002  2001-08-02  Timo Schulz <[email protected]>          (keymanager_dlg_proc): Use it here. Do not check the permissions
1003            any longer since this is now handle via the read-only code.
1004      * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.          * wptMainProc.cpp (winpt_main_proc): Check if the keyrings
1005      Useful in the case the file was generated but it's empty.          are in read-only mode.
1006      * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.
1007            * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably
1008            signatures in expert mode.
1009  2001-08-03  Timo Schulz <[email protected]>          * wptKEyEditDlgs.cpp (do_find_userid): Release context.
1010            * wptGPG.cpp (gpg_check_permissions): Only print out a warning
1011      * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now          in the interactive mode.
1012      we support this code in the key manager.          * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left
1013      * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.          mouse button is clicked.
1014      * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):  
1015      Removed. The code moved into the main functions.  2004-08-19  Timo Schulz  <[email protected]>
1016      (kserver_send), (kserver_recv): Ditto.  
1017      (sock_write): Improved code.          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected
1018      (sock_read): Ditto and some additional timeout.          key numbers.
1019      (sock_select): New. Figure out the socket state.  
1020      (kserver_search_init): New. Make connection to the server.          * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.
1021      * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new          (is_sig): Change code to allow to check pre-defined fields.
1022      keyserver code.  
1023      * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker          * WinPT.cpp (WinMain): Allow read-only support for keyrings.
1024      packet. Thanks to Alan.  
1025      (check_for_symenc_data): Ditto.  2004-08-06  Timo Schulz  <[email protected]>
1026      * wptFileManager.cpp (fm_get_file_type): Ditto.  
1027      (fm_decrypt): Move the keycache in the if loop and fix the keycache          * wptContext.h: Move subclass_s context to this file.
1028      type.  
1029            * wptKeysigDlg.cpp (subclass_dlg_proc): New.
1030  2001-08-05  Timo Schulz <[email protected]>  
1031    
1032      * wptKeylist.cpp (keylist_add_key): Change the schematics to support  2004-08-05  Timo Schulz  <[email protected]>
1033      all keyids.  
1034      * wptSigList.cpp (siglist_build): New. Interface code to load the          * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag
1035      signature list.          when possible.
1036      * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.          New dialog layout to enhance the readability of the text. Use
1037            flat check boxes for the same reason.
1038  2001-08-06  Timo Schulz <[email protected]>  
1039            * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to
1040      * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.          the right column (3 not 4).
1041    
1042  2001-08-08  Timo Schulz <[email protected]>          * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile
1043            uses a unique name.
1044      * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.  
1045      Support for more configurations.  
1046      * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.  2004-08-04  Timo Schulz  <[email protected]>
1047      Add all strings to the translation suite.  
1048      * Updated all NLS dialog strings.          * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the
1049      * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.          edit-field to display the text. Now a RichEdit field is
1050      * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,          used. This solves the XP problem that the viewer is empty
1051      with a dynamic callback for the passphrase.          even if there is text in it.
1052    
1053  2001-08-11  Timo Schulz <[email protected]>          * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.
1054    
1055      * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and          * wptKeySigDlg.cpp (sigprops_dlg_proc): New.
1056      separate the fingerprint from the othr information.          (keysig_dlg_proc): Add new 'Properties' button and implement
1057      * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the          the code for it.
1058      file, specified in the options line, does exist.  
1059            * wptSigList.cpp: Add support to show the expiration date.
1060  2001-08-17  Timo Schulz <[email protected]>  
1061            * wptGPGME.cpp (keycache_init): Support to show the progress bar.
1062      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only          (keycache_release): Store the amount of keys in the registry for
1063      one by default.          the progress dialog.
1064      * wptKeyList.cpp (keylist_add_to_recipients): Ditto.  
1065      * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram          * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate
1066      entry in the registry in the case it's missing (whenever it's possible!).          default keyserver.conf.
1067      (check_gpg_path): Rewrite parts of the code.  
1068            * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.
1069  2001-08-20  Timo Schulz <[email protected]>          Fix possible buffer overflow.
1070            (wsock_end): Release stored keyserver list.
1071      * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.  
1072      * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable          * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for
1073      the hotkeys. Automatically enable or disable the hotkey field depend          a specific recipient and select it.
1074      on the switch.  
1075    2004-08-02  Timo Schulz  <[email protected]>
1076  2001-08-21  Timo Schulz <[email protected]>  
1077            * wptKeysigDlg.cpp (do_create_popup): New.
1078      * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it          (do_load_keyprops): New.
1079      also supports "encrypt-to" entries as default keys.  
1080      * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide          (keysig_dlg_proc): Factor out some common code and use
1081      secure wiping.          do_load_keyprops.
1082      (wipe_deinit_ext): New. Unload the DLL and free all pointer.  
1083      (wipe_loaded_ext): New. Checks wether the DLL was loaded.          * wptKeyServer.cpp (kserver_check_inet_connection): New.
1084      * wptW32API.cpp (set_menu_state): New.  
1085            * wptKeyManger.cpp (km_refresh_from_keyserver): First check
1086  2001-08-25  Timo Schulz <[email protected]>          for an active internet connection. It's annoying for the
1087            user to confirm an connection error for each key (n>40).
1088      * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.  
1089      (strlist_release): New. Release the linked list.  2004-07-27  Timo Schulz  <[email protected]>
1090      (strlist_add): New.  
1091            * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new
1092  2001-08-26  Timo Schulz <[email protected]>          value for the ownertrust.
1093    
1094      * wptFileManager.cpp (fm_entry_new): New.          * wptKeyManager.cpp (get_key_trust): Make it public.
1095      (fm_entry_release): New.          (get_key_trust_str): New.
1096      (fm_state_new): New.          (km_refresh_from_keyserver): Allow to select random keys.
1097      (fm_state_release). New.          (km_refresh_one_key): New.
1098      (fm_get_current_file): New.  
1099      * wptKeylist.cpp (strlist_add_recipients): New.          * wptKeyserver.cpp: Use default keyserver if possible.
1100    
1101  2001-08-28  Timo Schulz <[email protected]>  2004-07-13  Timo Schulz  <[email protected]>
1102    
1103      * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.          * wptFileManager.cpp (fm_assume_onepass_sig): New.
1104      * wptKeyserver.cpp (kserver_load_conf): Proxy support          Thanks to Vedaal who found out that armored one-pass sigs are not
1105      (kserver_connect): Ditto.          correctly recognized.
1106    
1107  2001-08-30  Timo Schulz <[email protected]>          (ask_filename): New.
1108            Again thanks to Vedaal who suggested to ask for a new output name
1109      * wptFilemanager.cpp (fm_encrypt): Add minor changes.          for the case the user does not want to overwrite the file.
1110       (fm_decrypt): Ditto.  
1111       (fm_sign): Ditto.          (fm_encrypt): Use it here.
1112       (fm_verify): Make the code more modular.          (fm_decrypt): Likewise.
1113       (fm_add_sig_stat): New. For new fm_verify code.          (fm_sign): Likewise.
1114    
1115  2001-08-31  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry
1116            to set secret keys to ultimate trust.  
1117      * wptFileManager.cpp (fm_add_opened_files): New. Use a standard  
1118      file open dialog instead of drag & drop.          * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the
1119      * wptHotkeys.cpp (hotkey_strerror): More detailed information which          key has ultimate trust.
1120      hotkey couldn't set up.          (km_set_implicit_trust): New.
1121      (hotkey_register_single): Ditto.  
1122    2004-07-12  Timo Schulz <[email protected]>
1123  2001-09-01  Timo Schulz <[email protected]>  
1124            * wptRegistry.cpp: Support for disable compression of multi-media files.
1125      * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.          (set_reg_winpt_single): New.
1126      These code is now part of the key manager.          (get_reg_winpt_single): New.
1127      * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.  
1128      * wptKeylist.cpp (get_key_algo): New.          * wptFileManager.cpp (is_multi_media): New.
1129      (get_key_created): New.          (fm_encrypt): Disable compression of multi-media files.
1130      (get_key_type): New.          (fm_state_new): Set comment to indicate armored files were generated
1131      (get_key_size): New.          by WinPT. This is a replacement due to the fact the WinPT string is not
1132      (get_key_fpr): New.          added in the 'Version' for larger files.
1133      * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now  
1134      a part of the keymanager.          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.
1135    
1136  2001-09-04  Timo Schulz <[email protected]>  2004-07-11  Timo Schulz  <[email protected]>
1137    
1138      * Rewrote most parts of the keymanager.          * Bug fix for the validity revoked status. Now it is 'revoked'
1139      * Ditto for the filemanager.          and not 'unknown' any longer.
1140    
1141  2001-09-05  Timo Schulz <[email protected]>          * Feature to disable encryption. This might be useful for filetypes
1142            GPG does not recognize as compress (movies, ...).
1143      * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.  
1144      (clip_import): New. Handy function to import keys.          * wptFileManager.cpp (fm_get_file_type): Skip packet detction if
1145      * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase          the file is large and it has no openpgp extension.
1146      is too short.  
1147    2004-06-19  Timo Schulz  <[email protected]>
1148  2001-09-07  Timo Schulz <[email protected]>  
1149            * wptInet.cpp: Renamed to ...
1150      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.          * wptHttp.c: ... this.
1151            * wptKeyManager.cpp (km_http_import): Release 'p' not too early.
1152  2001-09-12  Timo Schulz <[email protected]>          * WinPT.cpp (WinMain): If there is a problem with the homedir,
1153            jump to the first start settings.
1154      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.  
1155      Thanks to Rich who pointed this out.  2004-06-12  Timo Schulz  <[email protected]>
1156    
1157  2001-09-13  Timo Schulz <[email protected]>          * wptInet.cpp: Updated.
1158            * wptKeyManager.cpp (km_http_import): Use http_send_request2() to
1159      * Revamped the whole plugin code for OE5.          parse the URL.
1160      * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.          * wptCommonDlg.cpp (http_file_dlg_proc): New.
1161      (oe_plugin_releae): New.          (get_http_file_dlg): New.
1162      (oe_plugin_init): New. Searches for the OE main window and select  
1163      all the recipients from the fields.  2004-06-08  Timo Schulz  <[email protected]>
1164      (oe_get_msg): This code now uses the menu command id's to  
1165      execute the commands.          * wptInet.cpp: New.
1166      (oe_set_msg): Ditto.          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http
1167      (oe_encrypt): Changed for the new code.          transfers.
1168      * wptMainProc.cpp (wpt_main_proc): Re-activate the code.          * wptKeyManager.cpp (km_http_import): New.
1169      * wptHotkeys.cpp: Ditto.  
1170      * Removed the hook project.  
1171    2004-06-02  Timo Schulz  <[email protected]>
1172  2001-09-14  Timo Schulz <[email protected]>  
1173            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error
1174      * wptWAB.cpp: (wab_read): New. Interface to read all address book          if there is no clipboard data.
1175      entries.  
1176      (wab_open): New. Internal function to load the WAB.          Release memory in case of an error.
1177      (wab_release): New. Release the WAB contexts.  
1178      (wab_load): New. Load the contents of the WAB into a linked list.          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.
1179      (addr_list_new): New. Linked address list.  
1180      (addr_list_add): New.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.
1181      (addr_list_release): New.  
1182    
1183  2001-09-16  Timo Schulz <[email protected]>  2004-05-31  Timo Schulz  <[email protected]>
1184    
1185      * wptExtensions.h: New. This file is now used for the extenion          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the
1186      declarations.          'X' close button. Noted by a friendly user.
1187      * wptExtensions.new: (register_extensions): New. Enumerate and          
1188      load all possible extensions.          Disable 'Save' button.
1189      (unregister_extentions): New. Release all loaded extensions.  
1190      * wptKeyserver.cpp (kserver_load_conf): Added support for different          * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.
1191      keyservers. Currently only HTTP/LDAP.  
1192      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.          * wptFileManager.cpp (fm_set_status): Do not use the data file name
1193      (hkp_recv_key): Ditto.          for signatures but keep the original file name.
1194      * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents  
1195      to set the focus.          (fm_verify_pasted_detsig): Try to verify detached signatures from
1196      * (oe_check_recipient): New. Checks if the key is able to encrypt          the clipboard.
1197      and valid in the sense of revocation.  
1198    2004-05-14  Timo Schulz  <[email protected]>
1199  2001-09-17  Timo Schulz <[email protected]>  
1200            * WinPT.cpp (check_crypto_engine): Due to some
1201      * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs          internal  GPG changes the min. version for smart card
1202      who prevent the correct return value in the case of an clipboard error.          support is now 1.3.6.
1203      (clip_parse_pgp_id): New. Returns the PGP message type.  
1204      * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix
1205      (hotkey_single_register): Return correct error value.          handling. Thanks to the folks who reported this via SF.net.
1206      (hotkey_single_unregister): Ditto.  
1207      * wptW32API.cpp (get_thread_id): Removed.          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.
1208      (attach_thread_input): Ditto.          Thanks to the folks on winpt-users who reported it.
1209      (detach_thread_input): Ditto.  
1210      * wptCurrWnd.cpp (get_window_contents): Store main and focused window          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of
1211      for later use.          the hotkeys are disabled.
1212      (set_window_contents): Use the new code.  
1213            * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.
1214  2001-09-23  Timo Schulz <[email protected]>  
1215            * wptFileManager.cpp (fm_get_file_type): Do not parse the entire
1216      * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.          file if the size is >= 256MB.
1217      The same as the userid dialog.  
1218      * wptWndSwitchDlg.cpp: Removed.  2004-03-15  Timo Schulz  <[email protected]>
1219      * wptWipeExt.cpp: Removed. Code is now included.  
1220      * wptGPGME.cpp (get_default_keyid): If the keyid from the options          * Decrypt list box has now a vertical scroll bar.
1221      file is in the keycache.  
1222      * wptKeylist.cpp (keylist_reload): New. Reload a keylist.  2004-03-11  Timo Schulz  <[email protected]>
1223    
1224  2001-09-26  Timo Schulz <[email protected]>          * The DLL is now complety C-source.
1225    
1226      * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.  2004-03-08  Timo Schulz  <[email protected]>
1227      (listbox_get_cursel): Ditto.  
1228            * wptGPG.cpp (gnupg_import_keyrings): cleanups.
1229    
1230  2001-09-27  Timo Schulz <[email protected]>          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows
1231            CP.
1232      * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who          (wincp_to_utf8): Likewise.
1233      discovered this.          (conv_charset): Now internal and static.
1234      * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the  
1235      passphrase.          * wptUTF8.h: New prototypes and remove the old prototypes.
1236      * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to  
1237      the various other dialogs to make the use more easier.          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.
1238      * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.  
1239      * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.  
1240    2004-03-07  Timo Schulz  <[email protected]>
1241    
1242  2001-09-28  Timo Schulz <[email protected]>          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats
1243            dummy keyrings with a size of zero in the homedir.
1244      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle  
1245      the double click messages.          (gpg_check_permissions): Check for read-only keyrings and add code
1246      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          for this case.
1247      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.  
1248      * wptFileManager.cpp (overwrite_file): Check if the file exists and          This problem fixes a lof of other problems related to the OpenPGP
1249      then let the user decide.          parsing stuff for the key cache.
1250      (fm_encrypt): Use the code here.  
1251      (fm_sign): And here.          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.
1252      (fm_sym_encrypt): And here. Now we use the passphrase dialog.  
1253      (fm_decrypt): And here.  2004-03-04  Timo Schulz  <[email protected]>
1254      * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need  
1255      a secure wipe.          * wptKeyserver.cpp (finger_recvkey): Error if key was not found
1256            or garbled.
1257      Make the memory checking more strict.  
1258            * wptGPG.cpp (gpg_check_permissions): Take care of the entries
1259  2001-10-04  Timo Schulz <[email protected]>          in gpg.conf.
1260    
1261      * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select
1262      * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.          the signer. Suggested by Sebastian.
1263      Both were pointed out my Timo (not me ;-)).  
1264      * wptKeylist.cpp (add_key): Fix a typo and now the code is more          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to
1265      strict with returned attributes.          this file.
1266      * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface          (seclist_free): Likewise.
1267      for local signatures.          (seclist_select_key): Likewise.
1268    
1269  2001-10-05  Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was
1270            already set.
1271      * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.  
1272      In the case it is, use the first userID.  2004-03-02  Timo Schulz  <[email protected]>
1273      * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.  
1274      Remove the Pos column and add a status column instead.          * wptGPG.cpp (check_keyring): Handle the case that the keyring
1275      Add expire stuff for subkeys.          is set in the gpg.conf file and the pubring.gpg file is zero bytes.
1276      (init_dtp): Initialize the common control.  
1277      * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file          (gnupg_backup_keyrings): Support backup of keyrings which were set
1278      into the clipboard.          in gpg.conf. Thanks to the user who reminded me of this problem.
1279      * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description  
1280      of the ownertrust value.          (gnupg_check_file_ext): Make check not case sentensive.
1281      (keyprops_dlg_proc): Fixed ownertrust handling.  
1282            * (sfree_if_alloc): Overwrite the memory with zeros before freeing
1283  2001-10-06  Timo Schulz <[email protected]>          it. This only works with c-strings! Use it everywhere we handle
1284            sentensive information (passphrases).
1285      * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.  
1286            * Try to improve the usability with better menu names and new
1287  2001-10-08  Timo Schulz <[email protected]>          ordering.
1288    
1289      * wptKeyserver (kserver_connect): If the proxy settings are valid,          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.
1290      use the proxy port instead of the HKP port.  
1291      (kserver_recvkey): Proxy support.          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now
1292      (kserver_search_init): Ditto.          it is part of the WinPt about dialog. This way we can minimize the
1293            elements in the popup menu.
1294  2001-10-09  Timo Schulz <[email protected]>  
1295    2004-02-29  Timo Schulz  <[email protected]>
1296      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return  
1297      code of sunlink.          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.
1298      * wptGPG.cpp (get_keyring_from_optfile): New.  
1299      Renamed gpg_errstr to gpg_strerror.          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself
1300      (set_default_key): New.          so we are not allowing to sign ourself.
1301      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.  
1302                * wptSigList.cpp (siglist_add_key): Support for the signature
1303  2001-10-10      Timo Schulz <[email protected]>          flags (local, non-revocably, ...).
1304    
1305          * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the          * Key signing with GPG 1.2.x should work again. Hopefully.
1306          file is longer then the keyid.  
1307          (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the  2004-02-26  Timo Schulz  <[email protected]>
1308          entry is an userid.  
1309          * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error
1310          more then one time.          if no recipient was selected.
1311          (fm_add_dropped_files): Use it here.  
1312      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog
1313      keys.          is destroyed. This fixes the bug that the dialog sometimes exist even
1314            after the procedure ended.
1315  2001-10-13  Timo Schulz <[email protected]>  
1316            * wptProgressDlg.cpp (progress_callback): Change the if-then-else
1317      Set all ListviewControls to 'NULL' in all dialogs to be more crash          struct to prevent zombie dialogs.
1318      resistent.  
1319            * wptKeyserver.cpp: Removed unused prototypes.
1320      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.  
1321      * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.  2004-02-25  Timo Schulz  <[email protected]>
1322      * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.  
1323      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and
1324      * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.          do not mix the names in the different menus.
1325      * wptStringUtil.cpp: Removed.  
1326      * wptFileManager.cpp: Rewrote the complete interface code for          * wptSigList.cpp: Support to show the signature class.
1327      the file manager.  
1328      * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo
1329            box when there is no secret key available.
1330  2001-10-15  Timo Schulz <[email protected]>  
1331            (do_init_keylist): Do not allow to use the owners key as a desig
1332      * wptFileManager.cpp (fm_wipe): New.          revoker.
1333      (fm_set_status): Add temporary wipe status and handle default values.  
1334      (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped          * wptKeylist.cpp (get_key_trust): New.
1335      files with a successful opeation.          (do_addkey): Use it here.
1336      * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.  
1337      (keygen_cb_thread): New. Static dialog thread.  2004-02-24  Timo Schulz  <[email protected]>
1338      (keygen_cb_dlg_create): New. Interface.  
1339      (keygen_cb_dlg_destroy): New. Destroy the dialog.          * WinPT.cpp (WinMain): Call a selftest check procedure to
1340      (keygen_cb): GPGME interface.          make sure all cryptographic code works as expected.
1341    
1342  2001-10-16  Timo Schulz <[email protected]>  2004-02-22  Timo Schulz  <[email protected]>
1343    
1344      * wptW32API.cpp (check_date): New.          * PTD: Cryptdisk seems to have problems with locking. Use
1345      (get_open_filename): New.          a forced flag to tell the code if it should bail out or
1346      * wptDlgs.cpp (init_dtp): New. Initialize a special common control.          ignore locking errors.
1347      * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.  
1348            * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new
1349  2001-10-17  Timo Schulz <[email protected]>          locking code.
1350            (cryptdisk_new_dlg_proc): Adjust size of the volume.
1351      * wptCurrWnd.cpp (get_window_contents): Only minimize the window  
1352      when the clipboard contains text.  2004-02-21  Timo Schulz  <[email protected]>
1353      * wptKeylist.cpp (keylist_add_key): Check only for invalid keys  
1354      in the mainloop. The other flags are checked in the various cases.          * wptCryptdisk.cpp (cryptdisk_cleanup): New.
1355      (add_key): Use the ** foo ** notation for invalid flags instead of          (is_nt4): Because my Platform-SDK is too old I need to load
1356      skipping the key.          some prototypes dynamically.
1357      * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print          (init_drives): Return the first useable drive letter if
1358      out a warning.          called with appropriate parameters.
1359      Change all error messages to one header.          * wptMainProc.cpp (winpt_main_proc): Use it here.
1360      (check_key_status): Check if the key is valid in the sense of  
1361      revocation and expire dates. If not, print out a warning.  2004-02-18  Timo Schulz  <[email protected]>
1362      (keymisc_dlg_proc): Use the new code.  
1363            * Modify the cryptdisk code for crosscrypt 0.4.1.
1364  2001-10-19  Timo Schulz <[email protected]>          * wptCryptDisk.cpp (do_mount): Add key algorithm param.
1365    
1366      * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various  2004-02-17  Timo Schulz  <[email protected]>
1367      option files.  
1368      * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt
1369      use a popup menu.          to the signers key. Suggested by Alexander.
1370      * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE          Use new keycache system, we use the public key part of the
1371      plug-in.          cache because it has all flags set.
1372      (gpgoe_unload_plugin): New.          * wptGPG.cpp (default_key_from_cache): Use new cache system.
1373            * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
1374  2001-10-22      Timo Schulz <[email protected]>  
1375    
1376          Remove all MyGPGME code from the main project. Now we use the  2004-02-12  Timo Schulz  <[email protected]>
1377          libmygpgme.dll to provide all cryptographic functions and interfaces.  
1378            * wptErrors.cpp: New error codes for the cryptdisk feature.
1379          * wptKeylist.cpp (key_array_new): New.          * wptCryptdisk.cpp (do_dispatch): Better error handling.
1380          (key_array_release): New.          (cryptdisk_mount_dlg_proc): Use it here.
1381          (key_array_search): New.          (cryptdisk_umount_dlg_proc): Likewise.
1382          * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was          (init_drives): Use system list.
1383          already checked and don't bother the user if all userid's were selected.  
1384          * wptPassphraseCB.cpp (passphrase_cb_init): Now void.          Localized all strings.
1385          (passphrase_cb_gpgme): Ditto.  
1386          (passphrase_callback_proc): Support for a list of recipients.  2004-02-09  Timo Schulz  <[email protected]>
1387          * wptImportList.cpp (implist_add_key): Support for secret keys.  
1388            * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.
1389  2001-10-23      Timo Schulz <[email protected]>          (do_reaping): New. Release the list if all items are 'expired'.
1390            (cryptdisk_mount_dlg_proc): New.
1391          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while          (init_drives): New.
1392          because it's shorter.          * wptMainProc.cpp (cryptdisk_proc): Renamed from...
1393          * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of          (handle_cryptdisk): this. And filled with life.
1394          the default keyid.  
1395          * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now  2004-02-08  Timo Schulz  <[email protected]>
1396          we use the signer from the keylist.  
1397          * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix          * wptCryptdisk.{cpp,h}: New. Support for the extended
1398          some silly bugs.          filedisk application.
1399          * WinPT.cpp (WinMain): if there is no valid keyring after the new          * wptMainProc.cpp (winpt_main_proc): Likewise.
1400          preferences, start the key generation dialog.          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.
1401    
1402  2001-10-25      Timo Schulz <[email protected]>  2004-02-05  Timo Schulz  <[email protected]>
1403    
1404          * wptGPG.cpp (get_gpg_default_key): Support for the users options file.          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle
1405          (check_gpg_path): Ditto.          CMD_DISHOTKEYS. Thanks to the user who reminded me.
1406          (get_gpg_options): Ditto.          * wptMainProc.cpp (spawn_cryptdisk): New interface to
1407          (set_gpg_default_key): Ditto.          the Cryptdisk application.
1408          (set_gpg_options): Ditto.  
1409          (gpg_check_keyring): Ditto.  2004-02-04  Timo Schulz  <[email protected]>
1410          (set_gpg_default_keyid): Fix a typo.  
1411          * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.          * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.
1412    
1413  2001-10-26      Timo Schulz <[email protected]>  2004-02-03  Timo Schulz  <[email protected]>
1414    
1415          * wptExtensions.cpp: Removed.          * WinPT.cpp (check_crypto_engine): New. Factor out common code.
1416          * wptLDAPExt.cpp: Removed.          (WinMain): Check the crypto engine after the first start.
1417          * wptLDAP.cpp: New. This code now contains a direct interface to  
1418          the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is
1419          (wldap_init): New.          issued if the values could not stored. Revamped the core.
1420          (wldap_end): New.  
1421          (ldap_set_verbose): New.          * Removed the last appearance of the GPG agent support.
1422          (ldap_get_key_info): New.  
1423          (ldap_recvkey): New.          * wptGPG.cpp (init_gnupg_table): Do not use static buffers.
1424          (init_ldap): New. Internal use only.          (free_gnupg_table): Free memory.
1425          (get_key): New. Ditto.  
1426          (send_key): New. Ditto.          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the
1427          * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.          ctx pointer get malloced and set the contents to zero.
1428    
1429  2001-10-27      Timo Schulz <[email protected]>  
1430    2004-02-02  Timo Schulz  <[email protected]>
1431          * wptKeylist.cpp (keylist_enum_recipients): Add a type to make  
1432          the code more flexible.          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name
1433          * wptKeyMiscDlg.cpp (file_import): New.          is long enough. The same check for the mail address.
1434          (file_export): New.  
1435          * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.          Thanks to Achim.
1436    
1437          Removed all OE code snippets.  2004-01-28  Timo Schulz  <[email protected]>
1438    
1439  2001-10-28      Timo Schulz <[email protected]>          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued
1440            if keys on the card exist but the user does not said overwrite.
1441          * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support  
1442          for ENTER/SPACE and DELETE. Suggested by Graham.          Make sure the expire date is not in the past.
1443          * wptKeyList.cpp (add_key): New code to figure out how trustworthy  
1444          a expired/revoked secret key is.          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file
1445          (keylist_enum_recipients): Show the key ID of the key when it's          lock twice. Not sure if this fixes some other problems but it
1446          revoked.          was definitely a bug.
1447          * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not  
1448          only the first to figure out if a secret is available. Thanks to          * wptMapi.cpp (mapi_init): Make sure all function ptrs are
1449          Graham.          initialized otherwise bail out.
1450          * wptFile.cpp (get_keyid_from_file): Ditto.          (mapi_send_message): New. Interface to allow to send an
1451            encrypted mail with zero ore more encrypted attachments.
1452  2001-10-30      Timo Schulz <[email protected]>          (secure_attachment): New.
1453            (parse_recipients): New.
1454          * wptHotkey.h: Fixed typo. Thanks to Timo.  
1455          * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.  2004-01-25  Timo Schulz  <[email protected]>
1456          (get_gpg_default_key): Skip comment lines immediately.  
1457          * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.          * WinPT.cpp (WinMain): Silently die when an instance is already
1458          * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure          running. Do not confuse the user with a message. Suggested by
1459          for subclassing.          Sebastian.
1460            * wptKeyManager.cpp (delete_keys_from_cache): New.
1461          Remove all unsafe WM_NOTIFY stuff because this was propably the          (km_delete_keys): Use it here. Thanks to Achim.
1462          reason for the crashes. And add as a sanity check if the control  
1463          sent the message.  2004-01-23  Timo Schulz  <[email protected]>
1464    
1465  2001-11-02      Timo Schulz <[email protected]>          * wptCardDlg.cpp (check_pin_len): New. Check if the
1466            PIN is long enough and give an appropriate error.
1467          * WinPT.cpp (WinMain): Add the chance to start the preferences dialog          (card_changepin_dlg_proc): Use the new check function.
1468          in the case a GPG error was detected.  
1469          * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected  2004-01-22  Timo Schulz  <[email protected]>
1470          keys.  
1471            * Remove all internal card reader config. It's up to the
1472  2001-11-03      Timo Schulz <[email protected]>          user to do this. It would be too error proune to offer it.
1473            * wptCard.h: Removed all card driver stuff.
1474          (fm_remove_crit_file_attrs): First check if the file exists.          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ
1475          Thanks to Peter.          between the admin and the user (normal) PIN.
1476    
1477  2001-11-07      Timo Schulz <[email protected]>  2004-01-04  Timo Schulz  <[email protected]>
1478    
1479          * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.
1480          the key id.          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas
1481          * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret          and minor changes.
1482          key imports.          * wptListView.cpp (listview_sort_items): Likewise.
1483          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.
1484          the user doesn't set the field, try to do this automatically.          (regist_sep_wnd): Factored out some code.
1485    
1486  2001-11-13      Timo Schulz <[email protected]>  2004-01-03  Timo Schulz  <[email protected]>
1487    
1488          * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow
1489          is set but to "". Then use default gpg directory.          to import secret keys.
1490          * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.  
1491          (refresh_from_keyserver): New. Context entry for update keys.  2003-12-31  Timo Schulz  <[email protected]>
1492          (keymisc_dlg_proc): Modify the way the popup is shown.  
1493            * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort
1494  2001-11-18  Timo Schulz <[email protected]>          the list otherwise the index is wrong.
1495            * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set
1496      * wptKeyManager.cpp: New. Contains all handy functions from the          a signature expire date.
1497      wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.  
1498      (km_quote_uid): New.  2003-12-30  Timo Schulz  <[email protected]>
1499      (km_check_for_seckey): New.  
1500      (km_check_key_status): New.          * fixed the GPG edit-key commands sign and addrevoker.
1501      (km_clip_export): New.  
1502      (km_clip_import): New.  2003-12-23  Timo Schulz  <[email protected]>
1503      (km_file_export): New.  
1504      (km_file_import): New.          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove
1505      (km_delete_keys): New.          ElGamal s+e support. Oops, this should be already done.
1506      (km_send_to_keyserver): New.          * wptGPGME.cpp (keycache_init): Sync both key caches. In other
1507      (km_refersh_from_keyserver): New.          words transfer some flags from the sec-cache to the pub-cache.
1508      (km_update_default_key_str): New.          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the
1509          * wptKeygenDlg.cpp (ask_for_backup): New.          key sign procedure. If it is already signed, the process
1510          (keygen_dlg_proc): Use new function to give the chance to the          sometimes hangs.
1511          user for a complete backup.  
1512    2003-12-14  Timo Schulz  <[email protected]>
1513  2001-11-22      Timo Schulz <[email protected]>  
1514            * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.
1515          * wptW32API.cpp (set_foreground_wnd): New.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.
1516            (do_editkey_setpref): Implement updpref command.
1517          Fixed the return value of all EndDialogs.  
1518    
1519          * wptMainProc.cpp: Remove all code parts which did the same for the  2003-12-10  Timo Schulz  <[email protected]>
1520          current window support. Now the code uses a dialog switch which is  
1521          much smaller.          * GPGME support to change key preferences.
1522            * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.
1523  2001-11-23      Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.
1524    
1525          * wptW32API.cpp (set_active_window): New.  
1526          (reset_active_window): New.  2003-11-29  Timo Schulz  <[email protected]>
1527          (window_reminder): New. This is a delayed thread procedure to  
1528          force the focus (foreground) to the dialogs for the current          * wptMAPI.cpp (mapi_init): New.
1529          window mode.          (mapi_deinit): New.
1530          * wptMainProc.cpp (winpt_main_proc): Use it here.          (mapi_send_pubkey): New.
1531          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.          * wptKeyManager.cpp (km_send_to_mail_recipient): New.
1532          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support
1533          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.          to send the public key via MAPI to a recipient.
1534          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind
1535            the secret key cache so it's not at the end.
1536  2001-11-24      Timo Schulz <[email protected]>          (keysign_dlg_proc): Issue a warning when no secret key was
1537            found which could be used for signing the key.
1538          * wptKeyManager.cpp (km_groups_new): New.          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.
1539          (km_groups_release): New.          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.
1540          (km_groups_load): Rewritten.  
1541          (km_groups_add): New.  2003-11-28  Timo Schulz  <[email protected]>
1542          (km_groups_del): New.  
1543          (km_groupdb_open): New.          * Remove all support for ElGamal sign+encrypt keys.
1544          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.  
1545          * wptGroups.c (groupdb_enum_read): Store the record before increment it.          There is a flaw in GPG which makes all such keys useable and
1546            they are comprised even if one signature they made is accessable.
1547  2001-11-27      Timo Schulz <[email protected]>          And due to the fact the key is self signed, such a sig is always
1548            available for the public.
1549          * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP  
1550          proxy authentifcation support for each command.          We warn the user at startup if such keys were found!
1551          (kserver_update_proxyuser): New. Ditto.  
1552          (kserver_send_request): Ditto.          * wptMainProc.cpp (elgamal_warn_dlg_proc): New.
1553          (kserver_recv_request): Ditto.          * wptGPGME.cpp (count_insecure_elgkeys): New.
1554          (kserver_search_init): Ditto.          * WinPT (WinMain): Use it here.
1555    
1556  2001-11-29      Timo Schulz <[email protected]>  2003-11-14  Timo Schulz  <[email protected]>
1557    
1558          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.
1559          * wptMainProc.cpp (clip_gpg_dlg): New.  
1560          Modify the whole event loop so we don't need all the same code  2003-11-13  Timo Schulz  <[email protected]>
1561          for each command. And we use the new foreground code.  
1562          * wptW32API.cpp (check_date): Fixed.          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.
1563            * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.
1564  2001-12-02      Timo Schulz <[email protected]>          Thanks to Achim.
1565            * Change PIN interface. Now it is easier when an operation requires
1566          * wptGroups.c: Revamped from the base. Arggg.          both PINs.
1567            * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs
1568  2001-12-15  Timo Schulz <[email protected]>          to change card attributes. Do not ask me why, but now the user
1569            needs to enter 2 PINs.
1570      * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for  
1571      copy and paste.          Name parts were swapped, now they have the right order again.
1572    
1573  2001-12-19      Timo Schulz <[email protected]>  2003-10-02  Timo Schulz  <[email protected]>
1574    
1575          * Completed work on the temporary file support for GPG.          * Prepare test release.
1576          * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the          * wptGPGCmds.h: New from GPG 1.3.4-cvs.
1577          plaintext viewer option. Suggested by Markus Winkler.  
1578          (get_reg_winpt_prefs): Ditto.  2003-10-29  Timo Schulz  <[email protected]>
1579          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.  
1580          * wptMainProc.cpp (winpt_main_proc): Ditto.          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.
1581    
1582  2001-12-21      Timo Schulz <[email protected]>          * Create a new interface for an interactive card callback. GPG
1583            provides card control status messages if the wrong card is inserted.
1584          * wptTextInputDlg.cpp (text_input_dlg_proc): New.  
1585          * wptMainProc (clip_gpg_dlg): Support for deached signatures.          * wptCardManager.cpp (card_cb_dlg_proc): New.
1586          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.          (card_callback): New.
1587    
1588  2001-12-30      Timo Schulz <[email protected]>          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use
1589            the ASCII functions and not the Unicode function names. Thanks to
1590          * wptFileManager.cpp (fm_sign): Always use callbacks for the          Werner for pointing this out.
1591          passphrase.  
1592          (fm_decrypt): Ditto.          * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the
1593          (fm_parse_files): Cache the passphrase for the session and check          serial card number is shown to help the user to find the right card.
1594          if the file still exists.  
1595          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.
1596          low level stuff here.  
1597          * wptFile.cpp (get_keyid_from_file): Ditto.  2003-10-26  Timo Schulz  <[email protected]>
1598    
1599  2002-01-01      Timo Schulz <[email protected]>          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.
1600    
1601          * wptFileManager.cpp (fm_verify): Support for the case there is          * Changed the code at several other places to support the new logging
1602          no public key to verify the signature.          scheme.
1603    
1604  2002-01-06  Timo Schulz <[email protected]>  
1605    2003-10-24  Timo Schulz  <[email protected]>
1606      * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt  
1607      hotkey.          * Implemented a better logging system. If the return code
1608          * wptRegistry.cpp: Ditto.          of GPG is != 0 and the error is not known, display the errors
1609          * wptRegistry.h: Ditto.          from stderr.
1610          * wptHotkey.h: Ditto.  
1611          * wptGPG.cpp (gpg_load_options): New.          * wptGPGME.cpp (logging_cb): New.
1612          (gpg_save_options): New.  
1613    2003-10-23  Timo Schulz  <[email protected]>
1614  2002-01-13      Timo Schulz <[email protected]>  
1615            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output
1616          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche          if the error is unknown.
1617          settings.          (clip_sign_dlg_proc): Likewise.
1618          * wptGPG.cpp (gpg_backup_options): New.          (clip_signenc_dlg_proc): Likewise.
1619          (gpg_load_options): Ignore comment lines.          (clip_import_dlg_proc): Likewise.
1620          (gpg_save_options): Rewritten.  
1621    2003-10-21  Timo Schulz  <[email protected]>
1622  2002-01-18      Timo Schulz <[email protected]>  
1623            * wptClipDecryptDlg.cpp (list_recipients): New.
1624          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.          (algo_from_list): New.
1625          * wptPassphraseCB.cpp (parse_gpg_description): Support when no          (clip_decrypt_dlg): New concept to list all recipients.
1626          description was given. One example is when symmetric was used.          * wptFileManager.cpp (fm_list_keys): New.
1627            (fm_decrypt): Same changes as for the clipboard decryption.
1628  2002-01-20      Timo Schulz <[email protected]>  
1629    2003-10-21  Timo Schulz  <[email protected]>
1630          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user  
1631          have to click twice before the menu appears. Richard told me this.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase
1632            was wrong, delete the cache item (if available).
1633            * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.
1634  2002-01-23      Timo Schulz <[email protected]>          * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.
1635            * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'
1636          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for          flag to zero.
1637          loading a file.          
1638          Add new code to save file with clipboard contents.  
1639    2003-10-19  Timo Schulz  <[email protected]>
1640  2002-01-26      Timo Schulz <[email protected]>  
1641            * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and
1642          * wptKeylist.cpp (keylist_add_key): Use flags for the file manager          the working PIN.
1643          to avoid to show all userid's. Thanks to Frank.          wptCardDlg.cpp (free_pincb): New.
1644          * wptDateDlg.cpp (date_dlg_proc): New context to use different          (card_keygen_dlg_proc): Pin callback implemented.
1645          window texts and some other features.          Simple check for the e-mail address.
1646          * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.          (card_edit_dlg_proc): End the dialog if no changes were made.
1647          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.  
1648          * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if          * Expanded GPGME passphrase interface to work both with PINs
1649          it doesn't exist.          and passphrases.
1650          * WinPT.cpp (WinMain): Use the new code here.  
1651    2003-10-18  Timo Schulz  <[email protected]>
1652  2002-02-04      Timo Schulz <[email protected]>  
1653            * wptCardDlg.cpp (card_keygen_dlg_proc): New.
1654          * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements          (do_askpin): Handle the case there is no card.
1655          which need it. Thanks to Timo who find this out.          (card_edit_dlg_proc): Add 'New Keys' feature.
1656          * WinPT.cpp (WinMain): We don't quit in the case the user changed          (card_changepin_dlg_proc): Implemented.
1657          the preferences.          * WinPT.cpp (WinMain): Ability to start the card manager directly.
1658          (update_keycache): New. Handy function to update the keycache.          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader
1659            driver and the inserted card.
1660          * Use quotation for the options file in any case.  
1661    2003-10-17  Timo Schulz  <[email protected]>
1662          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status  
1663          is set, we don' try to get the sig key.          * wptGPGME.cpp (keycache_init): Do not use secring the first time.
1664            * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short
1665          * wptGPG.cpp (get_gpg_default_key): Revamped.          keyid will be displayed.        
1666    
1667  2002-02-05      Timo Schulz <[email protected]>  2003-10-16  Timo Schulz  <[email protected]>
1668            
1669          wptGPG.cpp (gpg_save_options): Fixed the code for the case the          * Changed GPGME interface for edit card. Now one context is
1670          values don't exist in the options file. Thanks to Lutz who found this out.          used for all edit card operations.
1671          (get_gpg_default): First search for "default-key" then for "encrypt-to".          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working
1672            and admin PIN. Changed gpgme interface.
1673  2002-02-05      Timo Schulz <[email protected]>          (ask_pin): Renamed to..
1674            (do_askpin): this. Provide more information about the card
1675          * wptGPG.cpp (gpg_save_options): Catch the case when the options file          and its holder.
1676          exist but it has a length of zero.          (do_proc_card_cmds): If no error, reset modify flags for
1677          (gpg_display_error): Print out the data from the GPG stderr          all controls. Show a short message that the operation ended.
1678          (when available).          * wptCardPCSC.c (pcsc_free_readers): New.
1679          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if          (pcsc_scan_readers): New.
1680          not, return NULL.          (pcsc_get_reader): New.
1681          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret          (pcsc_get_card_status): New.
1682          keys.  
1683    
1684          * Fixed a lot of memory allocation all over the place.  2003-10-14  Timo Schulz  <[email protected]>
1685    
1686  2002-02-08      Timo Schulz <[email protected]>          * wptKeyList.cpp (do_addkey): Add the case the secret key
1687            is stored on a smart card.
1688          * wptNLS.c: Now it's C-source because GPGME needs gettext too.          (km_check_for_seckey): Take care of the new code.
1689          (stpcpy): Makes it static.          * wptKeyManager.cpp (km_delete_keys): Extra warning when
1690          * errors.c: localize all error strings.          the secret key is stored on a card.
1691          * WinPT.cpp (get_gettext_lang): Move the code in this file because          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities
1692          we can't use it in plain C.          to the list view. Now the user can see if the key is useable
1693            for: signing, certifying or encrypting.
1694  2002-02-23      Timo Schulz     <[email protected]>  
1695    2003-10-13  Timo Schulz  <[email protected]>
1696          * wptListview.cpp (listview_del_items): New.  
1697          * wptKeyManager.cpp (km_delete_keys): Use it here.          * Extended the GPGME API that it is possible to retrieve
1698          * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.          the key data. This is for the planned card login but it
1699          * wptKeylist.cpp (add_key): UTF8 support.          might be also useful for other purposes.
1700    
1701  2002-02-28      Timo Schulz <[email protected]>          * wptCardPCSC.c: New. General code for PC/SC card readers.
1702    
1703          * wptImplist.cpp (implist_add_key): UTF8 support.  
1704          Handle invalid userID's.  2003-10-12  Timo Schulz  <[email protected]>
1705          * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.  
1706          (passphrase_callback_proc): Ditto.          * wptCardDlg.cpp (guess_libname): New.
1707            (card_status): Simplified the code with an attribute
1708            table. Now it is a loop and not hard coded.
1709  2002-03-01      Timo Schulz <[email protected]>          * The card interface has changed. Now the surname and
1710            the given name are two fields and not one field.
1711          * wptWipeFile: Replaced all low level I/O functions with W32 API          * wptMainProc.cpp (winpt_main_proc): Check if the card
1712          functions. And support for more wiping modes. I don't know to          reader is configured where appropriate.
1713          support all, but those makes sense for me:  
1714          1. Simple (2 random passes)  2003-10-09  Timo Schulz  <[email protected]>
1715          2. DoD (as described in the standard)  
1716          3. Peter Gutmanns method (from the paper)          * wptCardDlg.cpp (get_card_status): New.
1717            (show_card_status): New. Retrieve the card status and show an
1718            error if approprioate.
1719  2002-03-02      Timo Schulz <[email protected]>          * Make sure that WinPT does not try to use non-OpenPGP cards.
1720            * Add GPGME support for the forthcoming AUTH flag for keys.
1721          * Use capital letters in the main menus and applied Patricks spelling          * Implemented the detection of keys where the secret key components
1722          corrections.          are stored on a smart card.
1723    
1724          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string  
1725          not an integer. Thanks to scrumpy.        2003-10-08  Timo Schulz  <[email protected]>
1726          * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.  
1727          (overwrite): Some bugfixes to set the pointer to the begin of the file.          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII
1728          * wptVerlist.cpp (verlist_build): New keyID column.          is used. Otherwise reject the value.
1729          (verlist_add_sig): Use it here.          (ask_pin): New. Enable PIN caching for the 'dialog session' so
1730            the user does not need to re-enter it again and again.
1731  2002-03-22      Timo Schulz <[email protected]>  
1732    2003-10-07  Timo Schulz  <[email protected]>
1733          * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't  
1734          set window contents for some commands.          * wptPINDlg.cpp (pin_cb_dlg_proc): New.
1735          (winpt_main_proc): Use the code here.          * wptCardDlg.cpp (do_proc_card_cmds): New.
1736          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.          (card_edit_dlg_proc): Use it here.
1737          * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.  
1738          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.  2003-10-06  Timo Schulz  <[email protected]>
1739          * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.  
1740            * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.
1741  2002-03-29      Timo Schulz <[email protected]>          * wptGPG.cpp (gnupg_display_error): Display general error
1742            when the file does not exit.
1743            * wptW32API.cpp (get_folder_dlg): New.
1744            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select
1745            the folder for the home directory.
1746            * wptKeyManager.cpp (km_update_default_key_str): Return length
1747            of the string.
1748            (km_complete_status_bar): Use the offset of the default
1749            key string so it is not appened twice.
1750            * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.
1751            * wptCard.h: New.
1752            * wptCardDlg.cpp (new_card_driver): New.
1753            (load_card_driver): New.
1754            (free_card_driver): New.
1755            (card_config_dlg_proc): If the reader is configured, load the
1756            values. This is needful to change the driver later.
1757            (gpg_load_scard): Use driver as a parameter.
1758            * wptMainProc.cpp (winpt_main_proc): Load card driver and
1759            unload it after use.
1760    
1761    2003-09-28  Timo Schulz  <[email protected]>
1762    
1763            * wptCardDlg.cpp (card_edit_dlg_proc): New.
1764            (gpg_load_scard): New. Try to use GPG load the card info.
1765            (print_fpr): New. Print beautified fingerprint.
1766            (card_status): New. Set all dialog fields with the values from
1767            the card.
1768            (prepare_dialog): New. Load combo boxes with pre-defined strings.
1769    
1770    
1771    2003-09-25  Timo Schulz  <[email protected]>
1772    
1773            * wptProgressDlg.cpp (progress_cb_thread): New.
1774            (progress_callback): Use asynchron code.
1775            * wptFileManager.cpp (fm_parse_files): Implement progress callback.
1776    
1777    
1778    2003-09-25  Timo Schulz  <[email protected]>
1779    
1780            * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.
1781            (check_key): New.
1782            Removed the old Secret Key List dialog. Now the key can be directly
1783            chose in the dialog.
1784            (seclist_init): New.
1785            (seclist_destroy): New.
1786            (seclist_select_key): New.
1787            * wptFileManager.cpp (fm_sign): Ask for output file if needed.
1788    
1789            * Client side implementation of the --enable-progress-filter feature.
1790    
1791            * wptProgressDlg.cpp: Server side implementation.
1792            (progress_dlg_proc): New. The actual dialog procedure.
1793            (progress_callback): The GPGME wrapper callback.
1794    
1795    2003-09-24  Timo Schulz  <[email protected]>
1796    
1797            * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.
1798            * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.
1799            * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from
1800            the menu. We use import internally, but export was not useful and
1801            thus the code were removed.
1802            * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at
1803            startup when they are not allowed.
1804            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.
1805            Make the parsing code much shorter (read).
1806    
1807    
1808    2003-09-22  Timo Schulz  <[email protected]>
1809    
1810            * wptSigList.cpp (extract_filename): Make sure there is a '\',
1811            otherwise just dup the string and return.
1812            * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key
1813            to make the code more readable.
1814            * Implemented the GPGME part of the new smartcard interface.
1815            The WinPT interface will be open until the scard stuff is back
1816            ported to GPG 1.3.x.
1817            * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.
1818            Several code cleanups.
1819    
1820    2003-09-08  Timo Schulz  <[email protected]>
1821    
1822            * wptRegistry.cpp: Remove some hotkeys to correct index calculation.
1823            (get_reg_winpt_flag): Check buffer first.
1824            (get_reg_winpt_prefs): Support for the new backup system.
1825            (set_reg_winpt_prefs): Likewise.
1826            * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.
1827            * wptRegistry.h: Cleaned up the hotkey interface.
1828            * wptPreferenceDlg.cpp (enable_backup_items): New.
1829            (prefs_dlg_proc): Simplified hotkey handling. Use new code.
1830            * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for
1831            im- and export. Use the code directly.
1832            (currwnd_gpg_dlg): Likewise.
1833            * wptGPG.cpp (gnupg_backup_keyrings): New.
1834            (backup_one_file): New.
1835    
1836    2003-09-04  Timo Schulz  <[email protected]>
1837    
1838            * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,
1839            the packet parsing return value check was wrong again. Now it does
1840            not recognize Word documents as SECKEY or ENCRYPTED any longer.
1841    
1842    2003-09-03  Timo Schulz  <[email protected]>
1843    
1844            * The secret key listing does not contain any 'validity' or
1845            'status' flags any longer. Thus we only can use the cache to
1846            make sure we have a secret key. All attributes need to be retrieved
1847            from the public key listing.
1848    
1849            * wptGPG.cpp (default_key_from_cache): New.
1850            (get_gnupg_default_key): Use new function to make sure we try
1851            to get the key from cache if there is a problem with the config
1852            file.
1853    
1854    2003-08-30  Timo Schulz  <[email protected]>
1855    
1856            * wptGPG.h: Support for the GPG status messages REVKEYSIG and
1857            EXPKEYSIG. With this new feature, GPG 1.2.3 is required.
1858            * Make sure that the signature status does not cause an
1859            segfault.
1860            * WinPT.cpp: Use new check to detect the GPG version and make sure
1861            it is the minimum.
1862            * wptGPG.cpp (parse_version_nr): New.
1863            (check_gnupg_engine): Improved. Now it returns the actual version.
1864    
1865    2003-08-24  Timo Schulz <[email protected]>
1866    
1867            * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable
1868            dialog controls.
1869    
1870    2003-08-17  Timo Schulz  <[email protected]>
1871    
1872            * wptKeyManagerDlg.cpp (keymanager_dlg_proc):
1873            #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The
1874            value was malformed.
1875            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.
1876            * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,
1877            don't bother the user with an error message. Closes #782751.
1878            * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the
1879            "primary" edit key command.
1880            * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is
1881            possible to supress the status message. This is useful when the whole
1882            keyring will be refreshed.
1883            * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.
1884            (quote_file): Avoid double quotes.
1885            * GPGME support for quoted file names.
1886            (fm_sym_encrypt): Double check password and to additional 8-bit checks.
1887            * WinPT.cpp (my_acces): Moved to this file..
1888            * wptGPG.cpp: ..here.
1889            (gpg_check_permissions): Renamed from check_permissions and make it global.
1890            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we
1891            have write access to the keyring for some commands.
1892    
1893    2003-07-22  Timo Schulz  <[email protected]>
1894    
1895            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of
1896            the text instead of allocating the maximum.
1897    
1898    2003-07-13  Timo Schulz  <[email protected]>
1899    
1900            * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains
1901            characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850
1902            it would be a bad idea to use such passphrases. And thus we disallow it.
1903            * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.
1904            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.
1905            * wptHotkey.cpp (hotkeys_strerror): Use capital letters.
1906    
1907    2003-07-12  Timo Schulz  <[email protected]>
1908    
1909            * wptFileManager.cpp (fm_verify): Support for multiple signatures.
1910            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
1911            * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.
1912            * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.
1913            (kserver_connect): Likewise.
1914            (kserver_read_config): Likewise.
1915            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases
1916            are not equal.
1917            * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to
1918            generate a key pair.
1919    
1920    2003-06-24  Timo Schulz  <[email protected]>
1921    
1922            * Fixed filter code in Get{Open,Save}FileName. Changed all callers.
1923            Thanks to Alex.
1924            * wptKeyManager.cpp (km_delete_keys): Quote the user-id.
1925    
1926    
1927    2003-06-13  Timo Schulz  <[email protected]>
1928    
1929            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.
1930            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to
1931            the fact the signer is now dymanic and not static.
1932            * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and
1933            change all code that it only shows an error if no plug-in was loaded.
1934            * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you
1935            can revoke v3 keys.
1936            (do_editkey_revoke): Clarify command because it can be only used
1937            for secondary keys.
1938            * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error
1939            is issued when no key was selected. Thanks to vedaal.
1940    
1941    2003-06-11  Timo Schulz  <[email protected]>
1942    
1943            * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the
1944            right order and we do not use the last user-id but the first
1945            because this is always the primary user-id or the newest user-id.
1946            * wptGPGME.cpp (get_default_keyid): Removed. Some better code
1947            were added to get_gnupg_default_key.
1948    
1949    2003-06-10  Timo Schulz  <[email protected]>
1950    
1951            * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys
1952            are skipped.
1953            (keysign_dlg_proc): Removed some redundant code.
1954            * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if
1955            it is possible to change the passphrase.
1956    
1957    2003-06-06  Timo Schulz  <[email protected]>
1958    
1959            * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning
1960            message and include the user-id.
1961            * Encryption: use force overwrite (--yes) to make sure there are
1962            no complications with GPG.
1963            * Import: skip all record types we do not understand.
1964    
1965    
1966    2003-06-05  Timo Schulz  <[email protected]>
1967    
1968            * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog
1969            shows all involved recipients and also the public key algorithm.
1970            * wptRegistry.cpp (reg_inst_winpt): If the user does not want
1971            the extensions, set the entry to "1" so the message is not shown
1972            again.
1973    
1974    2003-06-04  Timo Schulz  <[email protected]>
1975    
1976            * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact
1977            that GPG uses the newest subkey by default, we always return
1978            the info of this subkey and not the first.
1979            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one
1980            bug. Now the indicies are correctly.
1981            * wptGPG.cpp (gnupg_check_keyring): Do not free the value before
1982            get_file_size is called.
1983            * WinPT.cpp (WinMain): Only check the GPG engine version if there
1984            were no problems with the GPG config. And differ between a problem
1985            to get the version and if a wrong version were detected.
1986    
1987    
1988    2003-06-01      Timo Schulz  <[email protected]>
1989    
1990            * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...
1991            (KEYDOWN, KEYUP): macros for the functions above.
1992    
1993    2003-05-31  Timo Schulz  <[email protected]>
1994    
1995            * wptKeyManager.cpp (km_key_is_v3): Return if the selected
1996            key is an old PGP 2 (v3) key.
1997            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow
1998            (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.
1999            to add extented items if the key is NOT version 3.
2000            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the
2001            key is v3 and forbid most commands.
2002            (is_cmd_openpgp): New.
2003    
2004    2003-05-28  Timo Schulz  <[email protected]>
2005    
2006            * wptKeyManager.cpp (km_set_clip_info): New.
2007            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.
2008            * wptImportList.cpp (implist_build): Some column changes for
2009            the listview control.
2010            (implist_load): Return if secret keys were found.
2011            * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys
2012            were found.
2013            (clip_import_dlg_proc): New message if secret keys were found.
2014    
2015    
2016    2003-05-25  Timo Schulz  <[email protected]>
2017    
2018            * wptImportList.cpp (implist_add_key): Address charset problem.
2019            * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.
2020            * wptKeyserver.cpp (set_default_kserver): New.
2021            (wsock_init): Call the new function.
2022            (kserver_load_conf): If the FP is invalid, skip to read the file.
2023            * WinPT.cpp (WinMain): Call set_default_kserver to make sure the
2024            item has a value.
2025    
2026    2003-05-24  Timo Schulz  <[email protected]>
2027    
2028            * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists
2029            to allow to use virtual keys (DEL, INS).
2030            Release the uid control context when the dialog will be destroyed.
2031    
2032    
2033    2003-05-22  Timo Schulz  <[email protected]>
2034    
2035            * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current
2036            window mode sign+encrypt. This fixes a couple of other problems.
2037            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the
2038            key when the cache was reloaded.
2039    
2040    
2041    2003-05-21  Timo Schulz  <[email protected]>
2042    
2043            * wptSiglist.cpp (siglist_add_key): Only list signatures which are
2044            user-id certificates (0x10-0x13) and ignore key and subkey sigs.
2045            c-strings are now handle correctly and decoded into GPGME.
2046    
2047    2003-05-20  Timo Schulz  <[email protected]>
2048    
2049            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change
2050            the passphrase from here to...
2051            * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.
2052    
2053    2003-05-19  Timo Schulz  <[email protected]>
2054    
2055            * wptPasswdDlg.cpp (create_passwd_dlg): Removed.
2056            (request_passphrase): New.
2057            The passphrase_s context is now internal, all externl function use now
2058            request_passphrase. Changed all callers.
2059            * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase
2060            warning and a check for the comment field was added.
2061            * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which
2062            has shown the subkeys and the userids.
2063            * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.
2064    
2065    2003-05-17  Timo Schulz  <[email protected]>
2066    
2067            * wptFileManager.cpp: Moved gpgme_file_get_extension to this file
2068            and renamed it to...
2069            (file_get_extension): this. gpgme_control now also returns the
2070            (get_file_name): Corrected the calculation of the basename.
2071            state of the command if you use -1 as the value.
2072            * wptImportList.cpp (implist_load): Make sure we really have the key ID.
2073            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over
2074            the place.
2075    
2076    2003-05-14  Timo Schulz  <[email protected]>
2077    
2078            * wptKeyManager.cpp (km_enable_disable_key): New.
2079    
2080    2003-05-13  Timo Schulz  <[email protected]>
2081    
2082            * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.
2083            (key_check_validity): Moved from GPGME to this file.
2084            * wptKeyManager.cpp (km_get_key_status): New.
2085    
2086    2003-05-09  Timo Schulz  <[email protected]>
2087    
2088            * wptMDSumDlg.cpp (mdsum_dlg_proc): New.
2089            * wptFileManager.cpp (fm_print_md): New.
2090            * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD
2091            command.
2092    
2093    2003-05-08  Timo Schulz  <[email protected]>
2094    
2095            * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current
2096            window mode.
2097            (currwnd_gpg_dlg): Likewise.
2098            * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.
2099            * WinPT.cpp (WinMain): If the default key was not found, show the string
2100            in the error message to make it easier for the user to fix the problem.
2101            * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret
2102            keys.
2103            * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.
2104            This makes the priority of the rc2 update more urgent.
2105    
2106    2003-05-07  Timo Schulz  <[email protected]>
2107    
2108            * Clean up the outer GPGME interface. Internal functions should be
2109            invisible in gpgme.h.
2110            Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.
2111            * wptKeyserver.cpp: Some cleanups.
2112            (finger_recvkey): Skip URL postfix if there.
2113    
2114    2003-05-06  Timo Schulz  <[email protected]>
2115    
2116            * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys
2117            are available. Removed old [unused] code.
2118            Make sure we really have the key in the cache.
2119    
2120    2003-05-04  Timo Schulz  <[email protected]>
2121    
2122            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients
2123            were found, output a more precise error message. Now the GPGME code
2124            first tests for special cases and if no one hit the nail on the head,
2125            a general error is used.
2126    
2127    2003-05-03  Timo Schulz  <[email protected]>
2128    
2129            * wptParser.cpp: Renamed to...
2130            * wptGPGParser.cpp: this.
2131            (release_option): Renamed to...
2132            (release_gpg_options): this.
2133            (commit_option): Renamed to...
2134            (commit_gpg_options): this.
2135            (parse_option): Renamed to...
2136            (parse_gpg_options): this.
2137            * wptGPG.cpp: Use new parser function names.
2138            (set_gnupg_default_key): Free memory.
2139            * wptKeylist.cpp (keylist_add_groups): New group code.
2140            * wptGroups.{c,h}: Removed. Now we use the GPG group command.
2141            * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from
2142            2 to 4.
2143            (recv_missing_keys): Likewise. Now it is possible to retrieve
2144            missing keys. Thanks to Klaus.
2145            * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather
2146            than a static buffer to avoid garbled keys. There are some very
2147            large keys and these cause some trouble with a 16k buffer.
2148            (keyserver_dlg_proc): Localized some strings.
2149            * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column
2150            names which are equal to the names we use in the Key Manager.
2151            * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but
2152            should be "==" bug.
2153            * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.
2154            * Add --expert option for the GPG procedure call if needed.
2155    
2156    2003-05-02  Timo Schulz  <[email protected]>
2157    
2158            * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.
2159    
2160    2003-04-30  Timo Schulz  <[email protected]>
2161    
2162            * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the
2163            next context menu ("Add"). Make sure the entries are disabled
2164            when the key has no secret key.
2165            * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.
2166            * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't
2167            cause a segfault when the pointer free tries to deallocate the
2168            pointer.
2169    
2170    2003-04-27  Timo Schulz  <[email protected]>
2171    
2172            * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows
2173            to show the properties of the signers keys.
2174            * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.
2175    
2176    2003-04-26  Timo Schulz  <[email protected]>
2177    
2178            * wptParser.cpp: A lot of structural changes. Always add items
2179            at the end of the list so we don't need to make a copy of the list
2180            to restore the original order. Fix the group problem.
2181            * wptKeylist.cpp (keylist_build): Use OR to get the flags and
2182            not ==.
2183            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command
2184            (file) does not use the keyid as the file name when more than one
2185            keys were selected.
2186            Allow allow to set default keys which are not revoked or expired.
2187            * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort
2188            the columns.
2189            Set the force trust flag in GPGME if there are some recipients
2190            with no validity.
2191    
2192    2003-04-25  Timo Schulz  <[email protected]>
2193    
2194            * wptVerList.cpp (verlist_build): Change the name of some columns.
2195            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the
2196            notation (if present!) present the user a general message box
2197            with extended signature information. This means the notation
2198            data and a possible policy URL.
2199    
2200    
2201    2003-04-24  Timo Schulz  <[email protected]>
2202    
2203            * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init
2204            default values to make it easier for newbies.
2205            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error
2206            when no secret key was found. Also mention the public key algo.
2207            * wptFileManager.cpp (fm_decrypt): Likewise.
2208    
2209    2003-04-23  Timo Schulz  <[email protected]>
2210    
2211            * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function
2212            from GPGME#gpgme_ownertrust_to_string into WinPT.
2213    
2214    2003-04-20  Timo Schulz  <[email protected]>
2215    
2216            * wptClipboard.cpp: Removed. All these functions and constants
2217            are now available in MyGPGME/clip.c and thus part of GPGME.
2218            * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...
2219            (keylist_get_recipients): this. Return the context instead of
2220            an argument.
2221            (get_key_size): Add key index.
2222            (get_key_algo): Likewise.
2223            (keylist_build): Use a special mode when signing is used.
2224            (keylist_enum_recipients): Return a malloced pointer to the
2225            recipients.
2226            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint
2227            when we have a signature result and we do not trust the key.
2228    
2229    2003-04-20  Timo Schulz <[email protected]>
2230    
2231            * wptFindWnd.h: Removed. We don't use it any longer.
2232            * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.
2233            (gpg_strerror): Removed. Now it is handled in winpt_strerror.
2234            * wptFileManager.cpp (fm_get_file_name): move this to
2235            * wptVerifyList.cpp (get_file_name): ..this place and declare
2236            it as static because no other file need this function.
2237    
2238    2003-04-15  Timo Schulz  <[email protected]>
2239    
2240            * wptClipImportDlg.cpp (data_cb_dlg_proc): New.
2241            (data_cb_thread): New.
2242            (data_cb_dlg_create): New.
2243            (data_cb_dlg_destroy): New.
2244            (data_cb_new): New.
2245            (clip_import_dlg_proc): Use a callback dialog to
2246            show the user the data decoding procedure is in
2247            progress. This dialog is destroyed in the key
2248            import statistics dialog.
2249    
2250    
2251    2003-04-13  Timo Schulz  <[email protected]>
2252    
2253            * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback
2254            context.
2255            * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.
2256            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect
2257            flag inside the KEY contect if needed.
2258            * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a
2259            passphrase if the protect flag is set.
2260            Display the callback dialog to show the progress.
2261            Implemented the "revkey" feature.
2262            * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.
2263            (do_add_new_userid): New. Add an entry to the list box
2264            after the GPG process finished.
2265            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig
2266            to zero to avoid segfaults.
2267    
2268    2003-04-12  Timo Schulz  <[email protected]>
2269    
2270            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new
2271            GPGME code.
2272            * wptVerifyList.cpp (verlist_add_sig_log): Likewise.
2273            * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.
2274            * wptFileManager.cpp (fm_decrypt): Likewise.
2275            * WinPT.cpp (check_default_key): Check if the keys in gpg.conf
2276            are valid and in the keyring.
2277            * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase
2278            item if the key is not protected.
2279    
2280    
2281    2003-04-09  Timo Schulz  <[email protected]>
2282    
2283            * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as
2284            invalid for cancel.
2285    
2286    2003-03-20  Timo Schulz  <[email protected]>
2287    
2288            * wptFindWnd.cpp: Removed.
2289            * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of
2290            find_window.
2291            * Whenever it's possible, use case insentensive searches to avoid
2292            problems.
2293    
2294    2003-03-19  Timo Schulz  <[email protected]>
2295    
2296            * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.
2297            * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly
2298            in the code.
2299            * wptPasswdDlg.cpp: Likewise.
2300            (passphrase_cb_init): Declare as static.
2301            (passphrase_cb_gpgme): Modified to use the static function and rename
2302            it to...
2303            (passphrase_gpgme_set_cb): ..this. New.
2304            * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA
2305            and friends to assign data to each item.
2306            Move dialog code to...
2307            * wptClipSignEncDlg.cpp: ..here.
2308            * MyGPGME/keycache.c: We first look for directly key signatures and
2309            then we skip all other signatures if we've already seen the key. This
2310            is needed to gather the designated revoker keys.
2311    
2312    2003-03-18  Timo Schulz  <[email protected]>
2313    
2314            * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index
2315            of revocation from 9 to 8.
2316            Set the text that no key was updated only if no new sig, subkey,
2317            userid and no public were added.
2318            Add more information: new {subkeys, signatures, userid}.
2319            * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.
2320            * wptDlgs.cpp: Removed.
2321            * wptDlgs.h: (dlg_fatal_error): New. Macro.
2322    
2323    2002-03-16  Timo Schulz  <[email protected]>
2324    
2325            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the
2326            optional text in UTF-8 to avoid charset problems.
2327            * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead
2328            of a static buffer. Changed all callers.
2329            * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions
2330            for the rest of the columns.
2331            (keylist_handle_column_click): New.
2332            * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):
2333            Removed the 'Advanced' button because it only confuses users
2334            and it is not often used.
2335            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-
2336            and import the trustdb values (ownertrust).
2337            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to
2338            sort columns.
2339    
2340    2002-03-09  Timo Schulz  <[email protected]>
2341    
2342            * 64-bit support for wipe operations.
2343    
2344    2002-03-08  Timo Schulz  <[email protected]>
2345    
2346            * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'
2347            because they are options rather than files.
2348            * WinPT.cpp (WinMain): Allow to start the key manager directly
2349            via --keymanager.
2350            * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.
2351            (wipe_cb): New. Wipe callback function.
2352            (fill_drive_combobox): New. Fill in all logical drives into
2353            the given combo box.
2354            (wipe_thread): New. Worker thread.
2355            (update_disc_stats): New. Set the disc statistics for the
2356            given drive entry.
2357            (space_wipefrees_dlg_proc): New.
2358    
2359    2002-03-01  Timo Schulz  <[email protected]>
2360    
2361            * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection
2362            logic. Now we can decrypt symmetrically encrypted files again.
2363            Be stricter on memory alloaction checks.
2364            (fm_get_file_type): Be more strict with the return code of
2365            parse_packet. This avoids bogus file types for MS-Word files and
2366            other non-PGP data.
2367            (fm_wipe): Use the wipe mode from the registry and not a fixed value.
2368            * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.
2369            (get_reg_winpt_prefs): Likewise.
2370            * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.
2371            * wptDlgs.h: Corrected all dialog protypes to BOOL.
2372            LRESULT was not correct.
2373    
2374    2002-02-08  Timo Schulz  <[email protected]>
2375    
2376            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export
2377            the secret key when a file was chosen.
2378    
2379    2002-02-01  Timo Schulz  <[email protected]>
2380    
2381            * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.
2382    
2383    2002-01-25  Timo Schulz  <[email protected]>
2384    
2385            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id
2386            and the fingerprint to the clipboard. Closes #674455.
2387            Automatically reload the keycache when a command is chosen and the cache
2388            state is set to 'reload requested'. Closes #671218.
2389            * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts
2390            are not invalid.
2391            * WinPT.cpp (check_permissions): Make sure we have the permission to
2392            write the keyring. Stop if not because it's expected at many other places.
2393            * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.
2394            (siglist_build): Use a placeholder sig to avoid the position chaos.
2395            * wptKeyUidDlg.cpp: Unified text for 'user-ID'.
2396            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,
2397            display more information and use a GPG like output.
2398            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is
2399            an invalid key in the list of recipients. Closes #674965.
2400    
2401    
2402    2002-01-21  Timo Schulz  <[email protected]>
2403    
2404            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to
2405            avoid typing mistakes.
2406    
2407    2003-01-19  Timo Schulz  <[email protected]>
2408    
2409            * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.
2410            * wptKeyManagerDlg.cpp (do_resize_window): New.
2411            (do_create_minpopup): New. Closes #669730.
2412            * wptVerifyList.cpp (get_sig_date): Renamed to...
2413            (longdate_to_strdate): New. Changed all callers.
2414            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains
2415            a signature, also display the time of it. Closes #669780.
2416            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.
2417            * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.
2418            * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability
2419            to choose the signer.
2420            (keysign_dlg_proc): Implemented a feature request. See above.
2421    
2422    2003-01-08  Timo Schulz   <[email protected]>
2423    
2424            * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning
2425            if the user tries to add the email address in the name field.
2426            * wptKeyserver.cpp: Add support for protocols.
2427            (finger_readline): New.
2428            (finger_recvkey): New.
2429            * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke
2430            message box to show it's a serious decision.
2431            * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.
2432            * wptRegistry.cpp (regist_single_filetype): Now internal and we use
2433            an easier way to get the location of the binary.
2434            (regist_inst_winpt): Implemented the 'with_ext' part and add a registry
2435            entry to avoid double file registering.
2436    
2437    2003-01-07  Timo Schulz  <[email protected]>
2438    
2439            * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window
2440            pos from the coordinates from the registry.
2441            (keymanager_dlg_proc): Store the window pos in the registry.
2442            * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.
2443            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when
2444            a revcert was found.
2445            * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does
2446            not succeed.
2447            (keyserver_dlg_proc): Corrected some listview index values.
2448            * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.
2449    
2450    2002-12-23  Timo Schulz  <[email protected]>
2451    
2452            * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver
2453            directory if does not exist.
2454            * wptKeyserver.cpp: Simpliefied config file.
2455            (kserver_change_proxy): Write config to the registry. Remove
2456            code for the config file.
2457            * wptProxySettingsDlg.cpp (read_proxy): More robust code.
2458            * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature
2459            to send keys. The Key Manager is better for this.
2460    
2461    
2462    2002-12-21  Timo Schulz  <[email protected]>
2463    
2464            * Fixed some language mistakes.
2465            * wptMainproc.cpp: Use the desktop window as the parent window
2466            for the main dialogs so they are visible in the taskbar.
2467            * wptKeyManagerDlg.cpp: Enable minimize.
2468            * wptFileManager.cpp (fm_parse_command_line): Support for detached
2469            signatures.
2470            (fm_encrypt_directory): New.
2471            * wptKeylist.cpp (keylist_add_key): Check the current key if it
2472            is not expired, not the primary (idx=0).
2473    
2474    2002-12-18  Timo Schulz  <[email protected]>
2475    
2476            * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead
2477            of the old name "options".
2478            * WinPT.cpp (WinMain): Try to repair broken home directories
2479            in the registry. Thanks to Gustavo who reminded me of it.
2480            * wptKeyserver.cpp (check_hkp_response): Only copy the text
2481            between <p> and </p> when possible.
2482            * wptAgent.cpp: Re-activated the old code. Now the passphrase
2483            timer can be used.
2484    
2485    2002-12-14  Timo Schulz  <[email protected]>
2486    
2487            * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean
2488            any longer there is also a secret key.
2489            (km_check_photo): New.
2490            (km_complete_status_bar): New.
2491            * wptFileManager.cpp (fm_verify): Support for bad signatures.
2492            Set the sigmode if not set.
2493            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when
2494            the ownertrust of a non-valid (not signed) key is changed.
2495            * wptRegistry.cpp (expand_path): New. Use this code because it's
2496            much shorter.
2497    
2498    2002-10-14  Timo Schulz  <[email protected]>
2499    
2500            * wptKeyserver.c: Replaced all strdup's with m_strdup and free
2501            with free_if_alloc.
2502            (ldap_recvkey): Fill with life. We use the GPG plugin to avoid
2503            all the LDAP overhead.
2504    
2505    2002-10-13  Timo Schulz  <[email protected]>
2506    
2507            * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static
2508            any longer.
2509    
2510    2002-10-31  Timo Schulz  <[email protected]>
2511    
2512            * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.
2513            Thanks to Gustavo.
2514            * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect
2515            whether it's a key pair or not.
2516            * Callback struct into KEY so we can modify the values in the background.
2517            * wptKeyPropsDlg.cpp (change_ownertrust): New.
2518    
2519    2002-10-30  Timo Schulz  <[email protected]>
2520    
2521            * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe
2522            LDAP plugin for this purpose.
2523            * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.
2524            * wldap32.lib is now not longer needed.
2525            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.
2526            * Updated the resource file.
2527            * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff
2528            for 'Decrypt', 'Verify', 'Import'.
2529    
2530    2002-10-15  Timo Schulz  <[email protected]>
2531    
2532            * Changed all s(n)printf -> msg_box constructs to log_box.
2533    
2534    2002-10-13  Timo Schulz  <[email protected]>
2535    
2536            * wptKeylist.cpp (get_key_expire_date): New.
2537            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.
2538    
2539            * Removed global keycache from GPGME. It's a bad style to mix
2540            general and specific interfaces.
2541    
2542            * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation
2543            details. Useful to replace it later.
2544            (get_seckey): Ditto.
2545            (keycache_reload): Moved from the GPGME library.
2546            (keycache_release): New.
2547            (keycache_init): New.
2548            (keycache_set_reload): New.
2549            (keycache_get_reload): New.
2550            (keycache_get_ctx): New.
2551    
2552            * wptSigList.cpp (siglist_add_key): Use the new code.
2553            (siglist_build): Ditto.
2554    
2555    
2556    2002-10-10  Timo Schulz  <[email protected]>
2557    
2558            * wptW32API.cpp (get_filename_dlg): Added default filename parameter.
2559            Changed all callers.
2560            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the
2561            new get_filename_dlg.
2562            * wptFileManager.cpp (fm_export): Likewise.
2563            * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.
2564            * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.
2565            Use signature class dialog.
2566            * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the
2567            keyid instead of the userid to avoid charset problems.
2568            (err_message): New.
2569    
2570            * Moved all wipe specific code (random, rmd160) to the DLL so we can
2571            save some memory for the tray section.
2572    
2573            * wptKeyRevokersDlg.cpp (revokelist_build): New.
2574            (revokelist_init): New.
2575            (key_revokers_dlg_proc): New.
2576    
2577            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker
2578            code here when available.
2579    
2580    2002-09-25  Timo Schulz  <[email protected]>
2581    
2582            * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text
2583            is dash escaped. This is useful for keys to avoid errors.
2584            * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an
2585            OpenPGP key from the clipboard which is dash escaped.
2586            (km_clip_import): Use the new code here.
2587    
2588    2002-09-23  Timo Schulz  <[email protected]>
2589    
2590            * wptParser.cpp (add_multi_option): Support for values with more ' 's
2591            and skip the ' ' after the name.
2592            (modify_entry): New.
2593            * wptGPG.cpp (gnupg_save_options): Removed.
2594            (gnupg_load_options): Removed.
2595            (gnupg_release_options): Removed.
2596            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.
2597    
2598    2002-09-17  Timo Schulz  <[email protected]>
2599    
2600            * winpt.cpp (WinMain): Use make_filename and no static buffer.
2601            Modified for the new gnupg interface.
2602            * wptFile.cpp (make_filename): New.
2603            * wptGpgCmds.h: New from GPG 1.1.92
2604            * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers
2605            and make_filename.
2606            * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and
2607            make_filename instead of static buffers.
2608            * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.
2609            * wptParser.cpp: Changed to new allocation instead of malloc.
2610            * wptGPGOptSkel.h: Updated from GPG 1.1.92
2611            * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.
2612    
2613    2002-09-13  Timo Schulz  <[email protected]>
2614    
2615            * wptKeyManager.cpp (km_show_photo): Use a const buffer for the
2616            image and do NOT free it.
2617            * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.
2618            (find_user_id): Use keyid to find the key. Changed all callers.
2619    
2620            * Removed global gpg_version variable. Now we also support GPG 1.1.9x
2621            so we don't need to check this after the start again.
2622    
2623    2002-09-12  Timo Schulz  <[email protected]>
2624    
2625            * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.
2626            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret
2627            key export.
2628            * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to
2629            check if the encryption failed.
2630            (km_show_photo): Fixed offset calculation.
2631            Use keyid as filename and delete the tempfile after use.
2632            * wptFile.cpp (init_file_lock): Use dynamic buffer.
2633            (release_file_lock): Free this buffer.
2634            * wptFileManager.cpp (quote_filename): Removed.
2635            (quote_file): New. Use dynamic buffers.
2636            (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):
2637            Use it here.
2638            * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.
2639            Initalize packet at the begin and during the loop.
2640            * wptFileManager.cpp: Replaced all static memory handling with
2641            dynamic routines.
2642            * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust
2643            functions.
2644            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.        
2645    
2646    2002-09-10  Timo Schulz  <[email protected]>
2647    
2648            * wptFileManager.cpp (fm_get_file_type): Disable FD cache.
2649            (fm_decrypt): Only cut off the extension if it belong to GPG.
2650            Added user ID to the box if the file was signed.
2651            Ask for the filename if the name has no valid GPG extension.
2652    
2653    2002-09-09  Timo Schulz  <[email protected]>
2654    
2655            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for
2656            the privat key (export).
2657    
2658    2002-09-08  Timo Schulz  <[email protected]>
2659    
2660            * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process
2661            really succeeded.
2662            (mbox): Alias for msg_box with fixed title to avoid long lines.
2663            * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow
2664            to generate keys with a length til 4096 bits.
2665            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for
2666            invalid recipients and print out the reasons.
2667            * wptKeylist.cpp (keylist_add_to_recipients): Improved error message
2668            and corrected the validity checking.
2669    
2670    2002-09-07  Timo Schulz  <[email protected]>
2671    
2672            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):
2673            Print notation data when available.
2674            Show if the signature is expired or not.
2675    
2676            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo
2677            command to the context menu.
2678    
2679            * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.
2680            This is 256 bits more than the old size. Hopefully it's enough
2681            security to protect against the most enemies ;-).
2682    
2683    2002-09-04  Timo Schulz  <[email protected]>
2684    
2685            * wptKeyManager.cpp (km_check_key_status): Parse new fields.
2686    
2687    2002-09-03  Timo Schulz  <[email protected]>
2688    
2689            Removed all OpenCDK code from PTD. The code is not tested very
2690            well and it might contain some errors. Now we used a stripped down
2691            version of GnuPG code. This has two advantages. First the code is
2692            stable and second we can easier port other parts to native GPG code.
2693    
2694            * wptFileManager.cpp (fm_get_file_type): Use native GPG code.
2695            * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the
2696            keyring when present to the keycache.
2697            * wptKeyManager.cpp (km_show_photo): Fixes to work again with the
2698            modified code.
2699            (km_check_for_seckey): Check substrings of the value because we
2700            don't use '**' values any longer.
2701            * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.
2702            (file_stat_dlg_proc): Uses the new code.
2703    
2704    2002-09-02  Timo Schulz  <[email protected]>
2705    
2706            * wptKeyManager.cpp (km_privkey_export): Check return codes and
2707            some types has been changed.
2708            (km_file_export): Likewise.
2709    
2710    2002-09-01  Timo Schulz  <[email protected]>
2711    
2712            * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice
2713            of the dialog.
2714            * WinPT.cpp (WinMain): Use it here. Reworded the error message.
2715            * wptGPG.cpp (gpg_import_keyrings): New.
2716            Let the user chose the keyrings and then they are copied to the
2717            homedir. After the procedure, the key cache will be reloaded.
2718            * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.
2719            * wptSigClassDlg.cpp (sig_class_dlg_proc): New.
2720            (get_sig_class_choice): New.
2721            * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable
2722            fingerprint.
2723            (keysign_dlg_proc): Added new value for the GPG callback to handle
2724            the signature class.
2725            * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the
2726            userID by calling edit-key with colons.
2727            (keyuid_dlg_proc): Use it here.
2728    
2729    2002-08-31  Timo Schulz  <[email protected]>
2730    
2731            * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.
2732            (check_homedir): Ask the user whether to create the directory.
2733            * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works
2734            to retrieve missing keys from a HKP server.
2735            (recv_missing_keys): Likewise.
2736            * wptPassphraseCB.cpp (passphrase_callback_proc):
2737            Implemented     the "Hide Typing" feature.
2738            (hide_typing): New.
2739            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.
2740            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.
2741            Due to some attacks a MDC error is treated as a fatal error and a
2742            possible security risk.
2743            * wptClipImportDlg.cpp (print_import_status): Use a dialog instead
2744            of a silly message box. Furthermore the user gets more information
2745            about the import procedure.
2746            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.
2747            * wptFileManager.cpp (fm_import): Report invalid user ID's.
2748            (fm_verify): Try to guess the data name for detached signatures
2749            before we bother the user. When it's found, use it.
2750            * wptKeyManager.cpp (km_file_import): Ditto.
2751    
2752    2002-08-28  Timo Schulz  <[email protected]>
2753    
2754            * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.
2755            * wptFileMananger.cpp (fm_check_armor_type): Ditto.
2756    
2757    
2758    2002-08-26  Timo Schulz  <[email protected]>
2759    
2760            * wptTypes.h (free_if_alloc, CHECK_BOUND): New.
2761            * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure
2762            the memory is really released. Some strict checks for return values.
2763            Ident file.
2764    
2765            * wptAboutDlg.cpp: Ditto. (ident)
2766            * wptGPGAboutDlg.cpp: Ditto.
2767            * wptClipDecryptDlg.cpp: Ditto.
2768            (clip_decrypt_dlg): Stricter return value checkings.
2769            Avoid one indent level.
2770    
2771            * wptImportList.cpp (implist_add_key): More strict return value
2772            checking.
2773            * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.
2774            (add_key): New key status system.
2775            (keylist_get_keyflags): New.
2776            (keylist_enum_recipients): Simplified and use the new key flags.
2777    
2778            * wptSiglist.cpp (siglist_add_key): Fix possible overflows.
2779            (verlist_add_sig_log): More stricter checks.
2780    
2781            * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.
2782    
2783    2002-06-16      Timo Schulz <[email protected]>
2784    
2785            Don't put the questions in the message box title bar.
2786    
2787            * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it
2788            is really opened. Thanks to Nelson.
2789    
2790            * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title
2791            for chaning the passphrase. Suggested by Ed.
2792    
2793    2002-06-07      Timo Schulz <[email protected]>
2794    
2795            * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.
2796            * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.
2797            * wptListView.cpp (listview_select_all): New.
2798            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.
2799    
2800    2002-05-31      Timo Schulz <[email protected]>
2801    
2802            * wptTrayPop.cpp: Revamped some parts of the code.
2803    
2804            Changed all status_box functions to show_msg. The advantage
2805            is that we only wait a fixed time and the user doesn't need
2806            to hit the OK key. We should add  the time delay in the preferences.
2807    
2808            * wptKeyManager.cpp (km_show_photo): New.
2809    
2810    2002-05-30  Timo Schulz <[email protected]>
2811    
2812            * wptFileManager.cpp (fm_verify): Corrected the handling
2813            for detached RSA signatures.
2814            (fm_add_sig_stat): Added support for short fingerprints.
2815    
2816    2002-05-08      Timo Schulz <[email protected]>
2817    
2818            * wptKeyserver.cpp (kserver_change_proxy): Check the values.
2819            Thanks to njek for reporting it.
2820    
2821    2002-05-07      Timo Schulz <[email protected]>
2822    
2823            * wptGPG.cpp (check_gpg_engine): New.
2824    
2825            * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible
2826            routines.
2827    
2828            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.
2829    
2830            * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.
2831    
2832    2002-05-06      Timo Schulz <[email protected]>
2833    
2834            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of
2835            the buttons.
2836    
2837    2002-05-05      Timo Schulz <[email protected]>
2838    
2839            * Fixed problem with rev certs for imports stats.
2840    
2841            * Cosmetical changes for the GPGME libraray.
2842    
2843    2002-05-01      Timo Schulz <[email protected]>
2844    
2845            * wptKeygenDlg.cpp (fill_keytype_box): New.
2846            (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7
2847            there is full RSA support.
2848    
2849            Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out
2850            what the problem was when no encryption was done.
2851    
2852            * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make
2853            sure it was not already signed (ALREADY_SIGNED).
2854    
2855            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,
2856            now we also support to sign ultimate trusted keys.
2857    
2858            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button
2859            is checked and do not check it.
2860    
2861            * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify
2862            box and now we also support the date of the signature.
2863    
2864            Applied Rich's spelling and grammer mistakes.
2865            Fixed a lot of minor spelling mistakes and capital letters for dialogs.
2866    
2867    2002-04-30      Timo Schulz <[email protected]>
2868    
2869            Merge ownertrust handling into the keycache. Now GPG outputs the
2870            ownertrust in the key listing which means we can get the ownertrust
2871            value from the keycache.
2872    
2873            (keymisc_dlg_proc): Add a button to rebuild the sig database cache.
2874            Please not that this is not the same as the key cache! The key cache
2875            will be updated when a new key was imported or a subkey was added/changed.
2876            The signature cache only affects the validity of the keys.
2877    
2878            Removed the MyGPGME trustlist code. Now we can use the field in the key
2879            listing to determine the ownertrust (which makes things a lot of easier).
2880    
2881    2002-04-29      Timo Schulz <[email protected]>
2882    
2883            Adjustments for GPG 1.0.7
2884    
2885            * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust
2886            and ask the user if he knows what he's doing.
2887            * wptKeyManager.cpp
2888            (keylist_subclass_proc): Use double click to open the props.
2889            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a
2890            ultimate ownertrust value.
2891            * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for
2892            new RSA keys.
2893    
2894    2002-04-28      Timo Schulz <[email protected]>
2895    
2896            * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.
2897            (set_reg_winpt_prefs): Ditto.
2898            * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.
2899            (set_keylist_mode): New.
2900    
2901            Implement minimal keylist mode. Suggested by Fabian.
2902    
2903            * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.
2904            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
2905            * wptKeylist.cpp (keylist_add_key): Ditto.
2906            (keylist_load): Ditto.
2907            (keylist_build): Ditto.
2908    
2909    2002-04-27      Timo Schulz <[email protected]>
2910    
2911            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.
2912            * wptFileSaveDlg.cpp (file_save_dlg_proc): New.
2913            * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.
2914            * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.
2915            (currwnd_gpg_dlg): Ditto.
2916            
2917            Now it's possible to parse cleartext signatures which contains an
2918            encrypted message inside the body.
2919    
2920            * wptTextInputDlg.cpp (load_file_contents): New.
2921            (text_input_dlg_proc): Support for choosing the data file.
2922    
2923            * wptFileManager.cpp (fm_verify): Support for detached signatures.
2924            (fm_parse_files): Ditto.
2925    
2926    
         * 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.  
   
2927  2002-04-26      Timo Schulz <[email protected]>  2002-04-26      Timo Schulz <[email protected]>
2928    
2929          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.
2930          * wptKeyUidDlg.cpp: Ditto.          * wptKeyUidDlg.cpp: Ditto.
2931    
2932  2002-04-27      Timo Schulz <[email protected]>  2002-04-25      Timo Schulz <[email protected]>
2933    
2934          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.          * wptImplist.cpp (implist_add_key): Catch possible segfault.
2935          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.          * wptVerifyList.cpp (verlist_add_sig): Ditto.
2936          * 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.
2937          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.          * wptKeylist.cpp (find_secret_key): New.
2938          (currwnd_gpg_dlg): Ditto.          (add_key): Use it here.
2939                    (keylist_add_key): And here.
2940          Now it's possible to parse cleartext signatures which contains an  
2941          encrypted message inside the body.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent
2942            to fetch the key.
2943          * wptTextInputDlg.cpp (load_file_contents): New.  
2944          (text_input_dlg_proc): Support for choosing the data file.  2002-04-24      Timo Schulz <[email protected]>
2945    
2946          * wptFileManager.cpp (fm_verify): Support for detached signatures.          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.
2947          (fm_parse_files): Ditto.          
2948            Changed the way to modify the "Version:" string.
2949    
2950  2002-04-28      Timo Schulz <[email protected]>          * wptKeyserver.cpp (add_node): New.
2951            (kserver_change_proxy): New.
2952          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.          (kserver_read_config): New.
2953          (set_reg_winpt_prefs): Ditto.          (kserver_write_config): New.    
2954          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.          (kserver_cfgfile_release): New.
2955          (set_keylist_mode): New.          (proxy_release): New.
2956    
2957          Implement minimal keylist mode. Suggested by Fabian.          * wptProxySettingsDlg.cpp (read_proxy): New.
2958            * wptFileStatDlg.cpp (file_stat_dlg_proc): New.
2959          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.          * wptFileManager.cpp (fm_list): New.
2960          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.          (fm_parse_files): Support the new list command.
2961          * wptKeylist.cpp (keylist_add_key): Ditto.  
2962          (keylist_load): Ditto.  2002-04-23      Timo Schulz <[email protected]>
2963          (keylist_build): Ditto.  
2964            * wptRFC2440.cpp: Removed. We now use the OpenCDK package.
2965  2002-04-29      Timo Schulz <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.
2966            (fm_encrypt): Modified code to allow sign & encrypt.
2967          Adjustments for GPG 1.0.7          (fm_parse_file): Ditto.
2968            (fm_decrypt): Support for checking signatures.
2969          * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.
2970          and ask the user if he knows what he's doing.  
2971          * wptKeyManager.cpp  2002-04-19      Timo Schulz <[email protected]>
2972          (keylist_subclass_proc): Use double click to open the props.  
2973          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a          * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.
2974          ultimate ownertrust value.  
2975          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for  2002-04-05      Timo Schulz <[email protected]>
2976          new RSA keys.  
2977            * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.
2978  2002-04-30      Timo Schulz <[email protected]>          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.
2979            * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.
2980          Merge ownertrust handling into the keycache. Now GPG outputs the          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.
2981          ownertrust in the key listing which means we can get the ownertrust  
2982          value from the keycache.  2002-03-31      Timo Schulz <[email protected]>
2983    
2984          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to
2985          Please not that this is not the same as the key cache! The key cache          select the key used for signing.
2986          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.
2987          The signature cache only affects the validity of the keys.          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).
2988            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after
2989          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.
2990          listing to determine the ownertrust (which makes things a lot of easier).          * wptVerifyList.cpp (verlist_add_sig): Check if the key context was
2991            set inside the signature. Fixes some segfaults related to the HKP key
2992  2002-05-01      Timo Schulz <[email protected]>          fetching during verification. Thanks to Julian. And force to use UTF8
2993            for user ID's.
2994          * wptKeygenDlg.cpp (fill_keytype_box): New.          * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,
2995          (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.
2996          there is full RSA support.  
2997    
2998          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out  2002-03-29      Timo Schulz <[email protected]>
2999          what the problem was when no encryption was done.  
3000            * wptGPG.cpp (create_groupdb): Only close the file handling if it
3001          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make          really exists. Thanks to Mark.
3002          sure it was not already signed (ALREADY_SIGNED).          (gpg_check_homedir): Applied the patch. Now we're a little stricter
3003            about the homedir checks.
3004          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,          (check_homedir): Fixed a possible memory leak.
3005          now we also support to sign ultimate trusted keys.          * WinPT.cpp (WinMain): Check the homedir functions to exit the program
3006            if      we've found some problems.
3007          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button          * wptErrors.cpp (winpt_strerror): New value if a directory could not
3008          is checked and do not check it.          created.
3009            * wptMainProc (winpt_main_proc): Use new code for the current window mode.
3010          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify          * wptCurrWnd.cpp (get_curr_wnd): Ditto.
3011          box and now we also support the date of the signature.          (get_window_contents): Always set focus to the current window.
3012    
3013          Applied Rich's spelling and grammer mistakes.  2002-03-22      Timo Schulz <[email protected]>
3014          Fixed a lot of minor spelling mistakes and capital letters for dialogs.  
3015            * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't
3016  2002-05-05      Timo Schulz <[email protected]>          set window contents for some commands.
3017            (winpt_main_proc): Use the code here.
3018          * Fixed problem with rev certs for imports stats.          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.
3019            * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.
3020          * Cosmetical changes for the GPGME libraray.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.
3021            * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.
3022  2002-05-06      Timo Schulz <[email protected]>  
3023    2002-03-02      Timo Schulz <[email protected]>
3024          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of  
3025          the buttons.          * Use capital letters in the main menus and applied Patricks spelling
3026            corrections.
3027  2002-05-07      Timo Schulz <[email protected]>  
3028            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string
3029          * wptGPG.cpp (check_gpg_engine): New.          not an integer. Thanks to scrumpy.      
3030            * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.
3031          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible          (overwrite): Some bugfixes to set the pointer to the begin of the file.
3032          routines.          * wptVerlist.cpp (verlist_build): New keyID column.
3033            (verlist_add_sig): Use it here.
3034          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.  
3035    2002-03-01      Timo Schulz <[email protected]>
3036          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.  
3037            * wptWipeFile: Replaced all low level I/O functions with W32 API
3038  2002-05-08      Timo Schulz <[email protected]>          functions. And support for more wiping modes. I don't know to
3039            support all, but those makes sense for me:
3040          * wptKeyserver.cpp (kserver_change_proxy): Check the values.          1. Simple (2 random passes)
3041          Thanks to njek for reporting it.          2. DoD (as described in the standard)
3042            3. Peter Gutmanns method (from the paper)
3043  2002-05-30  Timo Schulz <[email protected]>  
3044    
3045          * wptFileManager.cpp (fm_verify): Corrected the handling  2002-02-28      Timo Schulz <[email protected]>
3046          for detached RSA signatures.  
3047          (fm_add_sig_stat): Added support for short fingerprints.          * wptImplist.cpp (implist_add_key): UTF8 support.
3048            Handle invalid userID's.
3049  2002-05-31      Timo Schulz <[email protected]>          * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.
3050            (passphrase_callback_proc): Ditto.
3051          * wptTrayPop.cpp: Revamped some parts of the code.  
3052    
3053          Changed all status_box functions to show_msg. The advantage  2002-02-23      Timo Schulz     <[email protected]>
3054          is that we only wait a fixed time and the user doesn't need  
3055          to hit the OK key. We should add  the time delay in the preferences.          * wptListview.cpp (listview_del_items): New.
3056            * wptKeyManager.cpp (km_delete_keys): Use it here.
3057          * wptKeyManager.cpp (km_show_photo): New.          * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.
3058            * wptKeylist.cpp (add_key): UTF8 support.
3059  2002-06-07      Timo Schulz <[email protected]>  
3060    2002-02-08      Timo Schulz <[email protected]>
3061          * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.  
3062          * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.          * wptNLS.c: Now it's C-source because GPGME needs gettext too.
3063          * wptListView.cpp (listview_select_all): New.          (stpcpy): Makes it static.
3064          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.          * errors.c: localize all error strings.
3065            * WinPT.cpp (get_gettext_lang): Move the code in this file because
3066  2002-06-16      Timo Schulz <[email protected]>          we can't use it in plain C.
3067    
3068          Don't put the questions in the message box title bar.  2002-02-05      Timo Schulz <[email protected]>
3069    
3070          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it          * wptGPG.cpp (gpg_save_options): Catch the case when the options file
3071          is really opened. Thanks to Nelson.          exist but it has a length of zero.
3072            (gpg_display_error): Print out the data from the GPG stderr
3073          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title          (when available).
3074          for chaning the passphrase. Suggested by Ed.          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if
3075            not, return NULL.
3076  2002-08-26  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret
3077            keys.
3078          * wptTypes.h (free_if_alloc, CHECK_BOUND): New.  
3079          * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure          * Fixed a lot of memory allocation all over the place.
3080          the memory is really released. Some strict checks for return values.  
3081          Ident file.  2002-02-05      Timo Schulz <[email protected]>
3082            
3083          * wptAboutDlg.cpp: Ditto. (ident)          wptGPG.cpp (gpg_save_options): Fixed the code for the case the
3084          * wptGPGAboutDlg.cpp: Ditto.          values don't exist in the options file. Thanks to Lutz who found this out.
3085          * wptClipDecryptDlg.cpp: Ditto.          (get_gpg_default): First search for "default-key" then for "encrypt-to".
3086          (clip_decrypt_dlg): Stricter return value checkings.  
3087          Avoid one indent level.  2002-02-04      Timo Schulz <[email protected]>
3088    
3089          * wptImportList.cpp (implist_add_key): More strict return value          * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements
3090          checking.          which need it. Thanks to Timo who find this out.
3091          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.          * WinPT.cpp (WinMain): We don't quit in the case the user changed
3092          (add_key): New key status system.          the preferences.
3093          (keylist_get_keyflags): New.          (update_keycache): New. Handy function to update the keycache.
3094          (keylist_enum_recipients): Simplified and use the new key flags.  
3095            * Use quotation for the options file in any case.
3096          * wptSiglist.cpp (siglist_add_key): Fix possible overflows.  
3097          (verlist_add_sig_log): More stricter checks.          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status
3098            is set, we don' try to get the sig key.
3099          * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.  
3100            * wptGPG.cpp (get_gpg_default_key): Revamped.
3101  2002-08-28  Timo Schulz  <[email protected]>  
3102    2002-01-26      Timo Schulz <[email protected]>
3103          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.  
3104          * wptFileMananger.cpp (fm_check_armor_type): Ditto.          * wptKeylist.cpp (keylist_add_key): Use flags for the file manager
3105            to avoid to show all userid's. Thanks to Frank.
3106            * wptDateDlg.cpp (date_dlg_proc): New context to use different
3107  2002-08-31  Timo Schulz  <[email protected]>          window texts and some other features.
3108            * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.
3109          * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.
3110          (check_homedir): Ask the user whether to create the directory.          * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if
3111          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works          it doesn't exist.
3112          to retrieve missing keys from a HKP server.          * WinPT.cpp (WinMain): Use the new code here.
3113          (recv_missing_keys): Likewise.  
3114          * wptPassphraseCB.cpp (passphrase_callback_proc):  2002-01-23      Timo Schulz <[email protected]>
3115          Implemented     the "Hide Typing" feature.  
3116          (hide_typing): New.          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for
3117          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.          loading a file.
3118          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.          Add new code to save file with clipboard contents.
3119          Due to some attacks a MDC error is treated as a fatal error and a  
3120          possible security risk.  2002-01-20      Timo Schulz <[email protected]>
3121          * wptClipImportDlg.cpp (print_import_status): Use a dialog instead  
3122          of a silly message box. Furthermore the user gets more information          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user
3123          about the import procedure.          have to click twice before the menu appears. Richard told me this.
3124          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.  
3125          * wptFileManager.cpp (fm_import): Report invalid user ID's.  
3126          (fm_verify): Try to guess the data name for detached signatures  2002-01-18      Timo Schulz <[email protected]>
3127          before we bother the user. When it's found, use it.  
3128          * wptKeyManager.cpp (km_file_import): Ditto.          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.
3129            * wptPassphraseCB.cpp (parse_gpg_description): Support when no
3130  2002-09-01  Timo Schulz  <[email protected]>          description was given. One example is when symmetric was used.
3131    
3132          * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice  2002-01-13      Timo Schulz <[email protected]>
3133          of the dialog.  
3134          * WinPT.cpp (WinMain): Use it here. Reworded the error message.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche
3135          * wptGPG.cpp (gpg_import_keyrings): New.          settings.
3136          Let the user chose the keyrings and then they are copied to the          * wptGPG.cpp (gpg_backup_options): New.
3137          homedir. After the procedure, the key cache will be reloaded.          (gpg_load_options): Ignore comment lines.
3138          * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.          (gpg_save_options): Rewritten.
3139          * wptSigClassDlg.cpp (sig_class_dlg_proc): New.  
3140          (get_sig_class_choice): New.  2002-01-06  Timo Schulz <[email protected]>
3141          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable  
3142          fingerprint.      * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt
3143          (keysign_dlg_proc): Added new value for the GPG callback to handle      hotkey.
3144          the signature class.          * wptRegistry.cpp: Ditto.
3145          * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the          * wptRegistry.h: Ditto.
3146          userID by calling edit-key with colons.          * wptHotkey.h: Ditto.
3147          (keyuid_dlg_proc): Use it here.          * wptGPG.cpp (gpg_load_options): New.
3148            (gpg_save_options): New.
3149  2002-09-02  Timo Schulz  <[email protected]>  
3150    2002-01-01      Timo Schulz <[email protected]>
3151          * wptKeyManager.cpp (km_privkey_export): Check return codes and  
3152          some types has been changed.          * wptFileManager.cpp (fm_verify): Support for the case there is
3153          (km_file_export): Likewise.          no public key to verify the signature.
3154    
3155  2002-09-03  Timo Schulz  <[email protected]>  2001-12-30      Timo Schulz <[email protected]>
3156    
3157          Removed all OpenCDK code from PTD. The code is not tested very          * wptFileManager.cpp (fm_sign): Always use callbacks for the
3158          well and it might contain some errors. Now we used a stripped down          passphrase.
3159          version of GnuPG code. This has two advantages. First the code is          (fm_decrypt): Ditto.
3160          stable and second we can easier port other parts to native GPG code.          (fm_parse_files): Cache the passphrase for the session and check
3161            if the file still exists.
3162          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use
3163          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the          low level stuff here.
3164          keyring when present to the keycache.          * wptFile.cpp (get_keyid_from_file): Ditto.
3165          * wptKeyManager.cpp (km_show_photo): Fixes to work again with the  
3166          modified code.  2001-12-21      Timo Schulz <[email protected]>
3167          (km_check_for_seckey): Check substrings of the value because we  
3168          don't use '**' values any longer.          * wptTextInputDlg.cpp (text_input_dlg_proc): New.
3169          * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.          * wptMainProc (clip_gpg_dlg): Support for deached signatures.
3170          (file_stat_dlg_proc): Uses the new code.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
3171    
3172  2002-09-04  Timo Schulz  <[email protected]>  2001-12-19      Timo Schulz <[email protected]>
3173    
3174          * wptKeyManager.cpp (km_check_key_status): Parse new fields.          * Completed work on the temporary file support for GPG.
3175            * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the
3176  2002-09-07  Timo Schulz  <[email protected]>          plaintext viewer option. Suggested by Markus Winkler.
3177            (get_reg_winpt_prefs): Ditto.
3178          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.
3179          Print notation data when available.          * wptMainProc.cpp (winpt_main_proc): Ditto.
3180          Show if the signature is expired or not.  
3181    2001-12-15  Timo Schulz <[email protected]>
3182          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo  
3183          command to the context menu.      * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for
3184        copy and paste.
3185          * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.  
3186          This is 256 bits more than the old size. Hopefully it's enough  2001-12-02      Timo Schulz <[email protected]>
3187          security to protect against the most enemies ;-).  
3188            * wptGroups.c: Revamped from the base. Arggg.
3189  2002-09-08  Timo Schulz  <[email protected]>  
3190    2001-11-29      Timo Schulz <[email protected]>
3191          * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process  
3192          really succeeded.          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.
3193          (mbox): Alias for msg_box with fixed title to avoid long lines.          * wptMainProc.cpp (clip_gpg_dlg): New.
3194          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow          Modify the whole event loop so we don't need all the same code
3195          to generate keys with a length til 4096 bits.          for each command. And we use the new foreground code.
3196          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for          * wptW32API.cpp (check_date): Fixed.
3197          invalid recipients and print out the reasons.  
3198          * wptKeylist.cpp (keylist_add_to_recipients): Improved error message  2001-11-27      Timo Schulz <[email protected]>
3199          and corrected the validity checking.  
3200            * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP
3201  2002-09-09  Timo Schulz  <[email protected]>          proxy authentifcation support for each command.
3202            (kserver_update_proxyuser): New. Ditto.
3203          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for          (kserver_send_request): Ditto.
3204          the privat key (export).          (kserver_recv_request): Ditto.
3205            (kserver_search_init): Ditto.
3206  2002-09-10  Timo Schulz  <[email protected]>  
3207    2001-11-24      Timo Schulz <[email protected]>
3208          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.  
3209          (fm_decrypt): Only cut off the extension if it belong to GPG.          * wptKeyManager.cpp (km_groups_new): New.
3210          Added user ID to the box if the file was signed.          (km_groups_release): New.
3211          Ask for the filename if the name has no valid GPG extension.          (km_groups_load): Rewritten.
3212            (km_groups_add): New.
3213  2002-09-12  Timo Schulz  <[email protected]>          (km_groups_del): New.
3214            (km_groupdb_open): New.
3215          * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.
3216          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret          * wptGroups.c (groupdb_enum_read): Store the record before increment it.
3217          key export.  
3218          * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to  2001-11-23      Timo Schulz <[email protected]>
3219          check if the encryption failed.  
3220          (km_show_photo): Fixed offset calculation.          * wptW32API.cpp (set_active_window): New.
3221          Use keyid as filename and delete the tempfile after use.          (reset_active_window): New.
3222          * wptFile.cpp (init_file_lock): Use dynamic buffer.          (window_reminder): New. This is a delayed thread procedure to
3223          (release_file_lock): Free this buffer.          force the focus (foreground) to the dialogs for the current
3224          * wptFileManager.cpp (quote_filename): Removed.          window mode.
3225          (quote_file): New. Use dynamic buffers.          * wptMainProc.cpp (winpt_main_proc): Use it here.
3226          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.
3227          Use it here.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3228          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3229          Initalize packet at the begin and during the loop.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
3230          * wptFileManager.cpp: Replaced all static memory handling with  
3231          dynamic routines.  2001-11-22      Timo Schulz <[email protected]>
3232          * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust  
3233          functions.          * wptW32API.cpp (set_foreground_wnd): New.
3234          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.          
3235            Fixed the return value of all EndDialogs.
3236  2002-09-13  Timo Schulz  <[email protected]>  
3237            * wptMainProc.cpp: Remove all code parts which did the same for the
3238          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the          current window support. Now the code uses a dialog switch which is
3239          image and do NOT free it.          much smaller.
3240          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.  
3241          (find_user_id): Use keyid to find the key. Changed all callers.  2001-11-18  Timo Schulz <[email protected]>
3242    
3243          * Removed global gpg_version variable. Now we also support GPG 1.1.9x      * wptKeyManager.cpp: New. Contains all handy functions from the
3244          so we don't need to check this after the start again.      wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.
3245        (km_quote_uid): New.
3246  2002-09-17  Timo Schulz  <[email protected]>      (km_check_for_seckey): New.
3247        (km_check_key_status): New.
3248          * winpt.cpp (WinMain): Use make_filename and no static buffer.      (km_clip_export): New.
3249          Modified for the new gnupg interface.      (km_clip_import): New.
3250          * wptFile.cpp (make_filename): New.      (km_file_export): New.
3251          * wptGpgCmds.h: New from GPG 1.1.92      (km_file_import): New.
3252          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers      (km_delete_keys): New.
3253          and make_filename.      (km_send_to_keyserver): New.
3254          * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and      (km_refersh_from_keyserver): New.
3255          make_filename instead of static buffers.      (km_update_default_key_str): New.
3256          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.          * wptKeygenDlg.cpp (ask_for_backup): New.
3257          * wptParser.cpp: Changed to new allocation instead of malloc.          (keygen_dlg_proc): Use new function to give the chance to the
3258          * wptGPGOptSkel.h: Updated from GPG 1.1.92          user for a complete backup.
3259          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.  
3260    2001-11-13      Timo Schulz <[email protected]>
3261  2002-09-23  Timo Schulz  <[email protected]>  
3262            * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry
3263          * wptParser.cpp (add_multi_option): Support for values with more ' 's          is set but to "". Then use default gpg directory.
3264          and skip the ' ' after the name.          * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.
3265          (modify_entry): New.          (refresh_from_keyserver): New. Context entry for update keys.
3266          * wptGPG.cpp (gnupg_save_options): Removed.          (keymisc_dlg_proc): Modify the way the popup is shown.
3267          (gnupg_load_options): Removed.  
3268          (gnupg_release_options): Removed.  2001-11-07      Timo Schulz <[email protected]>
3269          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.  
3270            * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing
3271  2002-09-25  Timo Schulz  <[email protected]>          the key id.
3272            * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret
3273          * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text          key imports.
3274          is dash escaped. This is useful for keys to avoid errors.          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and
3275          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an          the user doesn't set the field, try to do this automatically.
3276          OpenPGP key from the clipboard which is dash escaped.  
3277          (km_clip_import): Use the new code here.  2001-11-03      Timo Schulz <[email protected]>
3278    
3279  2002-10-10  Timo Schulz  <[email protected]>          (fm_remove_crit_file_attrs): First check if the file exists.
3280            Thanks to Peter.
3281          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.  
3282          Changed all callers.  2001-11-02      Timo Schulz <[email protected]>
3283          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the  
3284          new get_filename_dlg.          * WinPT.cpp (WinMain): Add the chance to start the preferences dialog
3285          * wptFileManager.cpp (fm_export): Likewise.          in the case a GPG error was detected.
3286          * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.          * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected
3287          * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.          keys.
3288          Use signature class dialog.  
3289          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the  2001-10-30      Timo Schulz <[email protected]>
3290          keyid instead of the userid to avoid charset problems.  
3291          (err_message): New.          * wptHotkey.h: Fixed typo. Thanks to Timo.
3292            * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.
3293          * Moved all wipe specific code (random, rmd160) to the DLL so we can          (get_gpg_default_key): Skip comment lines immediately.
3294          save some memory for the tray section.          * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.
3295            * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure
3296          * wptKeyRevokersDlg.cpp (revokelist_build): New.          for subclassing.
3297          (revokelist_init): New.  
3298          (key_revokers_dlg_proc): New.          Remove all unsafe WM_NOTIFY stuff because this was propably the
3299            reason for the crashes. And add as a sanity check if the control
3300          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker          sent the message.
3301          code here when available.  
3302    2001-10-28      Timo Schulz <[email protected]>
3303  2002-10-13  Timo Schulz  <[email protected]>  
3304            * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support
3305          * wptKeylist.cpp (get_key_expire_date): New.          for ENTER/SPACE and DELETE. Suggested by Graham.
3306          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.          * wptKeyList.cpp (add_key): New code to figure out how trustworthy
3307            a expired/revoked secret key is.
3308          * 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
3309          general and specific interfaces.          revoked.
3310            * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not
3311          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation          only the first to figure out if a secret is available. Thanks to
3312          details. Useful to replace it later.          Graham.
3313          (get_seckey): Ditto.          * wptFile.cpp (get_keyid_from_file): Ditto.
3314          (keycache_reload): Moved from the GPGME library.  
3315          (keycache_release): New.  2001-10-27      Timo Schulz <[email protected]>
3316          (keycache_init): New.  
3317          (keycache_set_reload): New.          * wptKeylist.cpp (keylist_enum_recipients): Add a type to make
3318          (keycache_get_reload): New.          the code more flexible.
3319          (keycache_get_ctx): New.          * wptKeyMiscDlg.cpp (file_import): New.
3320            (file_export): New.
3321          * wptSigList.cpp (siglist_add_key): Use the new code.          * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.
3322          (siglist_build): Ditto.  
3323            Removed all OE code snippets.
3324    
3325  2002-10-15  Timo Schulz  <[email protected]>  2001-10-26      Timo Schulz <[email protected]>
3326    
3327          * Changed all s(n)printf -> msg_box constructs to log_box.          * wptExtensions.cpp: Removed.
3328            * wptLDAPExt.cpp: Removed.
3329  2002-10-30  Timo Schulz  <[email protected]>          * wptLDAP.cpp: New. This code now contains a direct interface to
3330            the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.
3331          * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe          (wldap_init): New.
3332          LDAP plugin for this purpose.          (wldap_end): New.
3333          * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.          (ldap_set_verbose): New.
3334          * wldap32.lib is now not longer needed.          (ldap_get_key_info): New.
3335          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.          (ldap_recvkey): New.
3336          * Updated the resource file.          (init_ldap): New. Internal use only.
3337          * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff          (get_key): New. Ditto.
3338          for 'Decrypt', 'Verify', 'Import'.          (send_key): New. Ditto.
3339            * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.
3340  2002-10-31  Timo Schulz  <[email protected]>  
3341    2001-10-25      Timo Schulz <[email protected]>
3342          * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.  
3343          Thanks to Gustavo.          * wptGPG.cpp (get_gpg_default_key): Support for the users options file.
3344          * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect          (check_gpg_path): Ditto.
3345          whether it's a key pair or not.          (get_gpg_options): Ditto.
3346          * Callback struct into KEY so we can modify the values in the background.          (set_gpg_default_key): Ditto.
3347          * wptKeyPropsDlg.cpp (change_ownertrust): New.          (set_gpg_options): Ditto.
3348            (gpg_check_keyring): Ditto.
3349  2002-10-13  Timo Schulz  <[email protected]>          (set_gpg_default_keyid): Fix a typo.
3350            * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.
3351          * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static  
3352          any longer.  2001-10-23      Timo Schulz <[email protected]>
3353    
3354  2002-10-14  Timo Schulz  <[email protected]>          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while
3355            because it's shorter.
3356          * wptKeyserver.c: Replaced all strdup's with m_strdup and free          * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of
3357          with free_if_alloc.          the default keyid.
3358          (ldap_recvkey): Fill with life. We use the GPG plugin to avoid          * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now
3359          all the LDAP overhead.          we use the signer from the keylist.
3360            * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix
3361  2002-12-14  Timo Schulz  <[email protected]>          some silly bugs.
3362            * WinPT.cpp (WinMain): if there is no valid keyring after the new
3363          * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean          preferences, start the key generation dialog.
3364          any longer there is also a secret key.  
3365          (km_check_photo): New.  2001-10-22      Timo Schulz <[email protected]>
3366          (km_complete_status_bar): New.  
3367          * wptFileManager.cpp (fm_verify): Support for bad signatures.          Remove all MyGPGME code from the main project. Now we use the
3368          Set the sigmode if not set.          libmygpgme.dll to provide all cryptographic functions and interfaces.
3369          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when  
3370          the ownertrust of a non-valid (not signed) key is changed.          * wptKeylist.cpp (key_array_new): New.
3371          * wptRegistry.cpp (expand_path): New. Use this code because it's          (key_array_release): New.
3372          much shorter.          (key_array_search): New.
3373            * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was
3374  2002-12-18  Timo Schulz  <[email protected]>          already checked and don't bother the user if all userid's were selected.
3375            * wptPassphraseCB.cpp (passphrase_cb_init): Now void.
3376          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead          (passphrase_cb_gpgme): Ditto.
3377          of the old name "options".          (passphrase_callback_proc): Support for a list of recipients.
3378          * WinPT.cpp (WinMain): Try to repair broken home directories          * wptImportList.cpp (implist_add_key): Support for secret keys.
3379          in the registry. Thanks to Gustavo who reminded me of it.  
3380          * wptKeyserver.cpp (check_hkp_response): Only copy the text  2001-10-19  Timo Schulz <[email protected]>
3381          between <p> and </p> when possible.  
3382          * wptAgent.cpp: Re-activated the old code. Now the passphrase      * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various
3383          timer can be used.      option files.
3384        * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and
3385  2002-12-21  Timo Schulz  <[email protected]>      use a popup menu.
3386        * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE
3387          * Fixed some language mistakes.      plug-in.
3388          * wptMainproc.cpp: Use the desktop window as the parent window      (gpgoe_unload_plugin): New.
3389          for the main dialogs so they are visible in the taskbar.  
3390          * wptKeyManagerDlg.cpp: Enable minimize.  2001-10-17  Timo Schulz <[email protected]>
3391          * wptFileManager.cpp (fm_parse_command_line): Support for detached  
3392          signatures.      * wptCurrWnd.cpp (get_window_contents): Only minimize the window
3393          (fm_encrypt_directory): New.      when the clipboard contains text.
3394          * wptKeylist.cpp (keylist_add_key): Check the current key if it      * wptKeylist.cpp (keylist_add_key): Check only for invalid keys
3395          is not expired, not the primary (idx=0).      in the mainloop. The other flags are checked in the various cases.
3396        (add_key): Use the ** foo ** notation for invalid flags instead of
3397  2002-12-23  Timo Schulz  <[email protected]>      skipping the key.
3398        * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print
3399          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver      out a warning.
3400          directory if does not exist.      Change all error messages to one header.
3401          * wptKeyserver.cpp: Simpliefied config file.      (check_key_status): Check if the key is valid in the sense of
3402          (kserver_change_proxy): Write config to the registry. Remove      revocation and expire dates. If not, print out a warning.
3403          code for the config file.      (keymisc_dlg_proc): Use the new code.
3404          * wptProxySettingsDlg.cpp (read_proxy): More robust code.  
3405          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature  2001-10-16  Timo Schulz <[email protected]>
3406          to send keys. The Key Manager is better for this.  
3407        * wptW32API.cpp (check_date): New.
3408        (get_open_filename): New.
3409  2003-01-07  Timo Schulz  <[email protected]>      * wptDlgs.cpp (init_dtp): New. Initialize a special common control.
3410        * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.
3411          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window  
3412          pos from the coordinates from the registry.  2001-10-15  Timo Schulz <[email protected]>
3413          (keymanager_dlg_proc): Store the window pos in the registry.  
3414          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.      * wptFileManager.cpp (fm_wipe): New.
3415          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when      (fm_set_status): Add temporary wipe status and handle default values.
3416          a revcert was found.      (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped
3417          * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does      files with a successful opeation.
3418          not succeed.      * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.
3419          (keyserver_dlg_proc): Corrected some listview index values.      (keygen_cb_thread): New. Static dialog thread.
3420          * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.      (keygen_cb_dlg_create): New. Interface.
3421        (keygen_cb_dlg_destroy): New. Destroy the dialog.
3422  2003-01-08  Timo Schulz   <[email protected]>      (keygen_cb): GPGME interface.
3423    
3424          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning  2001-10-13  Timo Schulz <[email protected]>
3425          if the user tries to add the email address in the name field.  
3426          * wptKeyserver.cpp: Add support for protocols.      Set all ListviewControls to 'NULL' in all dialogs to be more crash
3427          (finger_readline): New.      resistent.
3428          (finger_recvkey): New.  
3429          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.
3430          message box to show it's a serious decision.      * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.
3431          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.      * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.
3432          * wptRegistry.cpp (regist_single_filetype): Now internal and we use      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
3433          an easier way to get the location of the binary.      * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.
3434          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry      * wptStringUtil.cpp: Removed.
3435          entry to avoid double file registering.      * wptFileManager.cpp: Rewrote the complete interface code for
3436        the file manager.
3437  2003-01-19  Timo Schulz  <[email protected]>      * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.
3438    
3439          * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.  2001-10-10      Timo Schulz <[email protected]>
3440          * wptKeyManagerDlg.cpp (do_resize_window): New.  
3441          (do_create_minpopup): New. Closes #669730.          * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the
3442          * wptVerifyList.cpp (get_sig_date): Renamed to...          file is longer then the keyid.
3443          (longdate_to_strdate): New. Changed all callers.          (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the
3444          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains          entry is an userid.
3445          a signature, also display the time of it. Closes #669780.          * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file
3446          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.          more then one time.
3447          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.          (fm_add_dropped_files): Use it here.
3448          * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common
3449          to choose the signer.      keys.
3450          (keysign_dlg_proc): Implemented a feature request. See above.  
3451    2001-10-09  Timo Schulz <[email protected]>
3452  2002-01-21  Timo Schulz  <[email protected]>  
3453        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return
3454          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to      code of sunlink.
3455          avoid typing mistakes.      * wptGPG.cpp (get_keyring_from_optfile): New.
3456        Renamed gpg_errstr to gpg_strerror.
3457  2002-01-25  Timo Schulz  <[email protected]>      (set_default_key): New.
3458        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.
3459          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id      
3460          and the fingerprint to the clipboard. Closes #674455.  2001-10-08  Timo Schulz <[email protected]>
3461          Automatically reload the keycache when a command is chosen and the cache  
3462          state is set to 'reload requested'. Closes #671218.      * wptKeyserver (kserver_connect): If the proxy settings are valid,
3463          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts      use the proxy port instead of the HKP port.
3464          are not invalid.      (kserver_recvkey): Proxy support.
3465          * WinPT.cpp (check_permissions): Make sure we have the permission to      (kserver_search_init): Ditto.
3466          write the keyring. Stop if not because it's expected at many other places.  
3467          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.  2001-10-06  Timo Schulz <[email protected]>
3468          (siglist_build): Use a placeholder sig to avoid the position chaos.  
3469          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.      * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.
3470          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,  
3471          display more information and use a GPG like output.  2001-10-05  Timo Schulz <[email protected]>
3472          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is  
3473          an invalid key in the list of recipients. Closes #674965.      * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.
3474        In the case it is, use the first userID.
3475        * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.
3476  2002-02-01  Timo Schulz  <[email protected]>      Remove the Pos column and add a status column instead.
3477        Add expire stuff for subkeys.
3478          * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.      (init_dtp): Initialize the common control.
3479        * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file
3480  2002-02-08  Timo Schulz  <[email protected]>      into the clipboard.
3481        * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description
3482          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export      of the ownertrust value.
3483          the secret key when a file was chosen.      (keyprops_dlg_proc): Fixed ownertrust handling.
3484    
3485  2002-03-01  Timo Schulz  <[email protected]>  2001-10-04  Timo Schulz <[email protected]>
3486    
3487          * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection      * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.
3488          logic. Now we can decrypt symmetrically encrypted files again.      * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.
3489          Be stricter on memory alloaction checks.      Both were pointed out my Timo (not me ;-)).
3490          (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
3491          parse_packet. This avoids bogus file types for MS-Word files and      strict with returned attributes.
3492          other non-PGP data.      * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface
3493          (fm_wipe): Use the wipe mode from the registry and not a fixed value.      for local signatures.
3494          * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.  
3495          (get_reg_winpt_prefs): Likewise.  2001-09-28  Timo Schulz <[email protected]>
3496          * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.  
3497          * wptDlgs.h: Corrected all dialog protypes to BOOL.      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle
3498          LRESULT was not correct.      the double click messages.
3499        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3500  2002-03-08  Timo Schulz  <[email protected]>      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3501        * wptFileManager.cpp (overwrite_file): Check if the file exists and
3502          * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'      then let the user decide.
3503          because they are options rather than files.      (fm_encrypt): Use the code here.
3504          * WinPT.cpp (WinMain): Allow to start the key manager directly      (fm_sign): And here.
3505          via --keymanager.      (fm_sym_encrypt): And here. Now we use the passphrase dialog.
3506          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.      (fm_decrypt): And here.
3507          (wipe_cb): New. Wipe callback function.      * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need
3508          (fill_drive_combobox): New. Fill in all logical drives into      a secure wipe.
3509          the given combo box.  
3510          (wipe_thread): New. Worker thread.      Make the memory checking more strict.
3511          (update_disc_stats): New. Set the disc statistics for the  
3512          given drive entry.  2001-09-27  Timo Schulz <[email protected]>
3513          (space_wipefrees_dlg_proc): New.  
3514        * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who
3515  2002-03-09  Timo Schulz  <[email protected]>      discovered this.
3516        * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the
3517          * 64-bit support for wipe operations.      passphrase.
3518        * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to
3519  2002-03-16  Timo Schulz  <[email protected]>      the various other dialogs to make the use more easier.
3520        * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.
3521          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the      * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.
3522          optional text in UTF-8 to avoid charset problems.  
3523          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead  
3524          of a static buffer. Changed all callers.  2001-09-26  Timo Schulz <[email protected]>
3525          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions  
3526          for the rest of the columns.      * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.
3527          (keylist_handle_column_click): New.      (listbox_get_cursel): Ditto.
3528          * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):  
3529          Removed the 'Advanced' button because it only confuses users  
3530          and it is not often used.  2001-09-23  Timo Schulz <[email protected]>
3531          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-  
3532          and import the trustdb values (ownertrust).      * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.
3533          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to      The same as the userid dialog.
3534          sort columns.      * wptWndSwitchDlg.cpp: Removed.
3535        * wptWipeExt.cpp: Removed. Code is now included.
3536  2003-03-18  Timo Schulz  <[email protected]>      * wptGPGME.cpp (get_default_keyid): If the keyid from the options
3537        file is in the keycache.
3538          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index      * wptKeylist.cpp (keylist_reload): New. Reload a keylist.
3539          of revocation from 9 to 8.  
3540          Set the text that no key was updated only if no new sig, subkey,  2001-09-17  Timo Schulz <[email protected]>
3541          userid and no public were added.  
3542          Add more information: new {subkeys, signatures, userid}.      * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs
3543          * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.      who prevent the correct return value in the case of an clipboard error.
3544          * wptDlgs.cpp: Removed.      (clip_parse_pgp_id): New. Returns the PGP message type.
3545          * wptDlgs.h: (dlg_fatal_error): New. Macro.      * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.
3546        (hotkey_single_register): Return correct error value.
3547  2003-03-19  Timo Schulz  <[email protected]>      (hotkey_single_unregister): Ditto.
3548        * wptW32API.cpp (get_thread_id): Removed.
3549          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.      (attach_thread_input): Ditto.
3550          * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly      (detach_thread_input): Ditto.
3551          in the code.      * wptCurrWnd.cpp (get_window_contents): Store main and focused window
3552          * wptPasswdDlg.cpp: Likewise.      for later use.
3553          (passphrase_cb_init): Declare as static.      (set_window_contents): Use the new code.
3554          (passphrase_cb_gpgme): Modified to use the static function and rename  
3555          it to...  2001-09-16  Timo Schulz <[email protected]>
3556          (passphrase_gpgme_set_cb): ..this. New.  
3557          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA      * wptExtensions.h: New. This file is now used for the extenion
3558          and friends to assign data to each item.      declarations.
3559          Move dialog code to...      * wptExtensions.new: (register_extensions): New. Enumerate and
3560          * wptClipSignEncDlg.cpp: ..here.      load all possible extensions.
3561          * MyGPGME/keycache.c: We first look for directly key signatures and      (unregister_extentions): New. Release all loaded extensions.
3562          then we skip all other signatures if we've already seen the key. This      * wptKeyserver.cpp (kserver_load_conf): Added support for different
3563          is needed to gather the designated revoker keys.      keyservers. Currently only HTTP/LDAP.
3564        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.
3565  2003-03-20  Timo Schulz  <[email protected]>      (hkp_recv_key): Ditto.
3566        * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents
3567          * wptFindWnd.cpp: Removed.      to set the focus.
3568          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of      * (oe_check_recipient): New. Checks if the key is able to encrypt
3569          find_window.      and valid in the sense of revocation.
3570          * Whenever it's possible, use case insentensive searches to avoid  
3571          problems.  2001-09-14  Timo Schulz <[email protected]>
3572    
3573  2003-04-09  Timo Schulz  <[email protected]>      * wptWAB.cpp: (wab_read): New. Interface to read all address book
3574        entries.
3575          * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as      (wab_open): New. Internal function to load the WAB.
3576          invalid for cancel.      (wab_release): New. Release the WAB contexts.
3577        (wab_load): New. Load the contents of the WAB into a linked list.
3578  2003-04-12  Timo Schulz  <[email protected]>      (addr_list_new): New. Linked address list.
3579        (addr_list_add): New.
3580          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new      (addr_list_release): New.
3581          GPGME code.  
3582          * wptVerifyList.cpp (verlist_add_sig_log): Likewise.  2001-09-13  Timo Schulz <[email protected]>
3583          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.  
3584          * wptFileManager.cpp (fm_decrypt): Likewise.      * Revamped the whole plugin code for OE5.
3585          * WinPT.cpp (check_default_key): Check if the keys in gpg.conf      * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.
3586          are valid and in the keyring.      (oe_plugin_releae): New.
3587          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase      (oe_plugin_init): New. Searches for the OE main window and select
3588          item if the key is not protected.      all the recipients from the fields.
3589        (oe_get_msg): This code now uses the menu command id's to
3590        execute the commands.
3591  2003-04-13  Timo Schulz  <[email protected]>      (oe_set_msg): Ditto.
3592        (oe_encrypt): Changed for the new code.
3593          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback      * wptMainProc.cpp (wpt_main_proc): Re-activate the code.
3594          context.      * wptHotkeys.cpp: Ditto.
3595          * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.      * Removed the hook project.
3596          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect  
3597          flag inside the KEY contect if needed.  2001-09-12  Timo Schulz <[email protected]>
3598          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a  
3599          passphrase if the protect flag is set.      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.
3600          Display the callback dialog to show the progress.      Thanks to Rich who pointed this out.
3601          Implemented the "revkey" feature.  
3602          * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.  2001-09-07  Timo Schulz <[email protected]>
3603          (do_add_new_userid): New. Add an entry to the list box  
3604          after the GPG process finished.      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.
3605          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig  
3606          to zero to avoid segfaults.  2001-09-05  Timo Schulz <[email protected]>
3607    
3608  2003-04-15  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.
3609        (clip_import): New. Handy function to import keys.
3610          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.      * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase
3611          (data_cb_thread): New.      is too short.
3612          (data_cb_dlg_create): New.  
3613          (data_cb_dlg_destroy): New.  2001-09-04  Timo Schulz <[email protected]>
3614          (data_cb_new): New.  
3615          (clip_import_dlg_proc): Use a callback dialog to      * Rewrote most parts of the keymanager.
3616          show the user the data decoding procedure is in      * Ditto for the filemanager.
3617          progress. This dialog is destroyed in the key  
3618          import statistics dialog.  2001-09-01  Timo Schulz <[email protected]>
3619    
3620        * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.
3621  2003-04-20  Timo Schulz <[email protected]>      These code is now part of the key manager.
3622        * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.
3623          * wptFindWnd.h: Removed. We don't use it any longer.      * wptKeylist.cpp (get_key_algo): New.
3624          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.      (get_key_created): New.
3625          (gpg_strerror): Removed. Now it is handled in winpt_strerror.      (get_key_type): New.
3626          * wptFileManager.cpp (fm_get_file_name): move this to      (get_key_size): New.
3627          * wptVerifyList.cpp (get_file_name): ..this place and declare      (get_key_fpr): New.
3628          it as static because no other file need this function.      * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now
3629        a part of the keymanager.
3630  2003-04-20  Timo Schulz  <[email protected]>  
3631    2001-08-31  Timo Schulz <[email protected]>
3632          * wptClipboard.cpp: Removed. All these functions and constants  
3633          are now available in MyGPGME/clip.c and thus part of GPGME.      * wptFileManager.cpp (fm_add_opened_files): New. Use a standard
3634          * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...      file open dialog instead of drag & drop.
3635          (keylist_get_recipients): this. Return the context instead of      * wptHotkeys.cpp (hotkey_strerror): More detailed information which
3636          an argument.      hotkey couldn't set up.
3637          (get_key_size): Add key index.      (hotkey_register_single): Ditto.
3638          (get_key_algo): Likewise.  
3639          (keylist_build): Use a special mode when signing is used.  2001-08-30  Timo Schulz <[email protected]>
3640          (keylist_enum_recipients): Return a malloced pointer to the  
3641          recipients.      * wptFilemanager.cpp (fm_encrypt): Add minor changes.
3642          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint       (fm_decrypt): Ditto.
3643          when we have a signature result and we do not trust the key.       (fm_sign): Ditto.
3644         (fm_verify): Make the code more modular.
3645  2003-04-23  Timo Schulz  <[email protected]>       (fm_add_sig_stat): New. For new fm_verify code.
3646    
3647          * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function  2001-08-28  Timo Schulz <[email protected]>
3648          from GPGME#gpgme_ownertrust_to_string into WinPT.  
3649        * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.
3650  2003-04-24  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_load_conf): Proxy support
3651        (kserver_connect): Ditto.
3652          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init  
3653          default values to make it easier for newbies.  2001-08-26  Timo Schulz <[email protected]>
3654          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error  
3655          when no secret key was found. Also mention the public key algo.      * wptFileManager.cpp (fm_entry_new): New.
3656          * wptFileManager.cpp (fm_decrypt): Likewise.      (fm_entry_release): New.
3657        (fm_state_new): New.
3658  2003-04-25  Timo Schulz  <[email protected]>      (fm_state_release). New.
3659        (fm_get_current_file): New.
3660          * wptVerList.cpp (verlist_build): Change the name of some columns.      * wptKeylist.cpp (strlist_add_recipients): New.
3661          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the  
3662          notation (if present!) present the user a general message box  2001-08-25  Timo Schulz <[email protected]>
3663          with extended signature information. This means the notation  
3664          data and a possible policy URL.      * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.
3665        (strlist_release): New. Release the linked list.
3666        (strlist_add): New.
3667  2003-04-26  Timo Schulz  <[email protected]>  
3668    2001-08-21  Timo Schulz <[email protected]>
3669          * wptParser.cpp: A lot of structural changes. Always add items  
3670          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
3671          to restore the original order. Fix the group problem.      also supports "encrypt-to" entries as default keys.
3672          * wptKeylist.cpp (keylist_build): Use OR to get the flags and      * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide
3673          not ==.      secure wiping.
3674          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command      (wipe_deinit_ext): New. Unload the DLL and free all pointer.
3675          (file) does not use the keyid as the file name when more than one      (wipe_loaded_ext): New. Checks wether the DLL was loaded.
3676          keys were selected.      * wptW32API.cpp (set_menu_state): New.
3677          Allow allow to set default keys which are not revoked or expired.  
3678          * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort  2001-08-20  Timo Schulz <[email protected]>
3679          the columns.  
3680          Set the force trust flag in GPGME if there are some recipients      * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.
3681          with no validity.      * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable
3682        the hotkeys. Automatically enable or disable the hotkey field depend
3683  2003-04-27  Timo Schulz  <[email protected]>      on the switch.
3684    
3685          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows  2001-08-17  Timo Schulz <[email protected]>
3686          to show the properties of the signers keys.  
3687          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only
3688        one by default.
3689  2003-04-30  Timo Schulz  <[email protected]>      * wptKeyList.cpp (keylist_add_to_recipients): Ditto.
3690        * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram
3691          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the      entry in the registry in the case it's missing (whenever it's possible!).
3692          next context menu ("Add"). Make sure the entries are disabled      (check_gpg_path): Rewrite parts of the code.
3693          when the key has no secret key.  
3694          * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.  2001-08-11  Timo Schulz <[email protected]>
3695          * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't  
3696          cause a segfault when the pointer free tries to deallocate the      * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and
3697          pointer.      separate the fingerprint from the othr information.
3698        * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the
3699  2003-05-02  Timo Schulz  <[email protected]>      file, specified in the options line, does exist.
3700    
3701          * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.  2001-08-08  Timo Schulz <[email protected]>
3702    
3703  2003-05-03  Timo Schulz  <[email protected]>      * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.
3704        Support for more configurations.
3705          * wptParser.cpp: Renamed to...      * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.
3706          * wptGPGParser.cpp: this.      Add all strings to the translation suite.
3707          (release_option): Renamed to...      * Updated all NLS dialog strings.
3708          (release_gpg_options): this.      * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.
3709          (commit_option): Renamed to...      * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,
3710          (commit_gpg_options): this.      with a dynamic callback for the passphrase.
3711          (parse_option): Renamed to...  
3712          (parse_gpg_options): this.  2001-08-06  Timo Schulz <[email protected]>
3713          * wptGPG.cpp: Use new parser function names.  
3714          (set_gnupg_default_key): Free memory.      * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.
3715          * wptKeylist.cpp (keylist_add_groups): New group code.  
3716          * wptGroups.{c,h}: Removed. Now we use the GPG group command.  2001-08-05  Timo Schulz <[email protected]>
3717          * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from  
3718          2 to 4.      * wptKeylist.cpp (keylist_add_key): Change the schematics to support
3719          (recv_missing_keys): Likewise. Now it is possible to retrieve      all keyids.
3720          missing keys. Thanks to Klaus.      * wptSigList.cpp (siglist_build): New. Interface code to load the
3721          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather      signature list.
3722          than a static buffer to avoid garbled keys. There are some very      * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.
3723          large keys and these cause some trouble with a 16k buffer.  
3724          (keyserver_dlg_proc): Localized some strings.  2001-08-03  Timo Schulz <[email protected]>
3725          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column  
3726          names which are equal to the names we use in the Key Manager.      * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now
3727          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but      we support this code in the key manager.
3728          should be "==" bug.      * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.
3729          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.      * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):
3730          * Add --expert option for the GPG procedure call if needed.      Removed. The code moved into the main functions.
3731        (kserver_send), (kserver_recv): Ditto.
3732  2003-05-04  Timo Schulz  <[email protected]>      (sock_write): Improved code.
3733        (sock_read): Ditto and some additional timeout.
3734          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients      (sock_select): New. Figure out the socket state.
3735          were found, output a more precise error message. Now the GPGME code      (kserver_search_init): New. Make connection to the server.
3736          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
3737          a general error is used.      keyserver code.
3738        * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker
3739  2003-05-06  Timo Schulz  <[email protected]>      packet. Thanks to Alan.
3740        (check_for_symenc_data): Ditto.
3741          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys      * wptFileManager.cpp (fm_get_file_type): Ditto.
3742          are available. Removed old [unused] code.      (fm_decrypt): Move the keycache in the if loop and fix the keycache
3743          Make sure we really have the key in the cache.      type.
3744    
3745  2003-05-07  Timo Schulz  <[email protected]>  2001-08-02  Timo Schulz <[email protected]>
3746    
3747          * Clean up the outer GPGME interface. Internal functions should be      * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.
3748          invisible in gpgme.h.      Useful in the case the file was generated but it's empty.
3749          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.      * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.
3750          * wptKeyserver.cpp: Some cleanups.  
3751          (finger_recvkey): Skip URL postfix if there.  
3752    2001-08-01  Timo Schulz <[email protected]>
3753  2003-05-08  Timo Schulz  <[email protected]>  
3754        * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible
3755          * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current      request for uploading a key.
3756          window mode.      (kserver_send_request): Use the urlencode to send the key.
3757          (currwnd_gpg_dlg): Likewise.      (sock_read): New. Improved read function to replace recv.
3758          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.      (sock_write): New. Improved write function to replace send.
3759          * WinPT.cpp (WinMain): If the default key was not found, show the string      * wptFileManager.cpp (fm_get_file_type): If the data is armored,
3760          in the error message to make it easier for the user to fix the problem.      call fm_check_armor_type().
3761          * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret      (fm_check_armor_type): New. Figure out the armor type of the data.
3762          keys.      * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the
3763          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.      buttons. Optimized the code.
3764          This makes the priority of the rc2 update more urgent.  
3765    2001-07-30  Timo Schulz <[email protected]>
3766  2003-05-09  Timo Schulz  <[email protected]>  
3767        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code
3768          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.      for the agent.
3769          * wptFileManager.cpp (fm_print_md): New.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3770          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD  
3771          command.  2001-07-29  Timo Schulz <[email protected]>
3772    
3773  2003-05-13  Timo Schulz  <[email protected]>      * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating
3774        a key revocation certificate. Add a hint to show how sentensive this
3775          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.      data is.
3776          (key_check_validity): Moved from GPGME to this file.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the
3777          * wptKeyManager.cpp (km_get_key_status): New.      revocation.
3778        * wptAgent.cpp: Source for the server interface removed.
3779  2003-05-14  Timo Schulz  <[email protected]>      (agent_is_avail): New. Checks if the agent is available.
3780        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code
3781          * wptKeyManager.cpp (km_enable_disable_key): New.      for the agent.
3782    
3783  2003-05-17  Timo Schulz  <[email protected]>  2001-07-26  Timo Schulz <[email protected]>
3784    
3785          * wptFileManager.cpp: Moved gpgme_file_get_extension to this file      * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring
3786          and renamed it to...      exists. Useful if the keyring was moved during some commands.
3787          (file_get_extension): this. gpgme_control now also returns the      * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to
3788          (get_file_name): Corrected the calculation of the basename.      Rich to discover this.
3789          state of the command if you use -1 as the value.  
3790          * wptImportList.cpp (implist_load): Make sure we really have the key ID.  2001-07-25  Timo Schulz <[email protected]>
3791          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over  
3792          the place.      * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect
3793        serious GPG errors.
3794  2003-05-19  Timo Schulz  <[email protected]>      * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.
3795        Suggested by Graham.
3796          * wptPasswdDlg.cpp (create_passwd_dlg): Removed.      (fm_decrypt): Change code to support symmetric decryption.
3797          (request_passphrase): New.      (fm_get_file_type): Fixed some typos.
3798          The passphrase_s context is now internal, all externl function use now  
3799          request_passphrase. Changed all callers.  2001-07-24  Timo Schulz <[email protected]>
3800          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase  
3801          warning and a check for the comment field was added.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after
3802          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which      reloading the keycache. Fixed the memory leaks. Thanks to Andreas.
3803          has shown the subkeys and the userids.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform
3804          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.      the user about errors.
3805        * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure
3806  2003-05-20  Timo Schulz  <[email protected]>      in our own context.
3807        (treeview_insert_item): New. Handy function to insert an entry.
3808          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change      (treeview_create_child_item): New. Insert a trustlist node.
3809          the passphrase from here to...      (treeview_add_trustpath): New. Add recursively the whole trust path
3810          * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.      int the tree view.
3811        * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the
3812  2003-05-21  Timo Schulz  <[email protected]>      signature list contains entries with a NOKEY status.
3813        (recv_missing_keys): New. Receive all keys with a NOKEY as the signature
3814          * wptSiglist.cpp (siglist_add_key): Only list signatures which are      status.
3815          user-id certificates (0x10-0x13) and ignore key and subkey sigs.      * wptImportList.cpp (implist_load): New. Initialize the listview item
3816          c-strings are now handle correctly and decoded into GPGME.      with an import overview.
3817        * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead
3818  2003-05-22  Timo Schulz  <[email protected]>      of the code.
3819        (print_import_status): Summarize the results. We need this because file
3820          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current      import needs the same function.
3821          window mode sign+encrypt. This fixes a couple of other problems.      * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the
3822          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the      file manager.
3823          key when the cache was reloaded.      * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key
3824        import from file.
3825        * wptFileManager.cpp (fm_import): New. Ditto.
3826  2003-05-24  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_connect): Take care for some return values
3827        and set the socket to non blocking mode.
3828          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists      Moved the Winsock2 init code to wptMainProc.cpp
3829          to allow to use virtual keys (DEL, INS).      * wptMainProc.cpp (wpt_main_proc): Wsock2 code.
3830          Release the uid control context when the dialog will be destroyed.      * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.
3831    
3832    2001-07-22  Timo Schulz <[email protected]>
3833  2003-05-25  Timo Schulz  <[email protected]>  
3834         * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.
3835          * wptImportList.cpp (implist_add_key): Address charset problem.       (get_key_created): New. Transform ulong timestamp to ascii.
3836          * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.       (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).
3837          * wptKeyserver.cpp (set_default_kserver): New.       (get_key_size): New. Returns a formatted size depend (depend on subkeys).
3838          (wsock_init): Call the new function.       * wptSigList.cpp (siglist_add_key): Fix the timestamp.
3839          (kserver_load_conf): If the FP is invalid, skip to read the file.       * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace
3840          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the       this with list trust path.
3841          item has a value.       * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function
3842         because we always check the signatures.
3843  2003-05-28  Timo Schulz  <[email protected]>       * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.
3844        
3845          * wptKeyManager.cpp (km_set_clip_info): New.  2001-07-21  Timo Schulz <[email protected]>
3846          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.  
3847          * wptImportList.cpp (implist_build): Some column changes for      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in
3848          the listview control.      the case of IDCANCEL.
3849          (implist_load): Return if secret keys were found.      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
3850          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair
3851          were found.      pair and only if activate the passphrase dlg items.
3852          (clip_import_dlg_proc): New message if secret keys were found.      Do sanity checks for all buttons that require key pairs.
3853        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.
3854        
3855  2003-05-31  Timo Schulz  <[email protected]>  2001-07-20  Timo Schulz <[email protected]>
3856    
3857          * wptKeyManager.cpp (km_key_is_v3): Return if the selected      * wptKeyserver.cpp: (kserver_send_request): Correct the octect length
3858          key is an old PGP 2 (v3) key.      of the request.
3859          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow      (check_hkp_response): If an error ocurred, copy the error message into
3860          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.      the static buffer.
3861          to add extented items if the key is NOT version 3.      (kserver_strerror): Interface for the static error buffer.
3862          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the      * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message
3863          key is v3 and forbid most commands.      box.
3864          (is_cmd_openpgp): New.      (hkp_send_key): Add more verbose messages at the end.
3865        (hkp_recv_key): Ditto.
3866  2003-06-01      Timo Schulz  <[email protected]>      (check_pattern): Rewrote the entire code to be more bug proof.
3867        * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate
3868          * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...      that the recipient list contains untrusted entries.
3869          (KEYDOWN, KEYUP): macros for the functions above.      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to
3870        force GPG to add the need options.
3871  2003-06-04  Timo Schulz  <[email protected]>      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3872    
3873          * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact  2001-07-19  Timo Schulz <[email protected]>
3874          that GPG uses the newest subkey by default, we always return  
3875          the info of this subkey and not the first.      * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more
3876          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one      detailed error messages in the case for a missing key or an included
3877          bug. Now the indicies are correctly.      signature.
3878          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before  
3879          get_file_size is called.  2001-07-17  Timo Schulz <[email protected]>
3880          * WinPT.cpp (WinMain): Only check the GPG engine version if there  
3881          were no problems with the GPG config. And differ between a problem      * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox
3882          to get the version and if a wrong version were detected.      and increment the 'cols' variable inside the structure for further use.
3883        (add_key): Watch for the 'cols' variable to figure out how much columns
3884        are used.
3885  2003-06-05  Timo Schulz  <[email protected]>      * wptListView.cpp (listview_set_ext_style): Set an extended style for
3886        the given listview.
3887          * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the
3888          shows all involved recipients and also the public key algorithm.      selected server.
3889          * wptRegistry.cpp (reg_inst_winpt): If the user does not want      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3890          the extensions, set the entry to "1" so the message is not shown      * wptKeyserver.cpp (kserver_connect): IP address support. This is faster
3891          again.      and no DNS lookup is needed.
3892    
3893  2003-06-06  Timo Schulz  <[email protected]>  2001-07-14  Timo Schulz <[email protected]>
3894    
3895          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning      * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding
3896          message and include the user-id.      it to the signing keylist.
3897          * Encryption: use force overwrite (--yes) to make sure there are      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase
3898          no complications with GPG.      is empty.
3899          * Import: skip all record types we do not understand.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3900    
3901    
3902  2003-06-10  Timo Schulz  <[email protected]>  2001-07-13  Timo Schulz <[email protected]>
3903    
3904          * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys      * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to
3905          are skipped.      the request. Arggg!
3906          (keysign_dlg_proc): Removed some redundant code.      (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.
3907          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if  
3908          it is possible to change the passphrase.  
3909    2001-07-12  Timo Schulz <[email protected]>
3910  2003-06-11  Timo Schulz  <[email protected]>  
3911        * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,
3912          * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the      just quit without any messages. Suggested by Rich.
3913          right order and we do not use the last user-id but the first  
3914          because this is always the primary user-id or the newest user-id.  
3915          * wptGPGME.cpp (get_default_keyid): Removed. Some better code  2001-07-11  Timo Schulz <[email protected]>
3916          were added to get_gnupg_default_key.  
3917        * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add
3918  2003-06-13  Timo Schulz  <[email protected]>      the integer.
3919        (keyserver_create_conf): Create a config file instead of the error.
3920          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.      * wptGPG.cpp (create_gpg_options): If the file doesn't exist create
3921          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to      a default file. This prevents confusing error messages.
3922          the fact the signer is now dymanic and not static.      (get_gpg_options): Use new code.
3923          * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and      * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells
3924          change all code that it only shows an error if no plug-in was loaded.      the user how to find the files.
3925          * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you  
3926          can revoke v3 keys.  2001-07-05  Timo Schulz <[email protected]>
3927          (do_editkey_revoke): Clarify command because it can be only used  
3928          for secondary keys.      * wptHotkey.cpp (mod_hotkeys): Fix a small typo.
3929          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error  
3930          is issued when no key was selected. Thanks to vedaal.  2001-07-04  Timo Schulz <[email protected]>
3931    
3932  2003-06-24  Timo Schulz  <[email protected]>      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key
3933        if the user agree.
3934          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.      * wptKeylist.cpp (keyload_load): Use the mode from the param, not
3935          Thanks to Alex.      the hardcoded.
3936          * wptKeyManager.cpp (km_delete_keys): Quote the user-id.      * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.
3937        Rename 'load' to 'reload' to make sense with the new code.
3938        * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the
3939  2003-07-12  Timo Schulz  <[email protected]>      registry stuff.
3940        * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.
3941          * wptFileManager.cpp (fm_verify): Support for multiple signatures.      (get_reg_winpt_prefs): Ditto.
3942          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.      (regist_inst_winpt): Remove the old code.
3943          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.      (register_single_filetype): Replacement for the old code.
3944          * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.  
3945          (kserver_connect): Likewise.  2001-07-01  Timo Schulz <[email protected]>
3946          (kserver_read_config): Likewise.  
3947          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases      * wptFileManager.cpp (fm_verify): New.
3948          are not equal.      (fm_decrypt): New.
3949          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.
3950          generate a key pair.  
3951    
3952  2003-07-13  Timo Schulz  <[email protected]>  2001-06-30  Timo Schulz <[email protected]>
3953    
3954          * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains      * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase
3955          characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850      code.
3956          it would be a bad idea to use such passphrases. And thus we disallow it.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3957          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.      * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.
3958          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.      * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.
3959          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.      (fm_delete): New.
3960        (fm_encrypt): New.
3961  2003-07-22  Timo Schulz  <[email protected]>      (fm_get_current_pos): New.
3962        (fm_get_file_type): New.
3963          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of      (fm_add_dropped_files): New.
3964          the text instead of allocating the maximum.  
3965    2001-06-29  Timo Schulz <[email protected]>
3966  2003-08-17  Timo Schulz  <[email protected]>  
3967        * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent
3968          * wptKeyManagerDlg.cpp (keymanager_dlg_proc):      to send data to the clipboard.
3969          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The      * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to
3970          value was malformed.      destroy the window immediately.
3971          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.      * wptKeyserver.cpp (kserver_getip): Removed.
3972          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,      (kserver_get_langname): Removed.
3973          don't bother the user with an error message. Closes #782751.      (kserver_load_conf): New. Load the keyserver.conf file and set the
3974          * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the      included keyserver addresses into the global context.
3975          "primary" edit key command.      * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the
3976          * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is      keyserver context.
3977          possible to supress the status message. This is useful when the whole      * wptImplist.cpp (get_key_date): New. Transform integer timestamp
3978          keyring will be refreshed.      to ISO date.
3979          * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.      (implist_add_key): Now it uses the context instead of all single
3980          (quote_file): Avoid double quotes.      variables.
3981          * GPGME support for quoted file names.  
3982          (fm_sym_encrypt): Double check password and to additional 8-bit checks.  2001-06-28  Timo Schulz <[email protected]>
3983          * WinPT.cpp (my_acces): Moved to this file..  
3984          * wptGPG.cpp: ..here.      * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new
3985          (gpg_check_permissions): Renamed from check_permissions and make it global.      flag variables to support RFC1991.
3986          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we      (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.
3987          have write access to the keyring for some commands.      (get_rfc1991_pktlen): Ditto.
3988    
3989  2003-08-24  Timo Schulz <[email protected]>  2001-06-27  Timo Schulz <[email protected]>
3990    
3991          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable      * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.
3992          dialog controls.      (get_pkt_len): New. Extract the OpenPGP packet length.
3993        (parse_pke_sesskey): Read a public key encrypted session key
3994  2003-08-30  Timo Schulz  <[email protected]>      but without data.
3995        * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the
3996          * wptGPG.h: Support for the GPG status messages REVKEYSIG and      filename contains spaces. Just to make GPG happy.
3997          EXPKEYSIG. With this new feature, GPG 1.2.3 is required.      (file_manager_dlg_proc): Check if the file exist after encryption.
3998          * Make sure that the signature status does not cause an      * wptFile.cpp (get_keyid_from_file): Checks the file for an valid
3999          segfault.      packet and then extract the keyid.
4000          * WinPT.cpp: Use new check to detect the GPG version and make sure  
4001          it is the minimum.  2001-06-25  Timo Schulz <[email protected]>
4002          * wptGPG.cpp (parse_version_nr): New.  
4003          (check_gnupg_engine): Improved. Now it returns the actual version.      * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with
4004        the contents from the given cache context.
4005  2003-09-03  Timo Schulz  <[email protected]>      (keylist_add_to_recipients): New. Add the selected keys to the
4006        recipient set.
4007          * The secret key listing does not contain any 'validity' or      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist
4008          'status' flags any longer. Thus we only can use the cache to      function to load the listview.
4009          make sure we have a secret key. All attributes need to be retrieved      * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.
4010          from the public key listing.      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4011        * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid
4012          * wptGPG.cpp (default_key_from_cache): New.      and the keyid hint.
4013          (get_gnupg_default_key): Use new function to make sure we try  
4014          to get the key from cache if there is a problem with the config  2001-06-24  Timo Schulz <[email protected]>
4015          file.  
4016        * wptGPG.cpp (get_gpg_path): Add null termination to the string.
4017  2003-09-04  Timo Schulz  <[email protected]>      Thanks to Jonathan who pointed this out.
4018        (get_gpg_prog): Ditto.
4019          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,      (gpg_check_file_ext): Check the file extension for the given GPG
4020          the packet parsing return value check was wrong again. Now it does      type.
4021          not recognize Word documents as SECKEY or ENCRYPTED any longer.      (get_gpg_default_keyid): Return null if there isn't an entry in the
4022        options file.
4023  2003-09-08  Timo Schulz  <[email protected]>      * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx
4024        style functions.
4025          * wptRegistry.cpp: Remove some hotkeys to correct index calculation.      * wptImpList.cpp (implist_add_key): Ditto.
4026          (get_reg_winpt_flag): Check buffer first.      * wptSigList.cpp (siglist_add_key): Ditto.
4027          (get_reg_winpt_prefs): Support for the new backup system.      * wptVerifyList.cpp (verlist_add_key): Ditto.
4028          (set_reg_winpt_prefs): Likewise.  
4029          * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.  2001-06-23  Timo Schulz <[email protected]>
4030          * wptRegistry.h: Cleaned up the hotkey interface.  
4031          * wptPreferenceDlg.cpp (enable_backup_items): New.      * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the
4032          (prefs_dlg_proc): Simplified hotkey handling. Use new code.      options file.
4033          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for  
4034          im- and export. Use the code directly.  2001-06-22  Timo Schulz <[email protected]>
4035          (currwnd_gpg_dlg): Likewise.  
4036          * wptGPG.cpp (gnupg_backup_keyrings): New.      * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform
4037          (backup_one_file): New.      keyserver seraching. As an additional feature it's also posible to
4038        import the keys directly.
4039  2003-09-22  Timo Schulz  <[email protected]>  
4040    2001-06-18  Timo Schulz <[email protected]>
4041          * wptSigList.cpp (extract_filename): Make sure there is a '\',  
4042          otherwise just dup the string and return.      * wptKeyserver.cpp (check_hkp_response): More detailed error check
4043          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key      of the http response.
4044          to make the code more readable.      (kserver_send_request): Debug mode now uses logfile.
4045          * Implemented the GPGME part of the new smartcard interface.      (kserver_recv_request): Ditto.
4046          The WinPT interface will be open until the scard stuff is back      (kserver_index_request): New. Create a request for a key index.
4047          ported to GPG 1.3.x.      (kserver_send): Now uses check_hkp_response.
4048          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.      (kserver_recv): Ditto.
4049          Several code cleanups.      (kserver_search): New. Start the key index loop.
4050        * wptKeyserverDlg.cpp (recv_key): Check if the key was really
4051  2003-09-24  Timo Schulz  <[email protected]>      imported and received.
4052    
4053          * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.  2001-06-17  Timo Schulz <[email protected]>
4054          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.  
4055          * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the
4056          the menu. We use import internally, but export was not useful and      default key for signing.
4057          thus the code were removed.  
4058          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at  2001-06-16  Timo Schulz <[email protected]>
4059          startup when they are not allowed.  
4060          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.
4061          Make the parsing code much shorter (read).      Corrected return values.
4062        * wptErrors.cpp (winpt_strerror): Removed all unused error strings.
4063        * wptGPG.cpp (get_gpg_path): Change to default path and prevent
4064  2003-09-25  Timo Schulz  <[email protected]>      buffer overflows.
4065        (get_gpg_prog): Ditto.
4066          * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.  
4067          (check_key): New.  
4068          Removed the old Secret Key List dialog. Now the key can be directly  2001-06-15  Timo Schulz <[email protected]>
4069          chose in the dialog.  
4070          (seclist_init): New.      * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.
4071          (seclist_destroy): New.      Differ between the new keylist styles.
4072          (seclist_select_key): New.      * wptGPGME.cpp (keycache_xxx): Move the caching interface to this
4073          * wptFileManager.cpp (fm_sign): Ask for output file if needed.      file. For an easier handling between dialogs and code.
4074        (keycache_rewind): New. Rewind a global keycache context.
4075          * Client side implementation of the --enable-progress-filter feature.      (keycache_next_key): New. Retrieve the next key from the keycache.
4076        (get_default_key): New. Return the default key, this is the secret
4077          * wptProgressDlg.cpp: Server side implementation.      key with the index 0.
4078          (progress_dlg_proc): New. The actual dialog procedure.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key
4079          (progress_callback): The GPGME wrapper callback.      handling. Now the signer is set in any case. Prevent hanging GPG
4080        processes.
4081  2003-09-25  Timo Schulz  <[email protected]>      * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.
4082        (vm_safe_init_noswap): New. Initialize safe memory with tail data.
4083          * wptProgressDlg.cpp (progress_cb_thread): New.      See source for more information.
4084          (progress_callback): Use asynchron code.      (vm_safe_free): New. Free all used pointer and burn all buffers.
4085          * wptFileManager.cpp (fm_parse_files): Implement progress callback.      (vm_safe_get): New. Get the begin of the alloced buffer.
4086        (vm_safe_set_swapfile): New. Set global swapfile name.
4087        (vm_safe_create_swapfile): New. Creats a swapfile and set its
4088  2003-09-28  Timo Schulz  <[email protected]>      contents to zero.
4089    
4090          * wptCardDlg.cpp (card_edit_dlg_proc): New.  2001-06-12  Timo Schulz <[email protected]>
4091          (gpg_load_scard): New. Try to use GPG load the card info.  
4092          (print_fpr): New. Print beautified fingerprint.      * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is
4093          (card_status): New. Set all dialog fields with the values from      a big letter, otherwise convert.
4094          the card.      (preferences_dlg_proc): Check hotkeys.
4095          (prepare_dialog): New. Load combo boxes with pre-defined strings.      * wptKeylist.cpp (add_keys): Static functions to add a single key.
4096        (keylist_add_key): Now it adds all subkeys to the dialog.
4097        (keylist_alloc): Remove because it's not needed any longer.
4098  2003-10-06  Timo Schulz  <[email protected]>      * wptImportList.cpp (implist_alloc): Ditto.    
4099        * wptSigList.cpp (siglist_alloc): Ditto.
4100          * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.      * wptVerifyList.cpp (verlist_alloc): Ditto.
4101          * wptGPG.cpp (gnupg_display_error): Display general error  
4102          when the file does not exit.  2001-06-10  Timo Schulz <[email protected]>
4103          * wptW32API.cpp (get_folder_dlg): New.  
4104          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select      * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single
4105          the folder for the home directory.      hotkey.
4106          * wptKeyManager.cpp (km_update_default_key_str): Return length      (mod_hotkeys): Take care of the enable flags.
4107          of the string.      (register_hotkeys): Ditto.
4108          (km_complete_status_bar): Use the offset of the default      (unregister_hotkeys): Ditto.
4109          key string so it is not appened twice.      * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,
4110          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.      don't try to modify hotkeys.
4111          * wptCard.h: New.      * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to
4112          * wptCardDlg.cpp (new_card_driver): New.      the foreground.
4113          (load_card_driver): New.  
4114          (free_card_driver): New.  2001-06-08  Timo Schulz <[email protected]>
4115          (card_config_dlg_proc): If the reader is configured, load the  
4116          values. This is needful to change the driver later.      * wptHotkey.cpp (mod_hotkeys): Change code to support the new
4117          (gpg_load_scard): Use driver as a parameter.      registry style.
4118          * wptMainProc.cpp (winpt_main_proc): Load card driver and      * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable
4119          unload it after use.      single hotkeys. Suggested by Jonathan.
4120        * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable
4121  2003-10-07  Timo Schulz  <[email protected]>      single hotkeys.
4122        * wptKeyserver.cpp (kserver_connect): Reset winsock error var.
4123          * wptPINDlg.cpp (pin_cb_dlg_proc): New.      (keyserver_recv): Ditto.
4124          * wptCardDlg.cpp (do_proc_card_cmds): New.      (keyserver_send): Ditto.
4125          (card_edit_dlg_proc): Use it here.      (wsock_strerror): Returns a description of the winsock problem.
4126        * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer
4127  2003-10-08  Timo Schulz  <[email protected]>      is valid.
4128    
4129          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII  2001-06-07  Timo Schulz <[email protected]>
4130          is used. Otherwise reject the value.  
4131          (ask_pin): New. Enable PIN caching for the 'dialog session' so      * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,
4132          the user does not need to re-enter it again and again.      add windows title.
4133    
4134  2003-10-09  Timo Schulz  <[email protected]>  2001-06-05  Timo Schulz <[email protected]>
4135    
4136          * wptCardDlg.cpp (get_card_status): New.      * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned
4137          (show_card_status): New. Retrieve the card status and show an      buffer is valid. Remove the fixme, because it's possible that there
4138          error if approprioate.      were new cipher modules loaded.
4139          * Make sure that WinPT does not try to use non-OpenPGP cards.      * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the
4140          * Add GPGME support for the forthcoming AUTH flag for keys.      context is valid.
4141          * Implemented the detection of keys where the secret key components      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.
4142          are stored on a smart card.      * wptW32API.cpp (status_box): New. Message box that is always forced
4143        to the foreground.
4144    
4145  2003-10-12  Timo Schulz  <[email protected]>  2001-06-04  Timo Schulz <[email protected]>
4146    
4147          * wptCardDlg.cpp (guess_libname): New.      * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for
4148          (card_status): Simplified the code with an attribute      the improved import status.
4149          table. Now it is a loop and not hard coded.  
4150          * The card interface has changed. Now the surname and  
4151          the given name are two fields and not one field.  2001-06-01  Timo Schulz <[email protected]>
4152          * wptMainProc.cpp (winpt_main_proc): Check if the card  
4153          reader is configured where appropriate.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:
4154        Release context in the case of an error.
4155  2003-10-13  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Fix typo.
4156        * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use
4157          * Extended the GPGME API that it is possible to retrieve      a static gpg object array that contains all filenames.
4158          the key data. This is for the planned card login but it  
4159          might be also useful for other purposes.  
4160    2001-05-27  Timo Schulz <[email protected]>
4161          * wptCardPCSC.c: New. General code for PC/SC card readers.  
4162        * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.
4163        (get_reg_winpt_prefs): Ditto.
4164  2003-10-14  Timo Schulz  <[email protected]>      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the
4165        gpg process finished.
4166          * wptKeyList.cpp (do_addkey): Add the case the secret key      * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to
4167          is stored on a smart card.      a humand readable date.
4168          (km_check_for_seckey): Take care of the new code.  
4169          * wptKeyManager.cpp (km_delete_keys): Extra warning when  
4170          the secret key is stored on a card.  2001-05-25  Timo Schulz <[email protected]>
4171          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities  
4172          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
4173          for: signing, certifying or encrypting.      user id. End the dialog if there was an error during the Gpgme operations.
4174        * wptClipboard.cpp (clip_istext_avail): First check if the pointer is
4175  2003-10-16  Timo Schulz  <[email protected]>      valid and then look at the length. Avoid crashes for some texts.
4176    
4177          * Changed GPGME interface for edit card. Now one context is  2001-05-21  Timo Schulz <[email protected]>
4178          used for all edit card operations.  
4179          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid
4180          and admin PIN. Changed gpgme interface.      management.
4181          (ask_pin): Renamed to..      * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids
4182          (do_askpin): this. Provide more information about the card      from a special key.
4183          and its holder.  
4184          (do_proc_card_cmds): If no error, reset modify flags for  2001-05-20  Timo Schulz <[email protected]>
4185          all controls. Show a short message that the operation ended.  
4186          * wptCardPCSC.c (pcsc_free_readers): New.      * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries
4187          (pcsc_scan_readers): New.      to figure out if both parts are available.
4188          (pcsc_get_reader): New.  
4189          (pcsc_get_card_status): New.  2001-05-19  Timo Schulz <[email protected]>
4190    
4191        * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey
4192  2003-10-17  Timo Schulz  <[email protected]>      flag is set, also disable all input items.
4193        (disable_dlg_item): New. Disable dialog items (windows).
4194          * wptGPGME.cpp (keycache_init): Do not use secring the first time.      * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys
4195          * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short      flag isn't set.
4196          keyid will be displayed.              * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as
4197        a result the code only sended parts of the key.
4198  2003-10-18  Timo Schulz  <[email protected]>      * wptConfig.cpp: Removed. Not used any longer.
4199    
4200          * wptCardDlg.cpp (card_keygen_dlg_proc): New.  2001-05-18  Timo Schulz <[email protected]>
4201          (do_askpin): Handle the case there is no card.  
4202          (card_edit_dlg_proc): Add 'New Keys' feature.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various
4203          (card_changepin_dlg_proc): Implemented.      edit key commands. In the case the dialog was canceled, return without
4204          * WinPT.cpp (WinMain): Ability to start the card manager directly.      modifying anything.
4205          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the
4206          driver and the inserted card.      signature. If it doesn't contain a valid key, do nothing.
4207        * wptMainProc: (wpt_main_proc): If the hotkey setup doesn't work, don't
4208  2003-10-19  Timo Schulz  <[email protected]>      quit the program. In some cases the hotkeys are possible locked.
4209        * WinPT.cpp (WinMain): If there is an error with the gpg program/path,
4210          * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and      give the user the chance to start the GPG preference dialog.
4211          the working PIN.      * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey
4212          wptCardDlg.cpp (free_pincb): New.      support. Flag to disable all hotkeys. Reload new hotkeys (in the case
4213          (card_keygen_dlg_proc): Pin callback implemented.      they changed). Load the registry entry on startup.
4214          Simple check for the e-mail address.      * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the
4215          (card_edit_dlg_proc): End the dialog if no changes were made.      stored registry entries.
4216    
4217          * Expanded GPGME passphrase interface to work both with PINs  2001-05-13  Timo Schulz <[email protected]>
4218          and passphrases.  
4219        * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist
4220  2003-10-21  Timo Schulz  <[email protected]>      the function create it.
4221        (set_reg_winpt_prefs): Use the new function to set the subkey values.
4222          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase      All functions now return WPTERR_REGISTRY instead of 1.
4223          was wrong, delete the cache item (if available).      Add some error handling to prevent errors in the registry.
4224          * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.      * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard
4225          * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.      hotkeys and the caching time.
4226          * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'  
4227          flag to zero.  
4228            2001-05-12  Timo Schulz <[email protected]>
4229    
4230  2003-10-21  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption
4231        call.
4232          * wptClipDecryptDlg.cpp (list_recipients): New.  
4233          (algo_from_list): New.  2001-05-11  Timo Schulz <[email protected]>
4234          (clip_decrypt_dlg): New concept to list all recipients.  
4235          * wptFileManager.cpp (fm_list_keys): New.      * wptMainProc (wpt_main_proc): Change all related menu entries from
4236          (fm_decrypt): Same changes as for the clipboard decryption.      Encrypt & sign to Sign & Encrypt. Added the command to the current
4237        window menu and the handling of the window messages.
4238  2003-10-23  Timo Schulz  <[email protected]>      * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.
4239        * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT
4240          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output      preferences in the registry.
4241          if the error is unknown.      (get_reg_winpt_prefs): Read all preferences from the registry into
4242          (clip_sign_dlg_proc): Likewise.      the options context.
4243          (clip_signenc_dlg_proc): Likewise.      * WinPT.cpp (WinMain): Read in the registry preferences at the begin
4244          (clip_import_dlg_proc): Likewise.      and store it.
4245        * wptAgent.cpp (agent_init): Check if the environment variable
4246  2003-10-24  Timo Schulz  <[email protected]>      GPG_AGENT_INFO is set, otherwise set it.
4247        (agent_is_running): Check wether the agent is running.
4248          * Implemented a better logging system. If the return code      (agent_start): Automated function that read all needed information
4249          of GPG is != 0 and the error is not known, display the errors      from global variables.
4250          from stderr.  
4251    2001-05-10  Timo Schulz <[email protected]>
4252          * wptGPGME.cpp (logging_cb): New.  
4253        * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve
4254  2003-10-26  Timo Schulz  <[email protected]>      the handle of the specified window.
4255        * wptAgent.cpp (agent_timer_proc): Changed the agent interface
4256          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.      to window messages instead of socket connections.
4257        * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog
4258          * Changed the code at several other places to support the new logging      and menu entry.
4259          scheme.      * wptPreferencesDlg.cpp: New.
4260    
4261    2001-05-09  Timo Schulz <[email protected]>
4262  2003-10-29  Timo Schulz  <[email protected]>  
4263        * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.
4264          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.      (gpga_readn): Read 'n' bytes from a socket.
4265        (gpga_open): Open the interface to the GPG-Agent.
4266          * Create a new interface for an interactive card callback. GPG      (gpga_close): Close the GPG-Agent socket.
4267          provides card control status messages if the wrong card is inserted.      (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.
4268        (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,
4269          * wptCardManager.cpp (card_cb_dlg_proc): New.      this keys will be remove from the GPG-Agent cache.
4270          (card_callback): New.      (agent_delete_fpr): Remove a fingerprint from the cache.
4271        (agent_init): Clear the cache.
4272          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use      (agent_timer_proc): Remove all stored passphrases which were
4273          the ASCII functions and not the Unicode function names. Thanks to      requested through the chache.
4274          Werner for pointing this out.  
4275    2001-05-08  Timo Schulz <[email protected]>
4276          * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the  
4277          serial card number is shown to help the user to find the right card.      * wptKeyserver.cpp (wsock_init): Replace the kserver init
4278        code which initialized the Wsock2 interface.
4279          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.      (wsock_end): Ditto.
4280        * wptAgent.cpp: Remove the passphrase caching code and add
4281  2003-10-02  Timo Schulz  <[email protected]>      the GPG agent code.
4282    
4283          * Prepare test release.  2001-05-05  Timo Schulz <[email protected]>
4284          * wptGPGCmds.h: New from GPG 1.3.4-cvs.  
4285        * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve
4286  2003-11-13  Timo Schulz  <[email protected]>      the current window handle. This code doesn't use the hook DLL.
4287        Thanks to Oliver Nittka for his patch.
4288          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.      * wptErrors.cpp (winpt_strerror): Fixed a small typo.
4289          * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.      * wptGPG.cpp (check_last_gpg_access): Remove debug code.
4290          Thanks to Achim.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading
4291          * Change PIN interface. Now it is easier when an operation requires      scheme to prevent reloading the cache twice.
4292          both PINs.  
4293          * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs  2001-05-04  Timo Schulz <[email protected]>
4294          to change card attributes. Do not ask me why, but now the user  
4295          needs to enter 2 PINs.      * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.
4296        * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):
4297          Name parts were swapped, now they have the right order again.      Move all the GPGME specific code to the main dialog. Now only
4298        the context values are set.
4299  2003-11-14  Timo Schulz  <[email protected]>      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust
4300        code.
4301          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.  
4302    2001-05-02  Timo Schulz <[email protected]>
4303  2003-11-28  Timo Schulz  <[email protected]>  
4304        * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional
4305          * Remove all support for ElGamal sign+encrypt keys.      subkeys for the mainkeys.
4306        * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground
4307          There is a flaw in GPG which makes all such keys useable and      window flag.
4308          they are comprised even if one signature they made is accessable.      * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the
4309          And due to the fact the key is self signed, such a sig is always      addkey feature.
4310          available for the public.  
4311    2001-05-01  Timo Schulz <[email protected]>
4312          We warn the user at startup if such keys were found!  
4313        * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence
4314          * wptMainProc.cpp (elgamal_warn_dlg_proc): New.      to a window.
4315          * wptGPGME.cpp (count_insecure_elgkeys): New.      (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.
4316          * WinPT (WinMain): Use it here.      (wnd_msg_paste): New. Send the CTRL+v key sequence to a window.
4317        (wnd_msg_em_set_pos): Manipulate an edit multiline control text pos.
4318  2003-11-29  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Fix some message string for
4319        the hotkey handling. Quit the program if a registration procedure
4320          * wptMAPI.cpp (mapi_init): New.      failed.
4321          (mapi_deinit): New.      * wptErrors.cpp (log_box): Improved log handling to dump states
4322          (mapi_send_pubkey): New.      of variables during regression tests.
4323          * wptKeyManager.cpp (km_send_to_mail_recipient): New.  
4324          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support  2001-04-30  Timo Schulz <[email protected]>
4325          to send the public key via MAPI to a recipient.  
4326          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind      * wptClipEditDlg.cpp: Now the dialog uses the Courier font to
4327          the secret key cache so it's not at the end.      enhance the format of keys and other GPG data.
4328          (keysign_dlg_proc): Issue a warning when no secret key was      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod
4329          found which could be used for signing the key.      flag after receiving a key.
4330          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when
4331          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.      no listbox entry was choosen.
4332        * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to
4333  2003-12-10  Timo Schulz  <[email protected]>      the NLS suite.
4334        * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag
4335          * GPGME support to change key preferences.      instead of refresh the keycache.
4336          * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.  
4337          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.  2001-04-29  Timo Schulz <[email protected]>
4338    
4339        * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.
4340  2003-12-14  Timo Schulz  <[email protected]>      (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the
4341        adduid command.
4342          * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.      * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize
4343          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.      the dialog with a KEY structure that holds the keyid and the userid.
4344          (do_editkey_setpref): Implement updpref command.      * wptWndHook.cpp: Remove the global context and use instead of it
4345        static variables. Put all static variables into the SHARED data
4346        segment in the DLL.
4347  2003-12-23  Timo Schulz  <[email protected]>  
4348    2001-04-28  Timo Schulz <[email protected]>
4349          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove  
4350          ElGamal s+e support. Oops, this should be already done.      * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.
4351          * wptGPGME.cpp (keycache_init): Sync both key caches. In other      So it's easier to update GPGME and we can use NLS to translate
4352          words transfer some flags from the sec-cache to the pub-cache.      error strings.
4353          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the      * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code
4354          key sign procedure. If it is already signed, the process      because we only use it here.
4355          sometimes hangs.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'
4356        feature to the edit-key interface.
4357  2003-12-30  Timo Schulz  <[email protected]>  
4358    2001-04-27  Timo Schulz <[email protected]>
4359          * fixed the GPG edit-key commands sign and addrevoker.  
4360        * wptCurrWnd.cpp (get_window_contents): Change the code for the last
4361  2003-12-31  Timo Schulz  <[email protected]>      window concept. Thanks to Oliver.
4362        (set_window_contents): Add some stuff to set the position if the
4363          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort      current window is an edit control.
4364          the list otherwise the index is wrong.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'
4365          * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set      stuff.
4366          a signature expire date.      * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to
4367        create a new user id for a GPG key.
4368  2004-01-03  Timo Schulz  <[email protected]>  
4369    2001-04-26  Timo Schulz <[email protected]>
4370          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow  
4371          to import secret keys.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various
4372        edit-key commands.
4373  2004-01-04  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit
4374        key code.
4375          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.  
4376          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas  2001-04-25  Timo Schulz <[email protected]>
4377          and minor changes.  
4378          * wptListView.cpp (listview_sort_items): Likewise.      * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME
4379          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.      callback system to pass the keyedit information to GPG.
4380          (regist_sep_wnd): Factored out some code.      * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.
4381    
4382  2004-01-22  Timo Schulz  <[email protected]>  2001-04-24  Timo Schulz <[email protected]>
4383    
4384          * Remove all internal card reader config. It's up to the      * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview
4385          user to do this. It would be too error proune to offer it.      item and set it to zero.
4386          * wptCard.h: Removed all card driver stuff.      * wptSignDlg.cpp (sign_dlg_proc): Ditto.
4387          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ      * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.
4388          between the admin and the user (normal) PIN.      * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.
4389        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.
4390  2004-01-23  Timo Schulz  <[email protected]>      (keymisc_dlg_proc): Provide the functionality to delete key pairs
4391        secret+public.
4392          * wptCardDlg.cpp (check_pin_len): New. Check if the      * wptWndHook.cpp (is_winpt_wnd): Remove this function and put
4393          PIN is long enough and give an appropriate error.      all code into (check_wnd).
4394          (card_changepin_dlg_proc): Use the new check function.      (check_wnd): Check if the window doesn't is a application related
4395        window.
4396  2004-01-25  Timo Schulz  <[email protected]>  
4397    2001-04-23  Timo Schulz <[email protected]>
4398          * WinPT.cpp (WinMain): Silently die when an instance is already  
4399          running. Do not confuse the user with a message. Suggested by      * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality
4400          Sebastian.      is not needed because all dialog windows are top level windows.
4401          * wptKeyManager.cpp (delete_keys_from_cache): New.  
4402          (km_delete_keys): Use it here. Thanks to Achim.  2001-04-22  Timo Schulz <[email protected]>
4403    
4404  2004-01-28  Timo Schulz  <[email protected]>      * wptGPG.cpp (check_last_gpg_access): Reset switch before testing
4405        the condition.
4406          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued      * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate
4407          if keys on the card exist but the user does not said overwrite.      all children windows.
4408        (find_parent_wnd_proc): New. Callback to enumerate all parent windows.
4409          Make sure the expire date is not in the past.      (find_window): New. Return if the specified windows as found.
4410        * wptW32API.cpp: (dialog_box_param): New. Alias with the additional
4411          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file      feature to check if the dialog already exist (and then preventing
4412          lock twice. Not sure if this fixes some other problems but it      the creation).
4413          was definitely a bug.      * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with
4414        then new dialog_box_param function. Thanks to Martin who told me
4415          * wptMapi.cpp (mapi_init): Make sure all function ptrs are      about this dialog problem.
4416          initialized otherwise bail out.      * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.
4417          (mapi_send_message): New. Interface to allow to send an      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the
4418          encrypted mail with zero ore more encrypted attachments.      new signature buttons.
4419          (secure_attachment): New.  
4420          (parse_recipients): New.  2001-04-21  Timo Schulz <[email protected]>
4421    
4422  2004-02-02  Timo Schulz  <[email protected]>      * wptWndHook.cpp (install_cbt_hook): Remove the thread because the
4423        system already is into a DLL.
4424          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use
4425          is long enough. The same check for the mail address.      instead of it a button to check the key signatures.
4426        * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp
4427          Thanks to Achim.      from the given gpg object.
4428        (check_last_gpg_access): New. Compare the last file timestamp with the
4429  2004-02-03  Timo Schulz  <[email protected]>      new timestamp.
4430        (init_gpg_table): New. Initialize the table with gpg objects who shall
4431          * WinPT.cpp (check_crypto_engine): New. Factor out common code.      be watched.
4432          (WinMain): Check the crypto engine after the first start.      (keyring_check_last_access): Use the new code.
4433        * wptCurrWnd.cpp (set_window_contents): Restore the window if it is
4434          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is      now iconic.
4435          issued if the values could not stored. Revamped the core.      * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the
4436        current window stuff.
4437          * Removed the last appearance of the GPG agent support.  
4438    2001-04-17  Timo Schulz <[email protected]>
4439          * wptGPG.cpp (init_gnupg_table): Do not use static buffers.  
4440          (free_gnupg_table): Free memory.      * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window
4441        belongs to the taskbar area.
4442          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the      (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.
4443          ctx pointer get malloced and set the contents to zero.      (cbt_proc): Change code to include both functions.
4444        * wptCurrWnd.cpp (get_window_contents): Add switch if we use the
4445        foreground or the CBT window.
4446  2004-02-04  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the
4447        current window mode set the no_cbt variable.
4448          * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.      * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring
4449        was modified by an external program.
4450  2004-02-05  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external
4451        keyring changes.
4452          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle  
4453          CMD_DISHOTKEYS. Thanks to the user who reminded me.  2001-04-16  Timo Schulz <[email protected]>
4454          * wptMainProc.cpp (spawn_cryptdisk): New interface to  
4455          the Cryptdisk application.      * wptWndHook,cpp (cbt_proc): Compare process ids to differ between
4456        WinPT and normal windows.
4457  2004-02-08  Timo Schulz  <[email protected]>      (install_cbt_hook): Add pid to the context.
4458    
4459          * wptCryptdisk.{cpp,h}: New. Support for the extended  2001-04-14  Timo Schulz <[email protected]>
4460          filedisk application.  
4461          * wptMainProc.cpp (winpt_main_proc): Likewise.      * wptCurrWnd.cpp: (get_window_contents): Add an event to switch
4462          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.      the windows. This is needed by the current code.
4463        (set_window_contents): Ditto.
4464  2004-02-09  Timo Schulz  <[email protected]>      * wptWndSwitchDlg.cpp: (wndswitch_dlg_proc): Create a hidden dialog
4465        and force it to the foreground. This is the event needed by the code
4466          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.      above.
4467          (do_reaping): New. Release the list if all items are 'expired'.      (create_wndswitch_event): Execute the dialog.
4468          (cryptdisk_mount_dlg_proc): New.      * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey
4469          (init_drives): New.      section. Add message entries for the code.
4470          * wptMainProc.cpp (cryptdisk_proc): Renamed from...      * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE
4471          (handle_cryptdisk): this. And filled with life.      mailer code.
4472        (insert_window_from_clip): Ditto.
4473  2004-02-12  Timo Schulz  <[email protected]>      * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add
4474        the event to switch the windows.
4475          * wptErrors.cpp: New error codes for the cryptdisk feature.      (oe_get_message): Ditto.
4476          * wptCryptdisk.cpp (do_dispatch): Better error handling.  
4477          (cryptdisk_mount_dlg_proc): Use it here.  2001-04-13  Timo Schulz <[email protected]>
4478          (cryptdisk_umount_dlg_proc): Likewise.  
4479          (init_drives): Use system list.      * wptMailPlugin.cpp: (oe_set_message): Change the id's for
4480        the attach_thread_input.
4481          Localized all strings.      (oe_get_message): Ditto.
4482        * wptCurrWnd.cpp: (get_window_contents): Ditto.
4483  2004-02-17  Timo Schulz  <[email protected]>      (set_window_contents): Ditto.
4484    
4485          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt  2001-04-12  Timo Schulz <[email protected]>
4486          to the signers key. Suggested by Alexander.  
4487          Use new keycache system, we use the public key part of the      * wptHotkeys.cpp: (register_single_hotkey): Add code for the current
4488          cache because it has all flags set.      window stuff.
4489          * wptGPG.cpp (default_key_from_cache): Use new cache system.      * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window
4490          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.      hotkeys.
4491        * wptW32API.cpp: (attach_thread_input): Split up the functions into
4492        two parts. The attach flags is always set.
4493  2004-02-18  Timo Schulz  <[email protected]>      (detach_thread_input): See above. The attach flags is never set.
4494        * wptCurrWnd.cpp: New. Code for the current window stuff.
4495          * Modify the cryptdisk code for crosscrypt 0.4.1.      (get_window_contents): Extract the text from the given window to
4496          * wptCryptDisk.cpp (do_mount): Add key algorithm param.      the clipboard.
4497        (set_window_contents): Insert clipboard into the given window.
4498  2004-02-21  Timo Schulz  <[email protected]>  
4499    2001-04-09  Timo Schulz <[email protected]>
4500          * wptCryptdisk.cpp (cryptdisk_cleanup): New.  
4501          (is_nt4): Because my Platform-SDK is too old I need to load      * wptGPG.cpp: (check_line): Ignore empty lines.
4502          some prototypes dynamically.      (check_gpg_options): Ditto.
4503          (init_drives): Return the first useable drive letter if  
4504          called with appropriate parameters.  2001-04-09  Timo Schulz <[email protected]>
4505          * wptMainProc.cpp (winpt_main_proc): Use it here.  
4506        * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet
4507  2004-02-22  Timo Schulz  <[email protected]>      type. Kludge for decrypt/verify.
4508        * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the
4509          * PTD: Cryptdisk seems to have problems with locking. Use      code into the decrypt routine.
4510          a forced flag to tell the code if it should bail out or      * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start
4511          ignore locking errors.      the key management after import.
4512    
4513          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new  2001-04-07  Timo Schulz <[email protected]>
4514          locking code.  
4515          (cryptdisk_new_dlg_proc): Adjust size of the volume.      * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.
4516        (agent_destroy): Ditto.
4517  2004-02-24  Timo Schulz  <[email protected]>      (agent_passphrase_cache): Ditto.
4518        (agent_passphrase_remove): Ditto.
4519          * WinPT.cpp (WinMain): Call a selftest check procedure to      (agent_passphrase_get): Ditto.
4520          make sure all cryptographic code works as expected.  
4521    2001-04-06  Timo Schulz <[email protected]>
4522  2004-02-25  Timo Schulz  <[email protected]>  
4523        * wptGPG.cpp: (check_gpg_path): Fix a small error.
4524          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and      * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the
4525          do not mix the names in the different menus.      first time a user started WinPT.
4526        * wptClipboard.cpp: (clip_isalready_secured): Check the begin and
4527          * wptSigList.cpp: Support to show the signature class.      end PGP header.
4528    
4529          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo  2001-04-06  Timo Schulz <[email protected]>
4530          box when there is no secret key available.  
4531        * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.
4532          (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
4533          revoker.      ownertrust dialog.
4534    
4535          * wptKeylist.cpp (get_key_trust): New.  2001-04-04  Timo Schulz <[email protected]>
4536          (do_addkey): Use it here.  
4537        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static
4538  2004-02-26  Timo Schulz  <[email protected]>      passphrase. Now a callback context is used.
4539        (passphrase_cb): Ditto.
4540          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error      (clip_decrypt_dlg): Ditto.
4541          if no recipient was selected.      * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.
4542        (install_cbt_hook): Modify for the new thread model.
4543          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog      (remove_cbt_hook): Ditto.
4544          is destroyed. This fixes the bug that the dialog sometimes exist even      * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.
4545          after the procedure ended.      (delete_critical_section): Ditto.
4546        (lock): Ditto.
4547          * wptProgressDlg.cpp (progress_callback): Change the if-then-else      (unlock): Ditto.
4548          struct to prevent zombie dialogs.  
4549    2001-04-02  Timo Schulz <[email protected]>
4550          * wptKeyserver.cpp: Removed unused prototypes.  
4551        * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.
4552  2004-02-29  Timo Schulz  <[email protected]>      * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only
4553        contains valid keys.
4554          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.
4555    
4556          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself  2001-03-31  Timo Schulz <[email protected]>
4557          so we are not allowing to sign ourself.  
4558        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,
4559          * wptSigList.cpp (siglist_add_key): Support for the signature      the GPG default key will be used.
4560          flags (local, non-revocably, ...).  
4561    2001-03-30  Timo Schulz <[email protected]>
4562          * Key signing with GPG 1.2.x should work again. Hopefully.  
4563        * wptW32API.cpp: (new_strdup): Remove.
4564  2004-03-02  Timo Schulz  <[email protected]>      * wptW32API.h: Ditto.
4565        * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.
4566          * wptGPG.cpp (check_keyring): Handle the case that the keyring      * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.
4567          is set in the gpg.conf file and the pubring.gpg file is zero bytes.  
4568    2001-03-28  Timo Schulz <[email protected]>
4569          (gnupg_backup_keyrings): Support backup of keyrings which were set  
4570          in gpg.conf. Thanks to the user who reminded me of this problem.      * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):
4571        Added the keyid to the "no trust" message.
4572          (gnupg_check_file_ext): Make check not case sentensive.      * wptKeyserverDlg.cpp: (check_pattern): New:
4573        Do some sanity checks of the search pattern.
4574          * (sfree_if_alloc): Overwrite the memory with zeros before freeing      * wptMainProc.cpp: (wpt_main_proc): Add agent support.
4575          it. This only works with c-strings! Use it everywhere we handle      * wptHotkey.cpp: Add agent support.
4576          sentensive information (passphrases).  
4577    2001-03-21  Timo Schulz <[email protected]>
4578          * Try to improve the usability with better menu names and new  
4579          ordering.      * WinPT.cpp: (WinMain): Re-activate the enable debug switch.
4580        * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.
4581          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.  
4582    2001-03-20  Timo Schulz <[email protected]>
4583          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now  
4584          it is part of the WinPt about dialog. This way we can minimize the      * wptClipDecryptDlg.cpp: Rewrote
4585          elements in the popup menu.  
4586    2001-03-19  Timo Schulz <[email protected]>
4587  2004-03-04  Timo Schulz  <[email protected]>  
4588        * wptVerifyList.cpp: New control for the verify dialog.
4589          * wptKeyserver.cpp (finger_recvkey): Error if key was not found      * wptClipVerifyDlg.cpp: Rewrote
4590          or garbled.  
4591    2001-03-18  Timo Schulz <[email protected]>
4592          * wptGPG.cpp (gpg_check_permissions): Take care of the entries  
4593          in gpg.conf.      * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.
4594        * wptAgent.cpp: New: Experimental passphrase caching.
4595          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select  
4596          the signer. Suggested by Sebastian.  2001-03-16  Timo Schulz <[email protected]>
4597    
4598          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to      * wptDlgs.h: Add new dialog callback function.
4599          this file.      * wptKeysigDlg.cpp: New. Key signature listing dialog.
4600          (seclist_free): Likewise.  
4601          (seclist_select_key): Likewise.  2001-03-15  Timo Schulz <[email protected]>
4602    
4603          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was      * wptClipEncryptDlg.cpp: Fix translation.
4604          already set.      * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).
4605        * wptKeymiscDlg.cpp: Fix the key deleting stuff.
4606  2004-03-07  Timo Schulz  <[email protected]>  
4607    2001-02-27  Timo Schulz <[email protected]>
4608          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats  
4609          dummy keyrings with a size of zero in the homedir.      * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.
4610        * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):
4611          (gpg_check_permissions): Check for read-only keyrings and add code      Fixed.
4612          for this case.  
4613    2001-02-25  Timo Schulz <[email protected]>
4614          This problem fixes a lof of other problems related to the OpenPGP  
4615          parsing stuff for the key cache.      * wptGPGPrefsDlg.cpp: Add some new translation strings.
4616        * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.
4617          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.      * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.
4618        * wptClipImportDlg.cpp: Finished basic interface.
4619  2004-03-08  Timo Schulz  <[email protected]>  
4620    2001-02-24  Timo Schulz <[email protected]>
4621          * wptGPG.cpp (gnupg_import_keyrings): cleanups.  
4622        * wptGPG.cpp: (check_gpg_path): Fix a bug.
4623          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows     (check_gpg_options): Fix some bugs.
4624          CP.  
4625          (wincp_to_utf8): Likewise.  2001-02-22  Timo Schulz <[email protected]>
4626          (conv_charset): Now internal and static.  
4627        * wptGPG.cpp: (check_line): New. Check if the line contains a valid
4628          * wptUTF8.h: New prototypes and remove the old prototypes.      gpg argument.
4629        (check_gpg_options): New. Parses each buffer line to check_line().
4630          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.  
4631    2001-02-21  Timo Schulz <[email protected]>
4632    
4633  2004-03-11  Timo Schulz  <[email protected]>      * wptGPG.cpp: Fix the check_gpg_optfile() code.
4634            (gpg_errstr): Define some error constants to be more verbose.
4635          * The DLL is now complety C-source.          (set_gpg_options): New. Manipulate the options file.
4636            (get_gpg_options): New. Read in the options file.
4637  2004-03-15  Timo Schulz  <[email protected]>      * wptFile.cpp: (get_file_size): New.
4638        * wptGPGOptDlg.cpp: New. Dialog for editing the options file
4639          * Decrypt list box has now a vertical scroll bar.  
4640    2001-02-20  Timo Schulz <[email protected]>
4641  2004-05-14  Timo Schulz  <[email protected]>  
4642        * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.
4643          * WinPT.cpp (check_crypto_engine): Due to some      * wptClipImportDlg.cpp: Add some new code.
4644          internal  GPG changes the min. version for smart card  
4645          support is now 1.3.6.  2001-02-19  Timo Schulz <[email protected]>
4646    
4647          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix      * wptRegistry.cpp: (is_installed): Remove.
4648          handling. Thanks to the folks who reported this via SF.net.      (regist_inst_winpt): Add selfcheck.
4649        (regist_inst_gpg): New. Add gpg releated registry entries.
4650          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.      (regist_inst_mo): New. Add nls related path.
4651          Thanks to the folks on winpt-users who reported it.      (get_reg_entry), set_reg_entry(): Modify to be more flexible.
4652        (set_reg_entry_gpg): Handy functions for get_reg_entry.
4653          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of      (set_reg_entry_mo): Ditto.
4654          the hotkeys are disabled.      (get_reg_entry_gpg): Ditto.
4655        (get_reg_entry_mo(): Ditto.
4656          * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.      * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.
4657        * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.
4658          * wptFileManager.cpp (fm_get_file_type): Do not parse the entire      include keyring entries (2x)
4659          file if the size is >= 256MB.      (check_gpg_path): Include the check_gpg_optfile() check.
4660    
4661  2004-05-31  Timo Schulz  <[email protected]>  2001-02-17  Timo Schulz <[email protected]>
4662    
4663          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the      * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from
4664          'X' close button. Noted by a friendly user.      the registry.
4665                (set_reg_entry): Set a gnupg registry key.
4666          Disable 'Save' button.      * wptGPG.cpp: Modify all function for the use with get_reg_entry().
4667        * WinPT.cpp: Change the way for the gpg searching mechanism.
4668          * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.      * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.
4669        * wptClipImportDlg.cpp: (key import dialog): New.
4670          * wptFileManager.cpp (fm_set_status): Do not use the data file name      * wptKeylistElement.cpp:
4671          for signatures but keep the original file name.      (wpt_lv_implist_build): Build up the key import list.
4672        (wpt_lv_implist_add_key): Insert a key into the import list.
4673          (fm_verify_pasted_detsig): Try to verify detached signatures from      (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.
4674          the clipboard.  
4675    2001-02-10  Timo Schulz <[email protected]>
4676  2004-06-02  Timo Schulz  <[email protected]>  
4677        * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.
4678          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error      * wptKeylistElement.cpp: New.
4679          if there is no clipboard data.      * wptListElement.cpp: Remove.
4680        * wptW32API.cpp: Insert all lv_*** functions.
4681          Release memory in case of an error.      * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.
4682        (wpt_lv_keylist_release_keys): Ditto.
4683          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.      * wptW32API.cpp: (w32_get_thread_id): New.
4684        (w32_attach_thread_input): New.
4685          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.      * wptMailPlugin.cpp: (oe_get_message): Add thread attach mechanism.
4686        (oe_get_message): Add thread attach mechanism.
4687        (oe_encrypt): Modify for the attach treach mechanism.
4688  2004-06-08  Timo Schulz  <[email protected]>      Add sanity check for recipients.
4689    
4690          * wptInet.cpp: New.  2001-02-07    Timo Schulz <[email protected]>
4691          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http  
4692          transfers.      * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.
4693          * wptKeyManager.cpp (km_http_import): New.      * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.
4694    
4695    2001-02-04    Timo Schulz <[email protected]>
4696  2004-06-12  Timo Schulz  <[email protected]>  
4697        * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.
4698          * wptInet.cpp: Updated.      * wptMainProc.cpp: (wpt_main_proc):
4699          * wptKeyManager.cpp (km_http_import): Use http_send_request2() to      Remove ciphertext checks for signing and encrypting.
4700          parse the URL.      (allow double encryption).
4701          * wptCommonDlg.cpp (http_file_dlg_proc): New.  
4702          (get_http_file_dlg): New.  2001-02-03  Timo Schulz <[email protected]>
4703    
4704  2004-06-19  Timo Schulz  <[email protected]>      * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.
4705        (oe_find_addr_window): Ditto.
4706          * wptInet.cpp: Renamed to ...      (oe_find_main_window): Ditto.
4707          * wptHttp.c: ... this.  
4708          * wptKeyManager.cpp (km_http_import): Release 'p' not too early.  2001-02-02  Timo Schulz <[email protected]>
4709          * WinPT.cpp (WinMain): If there is a problem with the homedir,  
4710          jump to the first start settings.      * wptW32API.cpp: (w32_hit_key): New.
4711        (w32_rel_key): New.
4712  2004-07-11  Timo Schulz  <[email protected]>      (w32_copy_to_clip): New.
4713        (w32_insert_from_clip): New.
4714          * Bug fix for the validity revoked status. Now it is 'revoked'      (w32_get_clip_text): New.
4715          and not 'unknown' any longer.      (w32_set_clip_text: New.
4716        (w32_show_if_icon): New.
4717          * Feature to disable encryption. This might be useful for filetypes  
4718          GPG does not recognize as compress (movies, ...).  2001-02-01 Timo Schulz <[email protected]>
4719    
4720          * wptFileManager.cpp (fm_get_file_type): Skip packet detction if      * wptW32API.cpp: (w32_get_edit_text): New.
4721          the file is large and it has no openpgp extension.      (w32_set_menu_text): New.
4722        (w32_strdup): New.
4723  2004-07-12  Timo Schulz <[email protected]>      * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.
4724        * Create all dialogs windows in the foreground.
4725          * wptRegistry.cpp: Support for disable compression of multi-media files.  
4726          (set_reg_winpt_single): New.  2001-01-31  Timo Schulz <[email protected]>
4727          (get_reg_winpt_single): New.  
4728        * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.
4729          * wptFileManager.cpp (is_multi_media): New.      * wptW32API.cpp: New.
4730          (fm_encrypt): Disable compression of multi-media files.      * WinPT.cpp: (WinMain): Change the keyring checking code.
4731          (fm_state_new): Set comment to indicate armored files were generated  
4732          by WinPT. This is a replacement due to the fact the WinPT string is not  2001-01-29  Timo Schulz <[email protected]>
4733          added in the 'Version' for larger files.  
4734        * wptClipboard.cpp: (clip_is_already_secure):
4735          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.      Modify the pgp data detection.
4736    
4737  2004-07-13  Timo Schulz  <[email protected]>  2001-01-28  Timo Schulz <[email protected]>
4738    
4739          * wptFileManager.cpp (fm_assume_onepass_sig): New.      * wptHotkey.cpp: (register_hotkey): Hotkey registration.
4740          Thanks to Vedaal who found out that armored one-pass sigs are not      (unregister_hotkey): Hotkey removing.
4741          correctly recognized.      * wptHokey.h: New.
4742        * wptWndHook.cpp:
4743          (ask_filename): New.      (wpt_cpt_proc): Window hook to save the current windows.
4744          Again thanks to Vedaal who suggested to ask for a new output name      * wptWndHoo.h: New.
4745          for the case the user does not want to overwrite the file.      * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.
4746        * WinPT.cpp: (WinMain): Add hotkey registration.
4747          (fm_encrypt): Use it here.  
4748          (fm_decrypt): Likewise.  2001-01-21  Timo Schulz <[email protected]>
4749          (fm_sign): Likewise.  
4750        * wptNLS.cpp: ported to C++.
4751          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry      (gettext): Remove CP850 to ISO88591 conversation.
4752          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.99

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26