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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.13  
changed lines
  Added in v.119

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26