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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.19  
changed lines
  Added in v.58

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26