commit 85e1f73d5b4166d1c1e090907af6a00aca46bf64
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat May 9 16:56:12 2009 -0400

    Version 6.0.2.

commit 92aa15b636780d14386972ddaed9535550d4fe78
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat May 9 16:47:07 2009 -0400

    Added file:// which acts like local://.

commit 40dd916ede5aa0f432c886d5f398fb94f7b9b1eb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat May 9 16:15:00 2009 -0400

    A few more pwmd_setopt() NULL checks. Only really useful when MEM_DEBUG
    is defined.

commit d5a359f5d1297ba24b309cfdc06c702fcbee5086
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu May 7 19:36:27 2009 -0400

    Added PWMD_PINENTRY_CONFIRM to display a pinentry confirmation dialog
    box. The prompt is set with PWMD_OPTION_PINENTRY_TITLE.

commit c95755e9e2e26126c7f35a2fc8a4140d62fc6ffe
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu May 7 19:30:10 2009 -0400

    Fixed finalizing a connection which was not to an SSH channel.

commit bba833e0c95b33ec325b78dcaf218d3e78836947
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu May 7 19:29:18 2009 -0400

    Fixed a segfault when resetting PWMD_OPTION_PINENTRY... to NULL.

commit 5e897ce1987132668f0baab945f719adfa5afa23
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 29 19:16:23 2009 -0400

    Non-blocking SSH negotiation and channel/shell startup.

commit de638b21a0ae9d0a4ee93a91156df8f46d5c5a66
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 27 21:32:04 2009 -0400

    Version 6.0.1.

commit f78eddc0c59f40f0f47a7b069301fb7d13759761
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 26 16:57:52 2009 -0400

    pwmd_socket_type() bugfix.

commit 3fa1b061e3ef04872f4b1c0a826b54ab287a5393
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 26 09:01:06 2009 -0400

    Version 6.0.0.

commit f946697ec76085c9a3c26681d35e0df5f00df879
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 21:15:43 2009 -0400

    pwmc: Show compile-time features with --version.

commit 6b6e0c7fbbe98c406a573bfa7d3d52ced7be7c12
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 21:05:23 2009 -0400

    pwmc: Compile time fix when no DEBUG is defined.
    
    A few minor documentation fixes.

commit 4be3da58242fef23420b5fa86ce7ce5681d3efb4
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 20:25:12 2009 -0400

    Fix for the previous commit. Don't set reset PWMD_OPTION_PASSPHRASE when
    using a --local-pinentry with --force-save.
    
    Fixed a segfault when comparing SAVE strings.

commit 9d60873c4491402fa547b9f4e5c82e47329d04d3
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 19:22:12 2009 -0400

    pwmc: When --force-save is used, dont reset the cache entry until the
    --local-pinentry is finished. Fixes resetting the cache entry if the
    user cancels the pinentry.

commit 16725d95f7818859bbe018c55c7a207628ce4dcd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 19:12:10 2009 -0400

    pwmc: check if the file is cached before doing a --local-pinentry.

commit 33f52a45c256ae4113a5bad5216b1d37867cadab
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 18:53:14 2009 -0400

    Fixed local:// parsing.

commit 11caab49cdc644bbb5f5cc52e948dcd39950f463
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 25 18:46:25 2009 -0400

    Disable libpth by default.

commit b4bfe12743f3fdfff9863044455f212efd270803
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Apr 24 21:48:12 2009 -0400

    Since cracklib uses locale specific strings, do the same when comparing
    pinentry quality strings. This whole scheme is kinda hokey. Need a
    better way.

commit 03f434efb628679a13a5425e2dd87adfc4117172
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Apr 24 21:46:12 2009 -0400

    Updated to require pwmd 2.0.

commit 5e13191bf1009db9c62943e8c78a70e5b9c312c7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 19 18:30:57 2009 -0400

    Renamed socket:// to local://.

commit d72a0e0dfaee83a5f8aa6eb115aa07d9ecbe757a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 19 18:22:32 2009 -0400

    Use pth_fdmode() where needed.

commit 79b1d91a464f23f006fe22024786e4088cd8853e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 19 18:21:23 2009 -0400

    Fixed commit 15f2551. Build libassuan with libpth support by default
    like libpwmd does.

commit 8b66e7f31814f72e2d849bfe86cd25541c7eed03
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 18 11:42:02 2009 -0400

    pwmc: When --force-save and no --local-pinentry is used, return
    GPG_ERR_WRONG_KEY_USAGE. This prevents saving with an empty passphrase
    since CLEARCACHE is sent before doing the save.

commit 4110b2185bc04b7386babc6e558d5dc740200d64
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 18 11:21:14 2009 -0400

    pwmc: --force-save also specifies --save.

commit d5ae4cb56610b8a6d3cdd0e0304f03bd26389390
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Apr 17 19:59:37 2009 -0400

    Added PWMD_PINENTRY_DEFAULT to use the user defined pinentry strings
    which are set with pwmd_setopt() when using pwmd_getpin().

commit 82663e8f198f2e95deb82eb90b9082560ff04074
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 22:21:13 2009 -0400

    pwmc: Fixed freeing the temporary saved password when --local-pinentry
    is used.

commit 326821fe53361da33e44ed7351ef810d33b58854
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 22:12:59 2009 -0400

    When an unknown pwmd_option_t is sent to pwmd_getpin(), let any user
    specified PWMD_OPTION_PINENTRY_DESC be used in the pinentry dialog.

commit dbb8aee701d1f1f4546bf0301cd44bdf977cecdb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 22:00:45 2009 -0400

    Somehow the PWMD_PINENTRY_CLOSE enumeration got skipped. Fixed.
    
    pwmc: Fixed setting PWMD_OPTION_PASSPHRASE after a retry.

commit a23152ced9f80ec365a6e1f16829321f7440fe55
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 21:47:43 2009 -0400

    Added PWMD_PINENTRY_CLOSE. This will terminate the pinentry process used
    with pwmd_getpin().
    
    Fixed pinentry retries when DEBUG is unset.

commit a4bf6cd6a4dca1e4c1484d1da39b3e3a1996bc4b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 21:34:42 2009 -0400

    Added pwmd_getpin(). This won't send any commands to the server. May be
    useful for remote pwmd connections.

commit 15f2551937746c83cbbd764a7567915d598afcdb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 19:58:58 2009 -0400

    Don't build libassuan with libpth support when --without-pth is
    specified.

commit 6a6f1e1b6af350f18f2731006f296c6a22effa2c
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 19:40:26 2009 -0400

    Added a note that pwmd v1.11 or later is required.

commit e3c039ccce5703ef4b91dafa4d7214606079b638
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 19:14:23 2009 -0400

    Call reset_async() after using PWMD_OPTION_PASSPHRASE or
    PWMD_OPTION_PASSPHRASE_CB.

commit 50dfdbc359ad1477107657e409fb7408446712e7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 16 18:55:02 2009 -0400

    Don't retry a passphrase if PWMD_OPTION_PASSPHRASE or
    PWMD_OPTION_PASSPHRASE_CB fails.

commit 3c8f2fb03a4a7c513d84ef380d385d0c5baf4dd5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 15 21:45:57 2009 -0400

    A few documentation updates.

commit b4e6db70ae779d06c44cdcc2e3e5afc522791dba
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 15 20:11:17 2009 -0400

    Use PWMD_OPTION_PASSPHRASE and PWMD_OPTION_PASSPHRASE_CB for async open
    and save functions too.

commit 4959f90fb3c0ab98dae983aee6d7dc5b2246f148
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 15 19:51:39 2009 -0400

    Don't do a pinentry retry if over an SSH connection and not using a
    local pinentry. Fail on the first invalid passphrase which may be
    empty or set with pwmd_setopt().
    
    Preprocessor conditional fixes.

commit b9e51e0015c205f91902e2ad7204d54e24b0b043
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 14 22:03:23 2009 -0400

    Added password quality checking for the local pinentry when
    --enable-quality is specified during configure.

commit 20e2f2ae8016e4c1354450b8b0e67dc9049c9443
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 14 21:21:23 2009 -0400

    Cancel a pinentry timeout after the first try. Fixes terminating the
    pinentry after a failure for all methods.
    
    Fixed setting the pinentry retry string for all pinentry methods.
    
    Fixed cancelling a pinentry when doing a pwmd_open2().

commit 97ab9fcf9564fd095533ac61cb14343f4b9330ff
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 22:21:41 2009 -0400

    Added a note about changing pinentry methods and saving. For example,
    doing a pwmd_open2() will send "OPTION PINENTRY=0" to the server. Doing
    a pwmd_save() after this will cause the SAVE command to be sent
    without a passphrase and pwmd won't care because it's pinentry is
    disabled and it assumes this is what you want (an empty passphrase).
    "OPTION PINENTRY=1" must be sent before calling the save function for
    pwmd to use it's own pinentry again.

commit 70a01167a204a3bcf81457e987cdf487c6aacbd8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 21:56:49 2009 -0400

    Return GPG_ERR_ASS_NESTED_COMMANDS rather than GPG_ERR_INV_STATE.

commit 4194398f0dfe1cfa9ccabe12ec6bffcf6460bd15
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 21:39:28 2009 -0400

    Return an error of any of the async open or save functions are called in
    succession without calling pwmd_process().

commit 536820a6323cdef0cbfc38cdbf05103e0f0e4bd6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 20:43:22 2009 -0400

    Return an error of any of the async connection functions are called in
    succession without calling pwmd_process().

commit 87e271dc838fd37f47a2ba60c2742080ed654bb5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 20:26:33 2009 -0400

    Added pwmd_disconnect() to close the connection without freeing the
    resources. This will also keep any options set for the handle.

commit 5c1429b475825f029eb2c06666c9453d08d6e8f8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 19:46:05 2009 -0400

    Fixed a segfault during an SSH connection failure.

commit 1f70d19fd06f0ed8bc2016b0adc01eccb333975a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 13 19:38:10 2009 -0400

    ssh.c cleanup.
    
    More namespace cleanups.

commit 9f4515db2c2e17f0bd5f3541d7defae12b7c4cc6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 22:01:22 2009 -0400

    pwmc: Fixed NULL terminating the command read from stdin.

commit 7e566a46417d2684aa430b63c35306d40270fdc5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 21:41:13 2009 -0400

    pinentry.c cleanup.

commit 3b6e8a66a5bd5014b0213e054286db5828c6c3eb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 20:58:43 2009 -0400

    Fixed pwmd_open_async2() and pwmd_save_async2() to use non-blocking OPEN
    and SAVE commands and not just a non-blocking pinentry.

commit 31e437e47f9b8f69191dbe5ecd4f0f5af970e912
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 19:52:46 2009 -0400

    When sending a command with pwmd_command(), make sure than it is <=
    ASSUAN_LINELENGTH. If not, return GPG_ERR_LINE_TOO_LONG. This check is
    done anywhere pwmd_command_ap() is used (_assuan_command() and
    assuan_write_line() actually).
    
    Call _pwmd_process() to parse any pending lines if pwm->state ==
    ASYNC_DONE and in a command (ASYNC_CMD_OPEN/SAVE2).
    
    Another fix for closing the remote connection when doing a
    pwmd_open_async2() on a failure.
    
    Check for GPG_ERR_ENOENT in _do_pwmd_save() after sending ISCACHED.
    
    Fixed freeing the passphrase after writing to the pipe during a SAVE.
    
    Code cleanups (libpwmd.c mainly).
    
    Namespace cleanups.

commit d3ed94814302f0943e7fcb088de7ed02a36b9ef8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 15:56:34 2009 -0400

    Fixed a couple Debian lintian warnings with the manual page.

commit 6707b14f90c0ee4fb7ec7e3ba31984fdaa8f21e2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 10:58:11 2009 -0400

    pwmc: #include <fcntl.h>, usage text cleanup.

commit 9bd83ad1cfeba8cb1f3cc0bf7229ec23923780dd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 10:44:56 2009 -0400

    Return GPG_ERR_CANCELED rather than GPG_ERR_EOF if the pinentry process
    terminates unexpectedly. Avoids confusion with the pwmd context.

commit 6bd2aa506eecbf18bb3992a8755d8d9086ad6e84
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 10:37:59 2009 -0400

    Fixed commit 4d70df9. Don't use send/recv() on a pipe().
    
    Return GPG_ERR_PIN_BLOCKED in pwmd_open2() if another handle is using
    the pinentry. Otherwise the global timeout and handle would get reset.
    
    Move the do_pwmd_open() pinentry code to pinentry.c. Fixes pinentry
    global warnings.

commit 36edce4878222a059b0abe356d333bbc471e766e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 09:43:19 2009 -0400

    Created src/misc.[ch],ssh.[ch],pinentry.[ch].

commit 89e0fc4c441731372cbdc3c58c4a28e40195f2eb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 01:13:24 2009 -0400

    pwmd_new() now sets a default pinentry tty, term and display from the
    current environment. These can be changed with pwmd_setopt(). Note that
    the remote SSH pwmd connection defaults will be overwritten
    (~/.pwmd/pinentry.conf) with these settings since
    send_pinentry_options() is called. To prevent this, set the option
    values to NULL (or what ever is needed) before doing a command that may
    require a pinentry. This also affects the local pinentry.

commit 5c67fb92b47895450a1f1426aaedc7504de96cbd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 00:33:56 2009 -0400

    Fixed sending "OPTION DISPLAY" when set with pwmd_setopt().

commit 4d70df9a1c7b024babca362b7c06ac883f4dd01a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 12 00:31:40 2009 -0400

    Use send()/recv() instead of read()/write() for socket IO.

commit 9a826b3444355b6221a5822ed69678e177c801a4
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 22:17:18 2009 -0400

    Another fix for commit 592815d. Don't close the SSH session when an OPEN
    fails.
    
    If WITH_TCP was not defined, return GPG_ERR_NOT_IMPLEMENTED for
    PWMD_OPTION_IP_VERSION.
    
    Return GPG_ERR_UNKNOWN_OPTION rather than GPG_ERR_NOT_IMPLEMENTED in
    pwmd_setopt().
    
    Always strip the error source before returning a result code in all
    functions.
    
    Added an Errors sections to the documentation.

commit 733ecfcfb7f879ae499b4ab5729f31f5ce1357fb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 19:50:25 2009 -0400

    Preprocessor conditional fix for the previous commit.

commit 7623e3043c4e382053745fe08bf0c0773f12f057
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 19:35:46 2009 -0400

    Fixed pwmd_open2() with a remote SSH connection when retrying a
    passphrase.

commit 4ff0495900f7c7337b23273da3fceff3f0c4a6ca
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 19:25:39 2009 -0400

    Fixed pwmd_connect_url() with a NULL url parameter.

commit 3d17b6ad32ccc13fb218e6b30097e28148200ba7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 18:19:29 2009 -0400

    If pwmd_connect_url() doesn't match ssh:// or socket://, then assume the
    url is a socket:// rather than returning GPG_ERR_UNSUPPORTED_PROTOCOL.

commit 24e7601a9bac81b05fcbd18d2e1a78d6a26dc56f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 18:12:32 2009 -0400

    Added pwmd_socket_type() which sets a parameter to PWMD_SOCKET_UDS or
    PWMD_SOCKET_SSH. Useful when you want to know how pwmd_connect_url() did
    the connection.

commit 9b33c58526da9bf99d9eb19020ec28348bc66a54
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 17:49:31 2009 -0400

    pwmc: Let --url be a non-DEBUG option.

commit 8aac86c5ea577d274ca8bca8fb7a8dabaa85d13e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 15:39:42 2009 -0400

    pwmc: Set STDIN_FILENO to non-blocking when waiting for input even when
    not debugging. This lets status messages get processed which may be
    disabled with --no-status.

commit 07b713fe3a20fcb3afebe4a1d2b0f4261e1eee74
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 15:35:33 2009 -0400

    Reset pwm->cmd from pwmd_ssh_connect(). Fixes pwmd_process().

commit b140a1926cbcae7557e71f96a97f1851def40624
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 13:42:23 2009 -0400

    It is probably better to set O_NONBLOCK only for the duration of
    _pwmd_process() and not the entire INQUIRE.

commit 6fa150f99c894854dfad6f25259a32d44af04f17
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 13:27:28 2009 -0400

    Call _pwmd_process() in _inquire_cb() so status messages can be parsed
    while doing an INQUIRE.

commit fe78f6e26025811d98a9704b068dbaa780e1d809
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 13:21:15 2009 -0400

    More documentation cleanups.

commit 2ad0a2476374e3446da75f3b772b9b063eb9c1a1
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 13:20:53 2009 -0400

    Fixed installing the wrong lintian overrides for the Debian package.

commit f6e3e6eae58e5cd3fbcd0ae8497bc1324caf2bd3
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 11:00:47 2009 -0400

    Instead of sending the NOP command to process pending status messages
    when not in an asynchornous command, poll the socket FD instead and
    process the pending lines like pwmd_open_async() and pwmd_save_async()
    do.
    
    Check the return value from the status callback for an error.

commit 7834dc9877bfc630d24724c3cca4279f694c0001
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 10:27:05 2009 -0400

    --disable-ssh fixes.

commit b64a5731a9610063a2c9dd77a5ef1deef4afc773
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 11 09:56:22 2009 -0400

    Call libssh2_channel_close() before freeing it.
    
    Don't close the SSH file descriptor until the session has ended.

commit 029a8312cbf4ea4927318d54e2b6d839f3c5320a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Apr 10 00:20:08 2009 -0400

    More documenations updates.

commit 1f2b62244814c9a70d755c71a95c7ebae67f5f76
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 23:00:17 2009 -0400

    Added a note to the documentation about filenames beginning with a
    tilde.
    
    Updated to doxygen v1.5.8.

commit d0a1f41c83ca17d4a7f26194db50faa1de5dffc5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 21:58:38 2009 -0400

    Show the client name in the pinentry dialog.

commit 75bad59f62fc06a889fa40f2b2a9f19a5560e6f8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 21:42:55 2009 -0400

    All function arguments that take a filename path now have ~ expanded to
    the invoking users home directory.
    
    Fixed pwmc --pinentry.

commit 7d0726f55be1be5e2c31b2ce1caf120452268513
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 21:10:35 2009 -0400

    Check for an empty (but not NULL) required parameter in init_tcp_conn().

commit 523b8bb5f84f0fb8cf9bfaa0595e23271cd563c2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 21:03:21 2009 -0400

    Fixed pwmd_process() when an OPEN command failed with
    GPG_ERR_INV_PASSPHRASE. Don't retry.

commit 46e08c0f453e87ae4b5f82f89d0440f3d27d36e3
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 21:00:08 2009 -0400

    Free the tcp_conn in reset_async() when 'done'.
    
    Fixed a segfault during pwmd_close() if there was no existing tcp_conn.

commit 5ddea758a90da29823ba11ed178ae24a88cb1b45
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 20:53:24 2009 -0400

    Free the tcp_conn in setup_tcp_session(). Fixes freeing on a async
    connection failure.

commit 01f344aa90af696cf65afe3cfa7ffe6905e95aa7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 20:32:34 2009 -0400

    Send "OPTION PINENTRY=0" after establishing a remote SSH connection to
    prevent pwmd from trying it's pinentry. This will be removed when X11
    forwarding is supported.
    
    Fixed _socket_connect_finalize() to free the tcp_conn on failure.

commit eca285b7f6da7c832cde39dc98b8d76715f5bf8f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 19:11:05 2009 -0400

    Revert "Added support for a passphrase in the url string."
    
    This reverts commit 5d1406e884e18cb3bcfca08b0001f5ac7962b29e.
    
    This really should have been a passphrase for the identity file and not
    the data file, but I can't get passphrases with an identity file to work
    properly so skip it for now.

commit 5d1406e884e18cb3bcfca08b0001f5ac7962b29e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 18:50:25 2009 -0400

    Added support for a passphrase in the url string.

commit 143bee39d96ecf62b4801d1865271611cab908a5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 9 18:38:58 2009 -0400

    Set PWMD_OPTION_IP_VERSION to PWMD_IP_ANY when ssh:// is used. This
    resets to the default when using the same handle on a previous failure.

commit e7605ed3733577ab95d565b957943cf00c5ef5f8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 8 23:35:13 2009 -0400

    Added pwmd_connect_url() and pwmd_connect_url_async(). These allow for
    connecting to either the local or remote pwmd server by options
    specified in the URL string.

commit 2baf39da15b7b9d0fcfaf4a7813cdf7111d41725
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 8 19:51:22 2009 -0400

    Another stdarg bugfix. This time in pwmd_strdup_printf().

commit 46d6c4c7fc5a8d51ef75cbc8c246e1ace78d05f4
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 8 19:45:43 2009 -0400

    Return GPG_ERR_BAD_CERT if the host key cannot be verified rather than
    GPG_ERR_CHECKSUM.

commit 860095b647a462a70d8aa05cb163bc97eb91daa6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 22:24:38 2009 -0400

    Require a C99 compiler.

commit ad4d2d8c9e6431a0633926265c3735800838c2d5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 22:11:09 2009 -0400

    configure.ac: AC_USE_SYSTEM_EXTENSIONS, require autoconf 2.60, fixed a
    typo for x86_64 Linux.

commit 02081b75d23b74d3e844a808e54f7be1d255b59e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 21:46:02 2009 -0400

    Fixed PWMD_OPTION_PASSPHRASE and PWMD_OPTION_PASSPHRASE_CB to work with
    all open/save functions including the async ones.

commit 67c957dbac1d656930c241b9fcd017a880dac033
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 21:30:18 2009 -0400

    Fixed pwmd_get_fds() when doing an ASYNC_CMD_OPEN2 when the file was
    cached or a new one.

commit 2dabe9ce1629c4496a53fd98b4c2012234f1d1e3
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 20:59:51 2009 -0400

    Set the file descriptor to non-blocking in pwmd when debugging async
    modes.

commit 189a2195d46cf84948f521ff646ffae44ffd7c57
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 20:33:13 2009 -0400

    Link with -lrt on Linux x86_64 boxes.

commit 75893d5d4b76b62cbabe55fbac4358d35a9d37d1
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 20:08:38 2009 -0400

    Added GPG_ERROR_CFLAGS to the pwmc Makefile dependencies.

commit 0f82c40358af298a7e14a775113406a4be79af31
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 20:01:18 2009 -0400

    Zero length is a success from read_hook() and write_hook().

commit 9d5aca9f8e5353a943d0ad3f5181df703b42dd72
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 19:10:05 2009 -0400

    Fixed read_hook() and write_hook() over an SSH channel.

commit 8016d4244eac56f38c41e92ea4e40e6e39f83422
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Apr 7 19:00:08 2009 -0400

    Commit 1b59e7d contained a typo that didn't really fix pwmd_command().

commit 1b59e7d762f9723bdef03fc4a5d2350413dd22ec
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 6 22:07:33 2009 -0400

    Fixed pwmd_command_ap() corrupting the argument list. Operate on the
    va_copy() after getting the length of the original.

commit b6498fff65663d2b7110cb659b86ec3047808ba9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Apr 6 21:54:09 2009 -0400

    Fixed option --name.

commit 6cc18a4d5656fc9cee1d5dcc700b239ab6b80922
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 5 11:47:38 2009 -0400

    The 'changelog' target now only generates changes from v5.0.x to
    current.

commit 7b462e58d0a5aee5b77e45ce2ddc03d3dbe2a5c9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Apr 5 11:40:47 2009 -0400

    Minor documentation cleanups.
    
    Debian package control updates.

commit ff5fa94e327b46a9c5202ac4ead1d749f71ac054
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 22:17:34 2009 -0400

    Documented SSH in the header. Also fixed formatting which broke in
    commit c9c5c52.

commit 7e37892f91647c257205ee0260dda04b7f181599
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 21:29:52 2009 -0400

    Fixed some compile-time conditionals. Again.

commit ba6fda62a143da4d71efa42b035404961072df77
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 20:10:35 2009 -0400

    Added a note about calling pwmd_get_fds() after each call to
    pwmd_process().

commit 5079c37ceb6c7dff25526becad65a2041887641e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 20:00:24 2009 -0400

    Removed pwmd_get_fd() and pwmd_get_async2_fd(). These are replaced with
    pwmd_get_fds() which sets a new type array of pwmd_fd_t with the
    available file descriptors for the specified handle. What its filled
    with depends on the connection state. This also adds new constants
    PWMD_FD_READABLE and PWMD_FD_WRITABLE.
    
    During pwmd_process() when the command is ASYNC_CMD_OPEN2 or
    ASYNC_CMD_SAVE2, check for pending status messages.
    
    Fixed potential double free in do_save_getpin().
    
    Make sure 'result' is non-NULL before setting it.

commit bd74b7ecc0ad8073d1ec73de05b7f8751fecb33b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 11:33:30 2009 -0400

    Fixed PWMD_OPTION_PINENTRY_TIMEOUT when used with pwmd_open2().
    
    Added a note to the documentation about SIGALRM.

commit a97c604c62a4305e5605e424c977990f510b2ad1
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 11:03:06 2009 -0400

    Updated the pwmc documentation.

commit 22a14b88f1fbf5bb6c3066afc30129f38ad060f8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 09:42:16 2009 -0400

    Make sure a valid handle and assuan context is available before trying
    to process a function.

commit ce813d66e3417368e02a57495c238e855895ee36
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Apr 4 08:52:45 2009 -0400

    Return ASYNC_DONE from pwmd_process() when not in a command and the
    result to NULL.

commit e7677728eac8e4d97f4e6979b3fe57525182fbf1
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Apr 3 19:43:42 2009 -0400

    Determine the pwmd server version in _socket_connect_finalize() so
    do_pwmd_open() can decide how to check for existing data files.

commit c9c5c5283120e1e471e6e9abddce35a9e3253999
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 22:35:41 2009 -0400

    Documented pinentry.

commit 3584b471f9288cec5ce43145df3b6e4d2ed84fde
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 21:45:20 2009 -0400

    Fixed local pinentry strings.
    
    Don't disconnect the local pinentry context when doing a SAVE and the
    passphrase confirmation fails. Keep the context open and retry.

commit 63bbeed63f311978f679183c06086874dbc8ed80
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 20:56:10 2009 -0400

    Renamed pwmd_get_fd2() to pwmd_get_async2_fd().

commit 173f2da5d067bcd427161b8e0b57cb8013984570
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 20:49:11 2009 -0400

    Removed PWMD_OPTION_PINENTRY. No longer needed since pwmd_open2() and
    pwmd_save2() can be used.
    
    When setting pinentry options, wait to send them to the server (if using
    pwmd's pinentry) until the function that uses them is called.

commit 14a11cdc8a26f79a777edc7e85a6e926d4f53f94
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 19:51:54 2009 -0400

    Don't do "GETCONFIG data_directory" on an SSH connection.

commit 4e5f1fccd7beccb7b0d4ce4265bafef7e4550aa9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Apr 2 19:38:49 2009 -0400

    Added pwmd_open2() and pwmd_save2() which will use the local pinentry.
    A client no longer needs to set PWMD_OPTION_PINENTRY to use the local
    pinentry; libpwmd will do it itself. If you need to change pinentry
    methods using the same handle, you'll need to send "OPTION PINENTRY" to
    pwmd yourself.

commit 67935342ebfb023554c6dddb21f5634b49c1c144
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 23:46:12 2009 -0400

    More documentations updates and fixes.

commit e2ad3348dead0e40e8232214e416227574d4ea1e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 22:09:25 2009 -0400

    pwmd_get_hostkey() now requires a pwm_t handle. This lets
    PWMD_OPTION_IP_VERSION work.

commit bf7de94df13128182708951a0587592f90b947a4
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 21:48:43 2009 -0400

    WITH_PINENTRY conditional fixes.
    
    Fixed --disable-pinentry.

commit d55c4297aa946a0f1574130b24adb4c92f19e435
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 21:17:57 2009 -0400

    Loop over do_save_getpin() when GPG_ERR_INV_PASSPHRASE is returned. This
    is the same behavior as the other save methods.

commit 051e95635170461b1ef41fcda16b96f35a133588
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 21:15:47 2009 -0400

    Fixed pwmd_save() when PWMD_OPTION_PINENTRY is set.

commit e8f82b6827bd9dc85d4ffcc480a7ea93a34a660f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Apr 1 20:57:47 2009 -0400

    The order of getting the password is:
            1. PWMD_OPTION_PASSPHRASE (not async/async2)
            2. PWMD_OPTION_PASSPHRASE_CB (not async/async2)
            3. The calling function method.
    
    Fixed do_pwmd_save() to use the local pinentry when
    PWMD_OPTION_PINENTRY is set when called from pwmd_save().
    
    Documented pwmd_inquire().

commit 84a25677fe176db944103ab6006e312e4f849c4d
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 31 21:57:10 2009 -0400

    Created a doc/Makefile "doxygen" target to generate the documentation.
    
    More documentation cleanups.

commit c104fc566638c8f13874bef6271a2d76f8f371fe
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 31 19:39:48 2009 -0400

    Set a default timeout of 30 seconds for pwmd_open_async2() and
    pwmd_save_async2().

commit 1bbeb92042e0a8743a1695cc9580bceb4669d075
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 31 19:31:18 2009 -0400

    Renamed pwmd_password_fn to pwmd_passphrase_cb_t. This also changes the
    prototype to return a gpg_error_t and have the new 2nd parameter be set
    to the passphrase. Returning non-zero will cause the command to fail.
    
    Renamed pwmd_status_fn to pwmd_status_cb_t.
    Renamed pwmd_inquire_fn to pwmd_inquire_cb_t.
    Renamed PWMD_OPTION_PASSWORD to PWMD_OPTION_PASSPHRASE.
    Renamed PWMD_OPTION_PASSWORD_FUNC to PWMD_OPTION_PASSPHRASE_CB.
    Renamed PWMD_OPTION_PASSWORD_DATA to PWMD_OPTION_PASSPHRASE_DATA.
    Renamed PWMD_OPTION_STATUS_FUNC to PWMD_OPTION_STATUS_CB.

commit e2a18079d157bc53750cdc808c9092234d0e1e15
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Mar 30 21:49:02 2009 -0400

    Updated the documentation.
    
    Use doxygen to generate the API documentation from src/libpwmd.h.in.
    Need a Makefile rule, so this isn't done yet.
    
    Added README.SSH and doc/doxygen.conf.

commit 1d156a1800c61a8ea4ff92b85752893e8360dd5d
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 12:24:31 2009 -0400

    Added PWMD_OPTION_IP_VERSION which should be set to a pwmd_ip_version_t
    before trying to connect to an SSH host. This sets the IP version to
    use: PWMD_IPV4, PWMD_IPV6 or the default of PWMD_IP_ANY.
    
    Added pwmc command line options --ipv4, -4, --ipv6 and -6 to use this
    new option.

commit 2291a5f0755feae97a4c6bc399cae8f9e61f97ba
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 10:34:02 2009 -0400

    Fixed --port.
    
    Made _pwmd_strerror() static.

commit e57fae52699b7f2399f87a5a0b21d2f592f0d79f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 10:19:09 2009 -0400

    A few minor cleanups.

commit 2a3e6f67925b1f619494ce1790d879af1174196b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 09:49:22 2009 -0400

    Fixed zombie pinentry processes.

commit 35ba0e8ad570c1a8a0a5c4ee25239d0bd74c3c7e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 09:38:24 2009 -0400

    Fixed pwmd_save_async2() when used with an SSH channel. Finishes commit
    4270abf.

commit 356e4ed401ad2b9fd30657bc5d6eac6a38d55935
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 29 09:28:27 2009 -0400

    Fixed the --get-hostkey option.

commit 3c6a410c5f13318c518a63c79c996dd6a852758c
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 22:22:22 2009 -0400

    Fixed some compile time warnings.

commit 9d9a34e7f8f912891ef26150db3daea935f734eb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 21:40:34 2009 -0400

    A few compile time conditional fixes.

commit 4270abf0258e6730414319ee05b443ad7e83d802
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 20:31:36 2009 -0400

    When doing a pwmd_open_async2(), check the passphrase in the parent
    process and not the forked pinentry process. Fixes SSH channel
    corruption: sshd: Disconnecting: Bad packet length 2967639646
    
    pwmd_save_async2() needs the same fixing.

commit ac035b8055e2651a7ef8302e9b19e61fc8672572
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 18:08:25 2009 -0400

    Fixed checking for an SSH error in write_hook() and read_hook().

commit 282c0895faa68c9b066f65e2fbf81dca48efa06e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 17:23:40 2009 -0400

    Trim any '\r\n' in the command before sending it to the server.

commit 4715eb1fe76ec292859e389bac4e51be75a90da2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 17:12:55 2009 -0400

    Fixed pinentry retries when used with pwmd_open_async().

commit 54aa8a8ca537112929bca104efec90fbfcce379f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 13:52:59 2009 -0400

    Check for getopt.h for systems that have getopt_long().

commit e159755c81fe77f314f3fb8ab7830963741df930
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 13:46:50 2009 -0400

    Use getopt_long(). When not available, build the included getopt_long.c.

commit 31ac4eb74b8010743b99b19b8d030e190488ab45
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 12:10:40 2009 -0400

    Fixed a potential buffer overflow in do_nb_command().
    
    Use dynamic memory allocation in strings that are ASSUAN_LINELENGTH
    long.

commit ab9e4cd6764b0ca1017c393097355c3df3ad974e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 28 11:44:13 2009 -0400

    Fail if assuan_get_active_fds() does.

commit 375676baa53b8683ebfff3d727a2e19caf38ed1b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 21:51:29 2009 -0400

    Renamed pwmd_tcp_connect() and pwmd_tcp_connect_async() to
    pwmd_ssh_connect() and pwmd_ssh_connect_async().

commit cbf01f5113f8899b00e0c204c85e2480d75ffbc2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 21:43:18 2009 -0400

    Don't dup() the assuan ctx FD.

commit 50a8adcc9f51263f5bd8ea373d269d6720504081
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 21:13:51 2009 -0400

    Fix for the previous commit which didn't consider a new file.

commit 3777c81f89c245d99fa40d4ac39bdbbcad93d200
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 20:48:57 2009 -0400

    Fixed pwmd_open/save_async2() when the file is cached on the server.
    
    Fixed commit 592815d. Don't call close the TCP FD when not doing a DNS
    or CONNECT.

commit e6e9505fb4707789f396737dc46e0d0f7a27ea5e
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 20:07:53 2009 -0400

    Fixed using a specified passphrase when using pwmd_open/save_async().

commit 592815d8132d9540a8646f9f351bc8a1153f51b2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 19:44:58 2009 -0400

    Don't close the TCP FD when an async command completes.

commit 51aedbd68ff479fe6f27be6093e567d41c5ac06d
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 26 19:19:32 2009 -0400

    Fixed a pwmd_tcp_connect_async() segfault.

commit 67ed21d67e9658822e943a6aa64527aa8d7ba69b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 25 21:00:12 2009 -0400

    Added pwmd_get_fd2() to return the FD used by pwmd_open_async2() and
    pwmd_save_async2().

commit edb04a5bfbe0f5dddaa05cf57436f9dc3f38bc85
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 25 20:53:07 2009 -0400

    Removed pwmd_terminate_pinentry(). There is no need for it that I can
    tell.

commit f7f5435f252a53bcd74428446a00f1bcd1fbae70
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 25 20:36:24 2009 -0400

    Removed pwmd_open_nb(), pwmd_save_nb(), pwmd_open_nb_finalize() and
    pwmd_save_nb_finalize(). These have been replaced with
    pwmd_open_async2() and pwmd_save_async2() which are asynchronous
    commands that should call pwmd_process() but still have the same
    functionality as the old functions.

commit 66d2f235b7b0f3cc0b3217cdcd08b7abae9f9418
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 25 19:26:58 2009 -0400

    Reset the state after command completion.

commit d86ed4331581394ce92558525bc564e0f5dc3dad
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 25 18:56:33 2009 -0400

    Fixed pwmd_get_hostkey_async() to reset the state.

commit d594b61bb954a67e019e92cbb5586ae932365a29
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 24 23:00:51 2009 -0400

    Set the pwmd_process() result when finished. Fixes
    pwmd_get_hostkey_async(). Note that the result should be freed with
    pwmd_free(). It is not freed in pwmd_close().

commit 96862f9db209e895752d114bdab719c57bf45008
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 24 22:50:46 2009 -0400

    pwmd_calloc() not pwmd_malloc() in pwmd_new().

commit dda5ee09f369c2beaf475fe91871fc3131a14e88
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 24 20:45:01 2009 -0400

    Let pwmd_open_nb() use PWMD_OPTION_PINENTRY_TIMEOUT rather than a
    extra parameter.

commit 0ea63d327065b2cbd6f6d0f1a338fa75b800acc6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 24 19:32:02 2009 -0400

    Re-add pwmd_pending_line(). The difference is that assuan_read_line()
    won't be called. Rather pwmd_process() should be called but only when
    not in a command.

commit 6dac91441f212c7a63e7d53e8d25b98825bc3b30
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Mar 23 22:02:07 2009 -0400

    API changes:
            removed: pwmd_pending_line(), pwmd_assuan_ctx(),
                     pwmd_free_result(), pwmd_get_result(), pwmd_finalize()
    
            added: pwmd_new(), pwmd_get_fd(), pwmd_free(), pwmd_malloc(),
                   pwmd_calloc(), pwmd_realloc(), pwmd_strdup()
    
    pwmd_new() returns a handle for use with all functions. Functions that
    retured a pwm_t now return a gpg_error_t. The 'name' argument when set,
    will send "OPTION CLIENT NAME=name" to the server after the connection
    is made.
    
    A 'result' argument is now passed to pwmd_process() which replaces
    pwmd_finalize() and pwmd_get_result() (needs work).
    
    pwmd_password_fn no longer uses a pwm_t parameter; only user data.
    
    Fixed _getpwuid().
    
    pwmd_command() will only set 'result' to NULL if 'result' is not NULL.
    Another fix which should have been included in commit 9a7055d.

commit a42d04fe8ccfe8634b5bd4a3011c8334b377e275
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Mar 23 19:42:34 2009 -0400

     #include <stdarg.h>

commit 9b7a1d9752f6cd1764c883d93bfcd0642df1f535
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 13:16:50 2009 -0400

    Public/private symbol cleanup.

commit 1cf623c6c4fbbfcad1f1543f73d494a2f25e4d7a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 13:00:00 2009 -0400

    Use ttyname_r().

commit e5ab59627d117f2a7f543766c368c0d2094f80f6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 12:48:22 2009 -0400

    Use getpwuid_r().

commit d3b13cc50badb447ec81ef73a61148aacb2917dd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 12:25:44 2009 -0400

    If username is NULL when passed to pwmd_tcp_connect(), use the current
    user gotten from getpwuid() as the username.

commit e2eb08a6d4089cfa8d988611d7766369bb0a0830
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 12:15:42 2009 -0400

    WITH_LIBPTH conditional fixes.

commit 8c90ea15ec4def110bc09b77706ce9b426b05153
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 12:02:26 2009 -0400

    Added pwmd_strerror_r().

commit 0cdbb5195c19a63047159f064f1083b0fd714326
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 11:51:37 2009 -0400

    Fixed pwm->result without TCP support.
    
    Have pwmd_process() return GPG_ERR_INV_STATE when nessicary.

commit 85a4f47accc21315513d749def883ae81c66846c
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 11:37:24 2009 -0400

    Better pwmc argument checking with tcp options.

commit 386d0ee72c2b049d6708ca3156f2e998e9e92b23
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 11:32:18 2009 -0400

    Allow -y for pinentry retries even without DEBUG.

commit 18abcf2b4cf7f8afe0e73258c1529002bbb02fbe
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 11:26:12 2009 -0400

    --disable-tcp compile time fixes and other minor cleanups.

commit 87a539f22aae44d38a675dc5a6cb2f4da8d3997b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 11:03:42 2009 -0400

    Fixed a typo in pwmc.c preventing reading STDIN.

commit e77a7bc01c1fc54d4b6716c36134dc8746fa9486
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 10:46:42 2009 -0400

    Let pwmd_process() work without a running command. This is a fix for
    0f2645 (the revert, actually). When a client calls this when no existing
    asynchronous command is running, the assuan NOP command is sent and the
    result code (rc) is set to the result of this command. This will let
    libassuan process pending status messages and pass them to
    PWMD_OPTION_STATUS_FUNC.

commit 9a7055dab22a7a4cd0349d8abb16b098940802f2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Mar 15 10:22:39 2009 -0400

    Make sure the result of a pwmd_command() is not NULL when there is a
    command result.

commit 1d6ba2ae776d63c5591ab1fd3df9682147c3e4d9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 14 21:23:46 2009 -0400

    Revert "Let pwmd_process() work when not inside a command. This is needed so"
    
    This reverts commit 0f26455c95b2e6d2667da49d88c1336f6b3dbf49.
    
    Brain fart. This would break the asynchronous OPEN and SAVE commands.
    Maybe I'll get rid of all the asynchronous functions and make the client
    use threads instead.

commit 74960a9c8eb366757c8ab65393bb544724351593
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 14 19:56:31 2009 -0400

    Fixed a segfault when after a remote client terminates.

commit 0f26455c95b2e6d2667da49d88c1336f6b3dbf49
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Mar 14 19:30:21 2009 -0400

    Let pwmd_process() work when not inside a command. This is needed so
    pending status messages can be parsed. It will return ASYNC_INIT when no
    (asynchronous) command is running.

commit 9fd44452073e47486c04e1ebe09a1230e42e9409
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Mar 13 21:23:40 2009 -0400

    Finalized commit 65d085f. Should be back to normal now.

commit b7cc7c49ce8877fa075d9f3bfc23f4935850b798
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Feb 25 19:35:40 2009 -0500

    Compile-time fix for FreeBSD when trying to link with libintl.

commit dc43b0b9a756c17e65033b7907a4caefb5f30dc6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Feb 25 19:13:24 2009 -0500

    Compile-time fix for --disable-nls.

commit e28d1813e84eb266567ee3d9354e41b98928c689
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 21:03:39 2009 -0500

    Updated pwmc.c to use pwmd_setopt().

commit 219e38933510a0efb7408e14f96fa71fdac95a93
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 20:54:28 2009 -0500

    Added PWMD_OPTION_PINENTRY_TIMEOUT. Only useful when pwmd is used as the
    passphrase retrieval method.

commit 4cf1449a30c21e8de0f464e39dbce1068b55e73a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 20:42:23 2009 -0500

    Let pwmd_setopt() set pwmd options directly when PWMD_OPTION_PINENTRY is
    unset. It's less confusing for the client programmer although letting
    the client send the OPTION via pwmd_command() will still work. It's
    better this way though since the internal structures are updated in case
    the local pinentry is used as a fallback is the remote pwmd pinentry
    fails for some reason.

commit 46d7486fdc53c10676578147498b13f57a54319b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 20:17:45 2009 -0500

    Added pwmc command line options -C and -M to set LC_CTYPE and
    LC_MESSAGES in the pinentry process. Requires pwmd 1.18 (not yet
    released).

commit 82ead5e5422a29217c794c547cf67454d9ec9e34
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 19:42:15 2009 -0500

    Added PWMD_OPTION_PINENTRY_LC_CTYPE and
    PWMD_OPTION_PINENTRY_LC_MESSAGES.

commit a423e6471f222afe34c81695df8d2d7e7fee4a2f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 18:50:05 2009 -0500

    In do_pwmd_save(), check for the user supplied password function first
    before pinentry like do_pwmd_open() does.
    
    Also fixed freeing the user defined password (update to commit dbb11e9).

commit 6f2d37596314d2119f840b7d97a4b945776d16fb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 18:41:46 2009 -0500

    Reset pwm->pid in pwmd_terminate_pinentry().

commit 33e9f4e52ee38fc483cac38d08a09bf4688927f8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Feb 24 18:31:48 2009 -0500

    Make sure pwmd_command_ap() has a handle and command.

commit d9fb3c913a432ed19a22021c3ea15cd7da30e70f
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 22:16:15 2009 -0500

    Compile time fix for -DMEM_DEBUG.
    
    Don't link with mem.o when MEM_DEBUG is defined.

commit aca3d621984a98d22a284b3f15a4f3015674bcdd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 21:54:58 2009 -0500

    Don't try to xfree the password returned by a user set password
    function.

commit 5d6e6015e30d5668f5397f7ab88cf4274515286d
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 21:50:05 2009 -0500

    Updated the copyright header.

commit f0c0420b6da2d7336c4d9dd52e617496bc3ac020
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 21:31:32 2009 -0500

    Added warn_unused_result attribute to pwmd_command_ap().

commit 0eea9b038f058db51d23d307ec85948680400a7b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 21:29:30 2009 -0500

    Fixed mem.c to use a mutex when accessing the memory list. This fixes a
    potential segfault when more than one pwm_t handle is used.

commit 46acd0b47ad5b8f32345e06cbd53619060669be5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Mon Feb 23 20:31:26 2009 -0500

    Added pwmd_command_ap(). This makes pwmd_command() a wrapper around this
    new function.

commit 65d085ffcc4ce9eb8022870be746e282a08bf6a0
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Mar 13 20:21:31 2009 -0400

    I messed up the directory tree making it hard to pull changes from
    the v5.0.x branch. So this is a temporary commit to move src/* to the
    root tree so pulling in changes is possible. There is probably a better
    way to do this, but I don't know of it.

commit 1ba67b81299172faa439cf387579744305f201eb
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 12 21:25:07 2009 -0400

    Fixed some memory leaks.
    
    Return GPG_ERR_INV_STATE rather than GPG_ERR_UNEXPECTED.

commit 298b61bd71c2f485b867605af073d78a6fe86cd9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 12 20:49:49 2009 -0400

    Added pwmd_get_hostkey_async(). Acts like pwmd_tcp_connect_async() so
    pwmd_process() will have to be called until ASYNC_DONE is returned. The
    result is gotten with the new pwmd_get_result() which should not be
    freed or modified and should be gotten before pwmd_finalize() is called.
    In a later version pwmd_finalize() will return a result and remove this
    new temporary function.

commit 883946754777fd4e02fd7e86513d3293f53905e5
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Mar 12 20:11:17 2009 -0400

    Fixed pwmd_tcp_connect_async().

commit 66dfae9665344c0ceaace8bc8226522c623f8e62
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 11 23:01:06 2009 -0400

    Allow comments beginning with '#' in the known host file.

commit 605c780f7538c64c0359f6c5a6fcc0edfbc58e06
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 11 22:47:23 2009 -0400

    Changed the arguments to pwmd_tcp_connect() and
    pwmd_tcp_connect_async(). Require public key authentication for the time
    being.
    
    Validate the server host key against a known hosts file. The format is
    different than the usual SSH known_hosts format so retrieving the SHA1
    host key is possible by using the new pwmd_get_hostkey() function and
    saving the result (which must be freed with pwmd_free_result()). There
    really should be a pwmd_get_hostkey_async(). Maybe later.
    
    Fixed pwmc command line options and descriptions.

commit 991bd4136850b46f468e853f9a6c1f7a201f7b30
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Mar 11 19:21:41 2009 -0400

    Use secure memory functions.

commit 60039d595bf8f9c0bcfa5199bb136cf5faab32a7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Tue Mar 10 21:34:17 2009 -0400

    An alternate way to do remote connections. This will probably be the new
    method depending on how things work out. The pwmd_tcp_connect() function
    requires a hostname, port, SSH identity file location, username and
    password (optional, not used yet). The identity file is used for
    authentication to the remote host's SSH server. The client (pwmc)
    connects to the server with the specified username, and the SSH server
    starts 'socat' (or something similar) to connect the input and output of
    the SSH channel to pwmd. Prepend:
    
        command="socat gopen:$HOME/.pwmd/socket -"
    
    to ~/.ssh/.authorized_keys for the associated identify hash on the SSH server).

commit 33a170b4b0bf2c418f24bf0f2aa05ded13785486
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Wed Jan 14 22:45:50 2009 -0500

    Added pwmd_command_ap().

commit 367376bc0a0bd645c34c3244a490c153f5e9c3c8
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Dec 13 18:06:52 2008 -0500

    Added doc/ and src/.

commit f345e8bec3b0d58df503d04aff0b6a5731437e1a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Dec 13 10:12:20 2008 -0500

    Fixed 'make distcheck'.

commit 74c63a103ac659bb04b833b1f2fcbc2ad503f5de
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Dec 12 21:41:19 2008 -0500

    Use the new pwmd VERSION command to determine valid iteration values.

commit 0f1359297219724145d39f9a96ba3c1c84c8347c
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Dec 12 20:55:31 2008 -0500

    Prefix all libassuan symbols with _pwmd_ to prevent collisions with
    applications that use libassuan.

commit 8bb216676b4f9cc0392c443575b5e8f3138ea559
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Dec 12 20:44:09 2008 -0500

    Make libassuan a convenience library to fix libtool complaining about
    portability issues.

commit 4b059cf6fc3688844a0699f2ee5eb5b4d9dbb505
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Dec 11 21:08:19 2008 -0500

    Added assuan_socket_connect_fd() and assuan_set_finish_handler().

commit 28909e7e80196de74bebd2a2ad6061f7841f36d0
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Dec 11 21:05:21 2008 -0500

    Added libassuan.

commit 7832a15999ac0c167a001f59a14d052a6e14da95
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Nov 22 13:45:01 2008 -0500

    Fix for pwmd_assuan_ctx(). Don't declare assuan_context_t. Make the ctx
    parameter void*.

commit 4c7ea20298e0cec6e14b7d8194c486a714e3efa7
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Nov 16 11:10:13 2008 -0500

    Fix for ARES_EDESTRUCTION which is sent to the callback after
    ares_destroy() is called. It was referencing the free'd tcp_conn.

commit 9a368458118ff5278542405da5be7a1460e09804
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Nov 16 11:09:20 2008 -0500

    Dont free the hostent until the connection is complete or fails.

commit 98476c2fb7b6d332d168b1e168c1f0b76145f576
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Nov 16 10:18:20 2008 -0500

    Use libcares instead of libevdns for non-blocking DNS lookups. This
    library supports IPv6 among other things.
    
    Fixed do_connect() to use pth_connect() when needed.

commit e62454dc57f876353a40953610d14a292d8b69fd
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 22:48:20 2008 -0500

    Fixed libpth support with --enable-tcp.

commit bd1668e8104a393774117b1c3e2490640ddd35df
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 22:06:19 2008 -0500

    pwmd_tcp_connect() and pwmd_tcp_connect_async() require two more
    parameters: "verify" to verify the peer certificate hostname when set,
    and "priority" which is passed to gnutls_priority_set_direct()
    (SECURE256 by default).
    
    Also added pwmc command line options -V and -C to set these new
    parameters.

commit 74e0b8bfe53331eea216eda5db19c114fd5ed919
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 22:00:39 2008 -0500

    Revert "Added PWMD_OPTION_VERIFY_HOSTNAME and pwmc option -V. This will verify"
    
    This reverts commit 775ddf8c3dde39c783cdf9bb8d7916148ca897f3.

commit 775ddf8c3dde39c783cdf9bb8d7916148ca897f3
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 21:03:27 2008 -0500

    Added PWMD_OPTION_VERIFY_HOSTNAME and pwmc option -V. This will verify
    the peers hostname in the certificate when 1. The default is 0.

commit eacf521b6aa942a6f312a832d7af4e0674911b03
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 20:47:04 2008 -0500

    Fixed checking the entire peer certificate list.

commit 210ca246deee60d0e5f81ecd788d9cf6afa0f730
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Thu Nov 13 20:34:45 2008 -0500

    Added EPWMD_FILE_ACCESS.

commit b832b3d7b4fbc8002e9e0fc4982fea812743f216
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Nov 8 12:57:38 2008 -0500

    Require libassuan v1.0.5 or later.

commit b83bb9713c4008ba04869135d45010e91b7b7441
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Nov 2 20:08:49 2008 -0500

    When any of the gnutls_() functions fail in _tls_init() print the error via
    gnutls_perror() and return GPG_ERR_INV_CERT_OBJ.
    
    Fixed a couple double free()'s when certificate verification failed.

commit 5907a56fe241a438c367a9801e762a46440082a6
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Nov 2 19:04:31 2008 -0500

    Have pwmc show the hostname in the error message when connecting to a remote
    host fails.

commit f2e844c750f2f9d0ae5faf5bea867037dd02b444
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Fri Oct 31 19:42:51 2008 -0400

    Use "passphrase" instead of "password" in visable strings.

commit 1106143f77af5e6f149acf33da68bf237266badf
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 28 18:41:29 2008 -0400

    Small fix for the previous merge.

commit db24bbe5cc47a5f4984c4e65400807d8436b54bd
Merge: 28a8195 4aa3f3b
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 28 18:37:53 2008 -0400

    Merge branch 'master' into exp

commit 28a81953c32ee4636a8a2f8304b7029a1278ea46
Merge: 4ba6771 e0932f1
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Sep 27 23:08:47 2008 -0400

    Merge branch 'master' into exp

commit 4ba677173ae43f7ce457ed8b6f3e9d4ff86be883
Merge: 4aaa4c0 d8cf232
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sat Sep 27 22:51:25 2008 -0400

    Merge branch 'master' into exp

commit 4aaa4c01bf3745b04e813de4727726ddef424890
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 21 21:54:24 2008 -0400

    More preprocessor conditional fixes.

commit b1560989360dec44c85d7b318f1d55d92d23995a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 21 21:27:55 2008 -0400

    Fixed pwmc to use HAVE_LIBGNUTLS rather than WITH_GNUTLS.

commit b5c7d931d418b58f65cbd200bef6316c9038fff9
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 21 21:14:40 2008 -0400

    Added --disable-tcp to configure. The default is enabled and will
    require both libgnutls and libevent.
    
    Renamed USE_PINENTRY to WITH_PINENTRY.

commit 169304b5e4c0b8fa012b405b8823f6b3b8d38c7a
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 21 13:11:29 2008 -0400

    Unoffical pwmd_tcp_connect_async() support. Requires libevent to do
    asynchronous DNS lookups.
    
    Note that this and the previous commit need a modified libassuan. I
    posted a patch to gnupg-devel that adds assuan_socket_connect_fd() and
    assuan_set_finish_handler() which is required for these new functions
    to work. They haven't been included upstream and that's why these are
    unofficial/experimental.

commit 47abed1ff4b9c3060e7bdba51800bae1d66583a2
Author: Ben Kibbey <bjk@luxsci.net>
Date:   Sun Sep 21 13:05:20 2008 -0400

    Unofficial pwmd_tcp_connect() to a remote server. GnuTLS is used for
    encryption and client certificate authentication.
