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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26