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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26