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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26