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

Diff of /trunk/Src/ChangeLog

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

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

Legend:
Removed from v.12  
changed lines
  Added in v.76

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26