2001-01-21  Timo Schulz <twoaday@freakmail.de>

    * wptNLS.cpp: ported to C++.
    (gettext): Remove CP850 to ISO88591 conversation.

2001-01-28  Timo Schulz <twoaday@freakmail.de>

    * wptHotkey.cpp: (register_hotkey): Hotkey registration.
    (unregister_hotkey): Hotkey removing.
    * wptHokey.h: New.
    * wptWndHook.cpp:
    (wpt_cpt_proc): Window hook to save the current windows.
    * wptWndHoo.h: New.
    * wptMainProc.cpp: (wpt_main_proc): Add hotkey messages.
    * WinPT.cpp: (WinMain): Add hotkey registration.

2001-01-29  Timo Schulz <twoaday@freakmail.de>

    * wptClipboard.cpp: (clip_is_already_secure):
    Modify the pgp data detection.

2001-01-31  Timo Schulz <twoaday@freakmail.de>

    * wptKeygenDlg.cpp: (wpt_keygen_proc): Passphrase sanity check.
    * wptW32API.cpp: New.
    * WinPT.cpp: (WinMain): Change the keyring checking code.

2001-02-01 Timo Schulz <twoaday@freakmail.de>

    * wptW32API.cpp: (w32_get_edit_text): New.
    (w32_set_menu_text): New.
    (w32_strdup): New.
    * wptMailPlugin.cpp: (oe_***): New. Basic OE interface.
    * Create all dialogs windows in the foreground.

2001-02-02  Timo Schulz <twoaday@freakmail.de>

    * wptW32API.cpp: (w32_hit_key): New.
    (w32_rel_key): New.
    (w32_copy_to_clip): New.
    (w32_insert_from_clip): New.
    (w32_get_clip_text): New.
    (w32_set_clip_text: New.
    (w32_show_if_icon): New.

2001-02-03  Timo Schulz <twoaday@freakmail.de>

    * wptMailPlugin.cpp: (oe_find_msg_window): Fix window handles.
    (oe_find_addr_window): Ditto.
    (oe_find_main_window): Ditto.

2001-02-04    Timo Schulz <twoaday@freakmail.de>

    * wptSignDlg.cpp: (wpt_sign_proc): Add secret key listing.
    * wptMainProc.cpp: (wpt_main_proc):
    Remove ciphertext checks for signing and encrypting.
    (allow double encryption).

2001-02-07    Timo Schulz <twoaday@freakmail.de>

    * wptClipEditDlg.cpp: (clip_edit_dlg_proc): Add some sanity checks.
    * wptExportDlg.cpp: (clip_export_dlg_proc): Ditto.

2001-02-10  Timo Schulz <ts@winpt.org>

    * wptMainProc.cpp: Move ctb_proc and hotkey inits to this file.
    * wptKeylistElement.cpp: New.
    * wptListElement.cpp: Remove.
    * wptW32API.cpp: Insert all lv_*** functions.
    * wptKeylistElement.cpp: (wpt_lv_keylist_release_key): New.
    (wpt_lv_keylist_release_keys): Ditto.
    * wptW32API.cpp: (w32_get_thread_id): New.
    (w32_attach_thread_input): New.
    * wptMailPlugin.cpp: (oe_get_message): Add thread attach mechanism.
    (oe_get_message): Add thread attach mechanism.
    (oe_encrypt): Modify for the attach treach mechanism.
    Add sanity check for recipients.

2001-02-17  Timo Schulz <ts@winpt.org>

    * wptRegistry.cpp: (get_reg_entry): Return the GnuPG homedir from
    the registry.
    (set_reg_entry): Set a gnupg registry key.
    * wptGPG.cpp: Modify all function for the use with get_reg_entry().
    * WinPT.cpp: Change the way for the gpg searching mechanism.
    * wptGPGPrefsDlg.cpp: New dialog for dynamic GPG configuration.
    * wptClipImportDlg.cpp: (key import dialog): New.
    * wptKeylistElement.cpp:
    (wpt_lv_implist_build): Build up the key import list.
    (wpt_lv_implist_add_key): Insert a key into the import list.
    (wpt_lv_implist_dummy): Dummy to build up a box with a fixed size.

2001-02-19  Timo Schulz <ts@winpt.org>

    * wptRegistry.cpp: (is_installed): Remove.
    (regist_inst_winpt): Add selfcheck.
    (regist_inst_gpg): New. Add gpg releated registry entries.
    (regist_inst_mo): New. Add nls related path.
    (get_reg_entry), set_reg_entry(): Modify to be more flexible.
    (set_reg_entry_gpg): Handy functions for get_reg_entry.
    (set_reg_entry_mo): Ditto.
    (get_reg_entry_gpg): Ditto.
    (get_reg_entry_mo(): Ditto.
    * wptGPGPrefsDlg.cpp, wptNLS.cpp: Add support for the locale environment.
    * wptGPG.cpp: (check_gpg_optfile): Figure out if the option file.
    include keyring entries (2x)
    (check_gpg_path): Include the check_gpg_optfile() check.

2001-02-20  Timo Schulz <ts@winpt.org>

    * wptGPGPrefsDlg.cpp: Add some sanity checks for the value.
    * wptClipImportDlg.cpp: Add some new code.

2001-02-21  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp: Fix the check_gpg_optfile() code.
        (gpg_errstr): Define some error constants to be more verbose.
        (set_gpg_options): New. Manipulate the options file.
        (get_gpg_options): New. Read in the options file.
    * wptFile.cpp: (get_file_size): New.
    * wptGPGOptDlg.cpp: New. Dialog for editing the options file

2001-02-22  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp: (check_line): New. Check if the line contains a valid
    gpg argument.
    (check_gpg_options): New. Parses each buffer line to check_line().

2001-02-24  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp: (check_gpg_path): Fix a bug.
   (check_gpg_options): Fix some bugs.

2001-02-25  Timo Schulz <ts@winpt.org>

    * wptGPGPrefsDlg.cpp: Add some new translation strings.
    * wptKeyGenDlg.cpp: Add all dialog text to the NLS suite.
    * wptMainProc.cpp, wptClipDecryptDlg.cpp: Change to new packet parser.
    * wptClipImportDlg.cpp: Finished basic interface.

2001-02-27  Timo Schulz <ts@winpt.org>

    * wptKeylistWidget.cpp: New. Implementation of a W32 keylist control.
    * wptClipKeytrustDlg.cpp: Index was counted from 0 (should be from 1):
    Fixed.

2001-03-15  Timo Schulz <ts@winpt.org>

    * wptClipEncryptDlg.cpp: Fix translation.
    * wptKeygenDlg.cpp: Fix the names of the button (avoid confused users).
    * wptKeymiscDlg.cpp: Fix the key deleting stuff.

2001-03-16  Timo Schulz <ts@winpt.org>

    * wptDlgs.h: Add new dialog callback function.
    * wptKeysigDlg.cpp: New. Key signature listing dialog.

2001-03-18  Timo Schulz <ts@winpt.org>

    * wptClipVerifyDlg.cpp: New: stub for further verify dialogs.
    * wptAgent.cpp: New: Experimental passphrase caching.

2001-03-19  Timo Schulz <ts@winpt.org>

    * wptVerifyList.cpp: New control for the verify dialog.
    * wptClipVerifyDlg.cpp: Rewrote

2001-03-20  Timo Schulz <ts@winpt.org>

    * wptClipDecryptDlg.cpp: Rewrote

2001-03-21  Timo Schulz <ts@winpt.org>

    * WinPT.cpp: (WinMain): Re-activate the enable debug switch.
    * wptKeylist.cpp: (keylist_add_key): Ignore invalid keys.

2001-03-28  Timo Schulz <ts@winpt.org>

    * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc):
    Added the keyid to the "no trust" message.
    * wptKeyserverDlg.cpp: (check_pattern): New:
    Do some sanity checks of the search pattern.
    * wptMainProc.cpp: (wpt_main_proc): Add agent support.
    * wptHotkey.cpp: Add agent support.

2001-03-30  Timo Schulz <ts@winpt.org>

    * wptW32API.cpp: (new_strdup): Remove.
    * wptW32API.h: Ditto.
    * wptWndHook.cpp: (get_cbt_curr_wnd): Return the current window.
    * wptKeygenDlg.cpp: (clear_dlg_fields): New: Clear all text fields.

2001-03-31  Timo Schulz <ts@winpt.org>

    * wptClipSignDlg.cpp: (clip_sign_dlg_proc): If no key was choosen,
    the GPG default key will be used.

2001-04-02  Timo Schulz <ts@winpt.org>

    * WinPT.cpp: (set_gpgme_debug_env): New: Set the environment variable.
    * wptClipSignDlg.cpp: (clip_sign_dlg_proc): Now the keylist widget only
    contains valid keys.
    * wptClipEncryptDlg.cpp: (clip_encrypt_dlg_proc): Ditto.

2001-04-04  Timo Schulz <ts@winpt.org>

    * wptClipDecryptDlg.cpp (passphrase_callback_proc): Remove the static
    passphrase. Now a callback context is used.
    (passphrase_cb): Ditto.
    (clip_decrypt_dlg): Ditto.
    * wptWndHook.cpp (cbt_thread): New. Thread to enable CBT hook.
    (install_cbt_hook): Modify for the new thread model.
    (remove_cbt_hook): Ditto.
    * wptW32API.cpp: (init_crtical_section): New. Make the code MT safe.
    (delete_critical_section): Ditto.
    (lock): Ditto.
    (unlock): Ditto.

2001-04-06  Timo Schulz <ts@winpt.org>

    * wptOwnertrustDlg.cpp: New. (ownertrust_dlg_proc): New.
    * wptKeyTrustDlg.cpp: (key_trust_dlg_proc): Add new button for the
    ownertrust dialog.

2001-04-06  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp: (check_gpg_path): Fix a small error.
    * WinPT.cpp: (WinMain): Add a dialog for the possibity that it's the
    first time a user started WinPT.
    * wptClipboard.cpp: (clip_isalready_secured): Check the begin and
    end PGP header.

2001-04-07  Timo Schulz <ts@winpt.org>

    * wptAgent.cpp: (agent_new): Rename to agent_init and modify source.
    (agent_destroy): Ditto.
    (agent_passphrase_cache): Ditto.
    (agent_passphrase_remove): Ditto.
    (agent_passphrase_get): Ditto.

2001-04-09  Timo Schulz <ts@winpt.org>

    * wptClipboard.cpp: (clip_get_pgp_type): New. Return the PGP packet
    type. Kludge for decrypt/verify.
    * wptMainProc.cpp: (wpt_main_proc): Remove verify and put the
    code into the decrypt routine.
    * wptClipImportDlg.cpp: (clip_import_dlg_proc): New button to start
    the key management after import.

2001-04-09  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp: (check_line): Ignore empty lines.
    (check_gpg_options): Ditto.

2001-04-12  Timo Schulz <ts@winpt.org>

    * wptHotkeys.cpp: (register_single_hotkey): Add code for the current
    window stuff.
    * wptMainProc.cpp: (wpt_main_proc): WM_HOTKEY. Add the current window
    hotkeys.
    * wptW32API.cpp: (attach_thread_input): Split up the functions into
    two parts. The attach flags is always set.
    (detach_thread_input): See above. The attach flags is never set.
    * wptCurrWnd.cpp: New. Code for the current window stuff.
    (get_window_contents): Extract the text from the given window to
    the clipboard.
    (set_window_contents): Insert clipboard into the given window.

2001-04-13  Timo Schulz <ts@winpt.org>

    * wptMailPlugin.cpp: (oe_set_message): Change the id's for
    the attach_thread_input.
    (oe_get_message): Ditto.
    * wptCurrWnd.cpp: (get_window_contents): Ditto.
    (set_window_contents): Ditto.

2001-04-14  Timo Schulz <ts@winpt.org>

    * wptCurrWnd.cpp: (get_window_contents): Add an event to switch
    the windows. This is needed by the current code.
    (set_window_contents): Ditto.
    * wptWndSwitchDlg.cpp: (wndswitch_dlg_proc): Create a hidden dialog
    and force it to the foreground. This is the event needed by the code
    above.
    (create_wndswitch_event): Execute the dialog.
    * wptMainProc.cpp: (wpt_main_proc): Add new links in the hotkey
    section. Add message entries for the code.
    * wptW32API.cpp: (copy_window_to_clip): Moved to the into the OE
    mailer code.
    (insert_window_from_clip): Ditto.
    * wptMailPlugin.cpp: (oe_set_message): Insert the new code and add
    the event to switch the windows.
    (oe_get_message): Ditto.

2001-04-16  Timo Schulz <ts@winpt.org>

    * wptWndHook,cpp (cbt_proc): Compare process ids to differ between
    WinPT and normal windows.
    (install_cbt_hook): Add pid to the context.

2001-04-17  Timo Schulz <ts@winpt.org>

    * wptWndHook.cpp (is_taskbar_wnd): New. Alias to check if the window
    belongs to the taskbar area.
    (is_winpt_wnd): New. Alias to check if the window belongs to WinPT.
    (cbt_proc): Change code to include both functions.
    * wptCurrWnd.cpp (get_window_contents): Add switch if we use the
    foreground or the CBT window.
    * wptMainProc.cpp (wpt_main_proc): All hotkey operations for the
    current window mode set the no_cbt variable.
    * wptGPG.cpp (keyring_check_last_access): New. Check if the keyring
    was modified by an external program.
    * wptKeyMiscDlg.cpp: (keymisc_dlg_proc): Now check for external
    keyring changes.

2001-04-21  Timo Schulz <ts@winpt.org>

    * wptWndHook.cpp (install_cbt_hook): Remove the thread because the
    system already is into a DLL.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Remove checkbutton and use
    instead of it a button to check the key signatures.
    * wptGPG.cpp (get_last_gpg_access): New. Retrieve the file timestamp
    from the given gpg object.
    (check_last_gpg_access): New. Compare the last file timestamp with the
    new timestamp.
    (init_gpg_table): New. Initialize the table with gpg objects who shall
    be watched.
    (keyring_check_last_access): Use the new code.
    * wptCurrWnd.cpp (set_window_contents): Restore the window if it is
    now iconic.
    * wptMainProc.cpp (wpt_main_proc): Add decrypt/verify for the
    current window stuff.

2001-04-22  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (check_last_gpg_access): Reset switch before testing
    the condition.
    * wptFindWnd.cpp (find_child_wnd_proc): New. Callback to enumerate
    all children windows.
    (find_parent_wnd_proc): New. Callback to enumerate all parent windows.
    (find_window): New. Return if the specified windows as found.
    * wptW32API.cpp: (dialog_box_param): New. Alias with the additional
    feature to check if the dialog already exist (and then preventing
    the creation).
    * wptMainProc.cpp (wpt_main_proc): Replace all DialogBoxParam with
    then new dialog_box_param function. Thanks to Martin who told me
    about this dialog problem.
    * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Ditto.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto. Add translation for the
    new signature buttons.

2001-04-23  Timo Schulz <ts@winpt.org>

    * wptFindWnd.cpp (find_child_wnd_proc): Removed. This functionality
    is not needed because all dialog windows are top level windows.

2001-04-24  Timo Schulz <ts@winpt.org>

    * wptEncryptDlg.cpp (encrypt_dlg_proc): Release the static listview
    item and set it to zero.
    * wptSignDlg.cpp (sign_dlg_proc): Ditto.
    * wptSignEncDlg.cpp (sign_encrypt_dlg_proc): Ditto.
    * wptVerifyDlg.cpp (verify_dlg_proc): Ditto.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Ditto.
    (keymisc_dlg_proc): Provide the functionality to delete key pairs
    secret+public.
    * wptWndHook.cpp (is_winpt_wnd): Remove this function and put
    all code into (check_wnd).
    (check_wnd): Check if the window doesn't is a application related
    window.

2001-04-25  Timo Schulz <ts@winpt.org>

    * wptKeySignDlg.cpp (keysign_dlg_proc): Now we use a new GPGME
    callback system to pass the keyedit information to GPG.
    * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Ditto.

2001-04-26  Timo Schulz <ts@winpt.org>

    * wptKeyEditDlg.cpp (keyedit_dlg_proc): New. Dialog for the various
    edit-key commands.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add the button for the edit
    key code.

2001-04-27  Timo Schulz <ts@winpt.org>

    * wptCurrWnd.cpp (get_window_contents): Change the code for the last
    window concept. Thanks to Oliver.
    (set_window_contents): Add some stuff to set the position if the
    current window is an edit control.
    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add code for the 'adduid'
    stuff.
    * wptKeyEditAddUidDlg.cpp: New. (keyedit_adduid_dlg_proc): Code to
    create a new user id for a GPG key.

2001-04-28  Timo Schulz <ts@winpt.org>

    * wptGPGME.cpp: New. Move some additional GPGME code into WinPT.
    So it's easier to update GPGME and we can use NLS to translate
    error strings.
    * wptVerifyList.cpp (get_sig_date): New. Removed from the GPGME code
    because we only use it here.
    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Add the 'change passphrase'
    feature to the edit-key interface.

2001-04-29  Timo Schulz <ts@winpt.org>

    * wptKeyEditDlg.cpp (clear_dlg_fields): Clear all passphrase items.
    (keyedit_dlg_proc): Free gpgme context. Add the passphrase for the
    adduid command.
    * wptKeyEditAddUidDlg.cpp (keyedit_adduid_dlg_proc): Initialize
    the dialog with a KEY structure that holds the keyid and the userid.
    * wptWndHook.cpp: Remove the global context and use instead of it
    static variables. Put all static variables into the SHARED data
    segment in the DLL.

2001-04-30  Timo Schulz <ts@winpt.org>

    * wptClipEditDlg.cpp: Now the dialog uses the Courier font to
    enhance the format of keys and other GPG data.
    * wptKeyserverDlg.cpp (keyserver_dlg_proc): Set the cache realod
    flag after receiving a key.
    * wptKeyTrustDlg.cpp (keytrust_dlg_proc): Add error message when
    no listbox entry was choosen.
    * wptKeySignDlg.cpp (keysign_dlg_proc): Add Check button text to
    the NLS suite.
    * wptKeygenDlg.cpp (keygen_dlg_proc): Set the cache reload flag
    instead of refresh the keycache.

2001-05-01  Timo Schulz <ts@winpt.org>

    * wptCurrWnd.cpp (wnd_msg_markall): New. Send the CTRL+a key sequence
    to a window.
    (wnd_msg_copy): New. Send the CTRL+c key sequence to a window.
    (wnd_msg_paste): New. Send the CTRL+v key sequence to a window.
    (wnd_msg_em_set_pos): Manipulate an edit multiline control text pos.
    * wptMainProc.cpp (wpt_main_proc): Fix some message string for
    the hotkey handling. Quit the program if a registration procedure
    failed.
    * wptErrors.cpp (log_box): Improved log handling to dump states
    of variables during regression tests.

2001-05-02  Timo Schulz <ts@winpt.org>

    * wptKeyEditAddSubkeyDlg.cpp: New. Dialog to create additional
    subkeys for the mainkeys.
    * wptKeyEditAddUidDlg.cpp: (keyedit_adduid_dlg_proc): Set foreground
    window flag.
    * wptKeyEditDlg.cpp: (keyedit_dlg_proc): Added the code for the
    addkey feature.

2001-05-04  Timo Schulz <ts@winpt.org>

    * wptKeyTrustDlg.cpp: Renamed to wptKeyEditOwnertrustDlg.cpp.
    * wptKeyEditOwnertrustDlg.cpp (keyedit_ownertrust_dlg):
    Move all the GPGME specific code to the main dialog. Now only
    the context values are set.
    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Include the changed ownertrust
    code.

2001-05-05  Timo Schulz <ts@winpt.org>

    * wptCurrWnd.cpp (get_curr_wnd): Alternative code to retrieve
    the current window handle. This code doesn't use the hook DLL.
    Thanks to Oliver Nittka for his patch.
    * wptErrors.cpp (winpt_strerror): Fixed a small typo.
    * wptGPG.cpp (check_last_gpg_access): Remove debug code.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Change the keycache reloading
    scheme to prevent reloading the cache twice.

2001-05-08  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp (wsock_init): Replace the kserver init
    code which initialized the Wsock2 interface.
    (wsock_end): Ditto.
    * wptAgent.cpp: Remove the passphrase caching code and add
    the GPG agent code.

2001-05-09  Timo Schulz <ts@winpt.org>

    * wptAgent.cpp (gpga_writen): Write 'n' bytes into a socket.
    (gpga_readn): Read 'n' bytes from a socket.
    (gpga_open): Open the interface to the GPG-Agent.
    (gpga_close): Close the GPG-Agent socket.
    (gpga_clear_passphrase): Clear a passphrase from the GPG-Agent.
    (agent_add_fpr): Add a fingerprint to the cache. If WinPT quits,
    this keys will be remove from the GPG-Agent cache.
    (agent_delete_fpr): Remove a fingerprint from the cache.
    (agent_init): Clear the cache.
    (agent_timer_proc): Remove all stored passphrases which were
    requested through the chache.

2001-05-10  Timo Schulz <ts@winpt.org>

    * wptFindWnd.cpp (find_window_hwnd): New. Function to retrieve
    the handle of the specified window.
    * wptAgent.cpp (agent_timer_proc): Changed the agent interface
    to window messages instead of socket connections.
    * wptMainProc.cpp (wpt_main_proc): Added the new preference dialog
    and menu entry.
    * wptPreferencesDlg.cpp: New.

2001-05-11  Timo Schulz <ts@winpt.org>

    * wptMainProc (wpt_main_proc): Change all related menu entries from
    Encrypt & sign to Sign & Encrypt. Added the command to the current
    window menu and the handling of the window messages.
    * wptSignEncDlg.cpp (clip_signenc_dlg_proc): Changed the window text.
    * wptRegistry.cpp (set_reg_winpt_prefs): New. Stores all WinPT
    preferences in the registry.
    (get_reg_winpt_prefs): Read all preferences from the registry into
    the options context.
    * WinPT.cpp (WinMain): Read in the registry preferences at the begin
    and store it.
    * wptAgent.cpp (agent_init): Check if the environment variable
    GPG_AGENT_INFO is set, otherwise set it.
    (agent_is_running): Check wether the agent is running.
    (agent_start): Automated function that read all needed information
    from global variables.

2001-05-12  Timo Schulz <ts@winpt.org>

    * wptMainProc.cpp (wpt_main_proc): Start the agent before the decryption
    call.

2001-05-13  Timo Schulz <ts@winpt.org>

    * wptRegistry.cpp (set_reg_key): Open a subkey, if it doesn't exist
    the function create it.
    (set_reg_winpt_prefs): Use the new function to set the subkey values.
    All functions now return WPTERR_REGISTRY instead of 1.
    Add some error handling to prevent errors in the registry.
    * wptPreferencesDlg.cpp (preferences_dlg): Add the code for the Clipboard
    hotkeys and the caching time.


2001-05-18  Timo Schulz <ts@winpt.org>

    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check the state of the various
    edit key commands. In the case the dialog was canceled, return without
    modifying anything.
    * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Check the state of the
    signature. If it doesn't contain a valid key, do nothing.
    * wptMainProc: (wpt_main_proc): If the hotkey setup doesn't work, don't
    quit the program. In some cases the hotkeys are possible locked.
    * WinPT.cpp (WinMain): If there is an error with the gpg program/path,
    give the user the chance to start the GPG preference dialog.
    * wptPreferencesDlg.cpp (preferences_dlg_proc): Added the CWS hotkey
    support. Flag to disable all hotkeys. Reload new hotkeys (in the case
    they changed). Load the registry entry on startup.
    * wptHotkey.cpp (mod_hotkeys): Overwrite the default hotkeys with the
    stored registry entries.

2001-05-19  Timo Schulz <ts@winpt.org>

    * wptPreferencesDlg.cpp (preferences_dlg_proc): If the disable hotkey
    flag is set, also disable all input items.
    (disable_dlg_item): New. Disable dialog items (windows).
    * wptMainProc.cpp (wpt_main_proc): Only set hotkeys if the no_hotkeys
    flag isn't set.
    * wptKeyserverDlg.cpp (send_key): Forget to set the armor flag, as
    a result the code only sended parts of the key.
    * wptConfig.cpp: Removed. Not used any longer.

2001-05-20  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (check_gpg_optfile): Count each of the keyring entries
    to figure out if both parts are available.

2001-05-21  Timo Schulz <ts@winpt.org>

    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Add new button for userid
    management.
    * wptKeyUidDlg.cpp (keyuid_dlg_proc): Finished code to show all userids
    from a special key.

2001-05-25  Timo Schulz <ts@winpt.org>

    * wptKeyUidDlg.cpp (keyuid_dlg_proc): Add button to delete a choosen
    user id. End the dialog if there was an error during the Gpgme operations.
    * wptClipboard.cpp (clip_istext_avail): First check if the pointer is
    valid and then look at the length. Avoid crashes for some texts.

2001-05-27  Timo Schulz <ts@winpt.org>

    * wptRegistry.cpp (set_reg_winpt_prefs): Add word wrapping.
    (get_reg_winpt_prefs): Ditto.
    * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Set focus after the
    gpg process finished.
    * wptSigList.cpp (siglist_add_key): Parse the numeric timestamp to
    a humand readable date.


2001-06-01  Timo Schulz <ts@winpt.org>

    * wptKeyEditDlg.cpp (keyedit_dlg_proc): IDC_KEYEDIT_OWNERTRUST:
    Release context in the case of an error.
    * wptMainProc.cpp (wpt_main_proc): Fix typo.
    * wptGPG.cpp: (init_gpg_table): Remove the case code. Now we use
    a static gpg object array that contains all filenames.


2001-06-04  Timo Schulz <ts@winpt.org>

    * wptClipImportDlg.cpp (clip_import_dlg_proc): Added the code for
    the improved import status.


2001-06-05  Timo Schulz <ts@winpt.org>

    * wptAboutGPGDlg.cpp (about_gpg_dlg_proc): Check if the returned
    buffer is valid. Remove the fixme, because it's possible that there
    were new cipher modules loaded.
    * wptClipDecryptDlg.cpp (passphrase_callback_proc): Check if the
    context is valid.
    * wptClipEditDlg.cpp (clip_edit_dlg_proc): Check if the context is valid.
    * wptW32API.cpp (status_box): New. Message box that is always forced
    to the foreground.

2001-06-07  Timo Schulz <ts@winpt.org>

    * wptOwnertrustDlg.cpp (ownertrust_dlg_proc): Set to foreground,
    add windows title.

2001-06-08  Timo Schulz <ts@winpt.org>

    * wptHotkey.cpp (mod_hotkeys): Change code to support the new
    registry style.
    * wptRegistry.cpp (get_reg_winpt_prefs): Support to disable
    single hotkeys. Suggested by Jonathan.
    * wptPreferencesDlg.cpp (preferences_dlg_proc): Support to disable
    single hotkeys.
    * wptKeyserver.cpp (kserver_connect): Reset winsock error var.
    (keyserver_recv): Ditto.
    (keyserver_send): Ditto.
    (wsock_strerror): Returns a description of the winsock problem.
    * wptClipboard.cpp (clip_get_pgp_type): Check if the returned buffer
    is valid.

2001-06-10  Timo Schulz <ts@winpt.org>

    * wptHotkey.cpp (enable_hotkey): New. Set enable flag for a single
    hotkey.
    (mod_hotkeys): Take care of the enable flags.
    (register_hotkeys): Ditto.
    (unregister_hotkeys): Ditto.
    * WinPT.cpp (WinMain): If the registry entry of WinPT doesn't exist,
    don't try to modify hotkeys.
    * WptMainProc.cpp (wpt_main_proc): All message boxes are forced to
    the foreground.

2001-06-12  Timo Schulz <ts@winpt.org>

    * wptPreferencesDlg.cpp (check_hotkey): Check if the hotkey key is
    a big letter, otherwise convert.
    (preferences_dlg_proc): Check hotkeys.
    * wptKeylist.cpp (add_keys): Static functions to add a single key.
    (keylist_add_key): Now it adds all subkeys to the dialog.
    (keylist_alloc): Remove because it's not needed any longer.
    * wptImportList.cpp (implist_alloc): Ditto.    
    * wptSigList.cpp (siglist_alloc): Ditto.
    * wptVerifyList.cpp (verlist_alloc): Ditto.

2001-06-15  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (keylist_add_key): Change encrypt param to mode.
    Differ between the new keylist styles.
    * wptGPGME.cpp (keycache_xxx): Move the caching interface to this
    file. For an easier handling between dialogs and code.
    (keycache_rewind): New. Rewind a global keycache context.
    (keycache_next_key): New. Retrieve the next key from the keycache.
    (get_default_key): New. Return the default key, this is the secret
    key with the index 0.
    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Modify the default key
    handling. Now the signer is set in any case. Prevent hanging GPG
    processes.
    * wptSecmem.cpp (vm_safe_init): New. Initialize the safe memory.
    (vm_safe_init_noswap): New. Initialize safe memory with tail data.
    See source for more information.
    (vm_safe_free): New. Free all used pointer and burn all buffers.
    (vm_safe_get): New. Get the begin of the alloced buffer.
    (vm_safe_set_swapfile): New. Set global swapfile name.
    (vm_safe_create_swapfile): New. Creats a swapfile and set its
    contents to zero.

2001-06-16  Timo Schulz <ts@winpt.org>

    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Added missing return.
    Corrected return values.
    * wptErrors.cpp (winpt_strerror): Removed all unused error strings.
    * wptGPG.cpp (get_gpg_path): Change to default path and prevent
    buffer overflows.
    (get_gpg_prog): Ditto.


2001-06-17  Timo Schulz <ts@winpt.org>

    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Force to use the
    default key for signing.

2001-06-18  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp (check_hkp_response): More detailed error check
    of the http response.
    (kserver_send_request): Debug mode now uses logfile.
    (kserver_recv_request): Ditto.
    (kserver_index_request): New. Create a request for a key index.
    (kserver_send): Now uses check_hkp_response.
    (kserver_recv): Ditto.
    (kserver_search): New. Start the key index loop.
    * wptKeyserverDlg.cpp (recv_key): Check if the key was really
    imported and received.

2001-06-22  Timo Schulz <ts@winpt.org>

    * wptHKPSearchDlg.cpp (hkpsearch_dlg_proc): New. Dialog to perform
    keyserver seraching. As an additional feature it's also posible to
    import the keys directly.

2001-06-23  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (get_gpg_default_keyid): Determine the keyid with the
    options file.

2001-06-24  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (get_gpg_path): Add null termination to the string.
    Thanks to Jonathan who pointed this out.
    (get_gpg_prog): Ditto.
    (gpg_check_file_ext): Check the file extension for the given GPG
    type.
    (get_gpg_default_keyid): Return null if there isn't an entry in the
    options file.
    * wptKeylist.cpp (add_key): Fixed the wrong return codes of listview_xxx
    style functions.
    * wptImpList.cpp (implist_add_key): Ditto.
    * wptSigList.cpp (siglist_add_key): Ditto.
    * wptVerifyList.cpp (verlist_add_key): Ditto.

2001-06-25  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (keylist_load): New. Initialize a keylist item with
    the contents from the given cache context.
    (keylist_add_to_recipients): New. Add the selected keys to the
    recipient set.
    * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new keylist
    function to load the listview.
    * wptClipExportDlg.cpp (clip_export_dlg_proc): Ditto.
    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
    * wptClipDecryptDlg.cpp (parse_gpg_describtion): Beautify the userid
    and the keyid hint.

2001-06-27  Timo Schulz <ts@winpt.org>

    * wptRFC2440.cpp (get_pkt_type): New. Extract the OpenPGP packet type.
    (get_pkt_len): New. Extract the OpenPGP packet length.
    (parse_pke_sesskey): Read a public key encrypted session key
    but without data.
    * wptFilemanagerDlg.cpp (quote_filename): Do some quotings if the
    filename contains spaces. Just to make GPG happy.
    (file_manager_dlg_proc): Check if the file exist after encryption.
    * wptFile.cpp (get_keyid_from_file): Checks the file for an valid
    packet and then extract the keyid.

2001-06-28  Timo Schulz <ts@winpt.org>

    * wptRFC2440.cpp (get_pkttype): Renamed from get_pkt_type and all new
    flag variables to support RFC1991.
    (get_rfc2440_pktlen): Renamed from get_pkt_len to support RFC1991.
    (get_rfc1991_pktlen): Ditto.

2001-06-29  Timo Schulz <ts@winpt.org>

    * wptClipEditDlg.cpp (clip_edit_dlg_proc): Fix a small bug that prevent
    to send data to the clipboard.
    * wptMainProc.cpp (wpt_main_proc): Change the SetForegroundWindow to
    destroy the window immediately.
    * wptKeyserver.cpp (kserver_getip): Removed.
    (kserver_get_langname): Removed.
    (kserver_load_conf): New. Load the keyserver.conf file and set the
    included keyserver addresses into the global context.
    * WinPT.cpp (WinMain): Add the kserver_load_conf to intialize the
    keyserver context.
    * wptImplist.cpp (get_key_date): New. Transform integer timestamp
    to ISO date.
    (implist_add_key): Now it uses the context instead of all single
    variables.

2001-06-30  Timo Schulz <ts@winpt.org>

    * wptFilemanagerDlg.cpp (file_manager_dlg_proc): Uses the new passphrase
    code.
    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
    * wptClipSignEncDlg.cpp (clip_sign_dlg_proc): Ditto.
    * wptFileManager.cpp: New. (fm_build): New. Initialize the filemanager.
    (fm_delete): New.
    (fm_encrypt): New.
    (fm_get_current_pos): New.
    (fm_get_file_type): New.
    (fm_add_dropped_files): New.

2001-07-01  Timo Schulz <ts@winpt.org>

    * wptFileManager.cpp (fm_verify): New.
    (fm_decrypt): New.
    * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): New.


2001-07-04  Timo Schulz <ts@winpt.org>

    * wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Auto retrieve key
    if the user agree.
    * wptKeylist.cpp (keyload_load): Use the mode from the param, not
    the hardcoded.
    * wptGPGOptDlg.cpp (gpgopt_dlg_proc): Load options file on startup.
    Rename 'load' to 'reload' to make sense with the new code.
    * wptHotkeys.cpp (mod_hotkeys): Rewrite the entire code for the
    registry stuff.
    * wptRegistry.cpp (set_reg_winpt_prefs): Ditto.
    (get_reg_winpt_prefs): Ditto.
    (regist_inst_winpt): Remove the old code.
    (register_single_filetype): Replacement for the old code.

2001-07-05  Timo Schulz <ts@winpt.org>

    * wptHotkey.cpp (mod_hotkeys): Fix a small typo.

2001-07-11  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp (wsock_strerror): If it's an unknown error, add
    the integer.
    (keyserver_create_conf): Create a config file instead of the error.
    * wptGPG.cpp (create_gpg_options): If the file doesn't exist create
    a default file. This prevents confusing error messages.
    (get_gpg_options): Use new code.
    * wptErrors.cpp (winpt_debug_msg): Improved debug message that tells
    the user how to find the files.

2001-07-12  Timo Schulz <ts@winpt.org>

    * wptClipDecryptDlg.cpp (clip_decrypt_dlg): If the dialog was canceled,
    just quit without any messages. Suggested by Rich.


2001-07-13  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp (kserver_send_request): Add the "keytext" string to
    the request. Arggg!
    (check_hkp_response): Add flag to differ between 'send' and 'recv' mode.


2001-07-14  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (keylist_add_key): Check for secret keys before adding
    it to the signing keylist.
    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Add newline if the passphrase
    is empty.
    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.


2001-07-17  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (keylist_build_small): Support for a minimal keybox
    and increment the 'cols' variable inside the structure for further use.
    (add_key): Watch for the 'cols' variable to figure out how much columns
    are used.
    * wptListView.cpp (listview_set_ext_style): Set an extended style for
    the given listview.
    * wptKeyserverDlg.cpp (keyserver_dlg_proc): Use WM_NOTIFY to save the
    selected server.
    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
    * wptKeyserver.cpp (kserver_connect): IP address support. This is faster
    and no DNS lookup is needed.

2001-07-19  Timo Schulz <ts@winpt.org>

    * wptClipDecryptDlg.cpp (clip_decrypt_dlg_proc): Support for more
    detailed error messages in the case for a missing key or an included
    signature.

2001-07-20  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp: (kserver_send_request): Correct the octect length
    of the request.
    (check_hkp_response): If an error ocurred, copy the error message into
    the static buffer.
    (kserver_strerror): Interface for the static error buffer.
    * wptKeyserverDlg.cpp (hkp_err_box): Generates a HKP specific message
    box.
    (hkp_send_key): Add more verbose messages at the end.
    (hkp_recv_key): Ditto.
    (check_pattern): Rewrote the entire code to be more bug proof.
    * wptKeylist.cpp (keylist_add_to_recipients): Add a flag to indicate
    that the recipient list contains untrusted entries.
    * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Use the new flag to
    force GPG to add the need options.
    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.

2001-07-21  Timo Schulz <ts@winpt.org>

    * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Set cancel mode in
    the case of IDCANCEL.
    * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Check if the key is a key pair
    pair and only if activate the passphrase dlg items.
    Do sanity checks for all buttons that require key pairs.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support the new code.
    
2001-07-22  Timo Schulz <ts@winpt.org>

     * wptKeyPrefsDlg.cpp (keyprefs_dlg_proc): New.
     (get_key_created): New. Transform ulong timestamp to ascii.
     (get_key_algo): New. Returns a formatted algorithm (depend on subkeys).
     (get_key_size): New. Returns a formatted size depend (depend on subkeys).
     * wptSigList.cpp (siglist_add_key): Fix the timestamp.
     * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Removed "list sigs" and replace
     this with list trust path.
     * wptKeySigDlg.cpp (keysig_dlg_proc): Remove the set_check_mode function
     because we always check the signatures.
     * wptKeyTrustPathDlg.cpp (keytrust_dlg_proc): New.
     
2001-07-24  Timo Schulz <ts@winpt.org>

    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Get new cache context after
    reloading the keycache. Fixed the memory leaks. Thanks to Andreas.
    * wptKeyEditDlg.cpp (keyedit_dlg_proc): Better GPGME callback to inform
    the user about errors.
    * wptKeyTrustPathDlg.cpp (copy_trust_item): New. Copy the GPGME structure
    in our own context.
    (treeview_insert_item): New. Handy function to insert an entry.
    (treeview_create_child_item): New. Insert a trustlist node.
    (treeview_add_trustpath): New. Add recursively the whole trust path
    int the tree view.
    * wptKeysigDlg.cpp (check_for_missing_keys): New. Checks if the
    signature list contains entries with a NOKEY status.
    (recv_missing_keys): New. Receive all keys with a NOKEY as the signature
    status.
    * wptImportList.cpp (implist_load): New. Initialize the listview item
    with an import overview.
    * wptClipImportDlg.cpp (clip_import_dlg_proc): Use implist_load instead
    of the code.
    (print_import_status): Summarize the results. We need this because file
    import needs the same function.
    * wptFileImportDlg.cpp (file_import_dlg_proc): New. Interface for the
    file manager.
    * wptFileManagerDlg.cpp (file_manager_dlg_proc): New code for the key
    import from file.
    * wptFileManager.cpp (fm_import): New. Ditto.
    * wptKeyserver.cpp (kserver_connect): Take care for some return values
    and set the socket to non blocking mode.
    Moved the Winsock2 init code to wptMainProc.cpp
    * wptMainProc.cpp (wpt_main_proc): Wsock2 code.
    * wptHKPSearchDlg.cpp (hkpsearch_dlg_prog): Remove Wsock2 init code.

2001-07-25  Timo Schulz <ts@winpt.org>

    * WinPT.cpp (WinMain): Add a sanity check for the keycache to detect
    serious GPG errors.
    * wptFileManager.cpp (fm_sym_encrypt): New. Symmetric encryption.
    Suggested by Graham.
    (fm_decrypt): Change code to support symmetric decryption.
    (fm_get_file_type): Fixed some typos.

2001-07-26  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (check_gpg_keyring): New. Check if a gpg keyring
    exists. Useful if the keyring was moved during some commands.
    * wptMainProc.cpp (wpt_main_proc): Use the new code. Thanks to
    Rich to discover this.

2001-07-29  Timo Schulz <ts@winpt.org>

    * wptKeyRevokeDlg.cpp (key_revoke_dlg_proc): New. Dialog for creating
    a key revocation certificate. Add a hint to show how sentensive this
    data is.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Added the code to handle the
    revocation.
    * wptAgent.cpp: Source for the server interface removed.
    (agent_is_avail): New. Checks if the agent is available.
    * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Added the interface code
    for the agent.

2001-07-30  Timo Schulz <ts@winpt.org>

    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Added the interface code
    for the agent.
    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.

2001-08-01  Timo Schulz <ts@winpt.org>

    * wptKeyserver.cpp (kserver_urlencode): Create a HTTP compatible
    request for uploading a key.
    (kserver_send_request): Use the urlencode to send the key.
    (sock_read): New. Improved read function to replace recv.
    (sock_write): New. Improved write function to replace send.
    * wptFileManager.cpp (fm_get_file_type): If the data is armored,
    call fm_check_armor_type().
    (fm_check_armor_type): New. Figure out the armor type of the data.
    * wptKeyMisc.cpp (key_misc_dlg_proc): Use a menu instead of the
    buttons. Optimized the code.

2001-08-02  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (check_gpg_path): Check the size of both keyrings too.
    Useful in the case the file was generated but it's empty.
    * wptKeyEditDlg.cpp (key_edit_dlg_proc): Fixed some typos.


2001-08-03  Timo Schulz <ts@winpt.org>

    * wptMainProc.cpp (wpt_main_proc): The GPG menu was removed, now
    we support this code in the key manager.
    * wptKeyMisc.cpp (key_misc_dlg_proc): Supports new GPG commands.
    * wptKeyserver.cpp (kserver_index_request), (kserver_recv_request):
    Removed. The code moved into the main functions.
    (kserver_send), (kserver_recv): Ditto.
    (sock_write): Improved code.
    (sock_read): Ditto and some additional timeout.
    (sock_select): New. Figure out the socket state.
    (kserver_search_init): New. Make connection to the server.
    * wptHKPSearchDlg.cpp (hkp_search_dlg_proc): Now it uses the new
    keyserver code.
    * wptFile.cpp (get_keyid_from_file): Add support for the PGP marker
    packet. Thanks to Alan.
    (check_for_symenc_data): Ditto.
    * wptFileManager.cpp (fm_get_file_type): Ditto.
    (fm_decrypt): Move the keycache in the if loop and fix the keycache
    type.

2001-08-05  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (keylist_add_key): Change the schematics to support
    all keyids.
    * wptSigList.cpp (siglist_build): New. Interface code to load the
    signature list.
    * wptKeysigDlg.cpp (keysig_dlg_proc): Uses siglist_build.

2001-08-06  Timo Schulz <ts@winpt.org>

    * wptFilemanager.cpp (fm_sign): Set the keyid length to 16.

2001-08-08  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (check_gpg_path): Sanity check for size of the options file.
    Support for more configurations.
    * wptFileSignDlg.cpp (file_sign_dlg_proc): Fixed error in signature mode.
    Add all strings to the translation suite.
    * Updated all NLS dialog strings.
    * wptRFC2440.cpp (get_pkttype): Fixed error to check the CTB.
    * wptFileManager.cpp (fm_decrypt): Support to decrypt armored file,
    with a dynamic callback for the passphrase.

2001-08-11  Timo Schulz <ts@winpt.org>

    * wptKeyPropsDlg.cpp (keyprops_dlg_proc): Beautify the dialog and
    separate the fingerprint from the othr information.
    * wptGPG.cpp (check_opt_keyring): New. Do a sanity check if the
    file, specified in the options line, does exist.

2001-08-17  Timo Schulz <ts@winpt.org>

    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Choose key if there is only
    one by default.
    * wptKeyList.cpp (keylist_add_to_recipients): Ditto.
    * wptGPG.cpp (gpg_check_homedir): Creates the GPGME specific gpgProgram
    entry in the registry in the case it's missing (whenever it's possible!).
    (check_gpg_path): Rewrite parts of the code.

2001-08-20  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (create_gpg_options): Fixed nul byte bug. Thanks to Thomas.
    * wptPreferencesDlg.cpp (prefs_dlg_proc): Fixed the code to disable
    the hotkeys. Automatically enable or disable the hotkey field depend
    on the switch.

2001-08-21  Timo Schulz <ts@winpt.org>

    * wptGPG.cpp (get_gpg_default_keyid): Modify the code and now it
    also supports "encrypt-to" entries as default keys.
    * wptWipeExt.cpp (wipe_init_ext): New. Load the DLL to provide
    secure wiping.
    (wipe_deinit_ext): New. Unload the DLL and free all pointer.
    (wipe_loaded_ext): New. Checks wether the DLL was loaded.
    * wptW32API.cpp (set_menu_state): New.

2001-08-25  Timo Schulz <ts@winpt.org>

    * wptStringUtil.cpp (strlist_new): New. Linked list to hold strings.
    (strlist_release): New. Release the linked list.
    (strlist_add): New.

2001-08-26  Timo Schulz <ts@winpt.org>

    * wptFileManager.cpp (fm_entry_new): New.
    (fm_entry_release): New.
    (fm_state_new): New.
    (fm_state_release). New.
    (fm_get_current_file): New.
    * wptKeylist.cpp (strlist_add_recipients): New.

2001-08-28  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp (strlist_add_recipients): Fixed the listview handling.
    * wptKeyserver.cpp (kserver_load_conf): Proxy support
    (kserver_connect): Ditto.

2001-08-30  Timo Schulz <ts@winpt.org>

    * wptFilemanager.cpp (fm_encrypt): Add minor changes.
     (fm_decrypt): Ditto.
     (fm_sign): Ditto.
     (fm_verify): Make the code more modular.
     (fm_add_sig_stat): New. For new fm_verify code.

2001-08-31  Timo Schulz <ts@winpt.org>

    * wptFileManager.cpp (fm_add_opened_files): New. Use a standard
    file open dialog instead of drag & drop.
    * wptHotkeys.cpp (hotkey_strerror): More detailed information which
    hotkey couldn't set up.
    (hotkey_register_single): Ditto.

2001-09-01  Timo Schulz <ts@winpt.org>

    * wptMainProc.cpp (wpt_main_proc): Remove the im- and export operations.
    These code is now part of the key manager.
    * wptKeyPropsDlg.cpp (key_props_dlg): Removed the get_key_xxx functions.
    * wptKeylist.cpp (get_key_algo): New.
    (get_key_created): New.
    (get_key_type): New.
    (get_key_size): New.
    (get_key_fpr): New.
    * wptClipExportDlg.cpp (clip_export_dlg_proc): Removed. This is now
    a part of the keymanager.

2001-09-04  Timo Schulz <ts@winpt.org>

    * Rewrote most parts of the keymanager.
    * Ditto for the filemanager.

2001-09-05  Timo Schulz <ts@winpt.org>

    * wptKeyMiscDlg.cpp (clip_export): New. Handy function to export keys.
    (clip_import): New. Handy function to import keys.
    * wptKeygenDlg.cpp (keygen_dlg_proc): Added a warning when the passphrase
    is too short.

2001-09-07  Timo Schulz <ts@winpt.org>

    * wptFileManagerDlg.cpp (file_manager_dlg_proc): Fix memory leaks.

2001-09-12  Timo Schulz <ts@winpt.org>

    * wptClipDecryptDlg.cpp (clip_decrypt_dlg): Fixed a format error.
    Thanks to Rich who pointed this out.

2001-09-13  Timo Schulz <ts@winpt.org>

    * Revamped the whole plugin code for OE5.
    * wptMailPlugin.cpp (oe_plugin_new): New. Allocates new structure.
    (oe_plugin_releae): New.
    (oe_plugin_init): New. Searches for the OE main window and select
    all the recipients from the fields.
    (oe_get_msg): This code now uses the menu command id's to
    execute the commands.
    (oe_set_msg): Ditto.
    (oe_encrypt): Changed for the new code.
    * wptMainProc.cpp (wpt_main_proc): Re-activate the code.
    * wptHotkeys.cpp: Ditto.
    * Removed the hook project.

2001-09-14  Timo Schulz <ts@winpt.org>

    * wptWAB.cpp: (wab_read): New. Interface to read all address book
    entries.
    (wab_open): New. Internal function to load the WAB.
    (wab_release): New. Release the WAB contexts.
    (wab_load): New. Load the contents of the WAB into a linked list.
    (addr_list_new): New. Linked address list.
    (addr_list_add): New.
    (addr_list_release): New.

2001-09-16  Timo Schulz <ts@winpt.org>

    * wptExtensions.h: New. This file is now used for the extenion
    declarations.
    * wptExtensions.new: (register_extensions): New. Enumerate and
    load all possible extensions.
    (unregister_extentions): New. Release all loaded extensions.
    * wptKeyserver.cpp (kserver_load_conf): Added support for different
    keyservers. Currently only HTTP/LDAP.
    * wptKeyserverDlg.cpp (keyserver_dlg_proc): Added LDAP support.
    (hkp_recv_key): Ditto.
    * wptMailPlugin.cpp (oe_set_focus): Fixed silly bug that prevents
    to set the focus.
    * (oe_check_recipient): New. Checks if the key is able to encrypt
    and valid in the sense of revocation.

2001-09-17  Timo Schulz <ts@winpt.org>

    * wptClipboard.cpp (clip_isalready_secured): Fixed two silly bugs
    who prevent the correct return value in the case of an clipboard error.
    (clip_parse_pgp_id): New. Returns the PGP message type.
    * wptHotkey.cpp (hotkeys_strerror): Fixed bug in the indexes.
    (hotkey_single_register): Return correct error value.
    (hotkey_single_unregister): Ditto.
    * wptW32API.cpp (get_thread_id): Removed.
    (attach_thread_input): Ditto.
    (detach_thread_input): Ditto.
    * wptCurrWnd.cpp (get_window_contents): Store main and focused window
    for later use.
    (set_window_contents): Use the new code.

2001-09-23  Timo Schulz <ts@winpt.org>

    * wptSubkeyDlg.cpp (key_subkey_dlg_proc): New. Lists the subkeys.
    The same as the userid dialog.
    * wptWndSwitchDlg.cpp: Removed.
    * wptWipeExt.cpp: Removed. Code is now included.
    * wptGPGME.cpp (get_default_keyid): If the keyid from the options
    file is in the keycache.
    * wptKeylist.cpp (keylist_reload): New. Reload a keylist.

2001-09-26  Timo Schulz <ts@winpt.org>

    * wptW32API.cpp (listbox_add_string): New. Shortcut to avoid long casts.
    (listbox_get_cursel): Ditto.


2001-09-27  Timo Schulz <ts@winpt.org>

    * wptMainProc.cpp (wpt_main_proc): Fixed typo. Thanks to Andy who
    discovered this.
    * wptPasswdDlg.cpp (passwd_dlg_proc): New. Handy dialog to get the
    passphrase.
    * wptEditKeyDlg.cpp: Removed. The edit-key code is now moved to
    the various other dialogs to make the use more easier.
    * wptKeyUIDDlg.cpp: (keyuid_dlg_proc): ADDUID code, use it here.
    * wptSubkeyDlg.cpp: (subkey_dlg_proc): ADDKEY code. Ditto.


2001-09-28  Timo Schulz <ts@winpt.org>

    * wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): WM_NOTIFY to handle
    the double click messages.
    * wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
    * wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
    * wptFileManager.cpp (overwrite_file): Check if the file exists and
    then let the user decide.
    (fm_encrypt): Use the code here.
    (fm_sign): And here.
    (fm_sym_encrypt): And here. Now we use the passphrase dialog.
    (fm_decrypt): And here.
    * wptFile.cpp (unlink_file): Removed. We can use sunlink if we need
    a secure wipe.

    Make the memory checking more strict.

2001-10-04  Timo Schulz <ts@winpt.org>

    * wptPassphraseCB.cpp (parse_gpg_describtion): Free buffer.
    * wptKeyserver.cpp (kserver_search_init): Set buffer to NULL.
    Both were pointed out my Timo (not me ;-)).
    * wptKeylist.cpp (add_key): Fix a typo and now the code is more
    strict with returned attributes.
    * wptKeysignDlg.cpp (keysign_dlg_proc): Modify GPGME interface
    for local signatures.

2001-10-05  Timo Schulz <ts@winpt.org>

    * wptKeylist.cpp: (addkey): Check if the used userID is not revoked.
    In the case it is, use the first userID.
    * wptKeySubkeyDlg.cpp (key_subkey_dlg_proc): Change the listbox.
    Remove the Pos column and add a status column instead.
    Add expire stuff for subkeys.
    (init_dtp): Initialize the common control.
    * wptClipEditDlg.cpp (clip_edit_dlg_proc): New code to load a file
    into the clipboard.
    * wptKeyPropsDlg.cpp (ot_id_to_string): New. Returns a long description
    of the ownertrust value.
    (keyprops_dlg_proc): Fixed ownertrust handling.

2001-10-06  Timo Schulz <ts@winpt.org>

    * wptPassphraseCB.cpp (parse_gpg_description): Fixed a memory leak.

2001-10-08  Timo Schulz <ts@winpt.org>

    * wptKeyserver (kserver_connect): If the proxy settings are valid,
    use the proxy port instead of the HKP port.
    (kserver_recvkey): Proxy support.
    (kserver_search_init): Ditto.

2001-10-09  Timo Schulz <ts@winpt.org>

    * wptFileManagerDlg.cpp (file_manager_dlg_proc): Check the return
    code of sunlink.
    * wptGPG.cpp (get_keyring_from_optfile): New.
    Renamed gpg_errstr to gpg_strerror.
    (set_default_key): New.
    * wptKeyMiscDlg.cpp (keymisc_dlg_proc): Support for default key setting.
    
2001-10-10	Timo Schulz <ts@winpt.org>

	* wptGPG.cpp (set_gpg_default_key): Use spaces if the entry in the
	file is longer then the keyid.
	(get_gpg_default_key): Replaced get_gpg_default_keyid. Check if the
	entry is an userid.
	* wptFileManager.cpp (fm_check_for_entry): New. Avoid to add a file
	more then one time.
	(fm_add_dropped_files): Use it here.
    * wptFileManagerDlg.cpp (file_manager_dlg_proc): Support for common
    keys.

2001-10-13  Timo Schulz <ts@winpt.org>

    Set all ListviewControls to 'NULL' in all dialogs to be more crash
    resistent.

    * wptFileEncryptDlg.cpp (file_encrypt_dlg_proc): Rebuild interface.
    * wptFileExportDlg.cpp (file_export_dlg_proc): Ditto.
    * wptFileImportDlg.cpp (file_import_dlg_proc): Ditto.
    * wptFileSignDlg.cpp (file_sign_dlg_proc): Ditto.
    * wptFileVerifyDlg.cpp (file_verify_dlg_proc): Ditto.
    * wptStringUtil.cpp: Removed.
    * wptFileManager.cpp: Rewrote the complete interface code for
    the file manager.
    * wptFileManagerDlg.cpp: Rewrote the whole file manager dialog.

2001-10-15  Timo Schulz <ts@winpt.org>

    * wptFileManager.cpp (fm_wipe): New.
    (fm_set_status): Add temporary wipe status and handle default values.
    (fm_parse_files): Use fm_wipe instead of sunlink. Delete all wiped
    files with a successful opeation.
    * wptKeygenCbDlg.cpp (keygen_cb_dlg_proc): New. Static dialog procedure.
    (keygen_cb_thread): New. Static dialog thread.
    (keygen_cb_dlg_create): New. Interface.
    (keygen_cb_dlg_destroy): New. Destroy the dialog.
    (keygen_cb): GPGME interface.

2001-10-16  Timo Schulz <ts@winpt.org>

    * wptW32API.cpp (check_date): New.
    (get_open_filename): New.
    * wptDlgs.cpp (init_dtp): New. Initialize a special common control.
    * wptKeygenDlg.cpp (keygen_dlg_proc): Add support for exipre dates.

2001-10-17  Timo Schulz <ts@winpt.org>

    * wptCurrWnd.cpp (get_window_contents): Only minimize the window
    when the clipboard contains text.
    * wptKeylist.cpp (keylist_add_key): Check only for invalid keys
    in the mainloop. The other flags are checked in the various cases.
    (add_key): Use the ** foo ** notation for invalid flags instead of
    skipping the key.
    * wptKeyMiscDlg.cpp (clip_export): Check for revoked keys and print
    out a warning.
    Change all error messages to one header.
    (check_key_status): Check if the key is valid in the sense of
    revocation and expire dates. If not, print out a warning.
    (keymisc_dlg_proc): Use the new code.

2001-10-19  Timo Schulz <ts@winpt.org>

    * wptGPGPrefsDlg.cpp (gpg_prefs_dlg_proc): Support for various
    option files.
    * wptMainProc.cpp (wpt_main_proc): Remove the preferences menu and
    use a popup menu.
    * wptExtensions.cpp (gpgoe_load_plugin): New. Try to load the GPGOE
    plug-in.
    (gpgoe_unload_plugin): New.

2001-10-22	Timo Schulz <ts@winpt.org>

	Remove all MyGPGME code from the main project. Now we use the
	libmygpgme.dll to provide all cryptographic functions and interfaces.

	* wptKeylist.cpp (key_array_new): New.
	(key_array_release): New.
	(key_array_search): New. 
	* wptKeylist.cpp (keylist_add_to_recipients): Check if an untrusted key was
	already checked and don't bother the user if all userid's were selected.
	* wptPassphraseCB.cpp (passphrase_cb_init): Now void.
	(passphrase_cb_gpgme): Ditto.
	(passphrase_callback_proc): Support for a list of recipients.
	* wptImportList.cpp (implist_add_key): Support for secret keys.

2001-10-23	Timo Schulz <ts@winpt.org>

	* wptClipSignDlg.cpp (clip_sign_dlg_proc): Replace for with while
	because it's shorter.
	* wptFileSignDlg.cpp (file_sign_dlg_proc): Use keylist instead of
	the default keyid.
	* wptFileManager.cpp (fm_sign): Remove the default key ID code. Now
	we use the signer from the keylist.
	* wptGPGME.cpp (get_default_keyid): Revamp most of the code and fix
	some silly bugs.
	* WinPT.cpp (WinMain): if there is no valid keyring after the new
	preferences, start the key generation dialog.

2001-10-25	Timo Schulz <ts@winpt.org>

	* wptGPG.cpp (get_gpg_default_key): Support for the users options file.
	(check_gpg_path): Ditto.
	(get_gpg_options): Ditto.
	(set_gpg_default_key): Ditto.
	(set_gpg_options): Ditto.
	(gpg_check_keyring): Ditto.
	(set_gpg_default_keyid): Fix a typo.
	* wptGPGME.cpp (get_default_keyid): Rewrote most of the code.

2001-10-26	Timo Schulz <ts@winpt.org>

	* wptExtensions.cpp: Removed.
	* wptLDAPExt.cpp: Removed.
	* wptLDAP.cpp: New. This code now contains a direct interface to
	the WLDAP library so we don't need extra DLL's to handle LDAP keyservers.
	(wldap_init): New.
	(wldap_end): New.
	(ldap_set_verbose): New.
	(ldap_get_key_info): New.
	(ldap_recvkey): New.
	(init_ldap): New. Internal use only.
	(get_key): New. Ditto.
	(send_key): New. Ditto.
	* wptMainProc.cpp (wpt_main_proc): Init and de-init the LDAP dll.

2001-10-27	Timo Schulz <ts@winpt.org>

	* wptKeylist.cpp (keylist_enum_recipients): Add a type to make
	the code more flexible.
	* wptKeyMiscDlg.cpp (file_import): New.
	(file_export): New.
	* wptKeySigDlg.cpp (recv_missing_keys): Fixed a typo.

	Removed all OE code snippets.

2001-10-28	Timo Schulz <ts@winpt.org>

	* wptKeyMiscDlg.cpp (key_misc_dlg_proc): New virtual key support
	for ENTER/SPACE and DELETE. Suggested by Graham.
	* wptKeyList.cpp (add_key): New code to figure out how trustworthy
	a expired/revoked secret key is.
	(keylist_enum_recipients): Show the key ID of the key when it's
	revoked.
	* wptFileManager.cpp (fm_decrypt): Parse all PKE packets and not
	only the first to figure out if a secret is available. Thanks to
	Graham.
	* wptFile.cpp (get_keyid_from_file): Ditto.

2001-10-30	Timo Schulz <ts@winpt.org>

	* wptHotkey.h: Fixed typo. Thanks to Timo.
	* wptGPG.cpp: (gpg_check_homedir): Fixed memory leak. By Timo.
	(get_gpg_default_key): Skip comment lines immediately.
	* wptRegisty.cpp (get_reg_winpt_prefs): Ditto.
	* wptKeyManagerDlg.cpp (keylist_subclass_proc): New. Procedure
	for subclassing.

	Remove all unsafe WM_NOTIFY stuff because this was propably the
	reason for the crashes. And add as a sanity check if the control
	sent the message.

2001-11-02	Timo Schulz <ts@winpt.org>

	* WinPT.cpp (WinMain): Add the chance to start the preferences dialog
	in the case a GPG error was detected.
	* wptKeyManagerDlg.cpp (delete_keys): Interface to delete all selected
	keys.

2001-11-03	Timo Schulz <ts@winpt.org>

	(fm_remove_crit_file_attrs): First check if the file exists.
	Thanks to Peter.

2001-11-07	Timo Schulz <ts@winpt.org>

	* wptGPG.cpp (set_gpg_default_key): Rewrote the part of changing
	the key id.
	* wptKeyManagerDlg.cpp (file_import): Use force trust to allow secret
	key imports.
	* wptGPGOptDlg.cpp (gpgopt_dlg_proc): If the options file exists and
	the user doesn't set the field, try to do this automatically.

2001-11-13	Timo Schulz <ts@winpt.org>

	* wptGPG.cpp (get_gpg_optfile): Check for the case the OptFile entry
	is set but to "". Then use default gpg directory.
	* wptKeyManagerDlg.cpp (send_to): New. Context entry for sending keys.
	(refresh_from_keyserver): New. Context entry for update keys.
	(keymisc_dlg_proc): Modify the way the popup is shown.

2001-11-18  Timo Schulz <ts@winpt.org>

    * wptKeyManager.cpp: New. Contains all handy functions from the
    wptKeyManagerDlg.cpp. This should help to cleanup the dialog code.
    (km_quote_uid): New.
    (km_check_for_seckey): New.
    (km_check_key_status): New.
    (km_clip_export): New.
    (km_clip_import): New.
    (km_file_export): New.
    (km_file_import): New.
    (km_delete_keys): New.
    (km_send_to_keyserver): New.
    (km_refersh_from_keyserver): New.
    (km_update_default_key_str): New.
	* wptKeygenDlg.cpp (ask_for_backup): New.
	(keygen_dlg_proc): Use new function to give the chance to the
	user for a complete backup.

2001-11-22	Timo Schulz <ts@winpt.org>

	* wptW32API.cpp (set_foreground_wnd): New.

	Fixed the return value of all EndDialogs.

	* wptMainProc.cpp: Remove all code parts which did the same for the
	current window support. Now the code uses a dialog switch which is
	much smaller.

2001-11-23	Timo Schulz <ts@winpt.org>

	* wptW32API.cpp (set_active_window): New.
	(reset_active_window): New.
	(window_reminder): New. This is a delayed thread procedure to
	force the focus (foreground) to the dialogs for the current
	window mode.
	* wptMainProc.cpp (winpt_main_proc): Use it here.
	* wptClipEncryptDlg.cpp (clip_encrypt_dlg_proc): Ditto.
	* wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Ditto.
	* wptClipSignDlg.cpp (clip_sign_dlg_proc): Ditto.
	* wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.

2001-11-24	Timo Schulz <ts@winpt.org>

	* wptKeyManager.cpp (km_groups_new): New.
	(km_groups_release): New.
	(km_groups_load): Rewritten.
	(km_groups_add): New.
	(km_groups_del): New.
	(km_groupdb_open): New.
	* wptKeyManagerDlg.cpp (keymisc_dlg_proc): Added group support.
	* wptGroups.c (groupdb_enum_read): Store the record before increment it.

2001-11-27	Timo Schulz <ts@winpt.org>

	* wptKeyserver.cpp (base64_encode): New. Marco provided HTTP
	proxy authentifcation support for each command.
	(kserver_update_proxyuser): New. Ditto.
	(kserver_send_request): Ditto.
	(kserver_recv_request): Ditto.
	(kserver_search_init): Ditto.

2001-11-29	Timo Schulz <ts@winpt.org>

	* wptKeyManager.cpp (km_groupdb_expand_recipients): New.
	* wptMainProc.cpp (clip_gpg_dlg): New.
	Modify the whole event loop so we don't need all the same code
	for each command. And we use the new foreground code.
	* wptW32API.cpp (check_date): Fixed.

2001-12-02	Timo Schulz <ts@winpt.org>

	* wptGroups.c: Revamped from the base. Arggg.

2001-12-15  Timo Schulz <ts@winpt.org>

    * wptKeyManagerDlg.cpp (keymisc_dlg_proc): New menu items for
    copy and paste.

2001-12-19	Timo Schulz <ts@winpt.org>

	* Completed work on the temporary file support for GPG.
	* wptRegistry.cpp (set_reg_winpt_prefs): Add mode for the
	plaintext viewer option. Suggested by Markus Winkler.
	(get_reg_winpt_prefs): Ditto.
	* wptPreferencesDlg.cpp (prefs_dlg_proc): Ditto.
	* wptMainProc.cpp (winpt_main_proc): Ditto.

2001-12-21	Timo Schulz <ts@winpt.org>

	* wptTextInputDlg.cpp (text_input_dlg_proc): New.
	* wptMainProc (clip_gpg_dlg): Support for deached signatures.
	* wptClipVerifyDlg.cpp (clip_verify_dlg_proc): Ditto.

2001-12-30	Timo Schulz <ts@winpt.org>

	* wptFileManager.cpp (fm_sign): Always use callbacks for the
	passphrase.
	(fm_decrypt): Ditto.
	(fm_parse_files): Cache the passphrase for the session and check
	if the file still exists.
	* wptRFC2240.cpp (parse_ske_sesskey): Removed. We no longer use
	low level stuff here.
	* wptFile.cpp (get_keyid_from_file): Ditto.

2002-01-01	Timo Schulz <ts@winpt.org>

	* wptFileManager.cpp (fm_verify): Support for the case there is
	no public key to verify the signature.

2002-01-06  Timo Schulz <ts@winpt.org>

    * wptPreferencesDlg.cpp (prefs_dlg_proc): Support for the sign+encrypt
    hotkey.
	* wptRegistry.cpp: Ditto.
	* wptRegistry.h: Ditto.
	* wptHotkey.h: Ditto.
	* wptGPG.cpp (gpg_load_options): New.
	(gpg_save_options): New.

2002-01-13	Timo Schulz <ts@winpt.org>

	* wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Fixed some boolesche
	settings.
	* wptGPG.cpp (gpg_backup_options): New.
	(gpg_load_options): Ignore comment lines.
	(gpg_save_options): Rewritten.

2002-01-18	Timo Schulz <ts@winpt.org>

	* wptMainProc.cpp (winpt_main_proc): NLS support for new menu style.
	* wptPassphraseCB.cpp (parse_gpg_description): Support when no
	description was given. One example is when symmetric was used.

2002-01-20	Timo Schulz <ts@winpt.org>

	* wptMainProc.cpp (winpt_main_proc): Fix the error, that the user
	have to click twice before the menu appears. Richard told me this.


2002-01-23	Timo Schulz <ts@winpt.org>

	* wptClipEditDlg.cpp (clip_edit_dlg_proc): Release the buffer for
	loading a file.
	Add new code to save file with clipboard contents.

2002-01-26	Timo Schulz <ts@winpt.org>

	* wptKeylist.cpp (keylist_add_key): Use flags for the file manager
	to avoid to show all userid's. Thanks to Frank.
	* wptDateDlg.cpp (date_dlg_proc): New context to use different
	window texts and some other features.
	* wptKeygenDlg.cpp (keygen_dlg_proc): Use it here.
	* wptKeySubkeyDlg.cpp (subkey_dlg_proc): Ditto.
	* wptGPG.cpp (gpg_create_groupdb): Create the groupdb.gpg file if
	it doesn't exist.
	* WinPT.cpp (WinMain): Use the new code here.

2002-02-04	Timo Schulz <ts@winpt.org>

	* WinPT.rc: Set LVS_SHOWSELALWAYS for all listview elements
	which need it. Thanks to Timo who find this out.
	* WinPT.cpp (WinMain): We don't quit in the case the user changed
	the preferences.
	(update_keycache): New. Handy function to update the keycache.

	* Use quotation for the options file in any case.

	* clipboard.c (gpgme_clipboard_verify): When the NO_PUBKEY status
	is set, we don' try to get the sig key.

	* wptGPG.cpp (get_gpg_default_key): Revamped.

2002-02-05	Timo Schulz <ts@winpt.org>
	
	wptGPG.cpp (gpg_save_options): Fixed the code for the case the
	values don't exist in the options file. Thanks to Lutz who found this out.
	(get_gpg_default): First search for "default-key" then for "encrypt-to".

2002-02-05	Timo Schulz <ts@winpt.org>

	* wptGPG.cpp (gpg_save_options): Catch the case when the options file
	exist but it has a length of zero.
	(gpg_display_error): Print out the data from the GPG stderr 
	(when available).
	* w32-util.c (_gpgme_get_gpg_optfile): Check if the file exists and if
	not, return NULL.
	* wptKeyManagerDlg.cpp (keymisc_dlg_proc): Add support to export secret
	keys.

	* Fixed a lot of memory allocation all over the place.

2002-02-08	Timo Schulz <ts@winpt.org>

	* wptNLS.c: Now it's C-source because GPGME needs gettext too.
	(stpcpy): Makes it static.
	* errors.c: localize all error strings.
	* WinPT.cpp (get_gettext_lang): Move the code in this file because
	we can't use it in plain C.

2002-02-23	Timo Schulz	<ts@winpt.org>

	* wptListview.cpp (listview_del_items): New.
	* wptKeyManager.cpp (km_delete_keys): Use it here.
	* wptKeygenDlg.cpp (keygen_dlg_proc): UTF8 support.
	* wptKeylist.cpp (add_key): UTF8 support.
