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

Diff of /trunk/Src/ChangeLog

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26