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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26