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

Diff of /trunk/Src/ChangeLog

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

revision 8 by twoaday, Mon Apr 4 13:29:25 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          * wptGPG.cpp (create_groupdb): Only close the file handling if it          * wptW32API.cpp (get_folder_dlg): New.
1744          really exists. Thanks to Mark.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select
1745          (gpg_check_homedir): Applied the patch. Now we're a little stricter          the folder for the home directory.
1746          about the homedir checks.          * wptKeyManager.cpp (km_update_default_key_str): Return length
1747          (check_homedir): Fixed a possible memory leak.          of the string.
1748          * WinPT.cpp (WinMain): Check the homedir functions to exit the program          (km_complete_status_bar): Use the offset of the default
1749          if      we've found some problems.          key string so it is not appened twice.
1750          * wptErrors.cpp (winpt_strerror): New value if a directory could not          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.
1751          created.          * wptCard.h: New.
1752          * wptMainProc (winpt_main_proc): Use new code for the current window mode.          * wptCardDlg.cpp (new_card_driver): New.
1753          * wptCurrWnd.cpp (get_curr_wnd): Ditto.          (load_card_driver): New.
1754          (get_window_contents): Always set focus to the current window.          (free_card_driver): New.
1755            (card_config_dlg_proc): If the reader is configured, load the
1756  2002-03-31      Timo Schulz <[email protected]>          values. This is needful to change the driver later.
1757            (gpg_load_scard): Use driver as a parameter.
1758          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to          * wptMainProc.cpp (winpt_main_proc): Load card driver and
1759          select the key used for signing.          unload it after use.
1760          * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.  
1761          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).  2003-09-28  Timo Schulz  <[email protected]>
1762          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after  
1763          fetching keys via HKP and try to update the Gpgmekey inside.          * wptCardDlg.cpp (card_edit_dlg_proc): New.
1764          * wptVerifyList.cpp (verlist_add_sig): Check if the key context was          (gpg_load_scard): New. Try to use GPG load the card info.
1765          set inside the signature. Fixes some segfaults related to the HKP key          (print_fpr): New. Print beautified fingerprint.
1766          fetching during verification. Thanks to Julian. And force to use UTF8          (card_status): New. Set all dialog fields with the values from
1767          for user ID's.          the card.
1768          * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,          (prepare_dialog): New. Load combo boxes with pre-defined strings.
1769          prevent that the dialog is loaded and ask for the passphrase directly.  
1770    
1771    2003-09-25  Timo Schulz  <[email protected]>
1772  2002-04-05      Timo Schulz <[email protected]>  
1773            * wptProgressDlg.cpp (progress_cb_thread): New.
1774          * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.          (progress_callback): Use asynchron code.
1775          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.          * wptFileManager.cpp (fm_parse_files): Implement progress callback.
1776          * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.  
1777          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.  
1778    2003-09-25  Timo Schulz  <[email protected]>
1779  2002-04-19      Timo Schulz <[email protected]>  
1780            * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.
1781          * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.          (check_key): New.
1782            Removed the old Secret Key List dialog. Now the key can be directly
1783  2002-04-23      Timo Schulz <[email protected]>          chose in the dialog.
1784            (seclist_init): New.
1785          * wptRFC2440.cpp: Removed. We now use the OpenCDK package.          (seclist_destroy): New.
1786          * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.          (seclist_select_key): New.
1787          (fm_encrypt): Modified code to allow sign & encrypt.          * wptFileManager.cpp (fm_sign): Ask for output file if needed.
1788          (fm_parse_file): Ditto.  
1789          (fm_decrypt): Support for checking signatures.          * Client side implementation of the --enable-progress-filter feature.
1790          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.  
1791            * wptProgressDlg.cpp: Server side implementation.
1792  2002-04-24      Timo Schulz <[email protected]>          (progress_dlg_proc): New. The actual dialog procedure.
1793            (progress_callback): The GPGME wrapper callback.
1794          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.  
1795            2003-09-24  Timo Schulz  <[email protected]>
1796          Changed the way to modify the "Version:" string.  
1797            * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.
1798          * wptKeyserver.cpp (add_node): New.          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.
1799          (kserver_change_proxy): New.          * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from
1800          (kserver_read_config): New.          the menu. We use import internally, but export was not useful and
1801          (kserver_write_config): New.              thus the code were removed.
1802          (kserver_cfgfile_release): New.          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at
1803          (proxy_release): New.          startup when they are not allowed.
1804            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.
1805          * wptProxySettingsDlg.cpp (read_proxy): New.          Make the parsing code much shorter (read).
1806          * wptFileStatDlg.cpp (file_stat_dlg_proc): New.  
1807          * wptFileManager.cpp (fm_list): New.  
1808          (fm_parse_files): Support the new list command.  2003-09-22  Timo Schulz  <[email protected]>
1809    
1810  2002-04-25      Timo Schulz <[email protected]>          * wptSigList.cpp (extract_filename): Make sure there is a '\',
1811            otherwise just dup the string and return.
1812          * wptImplist.cpp (implist_add_key): Catch possible segfault.          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key
1813          * wptVerifyList.cpp (verlist_add_sig): Ditto.          to make the code more readable.
1814          * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.          * Implemented the GPGME part of the new smartcard interface.
1815          * wptKeylist.cpp (find_secret_key): New.          The WinPT interface will be open until the scard stuff is back
1816          (add_key): Use it here.          ported to GPG 1.3.x.
1817          (keylist_add_key): And here.          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.
1818            Several code cleanups.
1819          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent  
1820          to fetch the key.  2003-09-08  Timo Schulz  <[email protected]>
1821    
1822  2002-04-26      Timo Schulz <[email protected]>          * wptRegistry.cpp: Remove some hotkeys to correct index calculation.
1823            (get_reg_winpt_flag): Check buffer first.
1824          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.          (get_reg_winpt_prefs): Support for the new backup system.
1825          * wptKeyUidDlg.cpp: Ditto.          (set_reg_winpt_prefs): Likewise.
1826            * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.
1827  2002-04-27      Timo Schulz <[email protected]>          * wptRegistry.h: Cleaned up the hotkey interface.
1828            * wptPreferenceDlg.cpp (enable_backup_items): New.
1829          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.          (prefs_dlg_proc): Simplified hotkey handling. Use new code.
1830          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for
1831          * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.          im- and export. Use the code directly.
1832          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.          (currwnd_gpg_dlg): Likewise.
1833          (currwnd_gpg_dlg): Ditto.          * wptGPG.cpp (gnupg_backup_keyrings): New.
1834                    (backup_one_file): New.
1835          Now it's possible to parse cleartext signatures which contains an  
1836          encrypted message inside the body.  2003-09-04  Timo Schulz  <[email protected]>
1837    
1838          * wptTextInputDlg.cpp (load_file_contents): New.          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,
1839          (text_input_dlg_proc): Support for choosing the data file.          the packet parsing return value check was wrong again. Now it does
1840            not recognize Word documents as SECKEY or ENCRYPTED any longer.
1841          * wptFileManager.cpp (fm_verify): Support for detached signatures.  
1842          (fm_parse_files): Ditto.  2003-09-03  Timo Schulz  <[email protected]>
1843    
1844            * The secret key listing does not contain any 'validity' or
1845  2002-04-28      Timo Schulz <[email protected]>          '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          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.          from the public key listing.
1848          (set_reg_winpt_prefs): Ditto.  
1849          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.          * wptGPG.cpp (default_key_from_cache): New.
1850          (set_keylist_mode): New.          (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          Implement minimal keylist mode. Suggested by Fabian.          file.
1853    
1854          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.  2003-08-30  Timo Schulz  <[email protected]>
1855          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.  
1856          * wptKeylist.cpp (keylist_add_key): Ditto.          * wptGPG.h: Support for the GPG status messages REVKEYSIG and
1857          (keylist_load): Ditto.          EXPKEYSIG. With this new feature, GPG 1.2.3 is required.
1858          (keylist_build): Ditto.          * Make sure that the signature status does not cause an
1859            segfault.
1860  2002-04-29      Timo Schulz <[email protected]>          * WinPT.cpp: Use new check to detect the GPG version and make sure
1861            it is the minimum.
1862          Adjustments for GPG 1.0.7          * wptGPG.cpp (parse_version_nr): New.
1863            (check_gnupg_engine): Improved. Now it returns the actual version.
1864          * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust  
1865          and ask the user if he knows what he's doing.  2003-08-24  Timo Schulz <[email protected]>
1866          * wptKeyManager.cpp  
1867          (keylist_subclass_proc): Use double click to open the props.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable
1868          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a          dialog controls.
1869          ultimate ownertrust value.  
1870          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for  2003-08-17  Timo Schulz  <[email protected]>
1871          new RSA keys.  
1872            * wptKeyManagerDlg.cpp (keymanager_dlg_proc):
1873  2002-04-30      Timo Schulz <[email protected]>          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The
1874            value was malformed.
1875          Merge ownertrust handling into the keycache. Now GPG outputs the          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.
1876          ownertrust in the key listing which means we can get the ownertrust          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,
1877          value from the keycache.          don't bother the user with an error message. Closes #782751.
1878            * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the
1879          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.          "primary" edit key command.
1880          Please not that this is not the same as the key cache! The key cache          * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is
1881          will be updated when a new key was imported or a subkey was added/changed.          possible to supress the status message. This is useful when the whole
1882          The signature cache only affects the validity of the keys.          keyring will be refreshed.
1883            * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.
1884          Removed the MyGPGME trustlist code. Now we can use the field in the key          (quote_file): Avoid double quotes.
1885          listing to determine the ownertrust (which makes things a lot of easier).          * GPGME support for quoted file names.
1886            (fm_sym_encrypt): Double check password and to additional 8-bit checks.
1887  2002-05-01      Timo Schulz <[email protected]>          * WinPT.cpp (my_acces): Moved to this file..
1888            * wptGPG.cpp: ..here.
1889          * wptKeygenDlg.cpp (fill_keytype_box): New.          (gpg_check_permissions): Renamed from check_permissions and make it global.
1890          (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we
1891          there is full RSA support.          have write access to the keyring for some commands.
1892    
1893          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out  2003-07-22  Timo Schulz  <[email protected]>
1894          what the problem was when no encryption was done.  
1895            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of
1896          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make          the text instead of allocating the maximum.
1897          sure it was not already signed (ALREADY_SIGNED).  
1898    2003-07-13  Timo Schulz  <[email protected]>
1899          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,  
1900          now we also support to sign ultimate trusted keys.          * 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          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button          it would be a bad idea to use such passphrases. And thus we disallow it.
1903          is checked and do not check it.          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.
1904            * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.
1905          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.
1906          box and now we also support the date of the signature.  
1907    2003-07-12  Timo Schulz  <[email protected]>
1908          Applied Rich's spelling and grammer mistakes.  
1909          Fixed a lot of minor spelling mistakes and capital letters for dialogs.          * wptFileManager.cpp (fm_verify): Support for multiple signatures.
1910            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.
1911  2002-05-05      Timo Schulz <[email protected]>          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.
1912            * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.
1913          * Fixed problem with rev certs for imports stats.          (kserver_connect): Likewise.
1914            (kserver_read_config): Likewise.
1915          * Cosmetical changes for the GPGME libraray.          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases
1916            are not equal.
1917  2002-05-06      Timo Schulz <[email protected]>          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to
1918            generate a key pair.
1919          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of  
1920          the buttons.  2003-06-24  Timo Schulz  <[email protected]>
1921    
1922  2002-05-07      Timo Schulz <[email protected]>          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.
1923            Thanks to Alex.
1924          * wptGPG.cpp (check_gpg_engine): New.          * wptKeyManager.cpp (km_delete_keys): Quote the user-id.
1925    
1926          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible  
1927          routines.  2003-06-13  Timo Schulz  <[email protected]>
1928    
1929          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.
1930            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to
1931          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.          the fact the signer is now dymanic and not static.
1932            * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and
1933  2002-05-08      Timo Schulz <[email protected]>          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          * wptKeyserver.cpp (kserver_change_proxy): Check the values.          can revoke v3 keys.
1936          Thanks to njek for reporting it.          (do_editkey_revoke): Clarify command because it can be only used
1937            for secondary keys.
1938  2002-05-30  Timo Schulz <[email protected]>          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error
1939            is issued when no key was selected. Thanks to vedaal.
1940          * wptFileManager.cpp (fm_verify): Corrected the handling  
1941          for detached RSA signatures.  2003-06-11  Timo Schulz  <[email protected]>
1942          (fm_add_sig_stat): Added support for short fingerprints.  
1943            * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the
1944  2002-05-31      Timo Schulz <[email protected]>          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          * wptTrayPop.cpp: Revamped some parts of the code.          * wptGPGME.cpp (get_default_keyid): Removed. Some better code
1947            were added to get_gnupg_default_key.
1948          Changed all status_box functions to show_msg. The advantage  
1949          is that we only wait a fixed time and the user doesn't need  2003-06-10  Timo Schulz  <[email protected]>
1950          to hit the OK key. We should add  the time delay in the preferences.  
1951            * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys
1952          * wptKeyManager.cpp (km_show_photo): New.          are skipped.
1953            (keysign_dlg_proc): Removed some redundant code.
1954  2002-06-07      Timo Schulz <[email protected]>          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if
1955            it is possible to change the passphrase.
1956          * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.  
1957          * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.  2003-06-06  Timo Schulz  <[email protected]>
1958          * wptListView.cpp (listview_select_all): New.  
1959          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning
1960            message and include the user-id.
1961  2002-06-16      Timo Schulz <[email protected]>          * Encryption: use force overwrite (--yes) to make sure there are
1962            no complications with GPG.
1963          Don't put the questions in the message box title bar.          * Import: skip all record types we do not understand.
1964    
1965          * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it  
1966          is really opened. Thanks to Nelson.  2003-06-05  Timo Schulz  <[email protected]>
1967    
1968          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title          * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog
1969          for chaning the passphrase. Suggested by Ed.          shows all involved recipients and also the public key algorithm.
1970            * wptRegistry.cpp (reg_inst_winpt): If the user does not want
1971  2002-08-26  Timo Schulz  <[email protected]>          the extensions, set the entry to "1" so the message is not shown
1972            again.
1973          * wptTypes.h (free_if_alloc, CHECK_BOUND): New.  
1974          * wptClipEditDlg.cpp (gpgopt_dlg_proc): Use free_if_alloc to make sure  2003-06-04  Timo Schulz  <[email protected]>
1975          the memory is really released. Some strict checks for return values.  
1976          Ident file.          * 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          * wptAboutDlg.cpp: Ditto. (ident)          the info of this subkey and not the first.
1979          * wptGPGAboutDlg.cpp: Ditto.          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one
1980          * wptClipDecryptDlg.cpp: Ditto.          bug. Now the indicies are correctly.
1981          (clip_decrypt_dlg): Stricter return value checkings.          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before
1982          Avoid one indent level.          get_file_size is called.
1983            * WinPT.cpp (WinMain): Only check the GPG engine version if there
1984          * wptImportList.cpp (implist_add_key): More strict return value          were no problems with the GPG config. And differ between a problem
1985          checking.          to get the version and if a wrong version were detected.
1986          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.  
1987          (add_key): New key status system.  
1988          (keylist_get_keyflags): New.  2003-06-01      Timo Schulz  <[email protected]>
1989          (keylist_enum_recipients): Simplified and use the new key flags.  
1990            * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...
1991          * wptSiglist.cpp (siglist_add_key): Fix possible overflows.          (KEYDOWN, KEYUP): macros for the functions above.
1992          (verlist_add_sig_log): More stricter checks.  
1993    2003-05-31  Timo Schulz  <[email protected]>
1994          * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.  
1995            * wptKeyManager.cpp (km_key_is_v3): Return if the selected
1996  2002-08-28  Timo Schulz  <[email protected]>          key is an old PGP 2 (v3) key.
1997            * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow
1998          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.
1999          * wptFileMananger.cpp (fm_check_armor_type): Ditto.          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  2002-08-31  Timo Schulz  <[email protected]>          (is_cmd_openpgp): New.
2003    
2004          * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.  2003-05-28  Timo Schulz  <[email protected]>
2005          (check_homedir): Ask the user whether to create the directory.  
2006          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works          * wptKeyManager.cpp (km_set_clip_info): New.
2007          to retrieve missing keys from a HKP server.          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.
2008          (recv_missing_keys): Likewise.          * wptImportList.cpp (implist_build): Some column changes for
2009          * wptPassphraseCB.cpp (passphrase_callback_proc):          the listview control.
2010          Implemented     the "Hide Typing" feature.          (implist_load): Return if secret keys were found.
2011          (hide_typing): New.          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys
2012          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.          were found.
2013          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.          (clip_import_dlg_proc): New message if secret keys were found.
2014          Due to some attacks a MDC error is treated as a fatal error and a  
2015          possible security risk.  
2016          * wptClipImportDlg.cpp (print_import_status): Use a dialog instead  2003-05-25  Timo Schulz  <[email protected]>
2017          of a silly message box. Furthermore the user gets more information  
2018          about the import procedure.          * wptImportList.cpp (implist_add_key): Address charset problem.
2019          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.          * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.
2020          * wptFileManager.cpp (fm_import): Report invalid user ID's.          * wptKeyserver.cpp (set_default_kserver): New.
2021          (fm_verify): Try to guess the data name for detached signatures          (wsock_init): Call the new function.
2022          before we bother the user. When it's found, use it.          (kserver_load_conf): If the FP is invalid, skip to read the file.
2023          * wptKeyManager.cpp (km_file_import): Ditto.          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the
2024            item has a value.
2025  2002-09-01  Timo Schulz  <[email protected]>  
2026    2003-05-24  Timo Schulz  <[email protected]>
2027          * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice  
2028          of the dialog.          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists
2029          * WinPT.cpp (WinMain): Use it here. Reworded the error message.          to allow to use virtual keys (DEL, INS).
2030          * wptGPG.cpp (gpg_import_keyrings): New.          Release the uid control context when the dialog will be destroyed.
2031          Let the user chose the keyrings and then they are copied to the  
2032          homedir. After the procedure, the key cache will be reloaded.  
2033          * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.  2003-05-22  Timo Schulz  <[email protected]>
2034          * wptSigClassDlg.cpp (sig_class_dlg_proc): New.  
2035          (get_sig_class_choice): New.          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current
2036          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable          window mode sign+encrypt. This fixes a couple of other problems.
2037          fingerprint.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the
2038          (keysign_dlg_proc): Added new value for the GPG callback to handle          key when the cache was reloaded.
2039          the signature class.  
2040          * wptKeyUIDDlg.cpp (find_user_id): New. Find the index of the  
2041          userID by calling edit-key with colons.  2003-05-21  Timo Schulz  <[email protected]>
2042          (keyuid_dlg_proc): Use it here.  
2043            * wptSiglist.cpp (siglist_add_key): Only list signatures which are
2044  2002-09-02  Timo Schulz  <[email protected]>          user-id certificates (0x10-0x13) and ignore key and subkey sigs.
2045            c-strings are now handle correctly and decoded into GPGME.
2046          * wptKeyManager.cpp (km_privkey_export): Check return codes and  
2047          some types has been changed.  2003-05-20  Timo Schulz  <[email protected]>
2048          (km_file_export): Likewise.  
2049            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change
2050  2002-09-03  Timo Schulz  <[email protected]>          the passphrase from here to...
2051            * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.
2052          Removed all OpenCDK code from PTD. The code is not tested very  
2053          well and it might contain some errors. Now we used a stripped down  2003-05-19  Timo Schulz  <[email protected]>
2054          version of GnuPG code. This has two advantages. First the code is  
2055          stable and second we can easier port other parts to native GPG code.          * wptPasswdDlg.cpp (create_passwd_dlg): Removed.
2056            (request_passphrase): New.
2057          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.          The passphrase_s context is now internal, all externl function use now
2058          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the          request_passphrase. Changed all callers.
2059          keyring when present to the keycache.          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase
2060          * wptKeyManager.cpp (km_show_photo): Fixes to work again with the          warning and a check for the comment field was added.
2061          modified code.          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which
2062          (km_check_for_seckey): Check substrings of the value because we          has shown the subkeys and the userids.
2063          don't use '**' values any longer.          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.
2064          * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.  
2065          (file_stat_dlg_proc): Uses the new code.  2003-05-17  Timo Schulz  <[email protected]>
2066    
2067  2002-09-04  Timo Schulz  <[email protected]>          * wptFileManager.cpp: Moved gpgme_file_get_extension to this file
2068            and renamed it to...
2069          * wptKeyManager.cpp (km_check_key_status): Parse new fields.          (file_get_extension): this. gpgme_control now also returns the
2070            (get_file_name): Corrected the calculation of the basename.
2071  2002-09-07  Timo Schulz  <[email protected]>          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          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over
2074          Print notation data when available.          the place.
2075          Show if the signature is expired or not.  
2076    2003-05-14  Timo Schulz  <[email protected]>
2077          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo  
2078          command to the context menu.          * wptKeyManager.cpp (km_enable_disable_key): New.
2079    
2080          * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.  2003-05-13  Timo Schulz  <[email protected]>
2081          This is 256 bits more than the old size. Hopefully it's enough  
2082          security to protect against the most enemies ;-).          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.
2083            (key_check_validity): Moved from GPGME to this file.
2084  2002-09-08  Timo Schulz  <[email protected]>          * wptKeyManager.cpp (km_get_key_status): New.
2085    
2086          * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process  2003-05-09  Timo Schulz  <[email protected]>
2087          really succeeded.  
2088          (mbox): Alias for msg_box with fixed title to avoid long lines.          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.
2089          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow          * wptFileManager.cpp (fm_print_md): New.
2090          to generate keys with a length til 4096 bits.          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD
2091          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for          command.
2092          invalid recipients and print out the reasons.  
2093          * wptKeylist.cpp (keylist_add_to_recipients): Improved error message  2003-05-08  Timo Schulz  <[email protected]>
2094          and corrected the validity checking.  
2095            * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current
2096  2002-09-09  Timo Schulz  <[email protected]>          window mode.
2097            (currwnd_gpg_dlg): Likewise.
2098          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.
2099          the privat key (export).          * 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  2002-09-10  Timo Schulz  <[email protected]>          * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret
2102            keys.
2103          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.
2104          (fm_decrypt): Only cut off the extension if it belong to GPG.          This makes the priority of the rc2 update more urgent.
2105          Added user ID to the box if the file was signed.  
2106          Ask for the filename if the name has no valid GPG extension.  2003-05-07  Timo Schulz  <[email protected]>
2107    
2108  2002-09-12  Timo Schulz  <[email protected]>          * Clean up the outer GPGME interface. Internal functions should be
2109            invisible in gpgme.h.
2110          * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.
2111          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret          * wptKeyserver.cpp: Some cleanups.
2112          key export.          (finger_recvkey): Skip URL postfix if there.
2113          * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to  
2114          check if the encryption failed.  2003-05-06  Timo Schulz  <[email protected]>
2115          (km_show_photo): Fixed offset calculation.  
2116          Use keyid as filename and delete the tempfile after use.          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys
2117          * wptFile.cpp (init_file_lock): Use dynamic buffer.          are available. Removed old [unused] code.
2118          (release_file_lock): Free this buffer.          Make sure we really have the key in the cache.
2119          * wptFileManager.cpp (quote_filename): Removed.  
2120          (quote_file): New. Use dynamic buffers.  2003-05-04  Timo Schulz  <[email protected]>
2121          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):  
2122          Use it here.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients
2123          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.          were found, output a more precise error message. Now the GPGME code
2124          Initalize packet at the begin and during the loop.          first tests for special cases and if no one hit the nail on the head,
2125          * wptFileManager.cpp: Replaced all static memory handling with          a general error is used.
2126          dynamic routines.  
2127          * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust  2003-05-03  Timo Schulz  <[email protected]>
2128          functions.  
2129          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.                  * wptParser.cpp: Renamed to...
2130            * wptGPGParser.cpp: this.
2131  2002-09-13  Timo Schulz  <[email protected]>          (release_option): Renamed to...
2132            (release_gpg_options): this.
2133          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the          (commit_option): Renamed to...
2134          image and do NOT free it.          (commit_gpg_options): this.
2135          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.          (parse_option): Renamed to...
2136          (find_user_id): Use keyid to find the key. Changed all callers.          (parse_gpg_options): this.
2137            * wptGPG.cpp: Use new parser function names.
2138          * Removed global gpg_version variable. Now we also support GPG 1.1.9x          (set_gnupg_default_key): Free memory.
2139          so we don't need to check this after the start again.          * wptKeylist.cpp (keylist_add_groups): New group code.
2140            * wptGroups.{c,h}: Removed. Now we use the GPG group command.
2141  2002-09-17  Timo Schulz  <[email protected]>          * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from
2142            2 to 4.
2143          * winpt.cpp (WinMain): Use make_filename and no static buffer.          (recv_missing_keys): Likewise. Now it is possible to retrieve
2144          Modified for the new gnupg interface.          missing keys. Thanks to Klaus.
2145          * wptFile.cpp (make_filename): New.          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather
2146          * wptGpgCmds.h: New from GPG 1.1.92          than a static buffer to avoid garbled keys. There are some very
2147          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers          large keys and these cause some trouble with a 16k buffer.
2148          and make_filename.          (keyserver_dlg_proc): Localized some strings.
2149          * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column
2150          make_filename instead of static buffers.          names which are equal to the names we use in the Key Manager.
2151          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but
2152          * wptParser.cpp: Changed to new allocation instead of malloc.          should be "==" bug.
2153          * wptGPGOptSkel.h: Updated from GPG 1.1.92          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.
2154          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.          * Add --expert option for the GPG procedure call if needed.
2155    
2156  2002-09-23  Timo Schulz  <[email protected]>  2003-05-02  Timo Schulz  <[email protected]>
2157    
2158          * wptParser.cpp (add_multi_option): Support for values with more ' 's          * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.
2159          and skip the ' ' after the name.  
2160          (modify_entry): New.  2003-04-30  Timo Schulz  <[email protected]>
2161          * wptGPG.cpp (gnupg_save_options): Removed.  
2162          (gnupg_load_options): Removed.          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the
2163          (gnupg_release_options): Removed.          next context menu ("Add"). Make sure the entries are disabled
2164          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.          when the key has no secret key.
2165            * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.
2166  2002-09-25  Timo Schulz  <[email protected]>          * 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          * wptClipboard.cpp (clip_parse_pgp_id): Add a flag when the text          pointer.
2169          is dash escaped. This is useful for keys to avoid errors.  
2170          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an  2003-04-27  Timo Schulz  <[email protected]>
2171          OpenPGP key from the clipboard which is dash escaped.  
2172          (km_clip_import): Use the new code here.          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows
2173            to show the properties of the signers keys.
2174  2002-10-10  Timo Schulz  <[email protected]>          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.
2175    
2176          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.  2003-04-26  Timo Schulz  <[email protected]>
2177          Changed all callers.  
2178          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the          * wptParser.cpp: A lot of structural changes. Always add items
2179          new get_filename_dlg.          at the end of the list so we don't need to make a copy of the list
2180          * wptFileManager.cpp (fm_export): Likewise.          to restore the original order. Fix the group problem.
2181          * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.          * wptKeylist.cpp (keylist_build): Use OR to get the flags and
2182          * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.          not ==.
2183          Use signature class dialog.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command
2184          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the          (file) does not use the keyid as the file name when more than one
2185          keyid instead of the userid to avoid charset problems.          keys were selected.
2186          (err_message): New.          Allow allow to set default keys which are not revoked or expired.
2187            * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort
2188          * Moved all wipe specific code (random, rmd160) to the DLL so we can          the columns.
2189          save some memory for the tray section.          Set the force trust flag in GPGME if there are some recipients
2190            with no validity.
2191          * wptKeyRevokersDlg.cpp (revokelist_build): New.  
2192          (revokelist_init): New.  2003-04-25  Timo Schulz  <[email protected]>
2193          (key_revokers_dlg_proc): New.  
2194            * wptVerList.cpp (verlist_build): Change the name of some columns.
2195          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the
2196          code here when available.          notation (if present!) present the user a general message box
2197            with extended signature information. This means the notation
2198  2002-10-13  Timo Schulz  <[email protected]>          data and a possible policy URL.
2199    
2200          * wptKeylist.cpp (get_key_expire_date): New.  
2201          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.  2003-04-24  Timo Schulz  <[email protected]>
2202    
2203          * Removed global keycache from GPGME. It's a bad style to mix          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init
2204          general and specific interfaces.          default values to make it easier for newbies.
2205            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error
2206          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation          when no secret key was found. Also mention the public key algo.
2207          details. Useful to replace it later.          * wptFileManager.cpp (fm_decrypt): Likewise.
2208          (get_seckey): Ditto.  
2209          (keycache_reload): Moved from the GPGME library.  2003-04-23  Timo Schulz  <[email protected]>
2210          (keycache_release): New.  
2211          (keycache_init): New.          * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function
2212          (keycache_set_reload): New.          from GPGME#gpgme_ownertrust_to_string into WinPT.
2213          (keycache_get_reload): New.  
2214          (keycache_get_ctx): New.  2003-04-20  Timo Schulz  <[email protected]>
2215    
2216          * wptSigList.cpp (siglist_add_key): Use the new code.          * wptClipboard.cpp: Removed. All these functions and constants
2217          (siglist_build): Ditto.          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  2002-10-15  Timo Schulz  <[email protected]>          an argument.
2221            (get_key_size): Add key index.
2222          * Changed all s(n)printf -> msg_box constructs to log_box.          (get_key_algo): Likewise.
2223            (keylist_build): Use a special mode when signing is used.
2224  2002-10-30  Timo Schulz  <[email protected]>          (keylist_enum_recipients): Return a malloced pointer to the
2225            recipients.
2226          * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint
2227          LDAP plugin for this purpose.          when we have a signature result and we do not trust the key.
2228          * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.  
2229          * wldap32.lib is now not longer needed.  2003-04-20  Timo Schulz <[email protected]>
2230          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.  
2231          * Updated the resource file.          * wptFindWnd.h: Removed. We don't use it any longer.
2232          * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.
2233          for 'Decrypt', 'Verify', 'Import'.          (gpg_strerror): Removed. Now it is handled in winpt_strerror.
2234            * wptFileManager.cpp (fm_get_file_name): move this to
2235  2002-10-31  Timo Schulz  <[email protected]>          * wptVerifyList.cpp (get_file_name): ..this place and declare
2236            it as static because no other file need this function.
2237          * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.  
2238          Thanks to Gustavo.  2003-04-15  Timo Schulz  <[email protected]>
2239          * wptKeylist.cpp (add_key): Now we only use find_secret_key to detect  
2240          whether it's a key pair or not.          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.
2241          * Callback struct into KEY so we can modify the values in the background.          (data_cb_thread): New.
2242          * wptKeyPropsDlg.cpp (change_ownertrust): New.          (data_cb_dlg_create): New.
2243            (data_cb_dlg_destroy): New.
2244  2002-10-13  Timo Schulz  <[email protected]>          (data_cb_new): New.
2245            (clip_import_dlg_proc): Use a callback dialog to
2246          * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static          show the user the data decoding procedure is in
2247          any longer.          progress. This dialog is destroyed in the key
2248            import statistics dialog.
2249  2002-10-14  Timo Schulz  <[email protected]>  
2250    
2251          * wptKeyserver.c: Replaced all strdup's with m_strdup and free  2003-04-13  Timo Schulz  <[email protected]>
2252          with free_if_alloc.  
2253          (ldap_recvkey): Fill with life. We use the GPG plugin to avoid          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback
2254          all the LDAP overhead.          context.
2255            * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.
2256  2002-12-14  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect
2257            flag inside the KEY contect if needed.
2258          * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a
2259          any longer there is also a secret key.          passphrase if the protect flag is set.
2260          (km_check_photo): New.          Display the callback dialog to show the progress.
2261          (km_complete_status_bar): New.          Implemented the "revkey" feature.
2262          * wptFileManager.cpp (fm_verify): Support for bad signatures.          * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.
2263          Set the sigmode if not set.          (do_add_new_userid): New. Add an entry to the list box
2264          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when          after the GPG process finished.
2265          the ownertrust of a non-valid (not signed) key is changed.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig
2266          * wptRegistry.cpp (expand_path): New. Use this code because it's          to zero to avoid segfaults.
2267          much shorter.  
2268    2003-04-12  Timo Schulz  <[email protected]>
2269  2002-12-18  Timo Schulz  <[email protected]>  
2270            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new
2271          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead          GPGME code.
2272          of the old name "options".          * wptVerifyList.cpp (verlist_add_sig_log): Likewise.
2273          * WinPT.cpp (WinMain): Try to repair broken home directories          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.
2274          in the registry. Thanks to Gustavo who reminded me of it.          * wptFileManager.cpp (fm_decrypt): Likewise.
2275          * wptKeyserver.cpp (check_hkp_response): Only copy the text          * WinPT.cpp (check_default_key): Check if the keys in gpg.conf
2276          between <p> and </p> when possible.          are valid and in the keyring.
2277          * wptAgent.cpp: Re-activated the old code. Now the passphrase          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase
2278          timer can be used.          item if the key is not protected.
2279    
2280  2002-12-21  Timo Schulz  <[email protected]>  
2281    2003-04-09  Timo Schulz  <[email protected]>
2282          * Fixed some language mistakes.  
2283          * wptMainproc.cpp: Use the desktop window as the parent window          * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as
2284          for the main dialogs so they are visible in the taskbar.          invalid for cancel.
2285          * wptKeyManagerDlg.cpp: Enable minimize.  
2286          * wptFileManager.cpp (fm_parse_command_line): Support for detached  2003-03-20  Timo Schulz  <[email protected]>
2287          signatures.  
2288          (fm_encrypt_directory): New.          * wptFindWnd.cpp: Removed.
2289          * wptKeylist.cpp (keylist_add_key): Check the current key if it          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of
2290          is not expired, not the primary (idx=0).          find_window.
2291            * Whenever it's possible, use case insentensive searches to avoid
2292  2002-12-23  Timo Schulz  <[email protected]>          problems.
2293    
2294          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver  2003-03-19  Timo Schulz  <[email protected]>
2295          directory if does not exist.  
2296          * wptKeyserver.cpp: Simpliefied config file.          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.
2297          (kserver_change_proxy): Write config to the registry. Remove          * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly
2298          code for the config file.          in the code.
2299          * wptProxySettingsDlg.cpp (read_proxy): More robust code.          * wptPasswdDlg.cpp: Likewise.
2300          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature          (passphrase_cb_init): Declare as static.
2301          to send keys. The Key Manager is better for this.          (passphrase_cb_gpgme): Modified to use the static function and rename
2302            it to...
2303            (passphrase_gpgme_set_cb): ..this. New.
2304  2003-01-07  Timo Schulz  <[email protected]>          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA
2305            and friends to assign data to each item.
2306          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window          Move dialog code to...
2307          pos from the coordinates from the registry.          * wptClipSignEncDlg.cpp: ..here.
2308          (keymanager_dlg_proc): Store the window pos in the registry.          * MyGPGME/keycache.c: We first look for directly key signatures and
2309          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.          then we skip all other signatures if we've already seen the key. This
2310          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when          is needed to gather the designated revoker keys.
2311          a revcert was found.  
2312          * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does  2003-03-18  Timo Schulz  <[email protected]>
2313          not succeed.  
2314          (keyserver_dlg_proc): Corrected some listview index values.          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index
2315          * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.          of revocation from 9 to 8.
2316            Set the text that no key was updated only if no new sig, subkey,
2317  2003-01-08  Timo Schulz   <[email protected]>          userid and no public were added.
2318            Add more information: new {subkeys, signatures, userid}.
2319          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning          * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.
2320          if the user tries to add the email address in the name field.          * wptDlgs.cpp: Removed.
2321          * wptKeyserver.cpp: Add support for protocols.          * wptDlgs.h: (dlg_fatal_error): New. Macro.
2322          (finger_readline): New.  
2323          (finger_recvkey): New.  2002-03-16  Timo Schulz  <[email protected]>
2324          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke  
2325          message box to show it's a serious decision.          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the
2326          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.          optional text in UTF-8 to avoid charset problems.
2327          * wptRegistry.cpp (regist_single_filetype): Now internal and we use          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead
2328          an easier way to get the location of the binary.          of a static buffer. Changed all callers.
2329          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions
2330          entry to avoid double file registering.          for the rest of the columns.
2331            (keylist_handle_column_click): New.
2332  2003-01-19  Timo Schulz  <[email protected]>          * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):
2333            Removed the 'Advanced' button because it only confuses users
2334          * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.          and it is not often used.
2335          * wptKeyManagerDlg.cpp (do_resize_window): New.          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-
2336          (do_create_minpopup): New. Closes #669730.          and import the trustdb values (ownertrust).
2337          * wptVerifyList.cpp (get_sig_date): Renamed to...          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to
2338          (longdate_to_strdate): New. Changed all callers.          sort columns.
2339          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains  
2340          a signature, also display the time of it. Closes #669780.  2002-03-09  Timo Schulz  <[email protected]>
2341          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.  
2342          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.          * 64-bit support for wipe operations.
2343          * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability  
2344          to choose the signer.  2002-03-08  Timo Schulz  <[email protected]>
2345          (keysign_dlg_proc): Implemented a feature request. See above.  
2346            * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'
2347  2002-01-21  Timo Schulz  <[email protected]>          because they are options rather than files.
2348            * WinPT.cpp (WinMain): Allow to start the key manager directly
2349          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to          via --keymanager.
2350          avoid typing mistakes.          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.
2351            (wipe_cb): New. Wipe callback function.
2352  2002-01-25  Timo Schulz  <[email protected]>          (fill_drive_combobox): New. Fill in all logical drives into
2353            the given combo box.
2354          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id          (wipe_thread): New. Worker thread.
2355          and the fingerprint to the clipboard. Closes #674455.          (update_disc_stats): New. Set the disc statistics for the
2356          Automatically reload the keycache when a command is chosen and the cache          given drive entry.
2357          state is set to 'reload requested'. Closes #671218.          (space_wipefrees_dlg_proc): New.
2358          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts  
2359          are not invalid.  2002-03-01  Timo Schulz  <[email protected]>
2360          * WinPT.cpp (check_permissions): Make sure we have the permission to  
2361          write the keyring. Stop if not because it's expected at many other places.          * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection
2362          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.          logic. Now we can decrypt symmetrically encrypted files again.
2363          (siglist_build): Use a placeholder sig to avoid the position chaos.          Be stricter on memory alloaction checks.
2364          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.          (fm_get_file_type): Be more strict with the return code of
2365          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,          parse_packet. This avoids bogus file types for MS-Word files and
2366          display more information and use a GPG like output.          other non-PGP data.
2367          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is          (fm_wipe): Use the wipe mode from the registry and not a fixed value.
2368          an invalid key in the list of recipients. Closes #674965.          * 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  2002-02-01  Timo Schulz  <[email protected]>          * wptDlgs.h: Corrected all dialog protypes to BOOL.
2372            LRESULT was not correct.
2373          * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.  
2374    2002-02-08  Timo Schulz  <[email protected]>
2375  2002-02-08  Timo Schulz  <[email protected]>  
2376            * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export
2377          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Only export          the secret key when a file was chosen.
2378          the secret key when a file was chosen.  
2379    2002-02-01  Timo Schulz  <[email protected]>
2380  2002-03-01  Timo Schulz  <[email protected]>  
2381            * wptKeyserver.cpp (kserver_search): Fix <KEYID bug.
2382          * wptFileManager.cpp (fm_check_file_type): Fix bug in the detection  
2383          logic. Now we can decrypt symmetrically encrypted files again.  2002-01-25  Timo Schulz  <[email protected]>
2384          Be stricter on memory alloaction checks.  
2385          (fm_get_file_type): Be more strict with the return code of          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to copy the key id
2386          parse_packet. This avoids bogus file types for MS-Word files and          and the fingerprint to the clipboard. Closes #674455.
2387          other non-PGP data.          Automatically reload the keycache when a command is chosen and the cache
2388          (fm_wipe): Use the wipe mode from the registry and not a fixed value.          state is set to 'reload requested'. Closes #671218.
2389          * WptRegistry.cpp (set_reg_winpt_prefs): Support wipe mode.          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure the public key parts
2390          (get_reg_winpt_prefs): Likewise.          are not invalid.
2391          * wptFilePrefsDlg.cpp: Removed. We don't use it any longer.          * WinPT.cpp (check_permissions): Make sure we have the permission to
2392          * wptDlgs.h: Corrected all dialog protypes to BOOL.          write the keyring. Stop if not because it's expected at many other places.
2393          LRESULT was not correct.          * wptSigList.cpp (siglist_add_key): Indent signatures under the root entry.
2394            (siglist_build): Use a placeholder sig to avoid the position chaos.
2395  2002-03-08  Timo Schulz  <[email protected]>          * wptKeyUidDlg.cpp: Unified text for 'user-ID'.
2396            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): If a key is not found,
2397          * wptFileManager.cpp (fm_parse_command_line): Ignore lines with '--'          display more information and use a GPG like output.
2398          because they are options rather than files.          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force trust if there is
2399          * WinPT.cpp (WinMain): Allow to start the key manager directly          an invalid key in the list of recipients. Closes #674965.
2400          via --keymanager.  
2401          * wptFileManagerDlg.cpp (file_secdel_confirm_dlg_proc): New.  
2402          (wipe_cb): New. Wipe callback function.  2002-01-21  Timo Schulz  <[email protected]>
2403          (fill_drive_combobox): New. Fill in all logical drives into  
2404          the given combo box.          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Ask the passphrase twice to
2405          (wipe_thread): New. Worker thread.          avoid typing mistakes.
2406          (update_disc_stats): New. Set the disc statistics for the  
2407          given drive entry.  2003-01-19  Timo Schulz  <[email protected]>
2408          (space_wipefrees_dlg_proc): New.  
2409            * winpt.cpp (WinMain): Fixed spelling mistake. Closes #669321.
2410  2002-03-09  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (do_resize_window): New.
2411            (do_create_minpopup): New. Closes #669730.
2412          * 64-bit support for wipe operations.          * wptVerifyList.cpp (get_sig_date): Renamed to...
2413            (longdate_to_strdate): New. Changed all callers.
2414  2002-03-16  Timo Schulz  <[email protected]>          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the ciphertext contains
2415            a signature, also display the time of it. Closes #669780.
2416          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Encode the          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Localize 2 strings.
2417          optional text in UTF-8 to avoid charset problems.          * wptEditKeyOwnertrust.cpp (keyedit_ownertrust_dlg_proc): Fixed a typo.
2418          * wptKeyManager.cpp (km_quote_uid): Use dynamic memory instead          * wptKeySignDlg.cpp (do_add_local_user): New. Now the dialog has the ability
2419          of a static buffer. Changed all callers.          to choose the signer.
2420          * wptKeylist.cpp (keylist_cmp_cb): Implemented sort functions          (keysign_dlg_proc): Implemented a feature request. See above.
2421          for the rest of the columns.  
2422          (keylist_handle_column_click): New.  2003-01-08  Timo Schulz   <[email protected]>
2423          * wptKeyEditOwnertrustdlg.cpp (keyedit_ownertrust_dlg_proc):  
2424          Removed the 'Advanced' button because it only confuses users          * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Output a warning
2425          and it is not often used.          if the user tries to add the email address in the name field.
2426          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support to ex-          * wptKeyserver.cpp: Add support for protocols.
2427          and import the trustdb values (ownertrust).          (finger_readline): New.
2428          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ability to          (finger_recvkey): New.
2429          sort columns.          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add a warning icon to the revoke
2430            message box to show it's a serious decision.
2431  2003-03-18  Timo Schulz  <[email protected]>          * wptPasswdDlg.cpp (passwd_dlg_proc): Center dialog window.
2432            * wptRegistry.cpp (regist_single_filetype): Now internal and we use
2433          * wptKeyImportStatDlg.cpp (import_status_dlg_proc): Fix index          an easier way to get the location of the binary.
2434          of revocation from 9 to 8.          (regist_inst_winpt): Implemented the 'with_ext' part and add a registry
2435          Set the text that no key was updated only if no new sig, subkey,          entry to avoid double file registering.
2436          userid and no public were added.  
2437          Add more information: new {subkeys, signatures, userid}.  2003-01-07  Timo Schulz  <[email protected]>
2438          * wptKeyManager.cpp (km_delete_keys): Fixme lame, '=' instead of '==' bug.  
2439          * wptDlgs.cpp: Removed.          * wptKeyManagerDlg.cpp (do_center_window): New. Try to set the window
2440          * wptDlgs.h: (dlg_fatal_error): New. Macro.          pos from the coordinates from the registry.
2441            (keymanager_dlg_proc): Store the window pos in the registry.
2442  2003-03-19  Timo Schulz  <[email protected]>          * wptKeyRevokeDlg.cpp (key_revoke_dlg): Check box for PGP compatible certs.
2443            * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Print out a hint when
2444          * wptMainProc.cpp (winpt_main_proc): Put the init_dtp code here.          a revcert was found.
2445          * wptPassphraseCB.cpp (hide_typing): Removed. Use short code directly          * wptKeyserverDlg.cpp (hkp_recv_key): Print an error if the LDAP import does
2446          in the code.          not succeed.
2447          * wptPasswdDlg.cpp: Likewise.          (keyserver_dlg_proc): Corrected some listview index values.
2448          (passphrase_cb_init): Declare as static.          * wptKeylist.cpp (keylist_add_key): Use primary user-id when possible.
2449          (passphrase_cb_gpgme): Modified to use the static function and rename  
2450          it to...  2002-12-23  Timo Schulz  <[email protected]>
2451          (passphrase_gpgme_set_cb): ..this. New.  
2452          * wptSecListDlg.cpp: Complete new appraoch. Now we use CB_SETITEMDATA          * wptRegistry.cpp (regist_inst_winpt): Try to create \Keyserver
2453          and friends to assign data to each item.          directory if does not exist.
2454          Move dialog code to...          * wptKeyserver.cpp: Simpliefied config file.
2455          * wptClipSignEncDlg.cpp: ..here.          (kserver_change_proxy): Write config to the registry. Remove
2456          * MyGPGME/keycache.c: We first look for directly key signatures and          code for the config file.
2457          then we skip all other signatures if we've already seen the key. This          * wptProxySettingsDlg.cpp (read_proxy): More robust code.
2458          is needed to gather the designated revoker keys.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Removed the feature
2459            to send keys. The Key Manager is better for this.
2460  2003-03-20  Timo Schulz  <[email protected]>  
2461    
2462          * wptFindWnd.cpp: Removed.  2002-12-21  Timo Schulz  <[email protected]>
2463          * wptW32API.c (dialog_box_param): Use FindWindowEx() instead of  
2464          find_window.          * Fixed some language mistakes.
2465          * Whenever it's possible, use case insentensive searches to avoid          * wptMainproc.cpp: Use the desktop window as the parent window
2466          problems.          for the main dialogs so they are visible in the taskbar.
2467            * wptKeyManagerDlg.cpp: Enable minimize.
2468  2003-04-09  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_parse_command_line): Support for detached
2469            signatures.
2470          * wptFirstRunDlg.cpp (first_run_dlg_proc): Mark selection as          (fm_encrypt_directory): New.
2471          invalid for cancel.          * wptKeylist.cpp (keylist_add_key): Check the current key if it
2472            is not expired, not the primary (idx=0).
2473  2003-04-12  Timo Schulz  <[email protected]>  
2474    2002-12-18  Timo Schulz  <[email protected]>
2475          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Use the new  
2476          GPGME code.          * wptGPG.cpp (get_gnupg_optfile): Support for gpg.conf instead
2477          * wptVerifyList.cpp (verlist_add_sig_log): Likewise.          of the old name "options".
2478          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Likewise.          * WinPT.cpp (WinMain): Try to repair broken home directories
2479          * wptFileManager.cpp (fm_decrypt): Likewise.          in the registry. Thanks to Gustavo who reminded me of it.
2480          * WinPT.cpp (check_default_key): Check if the keys in gpg.conf          * wptKeyserver.cpp (check_hkp_response): Only copy the text
2481          are valid and in the keyring.          between <p> and </p> when possible.
2482          * wptKeySignDlg.cpp (do_check_protection): Disable the passphrase          * wptAgent.cpp: Re-activated the old code. Now the passphrase
2483          item if the key is not protected.          timer can be used.
2484    
2485    2002-12-14  Timo Schulz  <[email protected]>
2486  2003-04-13  Timo Schulz  <[email protected]>  
2487            * wptKeyManager.cpp (km_check_for_seckey): Ultimate doesn't mean
2488          * wptSubkeyDlgProc.cpp (key_subkey_dlg_proc): Use a callback          any longer there is also a secret key.
2489          context.          (km_check_photo): New.
2490          * wptUidDlgProc.cpp (keyuid_dlg_proc): Likewise.          (km_complete_status_bar): New.
2491          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set the protect          * wptFileManager.cpp (fm_verify): Support for bad signatures.
2492          flag inside the KEY contect if needed.          Set the sigmode if not set.
2493          * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Only ask for a          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Output a warning when
2494          passphrase if the protect flag is set.          the ownertrust of a non-valid (not signed) key is changed.
2495          Display the callback dialog to show the progress.          * wptRegistry.cpp (expand_path): New. Use this code because it's
2496          Implemented the "revkey" feature.          much shorter.
2497          * wptKeyUidDlg.cpp (key_uid_dlg_proc): Likewise.  
2498          (do_add_new_userid): New. Add an entry to the list box  2002-10-14  Timo Schulz  <[email protected]>
2499          after the GPG process finished.  
2500          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Initialize sig          * wptKeyserver.c: Replaced all strdup's with m_strdup and free
2501          to zero to avoid segfaults.          with free_if_alloc.
2502            (ldap_recvkey): Fill with life. We use the GPG plugin to avoid
2503  2003-04-15  Timo Schulz  <[email protected]>          all the LDAP overhead.
2504    
2505          * wptClipImportDlg.cpp (data_cb_dlg_proc): New.  2002-10-13  Timo Schulz  <[email protected]>
2506          (data_cb_thread): New.  
2507          (data_cb_dlg_create): New.          * wptKeyManager.cpp (km_file_import): Alloc buffer, it's not static
2508          (data_cb_dlg_destroy): New.          any longer.
2509          (data_cb_new): New.  
2510          (clip_import_dlg_proc): Use a callback dialog to  2002-10-31  Timo Schulz  <[email protected]>
2511          show the user the data decoding procedure is in  
2512          progress. This dialog is destroyed in the key          * wptKeyManager.cpp (km_update_default_key_str): Fixed '0x' handling.
2513          import statistics dialog.          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  2003-04-20  Timo Schulz <[email protected]>          * Callback struct into KEY so we can modify the values in the background.
2517            * wptKeyPropsDlg.cpp (change_ownertrust): New.
2518          * wptFindWnd.h: Removed. We don't use it any longer.  
2519          * wptGPG.h: Merged GPGERR_xxx constants with WPTERR_xxx.  2002-10-30  Timo Schulz  <[email protected]>
2520          (gpg_strerror): Removed. Now it is handled in winpt_strerror.  
2521          * wptFileManager.cpp (fm_get_file_name): move this to          * wptLDAP.cpp, wptLDAP.h: Removed. The plan is to use the gpgkey_xxx.exe
2522          * wptVerifyList.cpp (get_file_name): ..this place and declare          LDAP plugin for this purpose.
2523          it as static because no other file need this function.          * wptMainproc.cpp (winpt_main_proc): Removed all LDAP stubs.
2524            * wldap32.lib is now not longer needed.
2525  2003-04-20  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Copy userid to clipboard.
2526            * Updated the resource file.
2527          * wptClipboard.cpp: Removed. All these functions and constants          * wptFileManager.cpp (fm_parse_command_line): Implemented the stuff
2528          are now available in MyGPGME/clip.c and thus part of GPGME.          for 'Decrypt', 'Verify', 'Import'.
2529          * wptKeylist.cpp (keylist_add_to_recipients): Renamed to...  
2530          (keylist_get_recipients): this. Return the context instead of  2002-10-15  Timo Schulz  <[email protected]>
2531          an argument.  
2532          (get_key_size): Add key index.          * Changed all s(n)printf -> msg_box constructs to log_box.
2533          (get_key_algo): Likewise.  
2534          (keylist_build): Use a special mode when signing is used.  2002-10-13  Timo Schulz  <[email protected]>
2535          (keylist_enum_recipients): Return a malloced pointer to the  
2536          recipients.          * wptKeylist.cpp (get_key_expire_date): New.
2537          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Add primary fingerprint          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use it here.
2538          when we have a signature result and we do not trust the key.  
2539            * Removed global keycache from GPGME. It's a bad style to mix
2540  2003-04-23  Timo Schulz  <[email protected]>          general and specific interfaces.
2541    
2542          * wptKeyPropsDlg.cpp (ownertrust_to_string): Moved the function          * wptGPGME.cpp (get_pubkey): New. Used to hide keycache implementation
2543          from GPGME#gpgme_ownertrust_to_string into WinPT.          details. Useful to replace it later.
2544            (get_seckey): Ditto.
2545  2003-04-24  Timo Schulz  <[email protected]>          (keycache_reload): Moved from the GPGME library.
2546            (keycache_release): New.
2547          * wptKeyEditAddSubKeyDlg.cpp (keyedit_addsubkey_dlg_proc): Init          (keycache_init): New.
2548          default values to make it easier for newbies.          (keycache_set_reload): New.
2549          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Use a better error          (keycache_get_reload): New.
2550          when no secret key was found. Also mention the public key algo.          (keycache_get_ctx): New.
2551          * wptFileManager.cpp (fm_decrypt): Likewise.  
2552            * wptSigList.cpp (siglist_add_key): Use the new code.
2553  2003-04-25  Timo Schulz  <[email protected]>          (siglist_build): Ditto.
2554    
2555          * wptVerList.cpp (verlist_build): Change the name of some columns.  
2556          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Instead of just the  2002-10-10  Timo Schulz  <[email protected]>
2557          notation (if present!) present the user a general message box  
2558          with extended signature information. This means the notation          * wptW32API.cpp (get_filename_dlg): Added default filename parameter.
2559          data and a possible policy URL.          Changed all callers.
2560            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Adjusted the code for the
2561            new get_filename_dlg.
2562  2003-04-26  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_export): Likewise.
2563            * wptClipDecryptDlg (clip_decrypt_dlg): Modified the verify message box.
2564          * wptParser.cpp: A lot of structural changes. Always add items          * wptKeySignDlg.cpp (keysign_dlg_proc): Changed the code for edit-key.
2565          at the end of the list so we don't need to make a copy of the list          Use signature class dialog.
2566          to restore the original order. Fix the group problem.          * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): Use the new code and the
2567          * wptKeylist.cpp (keylist_build): Use OR to get the flags and          keyid instead of the userid to avoid charset problems.
2568          not ==.          (err_message): New.
2569          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): The export command  
2570          (file) does not use the keyid as the file name when more than one          * Moved all wipe specific code (random, rmd160) to the DLL so we can
2571          keys were selected.          save some memory for the tray section.
2572          Allow allow to set default keys which are not revoked or expired.  
2573          * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Allow to sort          * wptKeyRevokersDlg.cpp (revokelist_build): New.
2574          the columns.          (revokelist_init): New.
2575          Set the force trust flag in GPGME if there are some recipients          (key_revokers_dlg_proc): New.
2576          with no validity.  
2577            * wptKeyPropsDlg.cpp (key_props_dlg_proc): Use the designated revoker
2578  2003-04-27  Timo Schulz  <[email protected]>          code here when available.
2579    
2580          * wptKeysigDlg.cpp (keysig_dlg_proc): A double click now allows  2002-09-25  Timo Schulz  <[email protected]>
2581          to show the properties of the signers keys.  
2582          * wptKeyEditAddRevokerDlg.cpp (keyedit_addrevocer_dlg_proc): New.          * 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  2003-04-30  Timo Schulz  <[email protected]>          * wptKeyManager.cpp (extract_dash_escaped_key): New. Extract an
2585            OpenPGP key from the clipboard which is dash escaped.
2586          * wptKeyManagerdlg.cpp (keymanager_dlg_proc): Support for the          (km_clip_import): Use the new code here.
2587          next context menu ("Add"). Make sure the entries are disabled  
2588          when the key has no secret key.  2002-09-23  Timo Schulz  <[email protected]>
2589          * wptKeyEditAddPhotoDlg.cpp (keyedit_addphoto_dlg_proc): New.  
2590          * wptFileManager.cpp (fm_decrypt): Set sig to NULL so it won't          * wptParser.cpp (add_multi_option): Support for values with more ' 's
2591          cause a segfault when the pointer free tries to deallocate the          and skip the ' ' after the name.
2592          pointer.          (modify_entry): New.
2593            * wptGPG.cpp (gnupg_save_options): Removed.
2594  2003-05-02  Timo Schulz  <[email protected]>          (gnupg_load_options): Removed.
2595            (gnupg_release_options): Removed.
2596          * wptW32API.cpp (set_foreground_wnd): Removed. Changed all callers.          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Use the new code.
2597    
2598  2003-05-03  Timo Schulz  <[email protected]>  2002-09-17  Timo Schulz  <[email protected]>
2599    
2600          * wptParser.cpp: Renamed to...          * winpt.cpp (WinMain): Use make_filename and no static buffer.
2601          * wptGPGParser.cpp: this.          Modified for the new gnupg interface.
2602          (release_option): Renamed to...          * wptFile.cpp (make_filename): New.
2603          (release_gpg_options): this.          * wptGpgCmds.h: New from GPG 1.1.92
2604          (commit_option): Renamed to...          * wptGPG.cpp (gnupg_import_keyrings): Use dynamic buffers
2605          (commit_gpg_options): this.          and make_filename.
2606          (parse_option): Renamed to...          * wptKeygenDlg.cpp (ask_for_backup): Use new gpg code and
2607          (parse_gpg_options): this.          make_filename instead of static buffers.
2608          * wptGPG.cpp: Use new parser function names.          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Likewise.
2609          (set_gnupg_default_key): Free memory.          * wptParser.cpp: Changed to new allocation instead of malloc.
2610          * wptKeylist.cpp (keylist_add_groups): New group code.          * wptGPGOptSkel.h: Updated from GPG 1.1.92
2611          * wptGroups.{c,h}: Removed. Now we use the GPG group command.          * wptRegistry.cpp (get_reg_entry): Expand %s like registry strings.
2612          * wptKeySigListDlg.cpp (keysig_dlg_proc): Change column from  
2613          2 to 4.  2002-09-13  Timo Schulz  <[email protected]>
2614          (recv_missing_keys): Likewise. Now it is possible to retrieve  
2615          missing keys. Thanks to Klaus.          * wptKeyManager.cpp (km_show_photo): Use a const buffer for the
2616          * wptKeyserverDlg.cpp (hkp_recv_key): Use a dymanic buffer rather          image and do NOT free it.
2617          than a static buffer to avoid garbled keys. There are some very          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Implement "revoke" function.
2618          large keys and these cause some trouble with a 16k buffer.          (find_user_id): Use keyid to find the key. Changed all callers.
2619          (keyserver_dlg_proc): Localized some strings.  
2620          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): Use new column          * Removed global gpg_version variable. Now we also support GPG 1.1.9x
2621          names which are equal to the names we use in the Key Manager.          so we don't need to check this after the start again.
2622          * wptKeySignDlg.cpp (keysign_dlg_proc): Fix a silly '=' but  
2623          should be "==" bug.  2002-09-12  Timo Schulz  <[email protected]>
2624          * wptKeygenDlg.cpp (mbox): Removed. Too much overhead.  
2625          * Add --expert option for the GPG procedure call if needed.          * wptPasswdDlg.cpp (passwd_dlg_proc): Implement the "Hide Typing" fature.
2626            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Off by one bug for secret
2627  2003-05-04  Timo Schulz  <[email protected]>          key export.
2628            * wptKeyManager.cpp (fm_encrypt): Use the new GPG status messages to
2629          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): If invalid recipients          check if the encryption failed.
2630          were found, output a more precise error message. Now the GPGME code          (km_show_photo): Fixed offset calculation.
2631          first tests for special cases and if no one hit the nail on the head,          Use keyid as filename and delete the tempfile after use.
2632          a general error is used.          * wptFile.cpp (init_file_lock): Use dynamic buffer.
2633            (release_file_lock): Free this buffer.
2634  2003-05-06  Timo Schulz  <[email protected]>          * wptFileManager.cpp (quote_filename): Removed.
2635            (quote_file): New. Use dynamic buffers.
2636          * wptKeySigDlg.cpp (keysig_dlg_proc): Disable the button when all keys          (fm_import, fm_decrypt, fm_encrypt, fm_sym_encrypt, fm_export):
2637          are available. Removed old [unused] code.          Use it here.
2638          Make sure we really have the key in the cache.          * wptFileStatDlg.cpp (do_list_packets): Do not cache FD.
2639            Initalize packet at the begin and during the loop.
2640  2003-05-07  Timo Schulz  <[email protected]>          * wptFileManager.cpp: Replaced all static memory handling with
2641            dynamic routines.
2642          * Clean up the outer GPGME interface. Internal functions should be          * wptKeyCacheDlg.cpp (key_cache_dlg): Remove obsolete ownertrust
2643          invisible in gpgme.h.          functions.
2644          Merge the photo-id, formerly attribute id stuff with gpgme_key_get_xxx_attr.          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.        
2645          * wptKeyserver.cpp: Some cleanups.  
2646          (finger_recvkey): Skip URL postfix if there.  2002-09-10  Timo Schulz  <[email protected]>
2647    
2648  2003-05-08  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_get_file_type): Disable FD cache.
2649            (fm_decrypt): Only cut off the extension if it belong to GPG.
2650          * wptMainProc.cpp (winpt_main_proc): Symmetric encryption for the current          Added user ID to the box if the file was signed.
2651          window mode.          Ask for the filename if the name has no valid GPG extension.
2652          (currwnd_gpg_dlg): Likewise.  
2653          * wptCurrWnd.cpp (wnd_msg_em_set_pos): Fix an off-by-one bug.  2002-09-09  Timo Schulz  <[email protected]>
2654          * WinPT.cpp (WinMain): If the default key was not found, show the string  
2655          in the error message to make it easier for the user to fix the problem.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Improved code for
2656          * wptImportStatusDlg.cpp (import_status_dlg_proc): Take care of secret          the privat key (export).
2657          keys.  
2658          * wptfileManager.cpp (fm_get_file_type): Fix packet type detection error.  2002-09-08  Timo Schulz  <[email protected]>
2659          This makes the priority of the rc2 update more urgent.  
2660            * wptKeygenDlg.cpp (ask_for_backup): Check if the copy process
2661  2003-05-09  Timo Schulz  <[email protected]>          really succeeded.
2662            (mbox): Alias for msg_box with fixed title to avoid long lines.
2663          * wptMDSumDlg.cpp (mdsum_dlg_proc): New.          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Allow
2664          * wptFileManager.cpp (fm_print_md): New.          to generate keys with a length til 4096 bits.
2665          * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for the Print MD          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Check for
2666          command.          invalid recipients and print out the reasons.
2667            * wptKeylist.cpp (keylist_add_to_recipients): Improved error message
2668  2003-05-13  Timo Schulz  <[email protected]>          and corrected the validity checking.
2669    
2670          * wptKeyList.cpp (keylist_add_key): Add 'DISABLED' flag for keys.  2002-09-07  Timo Schulz  <[email protected]>
2671          (key_check_validity): Moved from GPGME to this file.  
2672          * wptKeyManager.cpp (km_get_key_status): New.          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc):
2673            Print notation data when available.
2674  2003-05-14  Timo Schulz  <[email protected]>          Show if the signature is expired or not.
2675    
2676          * wptKeyManager.cpp (km_enable_disable_key): New.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added the show photo
2677            command to the context menu.
2678  2003-05-17  Timo Schulz  <[email protected]>  
2679            * wptKeygenDlg.cpp (keygen_dlg_proc): New default keysize is 1792.
2680          * wptFileManager.cpp: Moved gpgme_file_get_extension to this file          This is 256 bits more than the old size. Hopefully it's enough
2681          and renamed it to...          security to protect against the most enemies ;-).
2682          (file_get_extension): this. gpgme_control now also returns the  
2683          (get_file_name): Corrected the calculation of the basename.  2002-09-04  Timo Schulz  <[email protected]>
2684          state of the command if you use -1 as the value.  
2685          * wptImportList.cpp (implist_load): Make sure we really have the key ID.          * wptKeyManager.cpp (km_check_key_status): Parse new fields.
2686          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Some small changes all over  
2687          the place.  2002-09-03  Timo Schulz  <[email protected]>
2688    
2689  2003-05-19  Timo Schulz  <[email protected]>          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          * wptPasswdDlg.cpp (create_passwd_dlg): Removed.          version of GnuPG code. This has two advantages. First the code is
2692          (request_passphrase): New.          stable and second we can easier port other parts to native GPG code.
2693          The passphrase_s context is now internal, all externl function use now  
2694          request_passphrase. Changed all callers.          * wptFileManager.cpp (fm_get_file_type): Use native GPG code.
2695          * wptKeygenDlg.cpp (keygen_dlg_proc): Reworded the passphrase          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add photos from the
2696          warning and a check for the comment field was added.          keyring when present to the keycache.
2697          * wptKeyEditDlgs.cpp: New. This file now combines the dialogs which          * wptKeyManager.cpp (km_show_photo): Fixes to work again with the
2698          has shown the subkeys and the userids.          modified code.
2699          * wptKeySubkeyDlg.cpp: Deleted and stuff merged into wptKeyEditDlgs.cpp.          (km_check_for_seckey): Check substrings of the value because we
2700            don't use '**' values any longer.
2701  2003-05-20  Timo Schulz  <[email protected]>          * wptFileStat.cpp (do_list_packets): New. Adapted from the old code.
2702            (file_stat_dlg_proc): Uses the new code.
2703          * wptKeyPropsDlg.cpp (key_props_dlg_proc): Factor out code to change  
2704          the passphrase from here to...  2002-09-02  Timo Schulz  <[email protected]>
2705          * wptKeyEditDlgs.cpp (keyedit_change_passwd): ...this place.  
2706            * wptKeyManager.cpp (km_privkey_export): Check return codes and
2707  2003-05-21  Timo Schulz  <[email protected]>          some types has been changed.
2708            (km_file_export): Likewise.
2709          * wptSiglist.cpp (siglist_add_key): Only list signatures which are  
2710          user-id certificates (0x10-0x13) and ignore key and subkey sigs.  2002-09-01  Timo Schulz  <[email protected]>
2711          c-strings are now handle correctly and decoded into GPGME.  
2712            * wptFirstRunDlg.cpp (get_setup_choice): New. Returns the choice
2713  2003-05-22  Timo Schulz  <[email protected]>          of the dialog.
2714            * WinPT.cpp (WinMain): Use it here. Reworded the error message.
2715          * wptMainProc.cpp (winpt_main_proc): Set use_hotkey for current          * wptGPG.cpp (gpg_import_keyrings): New.
2716          window mode sign+encrypt. This fixes a couple of other problems.          Let the user chose the keyrings and then they are copied to the
2717          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Get new values of the          homedir. After the procedure, the key cache will be reloaded.
2718          key when the cache was reloaded.          * wptKeyManager.cpp (km_delete_keys): New delete confirmation messages.
2719            * wptSigClassDlg.cpp (sig_class_dlg_proc): New.
2720            (get_sig_class_choice): New.
2721  2003-05-24  Timo Schulz  <[email protected]>          * wptKeySignDlg.cpp (get_printable_fpr): New. More human readable
2722            fingerprint.
2723          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Subclass the two lists          (keysign_dlg_proc): Added new value for the GPG callback to handle
2724          to allow to use virtual keys (DEL, INS).          the signature class.
2725          Release the uid control context when the dialog will be destroyed.          * 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  2003-05-25  Timo Schulz  <[email protected]>  
2729    2002-08-31  Timo Schulz  <[email protected]>
2730          * wptImportList.cpp (implist_add_key): Address charset problem.  
2731          * wptVerifyList.cpp (verlist_add_sig_log): Use UTF8 decoding.          * wptGPG.cpp (gpg_check_homedir): Some fixes for the return codes.
2732          * wptKeyserver.cpp (set_default_kserver): New.          (check_homedir): Ask the user whether to create the directory.
2733          (wsock_init): Call the new function.          * wptKeysigDlg.cpp (keysig_dlg_proc): Fixed keyid. Now it works
2734          (kserver_load_conf): If the FP is invalid, skip to read the file.          to retrieve missing keys from a HKP server.
2735          * WinPT.cpp (WinMain): Call set_default_kserver to make sure the          (recv_missing_keys): Likewise.
2736          item has a value.          * wptPassphraseCB.cpp (passphrase_callback_proc):
2737            Implemented     the "Hide Typing" feature.
2738  2003-05-28  Timo Schulz  <[email protected]>          (hide_typing): New.
2739            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Improved error messages.
2740          * wptKeyManager.cpp (km_set_clip_info): New.          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Improved MDC handling.
2741          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Use it here.          Due to some attacks a MDC error is treated as a fatal error and a
2742          * wptImportList.cpp (implist_build): Some column changes for          possible security risk.
2743          the listview control.          * wptClipImportDlg.cpp (print_import_status): Use a dialog instead
2744          (implist_load): Return if secret keys were found.          of a silly message box. Furthermore the user gets more information
2745          * wptClipImportDlg.cpp (data_cb_dlg_proc): Store if secret keys          about the import procedure.
2746          were found.          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): New.
2747          (clip_import_dlg_proc): New message if secret keys were found.          * 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  2003-05-31  Timo Schulz  <[email protected]>          * wptKeyManager.cpp (km_file_import): Ditto.
2751    
2752          * wptKeyManager.cpp (km_key_is_v3): Return if the selected  2002-08-28  Timo Schulz  <[email protected]>
2753          key is an old PGP 2 (v3) key.  
2754          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Only allow          * wptClipboard.cpp (clip_parse_pgp_id): Support for PGP 2.6.x types.
2755          (#ID_KEYMISC_EDITKEY): Bail out if no key was selected.          * wptFileMananger.cpp (fm_check_armor_type): Ditto.
2756          to add extented items if the key is NOT version 3.  
2757          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Check if the  
2758          key is v3 and forbid most commands.  2002-08-26  Timo Schulz  <[email protected]>
2759          (is_cmd_openpgp): New.  
2760            * wptTypes.h (free_if_alloc, CHECK_BOUND): New.
2761  2003-06-01      Timo Schulz  <[email protected]>          * 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          * wptCurrWnd.cpp (rel_key, hit_key): Replaced with macros...          Ident file.
2764          (KEYDOWN, KEYUP): macros for the functions above.  
2765            * wptAboutDlg.cpp: Ditto. (ident)
2766  2003-06-04  Timo Schulz  <[email protected]>          * wptGPGAboutDlg.cpp: Ditto.
2767            * wptClipDecryptDlg.cpp: Ditto.
2768          * wptKeylist.cpp (get_key_algo, get_key_size): Due to the fact          (clip_decrypt_dlg): Stricter return value checkings.
2769          that GPG uses the newest subkey by default, we always return          Avoid one indent level.
2770          the info of this subkey and not the first.  
2771          * wptKeyImportStatusDlg.cpp (import_status_dlg_proc): Fixed off-by-one          * wptImportList.cpp (implist_add_key): More strict return value
2772          bug. Now the indicies are correctly.          checking.
2773          * wptGPG.cpp (gnupg_check_keyring): Do not free the value before          * wptKeylist.cpp (keylist_cmp_cb): Fixed a typo.
2774          get_file_size is called.          (add_key): New key status system.
2775          * WinPT.cpp (WinMain): Only check the GPG engine version if there          (keylist_get_keyflags): New.
2776          were no problems with the GPG config. And differ between a problem          (keylist_enum_recipients): Simplified and use the new key flags.
2777          to get the version and if a wrong version were detected.  
2778            * wptSiglist.cpp (siglist_add_key): Fix possible overflows.
2779            (verlist_add_sig_log): More stricter checks.
2780  2003-06-05  Timo Schulz  <[email protected]>  
2781            * wptRegistry.cpp (get_reg_winpt_prefs): Fixed possible bug.
2782          * wptPassphraseCB.cpp (passphrase_callback_proc): Now the dialog  
2783          shows all involved recipients and also the public key algorithm.  2002-06-16      Timo Schulz <[email protected]>
2784          * wptRegistry.cpp (reg_inst_winpt): If the user does not want  
2785          the extensions, set the entry to "1" so the message is not shown          Don't put the questions in the message box title bar.
2786          again.  
2787            * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Only close FP if it
2788  2003-06-06  Timo Schulz  <[email protected]>          is really opened. Thanks to Nelson.
2789    
2790          * wptKeylist.cpp (keylist_get_recipients): Use a stronger warning          * wptKeyProps.cpp (keyprops_dlg_proc): Use a more informative title
2791          message and include the user-id.          for chaning the passphrase. Suggested by Ed.
2792          * Encryption: use force overwrite (--yes) to make sure there are  
2793          no complications with GPG.  2002-06-07      Timo Schulz <[email protected]>
2794          * Import: skip all record types we do not understand.  
2795            * wptMainProc.cpp (winpt_main_proc): Support for sign & encrypt hotkeys.
2796            * wptKeyManagerDlg.cpp: Refresh keys was added in the menu.
2797  2003-06-10  Timo Schulz  <[email protected]>          * wptListView.cpp (listview_select_all): New.
2798            * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fixed the return code.
2799          * wptKeysignDlg.cpp (do_fill_seckeylist): Make sure disabled keys  
2800          are skipped.  2002-05-31      Timo Schulz <[email protected]>
2801          (keysign_dlg_proc): Removed some redundant code.  
2802          * wptKeyEditDlgs.cpp (is_idea_protect_algo): New. Find out if          * wptTrayPop.cpp: Revamped some parts of the code.
2803          it is possible to change the passphrase.  
2804            Changed all status_box functions to show_msg. The advantage
2805  2003-06-11  Timo Schulz  <[email protected]>          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          * wptKeylist.cpp (keylist_add_key): Now the user-ids are in the  
2808          right order and we do not use the last user-id but the first          * wptKeyManager.cpp (km_show_photo): New.
2809          because this is always the primary user-id or the newest user-id.  
2810          * wptGPGME.cpp (get_default_keyid): Removed. Some better code  2002-05-30  Timo Schulz <[email protected]>
2811          were added to get_gnupg_default_key.  
2812            * wptFileManager.cpp (fm_verify): Corrected the handling
2813  2003-06-13  Timo Schulz  <[email protected]>          for detached RSA signatures.
2814            (fm_add_sig_stat): Added support for short fingerprints.
2815          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Quote the user-id name.  
2816          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Fix the code due to  2002-05-08      Timo Schulz <[email protected]>
2817          the fact the signer is now dymanic and not static.  
2818          * wptGPG.cpp (check_gnupg_engine): Check if IDEA is available and          * wptKeyserver.cpp (kserver_change_proxy): Check the values.
2819          change all code that it only shows an error if no plug-in was loaded.          Thanks to njek for reporting it.
2820          * wptKeyEditDlgs.cpp (is_cmd_openpgp): Remove REVKEY since you  
2821          can revoke v3 keys.  2002-05-07      Timo Schulz <[email protected]>
2822          (do_editkey_revoke): Clarify command because it can be only used  
2823          for secondary keys.          * wptGPG.cpp (check_gpg_engine): New.
2824          * wptKeyManagerDlg.cpp (file_sign_dlg_proc): Make sure an error  
2825          is issued when no key was selected. Thanks to vedaal.          * wptKeyCacheDlg.cpp (keycache_dlg_proc): Add GPG 1.0.6 compatible
2826            routines.
2827  2003-06-24  Timo Schulz  <[email protected]>  
2828            * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Ditto.
2829          * Fixed filter code in Get{Open,Save}FileName. Changed all callers.  
2830          Thanks to Alex.          * wptKeyEditOwnertrustDlg.cpp (keyedit_owerntrust_dlg_proc): Ditto.
2831          * wptKeyManager.cpp (km_delete_keys): Quote the user-id.  
2832    2002-05-06      Timo Schulz <[email protected]>
2833    
2834  2003-07-12  Timo Schulz  <[email protected]>          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Change the wording of
2835            the buttons.
2836          * wptFileManager.cpp (fm_verify): Support for multiple signatures.  
2837          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Likewise.  2002-05-05      Timo Schulz <[email protected]>
2838          * wptProxySettingsDlg.cpp (read_proxy): Skip http:// prefix.  
2839          * wptKeyserver.cpp (check_URL): Support for hkp://. Closes #755156.          * Fixed problem with rev certs for imports stats.
2840          (kserver_connect): Likewise.  
2841          (kserver_read_config): Likewise.          * Cosmetical changes for the GPGME libraray.
2842          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Free memory if the passphrases  
2843          are not equal.  2002-05-01      Timo Schulz <[email protected]>
2844          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): New. An easy to use wizard to  
2845          generate a key pair.          * wptKeygenDlg.cpp (fill_keytype_box): New.
2846            (keygen_dlg_proc): Use a combo box for various key types. With GPG 1.0.7
2847  2003-07-13  Timo Schulz  <[email protected]>          there is full RSA support.
2848    
2849          * wptKeygenDlg.cpp (check_passphrase): Check if the passphrase contains          Now we use the new status code by GPG (INV_RECP, NO_RECP) to figure out
2850          characters >= 127. Due to the fact that we use CP-1250 and GPG uses CP-850          what the problem was when no encryption was done.
2851          it would be a bad idea to use such passphrases. And thus we disallow it.  
2852          * wptKeyEditDlgs.cpp (keyedit_change_passwd): Likewise.          * wptKeysignDlg.cpp (keysign_dlg_proc): Before we sign a key, we make
2853          * wptSymEnc.cpp (gpgme_encrypt_symmetric): Likewise.          sure it was not already signed (ALREADY_SIGNED).
2854          * wptHotkey.cpp (hotkeys_strerror): Use capital letters.  
2855            * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Due to the new trust system,
2856  2003-07-22  Timo Schulz  <[email protected]>          now we also support to sign ultimate trusted keys.
2857    
2858          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Figure out the size of          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Try to check if the button
2859          the text instead of allocating the maximum.          is checked and do not check it.
2860    
2861  2003-08-17  Timo Schulz  <[email protected]>          * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): New format for the verify
2862            box and now we also support the date of the signature.
2863          * wptKeyManagerDlg.cpp (keymanager_dlg_proc):  
2864          #ID_KEYMISC_EXPORT_PRIVKEY: Retrieve the current list view index. The          Applied Rich's spelling and grammer mistakes.
2865          value was malformed.          Fixed a lot of minor spelling mistakes and capital letters for dialogs.
2866          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Free global memory.  
2867          * wptKeyserver.cpp (kserver_load_conf): If the file does not exist,  2002-04-30      Timo Schulz <[email protected]>
2868          don't bother the user with an error message. Closes #782751.  
2869          * wptKeyEditDlgs.cpp (do_editkey_primary): New. Implement the          Merge ownertrust handling into the keycache. Now GPG outputs the
2870          "primary" edit key command.          ownertrust in the key listing which means we can get the ownertrust
2871          * wptKeyserverDlg.cpp (hkp_recv_key): New flag parameter. Now it is          value from the keycache.
2872          possible to supress the status message. This is useful when the whole  
2873          keyring will be refreshed.          (keymisc_dlg_proc): Add a button to rebuild the sig database cache.
2874          * wptFileManager.cpp (fm_parse_command_line): Unquote file if needed.          Please not that this is not the same as the key cache! The key cache
2875          (quote_file): Avoid double quotes.          will be updated when a new key was imported or a subkey was added/changed.
2876          * GPGME support for quoted file names.          The signature cache only affects the validity of the keys.
2877          (fm_sym_encrypt): Double check password and to additional 8-bit checks.  
2878          * WinPT.cpp (my_acces): Moved to this file..          Removed the MyGPGME trustlist code. Now we can use the field in the key
2879          * wptGPG.cpp: ..here.          listing to determine the ownertrust (which makes things a lot of easier).
2880          (gpg_check_permissions): Renamed from check_permissions and make it global.  
2881          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Check to make sure we  2002-04-29      Timo Schulz <[email protected]>
2882          have write access to the keyring for some commands.  
2883            Adjustments for GPG 1.0.7
2884  2003-08-24  Timo Schulz <[email protected]>  
2885            * wptKeyEditDlg.cpp (keyedit_ownertrust_dlg_proc): Support ultimate trust
2886          * wptPreferencesDlg.cpp (prefs_dlg_proc): Use better code to disable          and ask the user if he knows what he's doing.
2887          dialog controls.          * wptKeyManager.cpp
2888            (keylist_subclass_proc): Use double click to open the props.
2889  2003-08-30  Timo Schulz  <[email protected]>          * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Allow the user even to modify a
2890            ultimate ownertrust value.
2891          * wptGPG.h: Support for the GPG status messages REVKEYSIG and          * wptKeyEditAddSubkeyDlg.cpp (keyedit_addsubkey_dlg_proc): Support for
2892          EXPKEYSIG. With this new feature, GPG 1.2.3 is required.          new RSA keys.
2893          * Make sure that the signature status does not cause an  
2894          segfault.  2002-04-28      Timo Schulz <[email protected]>
2895          * WinPT.cpp: Use new check to detect the GPG version and make sure  
2896          it is the minimum.          * wptRegistry.cpp (get_reg_winpt_prefs): New option for keylist mode.
2897          * wptGPG.cpp (parse_version_nr): New.          (set_reg_winpt_prefs): Ditto.
2898          (check_gnupg_engine): Improved. Now it returns the actual version.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for keylist mode option.
2899            (set_keylist_mode): New.
2900  2003-09-03  Timo Schulz  <[email protected]>  
2901            Implement minimal keylist mode. Suggested by Fabian.
2902          * The secret key listing does not contain any 'validity' or  
2903          'status' flags any longer. Thus we only can use the cache to          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Implement it here.
2904          make sure we have a secret key. All attributes need to be retrieved          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
2905          from the public key listing.          * wptKeylist.cpp (keylist_add_key): Ditto.
2906            (keylist_load): Ditto.
2907          * wptGPG.cpp (default_key_from_cache): New.          (keylist_build): Ditto.
2908          (get_gnupg_default_key): Use new function to make sure we try  
2909          to get the key from cache if there is a problem with the config  2002-04-27      Timo Schulz <[email protected]>
2910          file.  
2911            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support for the  new dialog.
2912  2003-09-04  Timo Schulz  <[email protected]>          * wptFileSaveDlg.cpp (file_save_dlg_proc): New.
2913            * wptClipboard.cpp (clip_parse_pgp_id): use logical OR to concat the values.
2914          * wptFileManager.cpp (fm_get_file_type): Due to an unknown reason,          * wptMainProc.cpp (clip_gpg_dlg): Use the new PGP id's.
2915          the packet parsing return value check was wrong again. Now it does          (currwnd_gpg_dlg): Ditto.
2916          not recognize Word documents as SECKEY or ENCRYPTED any longer.          
2917            Now it's possible to parse cleartext signatures which contains an
2918  2003-09-08  Timo Schulz  <[email protected]>          encrypted message inside the body.
2919    
2920          * wptRegistry.cpp: Remove some hotkeys to correct index calculation.          * wptTextInputDlg.cpp (load_file_contents): New.
2921          (get_reg_winpt_flag): Check buffer first.          (text_input_dlg_proc): Support for choosing the data file.
2922          (get_reg_winpt_prefs): Support for the new backup system.  
2923          (set_reg_winpt_prefs): Likewise.          * wptFileManager.cpp (fm_verify): Support for detached signatures.
2924          * wptHotkey.h: Removed import and export hotkey. Re-ordered elements.          (fm_parse_files): Ditto.
2925          * wptRegistry.h: Cleaned up the hotkey interface.  
2926          * wptPreferenceDlg.cpp (enable_backup_items): New.  
2927          (prefs_dlg_proc): Simplified hotkey handling. Use new code.  2002-04-26      Timo Schulz <[email protected]>
2928          * wptMainProc.cpp (clip_gpg_dlg): Remove hotkey handling for  
2929          im- and export. Use the code directly.          * wptKeyUidDlg.cpp: Fixed a typo. Kudos to Dugan Chen.
2930          (currwnd_gpg_dlg): Likewise.          * wptKeyUidDlg.cpp: Ditto.
2931          * wptGPG.cpp (gnupg_backup_keyrings): New.  
2932          (backup_one_file): New.  2002-04-25      Timo Schulz <[email protected]>
2933    
2934  2003-09-22  Timo Schulz  <[email protected]>          * wptImplist.cpp (implist_add_key): Catch possible segfault.
2935            * wptVerifyList.cpp (verlist_add_sig): Ditto.
2936          * wptSigList.cpp (extract_filename): Make sure there is a '\',          * wptKeyManager.cpp (km_check_for_seckey): Modified for GPG 1.0.7.
2937          otherwise just dup the string and return.          * wptKeylist.cpp (find_secret_key): New.
2938          * wptVerifyList.cpp (verlist_add_sig): Use a variable for the key          (add_key): Use it here.
2939          to make the code more readable.          (keylist_add_key): And here.
2940          * Implemented the GPGME part of the new smartcard interface.  
2941          The WinPT interface will be open until the scard stuff is back          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Fixed a bug that prevent
2942          ported to GPG 1.3.x.          to fetch the key.
2943          * wptKeyEditDlgs.cpp (do_editkey_revuid): Need a secret key to do it.  
2944          Several code cleanups.  2002-04-24      Timo Schulz <[email protected]>
2945    
2946  2003-09-24  Timo Schulz  <[email protected]>          * wptKeyManagerDlg.cpp (key_misc_dlg_proc): Support to maximize windows.
2947            
2948          * wptKeygenDlg.cpp (keygen_dlg_proc): Implement 'Hide Typing' feature.          Changed the way to modify the "Version:" string.
2949          * wptFileManager.cpp (fm_encrypt): Ask for output file if needed.  
2950          * wptFileManagerDlg.cpp (fm_dlg_proc): Removed im- and export from          * wptKeyserver.cpp (add_node): New.
2951          the menu. We use import internally, but export was not useful and          (kserver_change_proxy): New.
2952          thus the code were removed.          (kserver_read_config): New.
2953          * wptPreferenceDlg.cpp (prefs_dlg_proc): Disable some controle at          (kserver_write_config): New.    
2954          startup when they are not allowed.          (kserver_cfgfile_release): New.
2955          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Removed PGP2 option.          (proxy_release): New.
2956          Make the parsing code much shorter (read).  
2957            * wptProxySettingsDlg.cpp (read_proxy): New.
2958            * wptFileStatDlg.cpp (file_stat_dlg_proc): New.
2959  2003-09-25  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_list): New.
2960            (fm_parse_files): Support the new list command.
2961          * wptClipSignEncDlg.cpp (seclist_dlg_proc): The dialog was broken.  
2962          (check_key): New.  2002-04-23      Timo Schulz <[email protected]>
2963          Removed the old Secret Key List dialog. Now the key can be directly  
2964          chose in the dialog.          * wptRFC2440.cpp: Removed. We now use the OpenCDK package.
2965          (seclist_init): New.          * wptFileManager.cpp (fm_get_file_type): Removed the old RFC2440 code.
2966          (seclist_destroy): New.          (fm_encrypt): Modified code to allow sign & encrypt.
2967          (seclist_select_key): New.          (fm_parse_file): Ditto.
2968          * wptFileManager.cpp (fm_sign): Ask for output file if needed.          (fm_decrypt): Support for checking signatures.
2969            * wptFileManagerDlg.cpp (file_manager_dlg_proc): Ditto.
2970          * Client side implementation of the --enable-progress-filter feature.  
2971    2002-04-19      Timo Schulz <[email protected]>
2972          * wptProgressDlg.cpp: Server side implementation.  
2973          (progress_dlg_proc): New. The actual dialog procedure.          * wptImplist.cpp (implist_load): Support for the advanced PGP parser code.
2974          (progress_callback): The GPGME wrapper callback.  
2975    2002-04-05      Timo Schulz <[email protected]>
2976  2003-09-25  Timo Schulz  <[email protected]>  
2977            * wptSigList.cpp (siglist_add_key): Added UTF8 support. Thanks to Scire.
2978          * wptProgressDlg.cpp (progress_cb_thread): New.          * wptKeyUidDlg.cpp (keyuid_dlg_proc): Ditto.
2979          (progress_callback): Use asynchron code.          * wptKeySignDlg.cpp (keysign_dlg_proc): Ditto.
2980          * wptFileManager.cpp (fm_parse_files): Implement progress callback.          * wptKeyAddUidDlg.cpp (keyedit_adduid_dlg_proc): Ditto.
2981    
2982    2002-03-31      Timo Schulz <[email protected]>
2983  2003-09-28  Timo Schulz  <[email protected]>  
2984            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ask if the user wants to
2985          * wptCardDlg.cpp (card_edit_dlg_proc): New.          select the key used for signing.
2986          (gpg_load_scard): New. Try to use GPG load the card info.          * wptSeclistDlg.cpp (seclist_dlg_proc): New. Dialog for secret selecting.
2987          (print_fpr): New. Print beautified fingerprint.          * wptFilePrefsDlg.cpp (file_prefs_dlg): Fixes for the combo box ;-).
2988          (card_status): New. Set all dialog fields with the values from          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Reload the keycache after
2989          the card.          fetching keys via HKP and try to update the Gpgmekey inside.
2990          (prepare_dialog): New. Load combo boxes with pre-defined strings.          * 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            fetching during verification. Thanks to Julian. And force to use UTF8
2993  2003-10-06  Timo Schulz  <[email protected]>          for user ID's.
2994            * wptClipSignDlg.cpp (one_key_proc): If only one secret exists,
2995          * wptFileManager.cpp (fm_encrypt): Wipe files in both modes.          prevent that the dialog is loaded and ask for the passphrase directly.
2996          * wptGPG.cpp (gnupg_display_error): Display general error  
2997          when the file does not exit.  
2998          * wptW32API.cpp (get_folder_dlg): New.  2002-03-29      Timo Schulz <[email protected]>
2999          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ability to select  
3000          the folder for the home directory.          * wptGPG.cpp (create_groupdb): Only close the file handling if it
3001          * wptKeyManager.cpp (km_update_default_key_str): Return length          really exists. Thanks to Mark.
3002          of the string.          (gpg_check_homedir): Applied the patch. Now we're a little stricter
3003          (km_complete_status_bar): Use the offset of the default          about the homedir checks.
3004          key string so it is not appened twice.          (check_homedir): Fixed a possible memory leak.
3005          * wptRegistry.cpp (regist_inst_winpt): Create 'Card' subkey.          * WinPT.cpp (WinMain): Check the homedir functions to exit the program
3006          * wptCard.h: New.          if      we've found some problems.
3007          * wptCardDlg.cpp (new_card_driver): New.          * wptErrors.cpp (winpt_strerror): New value if a directory could not
3008          (load_card_driver): New.          created.
3009          (free_card_driver): New.          * wptMainProc (winpt_main_proc): Use new code for the current window mode.
3010          (card_config_dlg_proc): If the reader is configured, load the          * wptCurrWnd.cpp (get_curr_wnd): Ditto.
3011          values. This is needful to change the driver later.          (get_window_contents): Always set focus to the current window.
3012          (gpg_load_scard): Use driver as a parameter.  
3013          * wptMainProc.cpp (winpt_main_proc): Load card driver and  2002-03-22      Timo Schulz <[email protected]>
3014          unload it after use.  
3015            * wptMainProc.cpp (currwnd_gpg_dlg): If the viewer is used, doesn't
3016  2003-10-07  Timo Schulz  <[email protected]>          set window contents for some commands.
3017            (winpt_main_proc): Use the code here.
3018          * wptPINDlg.cpp (pin_cb_dlg_proc): New.          * wptKeygenDlg.cpp (keygen_dlg_proc): Allow to generate keys > 2048 bits.
3019          * wptCardDlg.cpp (do_proc_card_cmds): New.          * wptProxySettingsDlg.cpp: (keyserver_proxy_dlg_proc): New.
3020          (card_edit_dlg_proc): Use it here.          * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use the proxy dialog here.
3021            * wptKeyserver.cpp (kserver_load_conf): Fixed malformed strings.
3022  2003-10-08  Timo Schulz  <[email protected]>  
3023    2002-03-02      Timo Schulz <[email protected]>
3024          * wptCardDlg.cpp (do_proc_card_cmds): Check that only US-ASCII  
3025          is used. Otherwise reject the value.          * Use capital letters in the main menus and applied Patricks spelling
3026          (ask_pin): New. Enable PIN caching for the 'dialog session' so          corrections.
3027          the user does not need to re-enter it again and again.  
3028            * wptClipDecryptDlg.cpp (clip_decrypt_dlg): keyID is a string
3029  2003-10-09  Timo Schulz  <[email protected]>          not an integer. Thanks to scrumpy.      
3030            * wptWipeFile.cpp (rename_unlink): Use '\' instead of '/'.
3031          * wptCardDlg.cpp (get_card_status): New.          (overwrite): Some bugfixes to set the pointer to the begin of the file.
3032          (show_card_status): New. Retrieve the card status and show an          * wptVerlist.cpp (verlist_build): New keyID column.
3033          error if approprioate.          (verlist_add_sig): Use it here.
3034          * Make sure that WinPT does not try to use non-OpenPGP cards.  
3035          * Add GPGME support for the forthcoming AUTH flag for keys.  2002-03-01      Timo Schulz <[email protected]>
3036          * Implemented the detection of keys where the secret key components  
3037          are stored on a smart card.          * wptWipeFile: Replaced all low level I/O functions with W32 API
3038            functions. And support for more wiping modes. I don't know to
3039            support all, but those makes sense for me:
3040  2003-10-12  Timo Schulz  <[email protected]>          1. Simple (2 random passes)
3041            2. DoD (as described in the standard)
3042          * wptCardDlg.cpp (guess_libname): New.          3. Peter Gutmanns method (from the paper)
3043          (card_status): Simplified the code with an attribute  
3044          table. Now it is a loop and not hard coded.  
3045          * The card interface has changed. Now the surname and  2002-02-28      Timo Schulz <[email protected]>
3046          the given name are two fields and not one field.  
3047          * wptMainProc.cpp (winpt_main_proc): Check if the card          * wptImplist.cpp (implist_add_key): UTF8 support.
3048          reader is configured where appropriate.          Handle invalid userID's.
3049            * wptPassphraseCB.cpp (parse_gpg_description): UTF8 support.
3050  2003-10-13  Timo Schulz  <[email protected]>          (passphrase_callback_proc): Ditto.
3051    
3052          * Extended the GPGME API that it is possible to retrieve  
3053          the key data. This is for the planned card login but it  2002-02-23      Timo Schulz     <[email protected]>
3054          might be also useful for other purposes.  
3055            * wptListview.cpp (listview_del_items): New.
3056          * wptCardPCSC.c: New. General code for PC/SC card readers.          * wptKeyManager.cpp (km_delete_keys): Use it here.
3057            * wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.
3058            * wptKeylist.cpp (add_key): UTF8 support.
3059  2003-10-14  Timo Schulz  <[email protected]>  
3060    2002-02-08      Timo Schulz <[email protected]>
3061          * wptKeyList.cpp (do_addkey): Add the case the secret key  
3062          is stored on a smart card.          * wptNLS.c: Now it's C-source because GPGME needs gettext too.
3063          (km_check_for_seckey): Take care of the new code.          (stpcpy): Makes it static.
3064          * wptKeyManager.cpp (km_delete_keys): Extra warning when          * errors.c: localize all error strings.
3065          the secret key is stored on a card.          * WinPT.cpp (get_gettext_lang): Move the code in this file because
3066          * wptKeyEditDlgs.cpp (subkey_list_init): Add the key cabilities          we can't use it in plain C.
3067          to the list view. Now the user can see if the key is useable  
3068          for: signing, certifying or encrypting.  2002-02-05      Timo Schulz <[email protected]>
3069    
3070  2003-10-16  Timo Schulz  <[email protected]>          * wptGPG.cpp (gpg_save_options): Catch the case when the options file
3071            exist but it has a length of zero.
3072          * Changed GPGME interface for edit card. Now one context is          (gpg_display_error): Print out the data from the GPG stderr
3073          used for all edit card operations.          (when available).
3074          * wptCardDlg.cpp (card_edit_dlg_proc): Support for working          * w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if
3075          and admin PIN. Changed gpgme interface.          not, return NULL.
3076          (ask_pin): Renamed to..          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret
3077          (do_askpin): this. Provide more information about the card          keys.
3078          and its holder.  
3079          (do_proc_card_cmds): If no error, reset modify flags for          * Fixed a lot of memory allocation all over the place.
3080          all controls. Show a short message that the operation ended.  
3081          * wptCardPCSC.c (pcsc_free_readers): New.  2002-02-05      Timo Schulz <[email protected]>
3082          (pcsc_scan_readers): New.          
3083          (pcsc_get_reader): New.          wptGPG.cpp (gpg_save_options): Fixed the code for the case the
3084          (pcsc_get_card_status): New.          values don't exist in the options file. Thanks to Lutz who found this out.
3085            (get_gpg_default): First search for "default-key" then for "encrypt-to".
3086    
3087  2003-10-17  Timo Schulz  <[email protected]>  2002-02-04      Timo Schulz <[email protected]>
3088    
3089          * wptGPGME.cpp (keycache_init): Do not use secring the first time.          * WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements
3090          * wptKeySignDlg.cpp (keysign_dlg_proc): Make sure only the short          which need it. Thanks to Timo who find this out.
3091          keyid will be displayed.                  * WinPT.cpp (WinMain): We don't quit in the case the user changed
3092            the preferences.
3093  2003-10-18  Timo Schulz  <[email protected]>          (update_keycache): New. Handy function to update the keycache.
3094    
3095          * wptCardDlg.cpp (card_keygen_dlg_proc): New.          * Use quotation for the options file in any case.
3096          (do_askpin): Handle the case there is no card.  
3097          (card_edit_dlg_proc): Add 'New Keys' feature.          * clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status
3098          (card_changepin_dlg_proc): Implemented.          is set, we don' try to get the sig key.
3099          * WinPT.cpp (WinMain): Ability to start the card manager directly.  
3100          * wptMainProc.cpp (smartcard_init): Global stuff to init the reader          * wptGPG.cpp (get_gpg_default_key): Revamped.
3101          driver and the inserted card.  
3102    2002-01-26      Timo Schulz <[email protected]>
3103  2003-10-19  Timo Schulz  <[email protected]>  
3104            * wptKeylist.cpp (keylist_add_key): Use flags for the file manager
3105          * wptPINDlg.cpp (pin_cb_dlg_proc): Support to store the admin and          to avoid to show all userid's. Thanks to Frank.
3106          the working PIN.          * wptDateDlg.cpp (date_dlg_proc): New context to use different
3107          wptCardDlg.cpp (free_pincb): New.          window texts and some other features.
3108          (card_keygen_dlg_proc): Pin callback implemented.          * wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.
3109          Simple check for the e-mail address.          * wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.
3110          (card_edit_dlg_proc): End the dialog if no changes were made.          * wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if
3111            it doesn't exist.
3112          * Expanded GPGME passphrase interface to work both with PINs          * WinPT.cpp (WinMain): Use the new code here.
3113          and passphrases.  
3114    2002-01-23      Timo Schulz <[email protected]>
3115  2003-10-21  Timo Schulz  <[email protected]>  
3116            * wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for
3117          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the passphrase          loading a file.
3118          was wrong, delete the cache item (if available).          Add new code to save file with clipboard contents.
3119          * wptClipSignDlg.cpp (clip_sign_dlg): Likewise.  
3120          * wptClipSignEncDlg.cpp (clip_signenc_dlg): Likewise.  2002-01-20      Timo Schulz <[email protected]>
3121          * wptPassphraseCB.cpp (set_gpg_passphrase_cb): Set 'is_card'  
3122          flag to zero.          * wptMainProc.cpp (winpt_main_proc): Fix the error, that the user
3123                    have to click twice before the menu appears. Richard told me this.
3124    
3125  2003-10-21  Timo Schulz  <[email protected]>  
3126    2002-01-18      Timo Schulz <[email protected]>
3127          * wptClipDecryptDlg.cpp (list_recipients): New.  
3128          (algo_from_list): New.          * wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.
3129          (clip_decrypt_dlg): New concept to list all recipients.          * wptPassphraseCB.cpp (parse_gpg_description): Support when no
3130          * wptFileManager.cpp (fm_list_keys): New.          description was given. One example is when symmetric was used.
3131          (fm_decrypt): Same changes as for the clipboard decryption.  
3132    2002-01-13      Timo Schulz <[email protected]>
3133  2003-10-23  Timo Schulz  <[email protected]>  
3134            * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche
3135          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Show GPG output          settings.
3136          if the error is unknown.          * wptGPG.cpp (gpg_backup_options): New.
3137          (clip_sign_dlg_proc): Likewise.          (gpg_load_options): Ignore comment lines.
3138          (clip_signenc_dlg_proc): Likewise.          (gpg_save_options): Rewritten.
3139          (clip_import_dlg_proc): Likewise.  
3140    2002-01-06  Timo Schulz <[email protected]>
3141  2003-10-24  Timo Schulz  <[email protected]>  
3142        * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt
3143          * Implemented a better logging system. If the return code      hotkey.
3144          of GPG is != 0 and the error is not known, display the errors          * wptRegistry.cpp: Ditto.
3145          from stderr.          * wptRegistry.h: Ditto.
3146            * wptHotkey.h: Ditto.
3147          * wptGPGME.cpp (logging_cb): New.          * wptGPG.cpp (gpg_load_options): New.
3148            (gpg_save_options): New.
3149  2003-10-26  Timo Schulz  <[email protected]>  
3150    2002-01-01      Timo Schulz <[email protected]>
3151          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Implement new logging.  
3152            * wptFileManager.cpp (fm_verify): Support for the case there is
3153          * Changed the code at several other places to support the new logging          no public key to verify the signature.
3154          scheme.  
3155    2001-12-30      Timo Schulz <[email protected]>
3156    
3157  2003-10-29  Timo Schulz  <[email protected]>          * wptFileManager.cpp (fm_sign): Always use callbacks for the
3158            passphrase.
3159          * wptKeyEditDlgs.cpp: New logging scheme. Changed all callers.          (fm_decrypt): Ditto.
3160            (fm_parse_files): Cache the passphrase for the session and check
3161          * Create a new interface for an interactive card callback. GPG          if the file still exists.
3162          provides card control status messages if the wrong card is inserted.          * wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use
3163            low level stuff here.
3164          * wptCardManager.cpp (card_cb_dlg_proc): New.          * wptFile.cpp (get_keyid_from_file): Ditto.
3165          (card_callback): New.  
3166    2001-12-21      Timo Schulz <[email protected]>
3167          * wptCardPCSC.cpp (pcsc_loadlib): Use some 'A' to declare we use  
3168          the ASCII functions and not the Unicode function names. Thanks to          * wptTextInputDlg.cpp (text_input_dlg_proc): New.
3169          Werner for pointing this out.          * wptMainProc (clip_gpg_dlg): Support for deached signatures.
3170            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
3171          * wptPassphraseCB.cpp (passphrase_cb): Better card interface. Now the  
3172          serial card number is shown to help the user to find the right card.  2001-12-19      Timo Schulz <[email protected]>
3173    
3174          * wptClipSignDlg.cpp (clip_sign_dlg_proc): New logging scheme.          * Completed work on the temporary file support for GPG.
3175            * wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the
3176  2003-10-02  Timo Schulz  <[email protected]>          plaintext viewer option. Suggested by Markus Winkler.
3177            (get_reg_winpt_prefs): Ditto.
3178          * Prepare test release.          * wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.
3179          * wptGPGCmds.h: New from GPG 1.3.4-cvs.          * wptMainProc.cpp (winpt_main_proc): Ditto.
3180    
3181  2003-11-13  Timo Schulz  <[email protected]>  2001-12-15  Timo Schulz <[email protected]>
3182    
3183          * Clarify pin names. Now all PIN's are labeled 'Admin' or 'User'.      * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for
3184          * wptPINDlg.cpp (pin_cb_dlg_proc): Length check for the PINs.      copy and paste.
3185          Thanks to Achim.  
3186          * Change PIN interface. Now it is easier when an operation requires  2001-12-02      Timo Schulz <[email protected]>
3187          both PINs.  
3188          * wptCardDlg.cpp (do_proc_card_cmds): Now GPG requires both PINs          * wptGroups.c: Revamped from the base. Arggg.
3189          to change card attributes. Do not ask me why, but now the user  
3190          needs to enter 2 PINs.  2001-11-29      Timo Schulz <[email protected]>
3191    
3192          Name parts were swapped, now they have the right order again.          * wptKeyManager.cpp (km_groupdb_expand_recipients): New.
3193            * wptMainProc.cpp (clip_gpg_dlg): New.
3194  2003-11-14  Timo Schulz  <[email protected]>          Modify the whole event loop so we don't need all the same code
3195            for each command. And we use the new foreground code.
3196          * wptCardDlg.cpp (card_edit_dlg_proc): Release the second PIN.          * wptW32API.cpp (check_date): Fixed.
3197    
3198  2003-11-28  Timo Schulz  <[email protected]>  2001-11-27      Timo Schulz <[email protected]>
3199    
3200          * Remove all support for ElGamal sign+encrypt keys.          * wptKeyserver.cpp (base64_encode): New. Marco provided HTTP
3201            proxy authentifcation support for each command.
3202          There is a flaw in GPG which makes all such keys useable and          (kserver_update_proxyuser): New. Ditto.
3203          they are comprised even if one signature they made is accessable.          (kserver_send_request): Ditto.
3204          And due to the fact the key is self signed, such a sig is always          (kserver_recv_request): Ditto.
3205          available for the public.          (kserver_search_init): Ditto.
3206    
3207          We warn the user at startup if such keys were found!  2001-11-24      Timo Schulz <[email protected]>
3208    
3209          * wptMainProc.cpp (elgamal_warn_dlg_proc): New.          * wptKeyManager.cpp (km_groups_new): New.
3210          * wptGPGME.cpp (count_insecure_elgkeys): New.          (km_groups_release): New.
3211          * WinPT (WinMain): Use it here.          (km_groups_load): Rewritten.
3212            (km_groups_add): New.
3213  2003-11-29  Timo Schulz  <[email protected]>          (km_groups_del): New.
3214            (km_groupdb_open): New.
3215          * wptMAPI.cpp (mapi_init): New.          * wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.
3216          (mapi_deinit): New.          * wptGroups.c (groupdb_enum_read): Store the record before increment it.
3217          (mapi_send_pubkey): New.  
3218          * wptKeyManager.cpp (km_send_to_mail_recipient): New.  2001-11-23      Timo Schulz <[email protected]>
3219          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Support  
3220          to send the public key via MAPI to a recipient.          * wptW32API.cpp (set_active_window): New.
3221          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we rewind          (reset_active_window): New.
3222          the secret key cache so it's not at the end.          (window_reminder): New. This is a delayed thread procedure to
3223          (keysign_dlg_proc): Issue a warning when no secret key was          force the focus (foreground) to the dialogs for the current
3224          found which could be used for signing the key.          window mode.
3225          * wptKeylist.cpp (do_addkey): Never add an Elgamal sign+encrypt key.          * wptMainProc.cpp (winpt_main_proc): Use it here.
3226          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.          * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.
3227            * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3228  2003-12-10  Timo Schulz  <[email protected]>          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3229            * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.
3230          * GPGME support to change key preferences.  
3231          * wptKeyeditSetPrefDlg.cpp (keyedit_setpref_dlg_proc): New.  2001-11-22      Timo Schulz <[email protected]>
3232          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use the new feature here.  
3233            * wptW32API.cpp (set_foreground_wnd): New.
3234    
3235  2003-12-14  Timo Schulz  <[email protected]>          Fixed the return value of all EndDialogs.
3236    
3237          * wptKeyeditSetPrefDlg.cpp (get_userid_preflist): New.          * wptMainProc.cpp: Remove all code parts which did the same for the
3238          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Support for updpref.          current window support. Now the code uses a dialog switch which is
3239          (do_editkey_setpref): Implement updpref command.          much smaller.
3240    
3241    2001-11-18  Timo Schulz <[email protected]>
3242  2003-12-23  Timo Schulz  <[email protected]>  
3243        * wptKeyManager.cpp: New. Contains all handy functions from the
3244          * wptKeyEditAddKEyDlg.cpp (keyedit_addsubkey_dlg_proc): Remove      wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.
3245          ElGamal s+e support. Oops, this should be already done.      (km_quote_uid): New.
3246          * wptGPGME.cpp (keycache_init): Sync both key caches. In other      (km_check_for_seckey): New.
3247          words transfer some flags from the sec-cache to the pub-cache.      (km_check_key_status): New.
3248          * wptKeySignDlg.cpp (key_sign_dlg_proc): A workaround for the      (km_clip_export): New.
3249          key sign procedure. If it is already signed, the process      (km_clip_import): New.
3250          sometimes hangs.      (km_file_export): New.
3251        (km_file_import): New.
3252  2003-12-30  Timo Schulz  <[email protected]>      (km_delete_keys): New.
3253        (km_send_to_keyserver): New.
3254          * fixed the GPG edit-key commands sign and addrevoker.      (km_refersh_from_keyserver): New.
3255        (km_update_default_key_str): New.
3256  2003-12-31  Timo Schulz  <[email protected]>          * wptKeygenDlg.cpp (ask_for_backup): New.
3257            (keygen_dlg_proc): Use new function to give the chance to the
3258          * wptKeyEditDlgs.cpp (keyedit_addsubkey_dlg_proc): Do not sort          user for a complete backup.
3259          the list otherwise the index is wrong.  
3260          * wptKeySignDlg.cpp (keysign_dlg_proc): Add the ability to set  2001-11-13      Timo Schulz <[email protected]>
3261          a signature expire date.  
3262            * wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry
3263  2004-01-03  Timo Schulz  <[email protected]>          is set but to "". Then use default gpg directory.
3264            * wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.
3265          * wptClipImportDlg.cpp (clip_import_dlg_proc): automatically allow          (refresh_from_keyserver): New. Context entry for update keys.
3266          to import secret keys.          (keymisc_dlg_proc): Modify the way the popup is shown.
3267    
3268  2004-01-04  Timo Schulz  <[email protected]>  2001-11-07      Timo Schulz <[email protected]>
3269    
3270          * wptImageList.{cpp,h}: New. Contributed by Andreas Jobs.          * wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing
3271          * wptKeylist.cpp (keylist_cmp_cb): More patches from Andreas          the key id.
3272          and minor changes.          * wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret
3273          * wptListView.cpp (listview_sort_items): Likewise.          key imports.
3274          * wptKeyManager.cpp (key_manager_dlg_proc): Likewise.          * wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and
3275          (regist_sep_wnd): Factored out some code.          the user doesn't set the field, try to do this automatically.
3276    
3277  2004-01-22  Timo Schulz  <[email protected]>  2001-11-03      Timo Schulz <[email protected]>
3278    
3279          * Remove all internal card reader config. It's up to the          (fm_remove_crit_file_attrs): First check if the file exists.
3280          user to do this. It would be too error proune to offer it.          Thanks to Peter.
3281          * wptCard.h: Removed all card driver stuff.  
3282          * wptPinDLG.cpp (pin_cb_dlg): Use better names to differ  2001-11-02      Timo Schulz <[email protected]>
3283          between the admin and the user (normal) PIN.  
3284            * WinPT.cpp (WinMain): Add the chance to start the preferences dialog
3285  2004-01-23  Timo Schulz  <[email protected]>          in the case a GPG error was detected.
3286            * wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected
3287          * wptCardDlg.cpp (check_pin_len): New. Check if the          keys.
3288          PIN is long enough and give an appropriate error.  
3289          (card_changepin_dlg_proc): Use the new check function.  2001-10-30      Timo Schulz <[email protected]>
3290    
3291  2004-01-25  Timo Schulz  <[email protected]>          * wptHotkey.h: Fixed typo. Thanks to Timo.
3292            * wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.
3293          * WinPT.cpp (WinMain): Silently die when an instance is already          (get_gpg_default_key): Skip comment lines immediately.
3294          running. Do not confuse the user with a message. Suggested by          * wptRegisty.cpp (get_reg_winpt_prefs): Ditto.
3295          Sebastian.          * wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure
3296          * wptKeyManager.cpp (delete_keys_from_cache): New.          for subclassing.
3297          (km_delete_keys): Use it here. Thanks to Achim.  
3298            Remove all unsafe WM_NOTIFY stuff because this was propably the
3299  2004-01-28  Timo Schulz  <[email protected]>          reason for the crashes. And add as a sanity check if the control
3300            sent the message.
3301          * wptCardDlg.cpp (card_keygen_dlg_proc): A info is issued  
3302          if keys on the card exist but the user does not said overwrite.  2001-10-28      Timo Schulz <[email protected]>
3303    
3304          Make sure the expire date is not in the past.          * wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support
3305            for ENTER/SPACE and DELETE. Suggested by Graham.
3306          * wptMainProc.cpp (winpt_main_proc): Avoid to release the file          * wptKeyList.cpp (add_key): New code to figure out how trustworthy
3307          lock twice. Not sure if this fixes some other problems but it          a expired/revoked secret key is.
3308          was definitely a bug.          (keylist_enum_recipients): Show the key ID of the key when it's
3309            revoked.
3310          * wptMapi.cpp (mapi_init): Make sure all function ptrs are          * wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not
3311          initialized otherwise bail out.          only the first to figure out if a secret is available. Thanks to
3312          (mapi_send_message): New. Interface to allow to send an          Graham.
3313          encrypted mail with zero ore more encrypted attachments.          * wptFile.cpp (get_keyid_from_file): Ditto.
3314          (secure_attachment): New.  
3315          (parse_recipients): New.  2001-10-27      Timo Schulz <[email protected]>
3316    
3317  2004-02-02  Timo Schulz  <[email protected]>          * wptKeylist.cpp (keylist_enum_recipients): Add a type to make
3318            the code more flexible.
3319          * wptCardDlg.cpp (card_keygen_dlg_proc): Make sure the name          * wptKeyMiscDlg.cpp (file_import): New.
3320          is long enough. The same check for the mail address.          (file_export): New.
3321            * wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.
3322          Thanks to Achim.  
3323            Removed all OE code snippets.
3324  2004-02-03  Timo Schulz  <[email protected]>  
3325    2001-10-26      Timo Schulz <[email protected]>
3326          * WinPT.cpp (check_crypto_engine): New. Factor out common code.  
3327          (WinMain): Check the crypto engine after the first start.          * wptExtensions.cpp: Removed.
3328            * wptLDAPExt.cpp: Removed.
3329          * wptRegistry.cpp (set_reg_winpt_prefs): Make sure an error is          * wptLDAP.cpp: New. This code now contains a direct interface to
3330          issued if the values could not stored. Revamped the core.          the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.
3331            (wldap_init): New.
3332          * Removed the last appearance of the GPG agent support.          (wldap_end): New.
3333            (ldap_set_verbose): New.
3334          * wptGPG.cpp (init_gnupg_table): Do not use static buffers.          (ldap_get_key_info): New.
3335          (free_gnupg_table): Free memory.          (ldap_recvkey): New.
3336            (init_ldap): New. Internal use only.
3337          * wptClipImportDlg.cpp (clip_import_dlg_proc): Make sure the          (get_key): New. Ditto.
3338          ctx pointer get malloced and set the contents to zero.          (send_key): New. Ditto.
3339            * wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.
3340    
3341  2004-02-04  Timo Schulz  <[email protected]>  2001-10-25      Timo Schulz <[email protected]>
3342    
3343          * wptRegistry.cpp (get_reg_winpt_prefs): Revamped the core.          * wptGPG.cpp (get_gpg_default_key): Support for the users options file.
3344            (check_gpg_path): Ditto.
3345  2004-02-05  Timo Schulz  <[email protected]>          (get_gpg_options): Ditto.
3346            (set_gpg_default_key): Ditto.
3347          * wptRegistry.cpp (set_reg_winpt_prefs): Forget to handle          (set_gpg_options): Ditto.
3348          CMD_DISHOTKEYS. Thanks to the user who reminded me.          (gpg_check_keyring): Ditto.
3349          * wptMainProc.cpp (spawn_cryptdisk): New interface to          (set_gpg_default_keyid): Fix a typo.
3350          the Cryptdisk application.          * wptGPGME.cpp (get_default_keyid): Rewrote most of the code.
3351    
3352  2004-02-08  Timo Schulz  <[email protected]>  2001-10-23      Timo Schulz <[email protected]>
3353    
3354          * wptCryptdisk.{cpp,h}: New. Support for the extended          * wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while
3355          filedisk application.          because it's shorter.
3356          * wptMainProc.cpp (winpt_main_proc): Likewise.          * wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of
3357          * WinPT.cpp (WinMain): Make sure the new PTD lib is installed.          the default keyid.
3358            * wptFileManager.cpp (fm_sign): Remove the default key ID code. Now
3359  2004-02-09  Timo Schulz  <[email protected]>          we use the signer from the keylist.
3360            * wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix
3361          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): New.          some silly bugs.
3362          (do_reaping): New. Release the list if all items are 'expired'.          * WinPT.cpp (WinMain): if there is no valid keyring after the new
3363          (cryptdisk_mount_dlg_proc): New.          preferences, start the key generation dialog.
3364          (init_drives): New.  
3365          * wptMainProc.cpp (cryptdisk_proc): Renamed from...  2001-10-22      Timo Schulz <[email protected]>
3366          (handle_cryptdisk): this. And filled with life.  
3367            Remove all MyGPGME code from the main project. Now we use the
3368  2004-02-12  Timo Schulz  <[email protected]>          libmygpgme.dll to provide all cryptographic functions and interfaces.
3369    
3370          * wptErrors.cpp: New error codes for the cryptdisk feature.          * wptKeylist.cpp (key_array_new): New.
3371          * wptCryptdisk.cpp (do_dispatch): Better error handling.          (key_array_release): New.
3372          (cryptdisk_mount_dlg_proc): Use it here.          (key_array_search): New.
3373          (cryptdisk_umount_dlg_proc): Likewise.          * wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was
3374          (init_drives): Use system list.          already checked and don't bother the user if all userid's were selected.
3375            * wptPassphraseCB.cpp (passphrase_cb_init): Now void.
3376          Localized all strings.          (passphrase_cb_gpgme): Ditto.
3377            (passphrase_callback_proc): Support for a list of recipients.
3378  2004-02-17  Timo Schulz  <[email protected]>          * wptImportList.cpp (implist_add_key): Support for secret keys.
3379    
3380          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Also encrypt  2001-10-19  Timo Schulz <[email protected]>
3381          to the signers key. Suggested by Alexander.  
3382          Use new keycache system, we use the public key part of the      * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various
3383          cache because it has all flags set.      option files.
3384          * wptGPG.cpp (default_key_from_cache): Use new cache system.      * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and
3385          * wptKeySignDlg.cpp (do_fill_seckeylist): Likewise.      use a popup menu.
3386        * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE
3387        plug-in.
3388  2004-02-18  Timo Schulz  <[email protected]>      (gpgoe_unload_plugin): New.
3389    
3390          * Modify the cryptdisk code for crosscrypt 0.4.1.  2001-10-17  Timo Schulz <[email protected]>
3391          * wptCryptDisk.cpp (do_mount): Add key algorithm param.  
3392        * wptCurrWnd.cpp (get_window_contents): Only minimize the window
3393  2004-02-21  Timo Schulz  <[email protected]>      when the clipboard contains text.
3394        * wptKeylist.cpp (keylist_add_key): Check only for invalid keys
3395          * wptCryptdisk.cpp (cryptdisk_cleanup): New.      in the mainloop. The other flags are checked in the various cases.
3396          (is_nt4): Because my Platform-SDK is too old I need to load      (add_key): Use the ** foo ** notation for invalid flags instead of
3397          some prototypes dynamically.      skipping the key.
3398          (init_drives): Return the first useable drive letter if      * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print
3399          called with appropriate parameters.      out a warning.
3400          * wptMainProc.cpp (winpt_main_proc): Use it here.      Change all error messages to one header.
3401        (check_key_status): Check if the key is valid in the sense of
3402  2004-02-22  Timo Schulz  <[email protected]>      revocation and expire dates. If not, print out a warning.
3403        (keymisc_dlg_proc): Use the new code.
3404          * PTD: Cryptdisk seems to have problems with locking. Use  
3405          a forced flag to tell the code if it should bail out or  2001-10-16  Timo Schulz <[email protected]>
3406          ignore locking errors.  
3407        * wptW32API.cpp (check_date): New.
3408          * wptCryptdisk.cpp (cryptdisk_umount_dlg_proc): Use new      (get_open_filename): New.
3409          locking code.      * wptDlgs.cpp (init_dtp): New. Initialize a special common control.
3410          (cryptdisk_new_dlg_proc): Adjust size of the volume.      * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.
3411    
3412  2004-02-24  Timo Schulz  <[email protected]>  2001-10-15  Timo Schulz <[email protected]>
3413    
3414          * WinPT.cpp (WinMain): Call a selftest check procedure to      * wptFileManager.cpp (fm_wipe): New.
3415          make sure all cryptographic code works as expected.      (fm_set_status): Add temporary wipe status and handle default values.
3416        (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped
3417  2004-02-25  Timo Schulz  <[email protected]>      files with a successful opeation.
3418        * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.
3419          * wptKeyManagerDlg.cpp: Use consequently 'List Signatures' and      (keygen_cb_thread): New. Static dialog thread.
3420          do not mix the names in the different menus.      (keygen_cb_dlg_create): New. Interface.
3421        (keygen_cb_dlg_destroy): New. Destroy the dialog.
3422          * wptSigList.cpp: Support to show the signature class.      (keygen_cb): GPGME interface.
3423    
3424          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable the combo  2001-10-13  Timo Schulz <[email protected]>
3425          box when there is no secret key available.  
3426        Set all ListviewControls to 'NULL' in all dialogs to be more crash
3427          (do_init_keylist): Do not allow to use the owners key as a desig      resistent.
3428          revoker.  
3429        * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.
3430          * wptKeylist.cpp (get_key_trust): New.      * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.
3431          (do_addkey): Use it here.      * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.
3432        * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
3433  2004-02-26  Timo Schulz  <[email protected]>      * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.
3434        * wptStringUtil.cpp: Removed.
3435          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Issue an error      * wptFileManager.cpp: Rewrote the complete interface code for
3436          if no recipient was selected.      the file manager.
3437        * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.
3438          * wptFileManager.cpp (fm_parse_files): Make sure the progress dialog  
3439          is destroyed. This fixes the bug that the dialog sometimes exist even  2001-10-10      Timo Schulz <[email protected]>
3440          after the procedure ended.  
3441            * wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the
3442          * wptProgressDlg.cpp (progress_callback): Change the if-then-else          file is longer then the keyid.
3443          struct to prevent zombie dialogs.          (get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the
3444            entry is an userid.
3445          * wptKeyserver.cpp: Removed unused prototypes.          * wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file
3446            more then one time.
3447  2004-02-29  Timo Schulz  <[email protected]>          (fm_add_dropped_files): Use it here.
3448        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common
3449          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support throw-keyid.      keys.
3450    
3451          * wptKeySignDlg.cpp (do_fill_seckeylist): Make sure we skip key itself  2001-10-09  Timo Schulz <[email protected]>
3452          so we are not allowing to sign ourself.  
3453        * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return
3454          * wptSigList.cpp (siglist_add_key): Support for the signature      code of sunlink.
3455          flags (local, non-revocably, ...).      * wptGPG.cpp (get_keyring_from_optfile): New.
3456        Renamed gpg_errstr to gpg_strerror.
3457          * Key signing with GPG 1.2.x should work again. Hopefully.      (set_default_key): New.
3458        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.
3459  2004-03-02  Timo Schulz  <[email protected]>      
3460    2001-10-08  Timo Schulz <[email protected]>
3461          * wptGPG.cpp (check_keyring): Handle the case that the keyring  
3462          is set in the gpg.conf file and the pubring.gpg file is zero bytes.      * wptKeyserver (kserver_connect): If the proxy settings are valid,
3463        use the proxy port instead of the HKP port.
3464          (gnupg_backup_keyrings): Support backup of keyrings which were set      (kserver_recvkey): Proxy support.
3465          in gpg.conf. Thanks to the user who reminded me of this problem.      (kserver_search_init): Ditto.
3466    
3467          (gnupg_check_file_ext): Make check not case sentensive.  2001-10-06  Timo Schulz <[email protected]>
3468    
3469          * (sfree_if_alloc): Overwrite the memory with zeros before freeing      * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.
3470          it. This only works with c-strings! Use it everywhere we handle  
3471          sentensive information (passphrases).  2001-10-05  Timo Schulz <[email protected]>
3472    
3473          * Try to improve the usability with better menu names and new      * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.
3474          ordering.      In the case it is, use the first userID.
3475        * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.
3476          * wptKeyMangerDlg.cpp: Make the 'Trust' column sortable.      Remove the Pos column and add a status column instead.
3477        Add expire stuff for subkeys.
3478          * wptMainProc.cpp (winpt_main_proc): Removed GPG about dialog. Now      (init_dtp): Initialize the common control.
3479          it is part of the WinPt about dialog. This way we can minimize the      * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file
3480          elements in the popup menu.      into the clipboard.
3481        * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description
3482  2004-03-04  Timo Schulz  <[email protected]>      of the ownertrust value.
3483        (keyprops_dlg_proc): Fixed ownertrust handling.
3484          * wptKeyserver.cpp (finger_recvkey): Error if key was not found  
3485          or garbled.  2001-10-04  Timo Schulz <[email protected]>
3486    
3487          * wptGPG.cpp (gpg_check_permissions): Take care of the entries      * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.
3488          in gpg.conf.      * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.
3489        Both were pointed out my Timo (not me ;-)).
3490          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Support to select      * wptKeylist.cpp (add_key): Fix a typo and now the code is more
3491          the signer. Suggested by Sebastian.      strict with returned attributes.
3492        * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface
3493          * wptKeylist.cpp (seclist_init): Moved from the clip dialog file to      for local signatures.
3494          this file.  
3495          (seclist_free): Likewise.  2001-09-28  Timo Schulz <[email protected]>
3496          (seclist_select_key): Likewise.  
3497        * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle
3498          * wptFileManager.cpp (fm_encrypt): Handle the case the signer was      the double click messages.
3499          already set.      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3500        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3501  2004-03-07  Timo Schulz  <[email protected]>      * wptFileManager.cpp (overwrite_file): Check if the file exists and
3502        then let the user decide.
3503          * wptGPG.cpp (get_gnupg_keyring): Special case because GPG creats      (fm_encrypt): Use the code here.
3504          dummy keyrings with a size of zero in the homedir.      (fm_sign): And here.
3505        (fm_sym_encrypt): And here. Now we use the passphrase dialog.
3506          (gpg_check_permissions): Check for read-only keyrings and add code      (fm_decrypt): And here.
3507          for this case.      * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need
3508        a secure wipe.
3509          This problem fixes a lof of other problems related to the OpenPGP  
3510          parsing stuff for the key cache.      Make the memory checking more strict.
3511    
3512          * WinPT.cpp (check_crypto_engine): Store the GPG version for later use.  2001-09-27  Timo Schulz <[email protected]>
3513    
3514  2004-03-08  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who
3515        discovered this.
3516          * wptGPG.cpp (gnupg_import_keyrings): cleanups.      * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the
3517        passphrase.
3518          * wptUTF8.c (utf8_to_wincp): New. Directly convert UTF-8 to Windows      * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to
3519          CP.      the various other dialogs to make the use more easier.
3520          (wincp_to_utf8): Likewise.      * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.
3521          (conv_charset): Now internal and static.      * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.
3522    
3523          * wptUTF8.h: New prototypes and remove the old prototypes.  
3524    2001-09-26  Timo Schulz <[email protected]>
3525          * WinPT.cpp (WinMain): Destroy the windows handle in case of an error.  
3526        * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.
3527        (listbox_get_cursel): Ditto.
3528  2004-03-11  Timo Schulz  <[email protected]>  
3529    
3530          * The DLL is now complety C-source.  2001-09-23  Timo Schulz <[email protected]>
3531    
3532  2004-03-15  Timo Schulz  <[email protected]>      * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.
3533        The same as the userid dialog.
3534          * Decrypt list box has now a vertical scroll bar.      * wptWndSwitchDlg.cpp: Removed.
3535        * wptWipeExt.cpp: Removed. Code is now included.
3536  2004-05-14  Timo Schulz  <[email protected]>      * wptGPGME.cpp (get_default_keyid): If the keyid from the options
3537        file is in the keycache.
3538          * WinPT.cpp (check_crypto_engine): Due to some      * wptKeylist.cpp (keylist_reload): New. Reload a keylist.
3539          internal  GPG changes the min. version for smart card  
3540          support is now 1.3.6.  2001-09-17  Timo Schulz <[email protected]>
3541    
3542          * wptProxySettingsDlg.cpp (read_proxy): Correct prefix      * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs
3543          handling. Thanks to the folks who reported this via SF.net.      who prevent the correct return value in the case of an clipboard error.
3544        (clip_parse_pgp_id): New. Returns the PGP message type.
3545          * wptRegistry.cpp (get_reg_winpt_prefs): Corrected enum ids.      * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.
3546          Thanks to the folks on winpt-users who reported it.      (hotkey_single_register): Return correct error value.
3547        (hotkey_single_unregister): Ditto.
3548          * wptPreferencesDlg.cpp (prefs_dlg_proc): Fix code in case of      * wptW32API.cpp (get_thread_id): Removed.
3549          the hotkeys are disabled.      (attach_thread_input): Ditto.
3550        (detach_thread_input): Ditto.
3551          * wptKeylist.cpp (do_addkey): Broken ElGamal dection, fixed.      * wptCurrWnd.cpp (get_window_contents): Store main and focused window
3552        for later use.
3553          * wptFileManager.cpp (fm_get_file_type): Do not parse the entire      (set_window_contents): Use the new code.
3554          file if the size is >= 256MB.  
3555    2001-09-16  Timo Schulz <[email protected]>
3556  2004-05-31  Timo Schulz  <[email protected]>  
3557        * wptExtensions.h: New. This file is now used for the extenion
3558          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Implement the      declarations.
3559          'X' close button. Noted by a friendly user.      * wptExtensions.new: (register_extensions): New. Enumerate and
3560                load all possible extensions.
3561          Disable 'Save' button.      (unregister_extentions): New. Release all loaded extensions.
3562        * wptKeyserver.cpp (kserver_load_conf): Added support for different
3563          * wptMainProc.cpp (cleanup_tmp_files): Delete all related temp files.      keyservers. Currently only HTTP/LDAP.
3564        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.
3565          * wptFileManager.cpp (fm_set_status): Do not use the data file name      (hkp_recv_key): Ditto.
3566          for signatures but keep the original file name.      * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents
3567        to set the focus.
3568          (fm_verify_pasted_detsig): Try to verify detached signatures from      * (oe_check_recipient): New. Checks if the key is able to encrypt
3569          the clipboard.      and valid in the sense of revocation.
3570    
3571  2004-06-02  Timo Schulz  <[email protected]>  2001-09-14  Timo Schulz <[email protected]>
3572    
3573          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Do not issue an error      * wptWAB.cpp: (wab_read): New. Interface to read all address book
3574          if there is no clipboard data.      entries.
3575        (wab_open): New. Internal function to load the WAB.
3576          Release memory in case of an error.      (wab_release): New. Release the WAB contexts.
3577        (wab_load): New. Load the contents of the WAB into a linked list.
3578          * wptKeyManager.cpp (keylist_cmp_cb): Allow to sort by algorithm.      (addr_list_new): New. Linked address list.
3579        (addr_list_add): New.
3580          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.      (addr_list_release): New.
3581    
3582    2001-09-13  Timo Schulz <[email protected]>
3583  2004-06-08  Timo Schulz  <[email protected]>  
3584        * Revamped the whole plugin code for OE5.
3585          * wptInet.cpp: New.      * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.
3586          * wptKeyManagerDlg.cpp (key_manager_dlg_proc): Support for http      (oe_plugin_releae): New.
3587          transfers.      (oe_plugin_init): New. Searches for the OE main window and select
3588          * wptKeyManager.cpp (km_http_import): New.      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  2004-06-12  Timo Schulz  <[email protected]>      (oe_set_msg): Ditto.
3592        (oe_encrypt): Changed for the new code.
3593          * wptInet.cpp: Updated.      * wptMainProc.cpp (wpt_main_proc): Re-activate the code.
3594          * wptKeyManager.cpp (km_http_import): Use http_send_request2() to      * wptHotkeys.cpp: Ditto.
3595          parse the URL.      * Removed the hook project.
3596          * wptCommonDlg.cpp (http_file_dlg_proc): New.  
3597          (get_http_file_dlg): New.  2001-09-12  Timo Schulz <[email protected]>
3598    
3599  2004-06-19  Timo Schulz  <[email protected]>      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.
3600        Thanks to Rich who pointed this out.
3601          * wptInet.cpp: Renamed to ...  
3602          * wptHttp.c: ... this.  2001-09-07  Timo Schulz <[email protected]>
3603          * wptKeyManager.cpp (km_http_import): Release 'p' not too early.  
3604          * WinPT.cpp (WinMain): If there is a problem with the homedir,      * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.
3605          jump to the first start settings.  
3606    2001-09-05  Timo Schulz <[email protected]>
3607  2004-07-11  Timo Schulz  <[email protected]>  
3608        * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.
3609          * Bug fix for the validity revoked status. Now it is 'revoked'      (clip_import): New. Handy function to import keys.
3610          and not 'unknown' any longer.      * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase
3611        is too short.
3612          * Feature to disable encryption. This might be useful for filetypes  
3613          GPG does not recognize as compress (movies, ...).  2001-09-04  Timo Schulz <[email protected]>
3614    
3615          * wptFileManager.cpp (fm_get_file_type): Skip packet detction if      * Rewrote most parts of the keymanager.
3616          the file is large and it has no openpgp extension.      * Ditto for the filemanager.
3617    
3618  2004-07-12  Timo Schulz <[email protected]>  2001-09-01  Timo Schulz <[email protected]>
3619    
3620          * wptRegistry.cpp: Support for disable compression of multi-media files.      * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.
3621          (set_reg_winpt_single): New.      These code is now part of the key manager.
3622          (get_reg_winpt_single): New.      * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.
3623        * wptKeylist.cpp (get_key_algo): New.
3624          * wptFileManager.cpp (is_multi_media): New.      (get_key_created): New.
3625          (fm_encrypt): Disable compression of multi-media files.      (get_key_type): New.
3626          (fm_state_new): Set comment to indicate armored files were generated      (get_key_size): New.
3627          by WinPT. This is a replacement due to the fact the WinPT string is not      (get_key_fpr): New.
3628          added in the 'Version' for larger files.      * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now
3629        a part of the keymanager.
3630          * WinPT.cpp (WinMain): Extract the loadimage.exe from the DLL if not found.  
3631    2001-08-31  Timo Schulz <[email protected]>
3632  2004-07-13  Timo Schulz  <[email protected]>  
3633        * wptFileManager.cpp (fm_add_opened_files): New. Use a standard
3634          * wptFileManager.cpp (fm_assume_onepass_sig): New.      file open dialog instead of drag & drop.
3635          Thanks to Vedaal who found out that armored one-pass sigs are not      * wptHotkeys.cpp (hotkey_strerror): More detailed information which
3636          correctly recognized.      hotkey couldn't set up.
3637        (hotkey_register_single): Ditto.
3638          (ask_filename): New.  
3639          Again thanks to Vedaal who suggested to ask for a new output name  2001-08-30  Timo Schulz <[email protected]>
3640          for the case the user does not want to overwrite the file.  
3641        * wptFilemanager.cpp (fm_encrypt): Add minor changes.
3642          (fm_encrypt): Use it here.       (fm_decrypt): Ditto.
3643          (fm_decrypt): Likewise.       (fm_sign): Ditto.
3644          (fm_sign): Likewise.       (fm_verify): Make the code more modular.
3645         (fm_add_sig_stat): New. For new fm_verify code.
3646          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): New context menu entry  
3647          to set secret keys to ultimate trust.    2001-08-28  Timo Schulz <[email protected]>
3648    
3649          * wptKeyManager.cpp (km_check_for_seckey): Optionally return if the      * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.
3650          key has ultimate trust.      * wptKeyserver.cpp (kserver_load_conf): Proxy support
3651          (km_set_implicit_trust): New.      (kserver_connect): Ditto.
3652    
3653  2004-07-27  Timo Schulz  <[email protected]>  2001-08-26  Timo Schulz <[email protected]>
3654    
3655          * wptKeyManagerDlgProc.cpp (keymanager_dlg_proc): Set the new      * wptFileManager.cpp (fm_entry_new): New.
3656          value for the ownertrust.      (fm_entry_release): New.
3657        (fm_state_new): New.
3658          * wptKeyManager.cpp (get_key_trust): Make it public.      (fm_state_release). New.
3659          (get_key_trust_str): New.      (fm_get_current_file): New.
3660          (km_refresh_from_keyserver): Allow to select random keys.      * wptKeylist.cpp (strlist_add_recipients): New.
3661          (km_refresh_one_key): New.  
3662    2001-08-25  Timo Schulz <[email protected]>
3663          * wptKeyserver.cpp: Use default keyserver if possible.  
3664        * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.
3665  2004-08-02  Timo Schulz  <[email protected]>      (strlist_release): New. Release the linked list.
3666        (strlist_add): New.
3667          * wptKeysigDlg.cpp (do_create_popup): New.  
3668          (do_load_keyprops): New.  2001-08-21  Timo Schulz <[email protected]>
3669    
3670          (keysig_dlg_proc): Factor out some common code and use      * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it
3671          do_load_keyprops.      also supports "encrypt-to" entries as default keys.
3672        * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide
3673          * wptKeyServer.cpp (kserver_check_inet_connection): New.      secure wiping.
3674        (wipe_deinit_ext): New. Unload the DLL and free all pointer.
3675          * wptKeyManger.cpp (km_refresh_from_keyserver): First check      (wipe_loaded_ext): New. Checks wether the DLL was loaded.
3676          for an active internet connection. It's annoying for the      * wptW32API.cpp (set_menu_state): New.
3677          user to confirm an connection error for each key (n>40).  
3678    2001-08-20  Timo Schulz <[email protected]>
3679  2004-08-04  Timo Schulz  <[email protected]>  
3680        * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.
3681          * wptClipEditdlg.cpp (clip_edit_dlg_proc): Removed the      * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable
3682          edit-field to display the text. Now a RichEdit field is      the hotkeys. Automatically enable or disable the hotkey field depend
3683          used. This solves the XP problem that the viewer is empty      on the switch.
3684          even if there is text in it.  
3685    2001-08-17  Timo Schulz <[email protected]>
3686          * wptKeyManger.cpp (km_file_export): Add WinPT specific comment.  
3687        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only
3688          * wptKeySigDlg.cpp (sigprops_dlg_proc): New.      one by default.
3689          (keysig_dlg_proc): Add new 'Properties' button and implement      * wptKeyList.cpp (keylist_add_to_recipients): Ditto.
3690          the code for it.      * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram
3691        entry in the registry in the case it's missing (whenever it's possible!).
3692          * wptSigList.cpp: Add support to show the expiration date.      (check_gpg_path): Rewrite parts of the code.
3693    
3694          * wptGPGME.cpp (keycache_init): Support to show the progress bar.  2001-08-11  Timo Schulz <[email protected]>
3695          (keycache_release): Store the amount of keys in the registry for  
3696          the progress dialog.      * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and
3697        separate the fingerprint from the othr information.
3698          * wptPreferenceDlg.cpp (prefs_dlg_proc): Add support to generate      * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the
3699          default keyserver.conf.      file, specified in the options line, does exist.
3700    
3701          * wptKeyserver.cpp (kserver_load_conf): Store the mod-time of the file.  2001-08-08  Timo Schulz <[email protected]>
3702          Fix possible buffer overflow.  
3703          (wsock_end): Release stored keyserver list.      * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.
3704        Support for more configurations.
3705          * wptEncryptDlg.cpp (clip_encrypt_dlg_proc): Allow to search for      * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.
3706          a specific recipient and select it.      Add all strings to the translation suite.
3707        * Updated all NLS dialog strings.
3708  2004-08-05  Timo Schulz  <[email protected]>      * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.
3709        * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,
3710          * wptKeySigDlg.cpp (sigprops_dlg_proc): Set the 'expired' flag      with a dynamic callback for the passphrase.
3711          when possible.  
3712          New dialog layout to enhance the readability of the text. Use  2001-08-06  Timo Schulz <[email protected]>
3713          flat check boxes for the same reason.  
3714        * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.
3715          * wptKeyEditDlgs.cpp (do_editkey_expire): Set new value to  
3716          the right column (3 not 4).  2001-08-05  Timo Schulz <[email protected]>
3717    
3718          * wptFileManagerDlg.cpp: Make sure the wipe freespace tempfile      * wptKeylist.cpp (keylist_add_key): Change the schematics to support
3719          uses a unique name.      all keyids.
3720        * wptSigList.cpp (siglist_build): New. Interface code to load the
3721        signature list.
3722  2004-08-06  Timo Schulz  <[email protected]>      * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.
3723    
3724          * wptContext.h: Move subclass_s context to this file.  2001-08-03  Timo Schulz <[email protected]>
3725    
3726          * wptKeysigDlg.cpp (subclass_dlg_proc): New.      * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now
3727        we support this code in the key manager.
3728        * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.
3729  2004-08-19  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):
3730        Removed. The code moved into the main functions.
3731          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Corrected      (kserver_send), (kserver_recv): Ditto.
3732          key numbers.      (sock_write): Improved code.
3733        (sock_read): Ditto and some additional timeout.
3734          * wptKeysigDlg.cpp (do_delsig): New. Implement 'delsig' command.      (sock_select): New. Figure out the socket state.
3735          (is_sig): Change code to allow to check pre-defined fields.      (kserver_search_init): New. Make connection to the server.
3736        * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new
3737          * WinPT.cpp (WinMain): Allow read-only support for keyrings.      keyserver code.
3738        * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker
3739  2004-08-20  Timo Schulz  <[email protected]>      packet. Thanks to Alan.
3740        (check_for_symenc_data): Ditto.
3741          * wptKeyManagerDlg.cpp (do_create_minpopup): In read-only      * wptFileManager.cpp (fm_get_file_type): Ditto.
3742          mode the menu is not available.      (fm_decrypt): Move the keycache in the if loop and fix the keycache
3743          (popup_gpg_readonly): New.      type.
3744          (menu_gpg_readonly): New.  
3745          (keymanager_dlg_proc): Use it here. Do not check the permissions  2001-08-02  Timo Schulz <[email protected]>
3746          any longer since this is now handle via the read-only code.  
3747          * wptMainProc.cpp (winpt_main_proc): Check if the keyrings      * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.
3748          are in read-only mode.      Useful in the case the file was generated but it's empty.
3749          * wptKeyGenDlg.cpp (keygen_wizard_dlg_proc): RSA support.      * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.
3750          * wptKeySignDlg.cpp (keysign_dlg_proc): Allow non-revocably  
3751          signatures in expert mode.  
3752          * wptKEyEditDlgs.cpp (do_find_userid): Release context.  2001-08-01  Timo Schulz <[email protected]>
3753          * wptGPG.cpp (gpg_check_permissions): Only print out a warning  
3754          in the interactive mode.      * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible
3755          * wptTrayPopDlg.cpp (WndProc): Destroy the window when the left      request for uploading a key.
3756          mouse button is clicked.      (kserver_send_request): Use the urlencode to send the key.
3757        (sock_read): New. Improved read function to replace recv.
3758  2004-08-24  Timo Schulz  <[email protected]>      (sock_write): New. Improved write function to replace send.
3759        * wptFileManager.cpp (fm_get_file_type): If the data is armored,
3760          * wptKeyEditDlgs.cpp (userid_list_init): Add creation date for      call fm_check_armor_type().
3761          the user-ids.      (fm_check_armor_type): New. Figure out the armor type of the data.
3762          * wptKeygenDlg.cpp (key_wizard_dlg_proc): Allow to switch into      * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the
3763          expert mode when the non-interactive mode is used.      buttons. Optimized the code.
3764          * WinPT.cpp (WinMain): Start the keygen wizard instead of the  
3765          expert dialog and allow to switch to it.  2001-07-30  Timo Schulz <[email protected]>
3766    
3767  2004-08-25  Timo Schulz  <[email protected]>      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code
3768        for the agent.
3769          * wptFileManager.cpp (fm_get_file_type): Skip files over 32 MB      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3770          and skip to read large files on floppy discs.  
3771          (fm_wipe): Display a 'wait' cursor until the wipe is complete.  2001-07-29  Timo Schulz <[email protected]>
3772          (is_floppy_disc): New.  
3773          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.      * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating
3774          (file_manager_dlg_proc): Use subclassing to allow some hotkeys.      a key revocation certificate. Add a hint to show how sentensive this
3775        data is.
3776  2004-08-26  Timo Schulz  <[email protected]>      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the
3777        revocation.
3778          * WinPT.cpp (load_keyserver_conf): New. Factored out some code      * wptAgent.cpp: Source for the server interface removed.
3779          from WinMain ().      (agent_is_avail): New. Checks if the agent is available.
3780          (WinMain): Load keyserver config at the begin. Thanks to Bodo A�ner      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code
3781          * wptKeyserverDlg.cpp (keyserver_dlg_proc): If there is no keyserver      for the agent.
3782          in the list control, add at least the internal default HKP server.  
3783          * wptKeygenDlg.cpp (keygen_wizard_dlg_proc): NLS support.  2001-07-26  Timo Schulz <[email protected]>
3784          * wptKeySignDlg.cpp (sig_class_dlg_proc): Likewise.  
3785          (keysign_dlg_proc): Likewise.      * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring
3786          * wptKeySigDlg.cpp (keysig_dlg_proc): Likewise.      exists. Useful if the keyring was moved during some commands.
3787          * wptKeyserver.cpp (skip_type_prefix): New. Thanks to Marcus Junk.      * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to
3788          (kserver_connect): use it here.      Rich to discover this.
3789          (kserver_send_request): Likewise.  
3790          (kserver_recvkey): Likewise.  2001-07-25  Timo Schulz <[email protected]>
3791    
3792  2004-08-27  Timo Schulz  <[email protected]>      * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect
3793        serious GPG errors.
3794          * wptKeyserver.cpp (skip_whitespace): New.      * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.
3795          * Fix a problem with the key cache. The new hash item was      Suggested by Graham.
3796          not initialized to zero and thus the free caused an illegal access.      (fm_decrypt): Change code to support symmetric decryption.
3797          Thanks to Ralf for pointing this out.      (fm_get_file_type): Fixed some typos.
3798          * wptTextInputDlg.cpp (text_input_dlg_proc): Finished with localisation.  
3799          * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.  2001-07-24  Timo Schulz <[email protected]>
3800          * wptFirstRunDlg.cpp (first_run_dlg_proc): Remove global variable and  
3801          use a context to store the value. Loalize all text strings.      * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after
3802          * wptKeyList.cpp (key_check_validity): Cannot use gettext here.      reloading the keycache. Fixed the memory leaks. Thanks to Andreas.
3803          (keylist_get_recipients): Increase buffer for gettext messages.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform
3804        the user about errors.
3805  2004-08-28  Timo Schulz  <[email protected]>      * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure
3806        in our own context.
3807          * WinPT.cpp (WinMain): Free gpg table in case of an error.      (treeview_insert_item): New. Handy function to insert an entry.
3808          * wptFileManagerDlg.cpp (filelist_subclass_proc): New.      (treeview_create_child_item): New. Insert a trustlist node.
3809          (filemanager_dlg_proc): Subclass the list control.      (treeview_add_trustpath): New. Add recursively the whole trust path
3810          * Fix Alt+C for the winpt_prefs_dlg_proc.      int the tree view.
3811          * wptKeyserver.cpp (kserver_load_conf): Ignore lines with      * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the
3812          just whitespaces. Thanks to the folks on winpt-users.      signature list contains entries with a NOKEY status.
3813        (recv_missing_keys): New. Receive all keys with a NOKEY as the signature
3814  2004-09-01  Timo Schulz  <[email protected]>      status.
3815        * wptImportList.cpp (implist_load): New. Initialize the listview item
3816          * wptGPG.cpp (GPG_CONF): Define it. Use gpg.conf by default.      with an import overview.
3817          (default_key_from_cache): Use new key attribute 'usable'.      * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead
3818          * WinPT.cpp (show_unprotected_keys): Removed.      of the code.
3819          * wptKeylist.cpp (check_key): Removed.      (print_import_status): Summarize the results. We need this because file
3820          (seclist_init): Use new 'usable' key attribute.      import needs the same function.
3821          (keylist_add_key): Likewise.      * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the
3822          * wptKeyManagerDlg.cpp (keylist_subclass_proc): support to      file manager.
3823          add keys via 'INSERT'.      * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key
3824          * wptListView.cpp (listview_select_one): New.      import from file.
3825          (listview_find): New.      * wptFileManager.cpp (fm_import): New. Ditto.
3826          * wptFileManager.cpp (fm_get_current_pos): If there is only      * wptKeyserver.cpp (kserver_connect): Take care for some return values
3827          one item, return 0 but also select it. Thanks to Christian.      and set the socket to non blocking mode.
3828        Moved the Winsock2 init code to wptMainProc.cpp
3829  2004-09-07  Timo Schulz  <[email protected]>      * wptMainProc.cpp (wpt_main_proc): Wsock2 code.
3830        * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.
3831          * wptAboutDlg.cpp (about_dlg_proc): Add 'Help' button. Suggested by Ralf.  
3832          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Likewise.  2001-07-22  Timo Schulz <[email protected]>
3833    
3834  2004-09-08  Timo Schulz  <[email protected]>       * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.
3835         (get_key_created): New. Transform ulong timestamp to ascii.
3836          * wptKeyserverDlg.cpp (kserver_get_pos): If only one element is       (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).
3837          in the list, return zero.       (get_key_size): New. Returns a formatted size depend (depend on subkeys).
3838         * wptSigList.cpp (siglist_add_key): Fix the timestamp.
3839  2004-09-20  Timo Schulz  <[email protected]>       * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace
3840         this with list trust path.
3841          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Disable 'Sign' in       * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function
3842          context menus when the key is flagged as revoked.       because we always check the signatures.
3843          (update_ui_items): Likewise and set the 'ShowPhoto' flag only if       * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.
3844          the key has such an item.      
3845    2001-07-21  Timo Schulz <[email protected]>
3846  2004-10-01  Timo Schulz  <[email protected]>  
3847        * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in
3848          * wptClipSignDlg.cpp: Really use the selected subkey with the      the case of IDCANCEL.
3849          right '!' syntax. Thanks to Vedaal for pointing this out.      * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
3850          * wptGPG.cpp (gnupg_backup_keyrings): Check if the backup device      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair
3851          is accessable and writeable, otherwise inform the user. Kudos to      pair and only if activate the passphrase dlg items.
3852          the one who reported this problem.      Do sanity checks for all buttons that require key pairs.
3853        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.
3854  2004-10-07  Timo Schulz  <[email protected]>      
3855    2001-07-20  Timo Schulz <[email protected]>
3856          * wptErrors.cpp (winpt_errmsg): Use a generic header when no  
3857          filename is supplied.      * wptKeyserver.cpp: (kserver_send_request): Correct the octect length
3858          * wptMainProc.cpp (cleanup_tmp_files): Do not use BUG but      of the request.
3859          an error message which is more clean. Thanks to Ralf.      (check_hkp_response): If an error ocurred, copy the error message into
3860          * wptCardDlg.cpp (card_keygen_dlg_proc): Support new card      the static buffer.
3861          admin mode.      (kserver_strerror): Interface for the static error buffer.
3862          * wptKeySignDlg.cpp (do_check_protection): Also check for smart      * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message
3863          card protection.      box.
3864          (get_keyinfo): Return if this is a smart card key.      (hkp_send_key): Add more verbose messages at the end.
3865          * wptKeyEditDlgs.cpp (do_find_userid): Use UTF8 encoding before      (hkp_recv_key): Ditto.
3866          comparing the names.      (check_pattern): Rewrote the entire code to be more bug proof.
3867          * winpt.cpp: Now depends on PTD 0.7.1.      * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate
3868        that the recipient list contains untrusted entries.
3869  2004-10-15  Timo Schulz  <[email protected]>      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to
3870        force GPG to add the need options.
3871          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Make sure that opt      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3872          is really initialized.  
3873    2001-07-19  Timo Schulz <[email protected]>
3874  2004-10-25  Timo Schulz  <[email protected]>  
3875        * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more
3876          * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Issue an info box      detailed error messages in the case for a missing key or an included
3877          if the PGP message is complete but broken during the transport.      signature.
3878          Thanks to Werner and Achim.  
3879          * wptFileManager.cpp (fm_sym_encrypt): Do not force CAST5. Thanks  2001-07-17  Timo Schulz <[email protected]>
3880          to the gnupg-users.  
3881          * Automatically add '\r\n' to the text before signing. This solves      * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox
3882          the problem the last line is not included if no \r\n is present.      and increment the 'cols' variable inside the structure for further use.
3883          * wptClipEditDlg.cpp (clip_edit_dlg_proc): Add a 'mail quote' mode      (add_key): Watch for the 'cols' variable to figure out how much columns
3884          which prepends the text with '> '. This makes it easier to quote      are used.
3885          decrypted text.      * wptListView.cpp (listview_set_ext_style): Set an extended style for
3886          * wptKeyserverDlg.cpp (keyserver_list_build): Code which was factored      the given listview.
3887          out from..      * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the
3888          (keyserver_dlg_proc): ..here.      selected server.
3889        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3890  2004-11-04  Timo Schulz  <[email protected]>      * wptKeyserver.cpp (kserver_connect): IP address support. This is faster
3891        and no DNS lookup is needed.
3892          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Support preferred  
3893          keyserver sub packets.  2001-07-14  Timo Schulz <[email protected]>
3894    
3895          * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Set a flag to      * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding
3896          indicate we need to reload the cache. If a user deletes a key      it to the signing keylist.
3897          and exits the manager and loads it again the deleted key is      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase
3898          still in cache and provoked an error.      is empty.
3899                * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
3900          * wptKeySigDlg.cpp (do_load_keyprops): Stricter key checks.  
3901    
3902          * wptW32API.cpp (center_window): Replaced with real code which calculates  2001-07-13  Timo Schulz <[email protected]>
3903          the position relative to the desktop window.  
3904        * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to
3905  2004-12-02  Timo Schulz  <[email protected]>      the request. Arggg!
3906        (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.
3907          * wptKeySigDlg.cpp (do_load_keyprops): Only issue errors for non-main nodes.  
3908    
3909  2004-12-11  Timo Schulz  <[email protected]>  2001-07-12  Timo Schulz <[email protected]>
3910    
3911          * wptFileManager.cpp (fm_add_opened_files): Fix broken code to detect      * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,
3912          the file type.      just quit without any messages. Suggested by Rich.
3913          (fm_parse_command_line): Likewise.  
3914    
3915  2004-12-15  Timo Schulz  <[email protected]>  2001-07-11  Timo Schulz <[email protected]>
3916    
3917          * wptFileManagerDlg.cpp (space_wipefrees_dlg_proc): Use the right      * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add
3918          temp name.      the integer.
3919          * wptKeyEditDlgs.cpp (keyedit_main_dlg_proc): Disable 'OK' button      (keyserver_create_conf): Create a config file instead of the error.
3920          when no secret key is available.      * wptGPG.cpp (create_gpg_options): If the file doesn't exist create
3921        a default file. This prevents confusing error messages.
3922  2004-12-20  Timo Schulz  <[email protected]>      (get_gpg_options): Use new code.
3923        * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells
3924          * wptGPG.cpp (check_gnupg_engine): Fixed version checking.      the user how to find the files.
3925          * wptFileManager.cpp (fm_encrypt): Delete the passphrase from the  
3926          cache if it is not valid.  2001-07-05  Timo Schulz <[email protected]>
3927            
3928          Fix problem with a NULL pointer.      * wptHotkey.cpp (mod_hotkeys): Fix a small typo.
3929    
3930  2004-12-30  Timo Schulz  <[email protected]>  2001-07-04  Timo Schulz <[email protected]>
3931    
3932          * wptKeyserverDlg.cpp (keyserver_list_build): Initialize pointer.      * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key
3933          This fixes the problem that the dialog crashes when the user selects      if the user agree.
3934          anything. Thanks to my users.      * wptKeylist.cpp (keyload_load): Use the mode from the param, not
3935          (keyserver_dlg_proc): s/keyserver/kserver. Thanks to Ulf.      the hardcoded.
3936                * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.
3937  2005-01-07  Timo Schulz  <[email protected]>      Rename 'load' to 'reload' to make sense with the new code.
3938        * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the
3939          * wptKeyserver.cpp (skip_type_prefix): Support all URL schemes.      registry stuff.
3940          (finger_recvkey): Use skip_type_prefix and prevent buffer overflows.      * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.
3941          (ldap_recvkey): Likewise.      (get_reg_winpt_prefs): Ditto.
3942          (check_hkp_response): Be more liberal with error strings.      (regist_inst_winpt): Remove the old code.
3943          (kserver_connect): Prevent buffer overflow and use the right return      (register_single_filetype): Replacement for the old code.
3944          code for inet_addr().  
3945          (kserver_search_chkresp): New.  2001-07-01  Timo Schulz <[email protected]>
3946          (kserver_search): Fixed. Now it works with modern keyservers.  
3947          * wptKeylist.cpp (seclist_init): Add new flags param.      * wptFileManager.cpp (fm_verify): New.
3948          * wptFileManagerDlg.cpp (file_encrypt_dlg_proc): Use short secret key      (fm_decrypt): New.
3949          listing.      * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.
3950          * wptClipboardSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.  
3951          * wptMainProc.cpp (winpt_main_proc): GPGME cleanup.  
3952          * WinPT.cpp (WinMain): call GPGME init.  2001-06-30  Timo Schulz <[email protected]>
3953          Reword the 'you have no keyring' problem and revamp the first run dialog.  
3954          * wptGPG.cpp (gnupg_access_keyring): New.      * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase
3955          (gnupg_check_keyring): Removed unused code.      code.
3956          * wptFirstRunDlg.cpp (first_run_dlg_proc): Adjust dialog for the      * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
3957          new texts and remove unused elements.      * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.
3958          * wptKeyserverDlg.cpp (keyserver_dlg_proc): s/keyserver/kserver. The      * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.
3959          last annoying typo.      (fm_delete): New.
3960          * wptKeyserverSearchDlg.cpp (hkpsearch_dlg_proc): End dialog in case of      (fm_encrypt): New.
3961          an error.      (fm_get_current_pos): New.
3962        (fm_get_file_type): New.
3963  2005-01-08  Timo Schulz  <[email protected]>      (fm_add_dropped_files): New.
3964    
3965          * Applied the patches to make the source G++ compatible.  2001-06-29  Timo Schulz <[email protected]>
3966          * wptKeyserver.cpp (kserver_load_conf): Use the stripped string.  
3967          * wptKeygenDlg.cpp (keygen_dlg_proc): Default key size is now 2048.      * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent
3968          * wptFileManagerDlg.cpp (fill_drive_combobox): Do not add CD-Roms.      to send data to the clipboard.
3969        * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to
3970  2005-01-10  Timo Schulz  <[email protected]>      destroy the window immediately.
3971        * wptKeyserver.cpp (kserver_getip): Removed.
3972          * WinPT.cpp (load_gettext): New.      (kserver_get_langname): Removed.
3973          (WinMain): Use it here to load it before --keymanager. Thanks to Ralf.      (kserver_load_conf): New. Load the keyserver.conf file and set the
3974        included keyserver addresses into the global context.
3975  2005-01-20  Timo Schulz  <[email protected]>      * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the
3976        keyserver context.
3977          * wptKeycacheDlg.cpp (keycache_dlg_proc): Be less strict with the      * wptImplist.cpp (get_key_date): New. Transform integer timestamp
3978          keyring check. If the file exists, it is enough.      to ISO date.
3979          * wptKeyring.cpp (kserver_load_conf): Use C++ new for proxy_host.      (implist_add_key): Now it uses the context instead of all single
3980          Several cleanups and allow to specify the port of the keyserver.      variables.
3981          * wptMainProc.cpp (winpt_main_proc): Handle WM_CLOSE to make sure  
3982          the application terminates clearly when Windows shutdown.  2001-06-28  Timo Schulz <[email protected]>
3983    
3984  2005-01-21  Timo Schulz  <[email protected]>      * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new
3985        flag variables to support RFC1991.
3986          * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Allow to retrieve keys      (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.
3987          which are not in the keyring. Suggested by djek.      (get_rfc1991_pktlen): Ditto.
3988          * wptFileManagerDlg.cpp (filemanager_dlg_proc): Implement basic  
3989          'Always on Top'.  2001-06-27  Timo Schulz <[email protected]>
3990          Allow to send encrypted files via MAPI.          
3991          * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Only reload the keycache      * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.
3992          if the HKP retrieval succeeded.      (get_pkt_len): New. Extract the OpenPGP packet length.
3993          * wptFileStatDlg.cpp (do_list_packets): Make sure that the pkt pointer      (parse_pke_sesskey): Read a public key encrypted session key
3994          is not NULL.      but without data.
3995          * wptKeyManager.cpp (km_clip_export): Prefix the clipboard text with      * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the
3996          a header similar to 'gpg -k name'.      filename contains spaces. Just to make GPG happy.
3997          * wptErrors.cpp (log_box): Use msg_box to make sure the box is visible      (file_manager_dlg_proc): Check if the file exist after encryption.
3998          with 'Always on Top' windows.      * wptFile.cpp (get_keyid_from_file): Checks the file for an valid
3999          * wptFileManager.cpp (fm_parse_files): Set progress callback for      packet and then extract the keyid.
4000          wiping files.  
4001          (fm_add_opened_files): Do not add the file in case of an error.  2001-06-25  Timo Schulz <[email protected]>
4002          * wptKeyserverDlg.cpp (kserver_get_port): New.  
4003          (save_default_ks): Save port.      * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with
4004          * wptKeyserver.cpp (set_default_kserver): Get port or use default.      the contents from the given cache context.
4005          (kserver_connect): Logging.      (keylist_add_to_recipients): New. Add the selected keys to the
4006          (kserver_send_request): Likewise. Thanks to Markus.      recipient set.
4007          * wptError.cpp (w32_fmt_msg): New.      * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist
4008          (winpt_strerror): Show the W32 API error if the hotkey could not      function to load the listview.
4009          be registered.      * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.
4010        * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
4011  2005-01-25  Timo Schulz  <[email protected]>      * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid
4012        and the keyid hint.
4013          * wptCardDlg.cpp (card_keygen_dlg_proc): Make 'backup keys' default  
4014          and that all values are 7-bit ASCII.  2001-06-24  Timo Schulz <[email protected]>
4015          Use '*' for the passphrase field.  
4016          * wptGPG.cpp (multi_gnupg_path): New.      * wptGPG.cpp (get_gpg_path): Add null termination to the string.
4017          (get_gnupg_path): Use it here.      Thanks to Jonathan who pointed this out.
4018          (check_homedir): Likewise.      (get_gpg_prog): Ditto.
4019          * wptKeyserverDlg.cpp (save_default_ks): Fix problem that the port      (gpg_check_file_ext): Check the file extension for the given GPG
4020          is actually set.      type.
4021          * wptFileManager.cpp (fm_clearsign_8bit): New.      (get_gpg_default_keyid): Return null if there isn't an entry in the
4022          (fm_parse_files): Check if the file to clearsign is really 7-bit.      options file.
4023          Thanks to djek.      * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx
4024          (fm_set_ftype): Factored out some code from...      style functions.
4025          (fm_add_dropped_files): ...here. Simplied the code.      * wptImpList.cpp (implist_add_key): Ditto.
4026          (fm_add_dir_files): New.      * wptSigList.cpp (siglist_add_key): Ditto.
4027          * Removed MD5 from MyGPGME and the new default sym cipher is AES.      * wptVerifyList.cpp (verlist_add_key): Ditto.
4028          * wptProgressDlg.cpp (progress_dlg_proc): Use additional HAND var  
4029          to track the window handle.  2001-06-23  Timo Schulz <[email protected]>
4030          (progress_cleanup): Try to close tracking handle first.  
4031        * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the
4032  2005-01-26  Timo Schulz  <[email protected]>      options file.
4033    
4034          * wptGPG.cpp (multi_gnupg_path): Zero buffer before use.  2001-06-22  Timo Schulz <[email protected]>
4035          * wptKeyManagerDlg.cpp: Add 'Select All' feature.  
4036          Move 'Edit->Key' to 'Key->Edit'.      * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform
4037          * wptFileManagerDlg.cpp: Likewise.      keyserver seraching. As an additional feature it's also posible to
4038          * wptKeyPropsDlg.cpp (keyprops_show_photo): Show the JPG photo directly.      import the keys directly.
4039          * wptKeyManager.cpp (spawn_loadimage): Removed.  
4040          (km_show_photo): Removed.  2001-06-18  Timo Schulz <[email protected]>
4041          * wptRevokersDlg.cpp (revokelist_init): Fixed index.  
4042          * wptErrors.cpp (winpt_strerror): Show system error for registry      * wptKeyserver.cpp (check_hkp_response): More detailed error check
4043          related problems.      of the http response.
4044        (kserver_send_request): Debug mode now uses logfile.
4045  2005-02-02  Timo Schulz  <[email protected]>      (kserver_recv_request): Ditto.
4046        (kserver_index_request): New. Create a request for a key index.
4047          * wptPassphraseDlg.cpp (passwd_dlg_proc): use center_window2, otherwise      (kserver_send): Now uses check_hkp_response.
4048          it is invisible.      (kserver_recv): Ditto.
4049          * wptPassphraseCB.cpp (passphrase_callback_proc): Do not cache symmetric      (kserver_search): New. Start the key index loop.
4050          passphrases.      * wptKeyserverDlg.cpp (recv_key): Check if the key was really
4051          * Enable the progress dialog for symmetric encryption.      imported and received.
4052          * wptFileManager.cpp (fm_check_file_type): Also check for 'SYMKEYENC' in  
4053          FM_ENCRYPT mode.  2001-06-17  Timo Schulz <[email protected]>
4054          * WinPT.cpp (WinMain): SETUP_EXISTING implemented.  
4055          * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Reset 'Locale directory' when      * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the
4056          no value is entered.      default key for signing.
4057    
4058  2005-02-04  Timo Schulz  <[email protected]>  2001-06-16  Timo Schulz <[email protected]>
4059    
4060          * wptProgressDlg.cpp (progress_cb_thread): Set root window if available.      * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.
4061          If the progress window survives by accident, it will be closed when the      Corrected return values.
4062          File Manager (root window) is closed.      * wptErrors.cpp (winpt_strerror): Removed all unused error strings.
4063        * wptGPG.cpp (get_gpg_path): Change to default path and prevent
4064  2005-02-07  Timo Schulz  <[email protected]>      buffer overflows.
4065        (get_gpg_prog): Ditto.
4066          * wptFileManager.cpp (fm_parse_files): Do not use the progress dialog  
4067          for signing and verifying. But this does not fix the problem tha the  
4068          dialog sometimes stay and is not destroyed.  2001-06-15  Timo Schulz <[email protected]>
4069    
4070  2005-02-23  Timo Schulz  <[email protected]>      * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.
4071        Differ between the new keylist styles.
4072          * wptKeyserver.cpp (check_hkp_response): Support for HTTP/1.1.      * wptGPGME.cpp (keycache_xxx): Move the caching interface to this
4073          (kserver_search): Be more strict.      file. For an easier handling between dialogs and code.
4074          * WinPT.cpp (WinMain): Enable FM progress by default.      (keycache_rewind): New. Rewind a global keycache context.
4075          * wptFileManagerDlg.cpp (file_preferences_dlg_proc): New.      (keycache_next_key): New. Retrieve the next key from the keycache.
4076          (fm_parse_files): Use progress dialog only if it is      (get_default_key): New. Return the default key, this is the secret
4077          enabled.      key with the index 0.
4078        * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key
4079  2005-03-03  Timo Schulz  <[email protected]>      handling. Now the signer is set in any case. Prevent hanging GPG
4080        processes.
4081          * wptCardDlg.cpp (card_changepin_dlg_proc): Add item to re-type the      * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.
4082          new PIN. Suggested by Achim.      (vm_safe_init_noswap): New. Initialize safe memory with tail data.
4083          Support to show the unmasked PIN.      See source for more information.
4084          Modified TAB-order.      (vm_safe_free): New. Free all used pointer and burn all buffers.
4085          * wptPINDlg.cpp (pin_cb_dlg_proc): Show unmasked PIN.      (vm_safe_get): New. Get the begin of the alloced buffer.
4086        (vm_safe_set_swapfile): New. Set global swapfile name.
4087          * Fixed wrong GPG --command-fd strings. Thanks to Achim.      (vm_safe_create_swapfile): New. Creats a swapfile and set its
4088        contents to zero.
4089  2005-03-04  Timo Schulz  <[email protected]>  
4090    2001-06-12  Timo Schulz <[email protected]>
4091          * GPG asks twice for the new PIN. Thanks to Achim.  
4092          * wptCardDlg.cpp (card_changepin_dlg_proc): Reset the 'safety' pin also.      * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is
4093          Only check the passphrase if the backup flag is enabled. Again thanks to      a big letter, otherwise convert.
4094          Achim.      (preferences_dlg_proc): Check hotkeys.
4095        * wptKeylist.cpp (add_keys): Static functions to add a single key.
4096  2005-03-06  Timo Schulz  <[email protected]>      (keylist_add_key): Now it adds all subkeys to the dialog.
4097        (keylist_alloc): Remove because it's not needed any longer.
4098          * wptKeySignDlg.cpp (do_fill_seckeylist): Skip secret keys without      * wptImportList.cpp (implist_alloc): Ditto.    
4099          a public key. Noted by Kurt Fitzner.      * wptSigList.cpp (siglist_alloc): Ditto.
4100        * wptVerifyList.cpp (verlist_alloc): Ditto.
4101  2005-03-22  Timo Schulz  <[email protected]>  
4102    2001-06-10  Timo Schulz <[email protected]>
4103          * WinPT.cpp (WinMain): --debug as an alias for --enable-debug.  
4104          (enable_mobile_mode): New.      * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single
4105          * wptKeyEditDlg.cpp (keyedit_addsubkey_dlg_proc): Use new      hotkey.
4106          ID's for adding subkeys.      (mod_hotkeys): Take care of the enable flags.
4107        (register_hotkeys): Ditto.
4108  2005-04-04  Timo Schulz  <[email protected]>      (unregister_hotkeys): Ditto.
4109        * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,
4110          * WinPT.cpp (check_crypto_engine): Correct version      don't try to modify hotkeys.
4111          check. Noted by Werner.      * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to
4112        the foreground.
4113    
4114    2001-06-08  Timo Schulz <[email protected]>
4115    
4116        * wptHotkey.cpp (mod_hotkeys): Change code to support the new
4117        registry style.
4118        * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable
4119        single hotkeys. Suggested by Jonathan.
4120        * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable
4121        single hotkeys.
4122        * wptKeyserver.cpp (kserver_connect): Reset winsock error var.
4123        (keyserver_recv): Ditto.
4124        (keyserver_send): Ditto.
4125        (wsock_strerror): Returns a description of the winsock problem.
4126        * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer
4127        is valid.
4128    
4129    2001-06-07  Timo Schulz <[email protected]>
4130    
4131        * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,
4132        add windows title.
4133    
4134    2001-06-05  Timo Schulz <[email protected]>
4135    
4136        * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned
4137        buffer is valid. Remove the fixme, because it's possible that there
4138        were new cipher modules loaded.
4139        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the
4140        context is valid.
4141        * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.
4142        * wptW32API.cpp (status_box): New. Message box that is always forced
4143        to the foreground.
4144    
4145    2001-06-04  Timo Schulz <[email protected]>
4146    
4147        * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for
4148        the improved import status.
4149    
4150    
4151    2001-06-01  Timo Schulz <[email protected]>
4152    
4153        * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:
4154        Release context in the case of an error.
4155        * wptMainProc.cpp (wpt_main_proc): Fix typo.
4156        * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use
4157        a static gpg object array that contains all filenames.
4158    
4159    
4160    2001-05-27  Timo Schulz <[email protected]>
4161    
4162        * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.
4163        (get_reg_winpt_prefs): Ditto.
4164        * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the
4165        gpg process finished.
4166        * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to
4167        a humand readable date.
4168    
4169    
4170    2001-05-25  Timo Schulz <[email protected]>
4171    
4172        * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen
4173        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        valid and then look at the length. Avoid crashes for some texts.
4176    
4177    2001-05-21  Timo Schulz <[email protected]>
4178    
4179        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid
4180        management.
4181        * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids
4182        from a special key.
4183    
4184    2001-05-20  Timo Schulz <[email protected]>
4185    
4186        * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries
4187        to figure out if both parts are available.
4188    
4189    2001-05-19  Timo Schulz <[email protected]>
4190    
4191        * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey
4192        flag is set, also disable all input items.
4193        (disable_dlg_item): New. Disable dialog items (windows).
4194        * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys
4195        flag isn't set.
4196        * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as
4197        a result the code only sended parts of the key.
4198        * wptConfig.cpp: Removed. Not used any longer.
4199    
4200    2001-05-18  Timo Schulz <[email protected]>
4201    
4202        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various
4203        edit key commands. In the case the dialog was canceled, return without
4204        modifying anything.
4205        * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the
4206        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        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        give the user the chance to start the GPG preference dialog.
4211        * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey
4212        support. Flag to disable all hotkeys. Reload new hotkeys (in the case
4213        they changed). Load the registry entry on startup.
4214        * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the
4215        stored registry entries.
4216    
4217    2001-05-13  Timo Schulz <[email protected]>
4218    
4219        * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist
4220        the function create it.
4221        (set_reg_winpt_prefs): Use the new function to set the subkey values.
4222        All functions now return WPTERR_REGISTRY instead of 1.
4223        Add some error handling to prevent errors in the registry.
4224        * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard
4225        hotkeys and the caching time.
4226    
4227    
4228    2001-05-12  Timo Schulz <[email protected]>
4229    
4230        * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption
4231        call.
4232    
4233    2001-05-11  Timo Schulz <[email protected]>
4234    
4235        * wptMainProc (wpt_main_proc): Change all related menu entries from
4236        Encrypt & sign to Sign & Encrypt. Added the command to the current
4237        window menu and the handling of the window messages.
4238        * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.
4239        * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT
4240        preferences in the registry.
4241        (get_reg_winpt_prefs): Read all preferences from the registry into
4242        the options context.
4243        * WinPT.cpp (WinMain): Read in the registry preferences at the begin
4244        and store it.
4245        * wptAgent.cpp (agent_init): Check if the environment variable
4246        GPG_AGENT_INFO is set, otherwise set it.
4247        (agent_is_running): Check wether the agent is running.
4248        (agent_start): Automated function that read all needed information
4249        from global variables.
4250    
4251    2001-05-10  Timo Schulz <[email protected]>
4252    
4253        * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve
4254        the handle of the specified window.
4255        * wptAgent.cpp (agent_timer_proc): Changed the agent interface
4256        to window messages instead of socket connections.
4257        * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog
4258        and menu entry.
4259        * wptPreferencesDlg.cpp: New.
4260    
4261    2001-05-09  Timo Schulz <[email protected]>
4262    
4263        * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.
4264        (gpga_readn): Read 'n' bytes from a socket.
4265        (gpga_open): Open the interface to the GPG-Agent.
4266        (gpga_close): Close the GPG-Agent socket.
4267        (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.
4268        (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,
4269        this keys will be remove from the GPG-Agent cache.
4270        (agent_delete_fpr): Remove a fingerprint from the cache.
4271        (agent_init): Clear the cache.
4272        (agent_timer_proc): Remove all stored passphrases which were
4273        requested through the chache.
4274    
4275    2001-05-08  Timo Schulz <[email protected]>
4276    
4277        * wptKeyserver.cpp (wsock_init): Replace the kserver init
4278        code which initialized the Wsock2 interface.
4279        (wsock_end): Ditto.
4280        * wptAgent.cpp: Remove the passphrase caching code and add
4281        the GPG agent code.
4282    
4283    2001-05-05  Timo Schulz <[email protected]>
4284    
4285        * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve
4286        the current window handle. This code doesn't use the hook DLL.
4287        Thanks to Oliver Nittka for his patch.
4288        * wptErrors.cpp (winpt_strerror): Fixed a small typo.
4289        * wptGPG.cpp (check_last_gpg_access): Remove debug code.
4290        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading
4291        scheme to prevent reloading the cache twice.
4292    
4293    2001-05-04  Timo Schulz <[email protected]>
4294    
4295        * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.
4296        * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):
4297        Move all the GPGME specific code to the main dialog. Now only
4298        the context values are set.
4299        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust
4300        code.
4301    
4302    2001-05-02  Timo Schulz <[email protected]>
4303    
4304        * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional
4305        subkeys for the mainkeys.
4306        * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground
4307        window flag.
4308        * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the
4309        addkey feature.
4310    
4311    2001-05-01  Timo Schulz <[email protected]>
4312    
4313        * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence
4314        to a window.
4315        (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.
4316        (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        * wptMainProc.cpp (wpt_main_proc): Fix some message string for
4319        the hotkey handling. Quit the program if a registration procedure
4320        failed.
4321        * wptErrors.cpp (log_box): Improved log handling to dump states
4322        of variables during regression tests.
4323    
4324    2001-04-30  Timo Schulz <[email protected]>
4325    
4326        * wptClipEditDlg.cpp: Now the dialog uses the Courier font to
4327        enhance the format of keys and other GPG data.
4328        * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod
4329        flag after receiving a key.
4330        * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when
4331        no listbox entry was choosen.
4332        * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to
4333        the NLS suite.
4334        * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag
4335        instead of refresh the keycache.
4336    
4337    2001-04-29  Timo Schulz <[email protected]>
4338    
4339        * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.
4340        (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the
4341        adduid command.
4342        * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize
4343        the dialog with a KEY structure that holds the keyid and the userid.
4344        * 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    
4348    2001-04-28  Timo Schulz <[email protected]>
4349    
4350        * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.
4351        So it's easier to update GPGME and we can use NLS to translate
4352        error strings.
4353        * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code
4354        because we only use it here.
4355        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'
4356        feature to the edit-key interface.
4357    
4358    2001-04-27  Timo Schulz <[email protected]>
4359    
4360        * wptCurrWnd.cpp (get_window_contents): Change the code for the last
4361        window concept. Thanks to Oliver.
4362        (set_window_contents): Add some stuff to set the position if the
4363        current window is an edit control.
4364        * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'
4365        stuff.
4366        * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to
4367        create a new user id for a GPG key.
4368    
4369    2001-04-26  Timo Schulz <[email protected]>
4370    
4371        * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various
4372        edit-key commands.
4373        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit
4374        key code.
4375    
4376    2001-04-25  Timo Schulz <[email protected]>
4377    
4378        * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME
4379        callback system to pass the keyedit information to GPG.
4380        * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.
4381    
4382    2001-04-24  Timo Schulz <[email protected]>
4383    
4384        * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview
4385        item and set it to zero.
4386        * wptSignDlg.cpp (sign_dlg_proc): Ditto.
4387        * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.
4388        * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.
4389        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.
4390        (keymisc_dlg_proc): Provide the functionality to delete key pairs
4391        secret+public.
4392        * wptWndHook.cpp (is_winpt_wnd): Remove this function and put
4393        all code into (check_wnd).
4394        (check_wnd): Check if the window doesn't is a application related
4395        window.
4396    
4397    2001-04-23  Timo Schulz <[email protected]>
4398    
4399        * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality
4400        is not needed because all dialog windows are top level windows.
4401    
4402    2001-04-22  Timo Schulz <[email protected]>
4403    
4404        * wptGPG.cpp (check_last_gpg_access): Reset switch before testing
4405        the condition.
4406        * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate
4407        all children windows.
4408        (find_parent_wnd_proc): New. Callback to enumerate all parent windows.
4409        (find_window): New. Return if the specified windows as found.
4410        * wptW32API.cpp: (dialog_box_param): New. Alias with the additional
4411        feature to check if the dialog already exist (and then preventing
4412        the creation).
4413        * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with
4414        then new dialog_box_param function. Thanks to Martin who told me
4415        about this dialog problem.
4416        * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.
4417        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the
4418        new signature buttons.
4419    
4420    2001-04-21  Timo Schulz <[email protected]>
4421    
4422        * wptWndHook.cpp (install_cbt_hook): Remove the thread because the
4423        system already is into a DLL.
4424        * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use
4425        instead of it a button to check the key signatures.
4426        * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp
4427        from the given gpg object.
4428        (check_last_gpg_access): New. Compare the last file timestamp with the
4429        new timestamp.
4430        (init_gpg_table): New. Initialize the table with gpg objects who shall
4431        be watched.
4432        (keyring_check_last_access): Use the new code.
4433        * wptCurrWnd.cpp (set_window_contents): Restore the window if it is
4434        now iconic.
4435        * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the
4436        current window stuff.
4437    
4438    2001-04-17  Timo Schulz <[email protected]>
4439    
4440        * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window
4441        belongs to the taskbar area.
4442        (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.
4443        (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        * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the
4447        current window mode set the no_cbt variable.
4448        * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring
4449        was modified by an external program.
4450        * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external
4451        keyring changes.
4452    
4453    2001-04-16  Timo Schulz <[email protected]>
4454    
4455        * wptWndHook,cpp (cbt_proc): Compare process ids to differ between
4456        WinPT and normal windows.
4457        (install_cbt_hook): Add pid to the context.
4458    
4459    2001-04-14  Timo Schulz <[email protected]>
4460    
4461        * wptCurrWnd.cpp: (get_window_contents): Add an event to switch
4462        the windows. This is needed by the current code.
4463        (set_window_contents): Ditto.
4464        * 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        above.
4467        (create_wndswitch_event): Execute the dialog.
4468        * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey
4469        section. Add message entries for the code.
4470        * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE
4471        mailer code.
4472        (insert_window_from_clip): Ditto.
4473        * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add
4474        the event to switch the windows.
4475        (oe_get_message): Ditto.
4476    
4477    2001-04-13  Timo Schulz <[email protected]>
4478    
4479        * wptMailPlugin.cpp: (oe_set_message): Change the id's for
4480        the attach_thread_input.
4481        (oe_get_message): Ditto.
4482        * wptCurrWnd.cpp: (get_window_contents): Ditto.
4483        (set_window_contents): Ditto.
4484    
4485    2001-04-12  Timo Schulz <[email protected]>
4486    
4487        * wptHotkeys.cpp: (register_single_hotkey): Add code for the current
4488        window stuff.
4489        * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window
4490        hotkeys.
4491        * wptW32API.cpp: (attach_thread_input): Split up the functions into
4492        two parts. The attach flags is always set.
4493        (detach_thread_input): See above. The attach flags is never set.
4494        * wptCurrWnd.cpp: New. Code for the current window stuff.
4495        (get_window_contents): Extract the text from the given window to
4496        the clipboard.
4497        (set_window_contents): Insert clipboard into the given window.
4498    
4499    2001-04-09  Timo Schulz <[email protected]>
4500    
4501        * wptGPG.cpp: (check_line): Ignore empty lines.
4502        (check_gpg_options): Ditto.
4503    
4504    2001-04-09  Timo Schulz <[email protected]>
4505    
4506        * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet
4507        type. Kludge for decrypt/verify.
4508        * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the
4509        code into the decrypt routine.
4510        * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start
4511        the key management after import.
4512    
4513    2001-04-07  Timo Schulz <[email protected]>
4514    
4515        * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.
4516        (agent_destroy): Ditto.
4517        (agent_passphrase_cache): Ditto.
4518        (agent_passphrase_remove): Ditto.
4519        (agent_passphrase_get): Ditto.
4520    
4521    2001-04-06  Timo Schulz <[email protected]>
4522    
4523        * wptGPG.cpp: (check_gpg_path): Fix a small error.
4524        * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the
4525        first time a user started WinPT.
4526        * wptClipboard.cpp: (clip_isalready_secured): Check the begin and
4527        end PGP header.
4528    
4529    2001-04-06  Timo Schulz <[email protected]>
4530    
4531        * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.
4532        * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the
4533        ownertrust dialog.
4534    
4535    2001-04-04  Timo Schulz <[email protected]>
4536    
4537        * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static
4538        passphrase. Now a callback context is used.
4539        (passphrase_cb): Ditto.
4540        (clip_decrypt_dlg): Ditto.
4541        * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.
4542        (install_cbt_hook): Modify for the new thread model.
4543        (remove_cbt_hook): Ditto.
4544        * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.
4545        (delete_critical_section): Ditto.
4546        (lock): Ditto.
4547        (unlock): Ditto.
4548    
4549    2001-04-02  Timo Schulz <[email protected]>
4550    
4551        * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.
4552        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only
4553        contains valid keys.
4554        * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.
4555    
4556    2001-03-31  Timo Schulz <[email protected]>
4557    
4558        * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,
4559        the GPG default key will be used.
4560    
4561    2001-03-30  Timo Schulz <[email protected]>
4562    
4563        * wptW32API.cpp: (new_strdup): Remove.
4564        * wptW32API.h: Ditto.
4565        * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.
4566        * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.
4567    
4568    2001-03-28  Timo Schulz <[email protected]>
4569    
4570        * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):
4571        Added the keyid to the "no trust" message.
4572        * wptKeyserverDlg.cpp: (check_pattern): New:
4573        Do some sanity checks of the search pattern.
4574        * wptMainProc.cpp: (wpt_main_proc): Add agent support.
4575        * wptHotkey.cpp: Add agent support.
4576    
4577    2001-03-21  Timo Schulz <[email protected]>
4578    
4579        * WinPT.cpp: (WinMain): Re-activate the enable debug switch.
4580        * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.
4581    
4582    2001-03-20  Timo Schulz <[email protected]>
4583    
4584        * wptClipDecryptDlg.cpp: Rewrote
4585    
4586    2001-03-19  Timo Schulz <[email protected]>
4587    
4588        * wptVerifyList.cpp: New control for the verify dialog.
4589        * wptClipVerifyDlg.cpp: Rewrote
4590    
4591    2001-03-18  Timo Schulz <[email protected]>
4592    
4593        * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.
4594        * wptAgent.cpp: New: Experimental passphrase caching.
4595    
4596    2001-03-16  Timo Schulz <[email protected]>
4597    
4598        * wptDlgs.h: Add new dialog callback function.
4599        * wptKeysigDlg.cpp: New. Key signature listing dialog.
4600    
4601    2001-03-15  Timo Schulz <[email protected]>
4602    
4603        * wptClipEncryptDlg.cpp: Fix translation.
4604        * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).
4605        * wptKeymiscDlg.cpp: Fix the key deleting stuff.
4606    
4607    2001-02-27  Timo Schulz <[email protected]>
4608    
4609        * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.
4610        * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):
4611        Fixed.
4612    
4613    2001-02-25  Timo Schulz <[email protected]>
4614    
4615        * wptGPGPrefsDlg.cpp: Add some new translation strings.
4616        * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.
4617        * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.
4618        * wptClipImportDlg.cpp: Finished basic interface.
4619    
4620    2001-02-24  Timo Schulz <[email protected]>
4621    
4622        * wptGPG.cpp: (check_gpg_path): Fix a bug.
4623       (check_gpg_options): Fix some bugs.
4624    
4625    2001-02-22  Timo Schulz <[email protected]>
4626    
4627        * wptGPG.cpp: (check_line): New. Check if the line contains a valid
4628        gpg argument.
4629        (check_gpg_options): New. Parses each buffer line to check_line().
4630    
4631    2001-02-21  Timo Schulz <[email protected]>
4632    
4633        * wptGPG.cpp: Fix the check_gpg_optfile() code.
4634            (gpg_errstr): Define some error constants to be more verbose.
4635            (set_gpg_options): New. Manipulate the options file.
4636            (get_gpg_options): New. Read in the options file.
4637        * wptFile.cpp: (get_file_size): New.
4638        * wptGPGOptDlg.cpp: New. Dialog for editing the options file
4639    
4640    2001-02-20  Timo Schulz <[email protected]>
4641    
4642        * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.
4643        * wptClipImportDlg.cpp: Add some new code.
4644    
4645    2001-02-19  Timo Schulz <[email protected]>
4646    
4647        * wptRegistry.cpp: (is_installed): Remove.
4648        (regist_inst_winpt): Add selfcheck.
4649        (regist_inst_gpg): New. Add gpg releated registry entries.
4650        (regist_inst_mo): New. Add nls related path.
4651        (get_reg_entry), set_reg_entry(): Modify to be more flexible.
4652        (set_reg_entry_gpg): Handy functions for get_reg_entry.
4653        (set_reg_entry_mo): Ditto.
4654        (get_reg_entry_gpg): Ditto.
4655        (get_reg_entry_mo(): Ditto.
4656        * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.
4657        * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.
4658        include keyring entries (2x)
4659        (check_gpg_path): Include the check_gpg_optfile() check.
4660    
4661    2001-02-17  Timo Schulz <[email protected]>
4662    
4663        * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from
4664        the registry.
4665        (set_reg_entry): Set a gnupg registry key.
4666        * wptGPG.cpp: Modify all function for the use with get_reg_entry().
4667        * WinPT.cpp: Change the way for the gpg searching mechanism.
4668        * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.
4669        * wptClipImportDlg.cpp: (key import dialog): New.
4670        * wptKeylistElement.cpp:
4671        (wpt_lv_implist_build): Build up the key import list.
4672        (wpt_lv_implist_add_key): Insert a key into the import list.
4673        (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.
4674    
4675    2001-02-10  Timo Schulz <[email protected]>
4676    
4677        * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.
4678        * wptKeylistElement.cpp: New.
4679        * wptListElement.cpp: Remove.
4680        * wptW32API.cpp: Insert all lv_*** functions.
4681        * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.
4682        (wpt_lv_keylist_release_keys): Ditto.
4683        * wptW32API.cpp: (w32_get_thread_id): New.
4684        (w32_attach_thread_input): New.
4685        * 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        Add sanity check for recipients.
4689    
4690    2001-02-07    Timo Schulz <[email protected]>
4691    
4692        * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.
4693        * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.
4694    
4695    2001-02-04    Timo Schulz <[email protected]>
4696    
4697        * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.
4698        * wptMainProc.cpp: (wpt_main_proc):
4699        Remove ciphertext checks for signing and encrypting.
4700        (allow double encryption).
4701    
4702    2001-02-03  Timo Schulz <[email protected]>
4703    
4704        * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.
4705        (oe_find_addr_window): Ditto.
4706        (oe_find_main_window): Ditto.
4707    
4708    2001-02-02  Timo Schulz <[email protected]>
4709    
4710        * wptW32API.cpp: (w32_hit_key): New.
4711        (w32_rel_key): New.
4712        (w32_copy_to_clip): New.
4713        (w32_insert_from_clip): New.
4714        (w32_get_clip_text): New.
4715        (w32_set_clip_text: New.
4716        (w32_show_if_icon): New.
4717    
4718    2001-02-01 Timo Schulz <[email protected]>
4719    
4720        * wptW32API.cpp: (w32_get_edit_text): New.
4721        (w32_set_menu_text): New.
4722        (w32_strdup): New.
4723        * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.
4724        * Create all dialogs windows in the foreground.
4725    
4726    2001-01-31  Timo Schulz <[email protected]>
4727    
4728        * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.
4729        * wptW32API.cpp: New.
4730        * WinPT.cpp: (WinMain): Change the keyring checking code.
4731    
4732    2001-01-29  Timo Schulz <[email protected]>
4733    
4734        * wptClipboard.cpp: (clip_is_already_secure):
4735        Modify the pgp data detection.
4736    
4737    2001-01-28  Timo Schulz <[email protected]>
4738    
4739        * wptHotkey.cpp: (register_hotkey): Hotkey registration.
4740        (unregister_hotkey): Hotkey removing.
4741        * wptHokey.h: New.
4742        * wptWndHook.cpp:
4743        (wpt_cpt_proc): Window hook to save the current windows.
4744        * wptWndHoo.h: New.
4745        * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.
4746        * WinPT.cpp: (WinMain): Add hotkey registration.
4747    
4748    2001-01-21  Timo Schulz <[email protected]>
4749    
4750        * wptNLS.cpp: ported to C++.
4751        (gettext): Remove CP850 to ISO88591 conversation.
4752    

Legend:
Removed from v.8  
changed lines
  Added in v.99

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26