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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.14  
changed lines
  Added in v.65

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26