libPWMD v5.0.9
--------------
Don't declare assuan_context_t in pwmd_assuan_ctx(). Make the ctx parameter a
void *. This fixes requiring assuan.h.

Added pwmd_command_ap().

Fixed mem.c to use a mutex when accessing the memory list.

Added PWMD_OPTION_PINENTRY_LC_CTYPE and PWMD_OPTION_PINENTRY_LC_MESSAGES.
Requires pwmd v1.18 when PWMD_OPTION_PINENTRY is unset. This also adds pwmc
command line options -C and -M.

pwmd_setopt() will both send all pinentry options to pwmd when
PWMD_OPTION_PINENTRY is unset, and update the pwm handle to the new values.
This should be less confusing for client developers. Setting pwmd pinentry
options via pwmd_command() is still supported.

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

A few bugfixes. See ChangeLog for details.


libPWMD v5.0.8
--------------
Ported to libpth. Two versions of libpwmd will be built when libpth is
available and --with-pth is passed to configure (the default). The libpth
version will be called libpwmd-pth and clients should link with -lpwmd-pth or
use the libpwmd-pth.pc pkg-config metadata file. Pass --without-pth to
configure to disable libpth support.

pwmd_open_nb(), pwmd_save_nb(), pwmd_open_nb_finalize() and
pwmd_save_nb_finalize() are no longer flagged as deprecated. Clients that
connect to a pwmd that cannot use pinentry can use these functions to locally
get a passphrase from pinentry.

pwmd_open_nb() and pwmd_save_nb() will set the error code to zero before
returning a valid file descriptor. Only for convenience.


libPWMD v5.0.7
--------------
There is now a GIT repository allowing anonymous checkouts and a web interface
at http://repo.or.cz/w/libpwmd.git. To clone the repository:

    git clone git://repo.or.cz/libpwmd.git

    To get the latest changes:

    git pull

Fixed setting the pinentry title string when an invalid password was entered.

g++ compile time fix.


libPWMD v5.0.6
--------------
pwmc now sends the LOCK command after opening the data file.

Added pwmc command line option -t to specify the pinentry timeout.

Requires pinentry 0.7.5 or later when using pwmd_open_nb(). This version uses
gpg error codes.

pwmd_open() now uses pwmd's pinentry method rather than forking. This makes
version 1.11 of pwmd a requirement.

pwmd_open_async() now honors PWMD_OPTION_PINENTRY_TRIES.


libPWMD v5.0.5
--------------
Fixed pwmd_process() to make sure all pending data has read.

A couple minor bugfixes.


libPWMD v5.0.4
--------------
Added pwmc command line option -i to specify the number of iterations when
saving (-S). Requires pwmd v1.9.


libPWMD v5.0.3
--------------
This release is mainly fixes and features for asynchronous clients.

Added pwmd_assuan_ctx() to return both the assuan context and socket file
descriptor associated with the specified pwm_t handle.

Added pwmd_pending_line() which is a wrapper around assuan_pending_line() and
assuan_read_line().

Don't return an error if the data file is unreadable when pwmd_open() is
called.

The socket file descriptor is set to block when doing an INQUIRE. Fixes
GPG_ERR_EAGAIN being returned from assuan_transact().

Fixed status messages when using pwmd_process().

Removed assuan.h client dependency.


libPWMD v5.0.2
--------------
Added pwmd_open_async(), pwmd_save_async(), pwmd_process(), pwmd_finalize()
and pwmd_async_t. This will replace pwmd_open_nb(), pwmd_open_nb_finalize(),
pwmd_save_nb(), pwmd_save_nb_finalize() and pwmd_nb_state_t in a future
version. These new functions allow pwmd to use its pinentry method rather than
having libpwmd fork() and launch pinentry for nonblocking IO.

When DEBUG is defined, a few new command line options are available to pwmc to
test password retrieval methods.


libPWMD v5.0.1
--------------
Let pwmc handle the new IMPORT command.

Fixed disconnecting pinentry.

When the inquire callback returns GPG_ERR_EOF and 'result' is not NULL, send
the rest of 'result' before terminating the callback.


libPWMD v5.0.0
--------------
This version breaks backward compatibility and requires pwmd 1.4 or later. The
reason is because of how commands that use the INQUIRE response (the "STORE"
command) from the server has changed. To do a INQUIRE command, use the new
pwmd_inquire() function and not pwmd_command(). The reason for this is to use
less memory when large amounts of data is to be sent. The entire data doesn't
need to be stored in a buffer before sending. It can be sent ASSUAN_LINELENGTH
bytes at a time (~1000) and also removes the one-line-per-command restriction;
the data can contain newline characters. See pwmc.c for example usage.

Updated to use new pwmd error codes.

Fixed pwmd_connect() not setting the error parameter on success.

Only one command can be processed with pwmc do to the new INQUIRE code. This
removes pwmc command line option -E.

Added pwmc command line option -I to read INQUIRE (STORE command) data
from the specified file descriptor. Reading from a file descriptor rather from
a pipe can save memory when large amounts of data is being sent. See the pwmc
manual page for example usage.

The result of a pwmc command is not modified at all (newline characters).

Send OPTION CLIENT NAME=pwmc when pwmc connects to the server.

Server status messages are printed to stderr by default. Use the new command
line option -X to suppress status messages.

Since pwmd 1.4 includes it's own pinentry support, setting
PWMD_OPTION_PINENTRY with pwmd_setopt() will send "OPTION PINENTRY=0" to the
server to prevent pwmd from using its pinentry support.

Renamed 'configure' option --with-pinentry-path to --with-pinentry.

Look for ~/.pwmd/pinentry.conf rather than ~/.pwmd/env. The variable names
have also changed. They are now: TTYNAME, TTYTYPE, DISPLAY and PATH.

A few bugfixes. See ChangeLog for details.


libPWMD v4.0.3
--------------
Added --with-pinentry-path to configure to set the default location of the
pinentry binary. The default is /usr/bin/pinentry.

The timeout (if set) is cancelled after pinentry returns since this means
input was read.

PWMD no longer returns EPWMD_FILE_NOT_FOUND anywhere. It is up to the client
to figure out if the file is new or not by using the GETCONFIG protocol
command.

Added the -d command line switch to pwmc. This will redirect any command
output to the specified file descriptor. If your using pinentry to retrieve a
password from the same tty as pwmc and redirecting output, this is needed.

Added pwmc command line options -D, -T and -N. These can set the pinentry
display, tty and terminal type.

A couple of minor bugfixes.


libPWMD v4.0.2
--------------
Added gettext support.

Don't free the password when set with pwmd_setopt() until pwmd_close() is
called. Fixes pwmc -p for example.

Fixed pwmc and looping when an error occurs and pinentry is used to get the
password.


libPWMD v4.0.1
--------------
FreeBSD compile-time fix.

pwmd_open() will return GPG_ERR_TIMEOUT after pwmd_terminate_pinentry() is
called.

Warn about unused function results at compile-time.


libPWMD v4.0.0
--------------
Fixed gpg-error descriptions. Client's linked to this version of libpwmd
should be using pwmd v0.10 or later.

Made the pwm_t structure private.

Library functions returning PWMD_OK or PWMD_ERROR now are prototyped to return
a type of gpg_error_t. This removes the extra needed parameter when calling
these functions. When these functions succeed, 0 is returned. Otherwise it's
an error code that pwmd_strerror() can describe.

Renamed pwmd_option to pwmd_option_t.

Added PWMD_OPTION_STATUS_FUNC and PWMD_OPTION_STATUS_DATA. The set function
will be called when pwmd sends a status (S) line. The function should return 0
on success or a gpg_error_t which will fail the current command with the
returned error code.

Renamed PWMD_OPTION_[TITLE|PROMPT|DESC] to PWMD_OPTION_PINENTRY_...

When using pinentry for password retrieval, PWMD_OPTION_PINENTRY_TRIES can
be set to specify the number of times before giving up after an invalid
password.

The custom memory de/allocator symbols are now hidden.

Renamed pwmd_password_func to pwmd_password_fn. A pwm_t * is also a required
argument.

Renamed pwmd_status_func to pwmd_status_fn.

Removed pwmd_get_password(). This has been replaced by pwmd_open_nb() and
pwmd_save_nb(). These function's will return a file descriptor that select()
can use when a file isn't cached. When available for a read(), a
pwmd_nb_status_t should be read and then passed to pwmd_open_nb_finalize() or
pwmd_save_nb_finalize() to update the pwm handle. pwmd_open_nb() also has an
option to specify the number of seconds until the pinentry process will
timeout.

Added pwmd_terminate_pinentry() which will kill the pinentry process
associated with the specified pwm handle. Use this if you need a pinentry
timeout but don't call pwmd_open_nb().

Added pwmc command line option -t to specified the pinentry timeout.

When a file ~/.pwmd/env exists, it is read before calling pinentry. This file
contains NAME=VALUE pinentry settings where NAME is one of TTY, TERM or
DISPLAY. These settings will overwrite the ones set by pwmd_setopt(). This
allows a daemon process to use pinentry after it's cache entry has been
removed.

Quite a few API changes and bugfixes. Read libpwmd.3 for details. 


libPWMD v3.0.0
--------------
Now uses the assuan protocol for communicating with pwmd. This changes things
quite a bit. Read on...

Uses more secure memory allocation. Kinda. It mainly just zero's out what is
allocated before free()'ing it.

Added pwmd_init(). Call this before anything else.

Added pwmd_open() and pwmd_save(). This removes PWMD_OPEN and PWMD_SAVE.

Removed PWMD_COMMAND. pwmd_command() now accepts a format string as the
command.

Added pwmd_free_result(). Use this to free a result from pwmd_command().

Removed PWMD_SETOPT. Changed to pwmd_setopt().

Added options for setting up the pinentry terminal and display.

Added pwmd_get_password(). This is a nonblocking way of calling pinentry. It
returns a file descriptor that select() can use to read from when a password
is ready to be read from with read() (mostly ripped from Elinks'
start_thread()). Thanks Kalle Olavi Niemitalo <kon@iki.fi> for the idea.

Now uses libgpg-error error codes.

Fixed pwmc and the BYE command.

A few other changes. Read the libpwmd.h header file, libpwmd.3 and ChangeLog
for all the details.


libPWMD v2.0.3
--------------
Split pwmd and libpwmd into their own packages.

Added PWMD_SETOPT options PWMD_OPTION_PASSWORD_FUNC and
PWMD_OPTION_PASSWORD_DATA to specify a custom password retrieval function for
use with the PWMD_OPEN and PWMD_SAVE commands.

gpg-agent(1) is no longer used for interacting with pinentry(1). Now libassuan
calls pinentry directly. This adds PWMD_OPTION_PINENTRY_PATH to specify the
location of the pinentry program. The default is /usr/bin/pinentry. New
programs should use PWMD_OPTION_PINENTRY instead of PWMD_OPTION_USEAGENT and
EPWMD_PINENTRY_ERROR instead of EPWMD_AGENT_ERROR.


libPWMD v2.0.2
--------------
Added a manual page.

Removed pwmd_list_free(). The prototype disappeared but I forgot to remove the
code.


libPWMD v2.0.1
--------------
Restore the working directory after connecting to the socket.

Changed the gpg-agent title and description strings in pwmc.

Fixed a segfault when looking for the empty string in a result from
pwmd_command().


libPWMD v2.0.0
--------------
Most of the PWMD_* commands have been removed. PWMD_OPEN, PWMD_SAVE,
PWMD_SETOPT and the new PWMD_COMMAND remain. PWMD_COMMAND takes a char*
argument being the protocol command along with any argument to send to the
server. This is alot simpler and less error prone than before. Also the
library won't need to be updated if a protocol command changed or is added.

Fixed PWMD_SAVE and asking for a password when the file was cached.

Added pwmc. This is a command line client for pwmd. It reads protocol commands
from stdin.

Removed pwmd_base64_encode() and pwmd_base64_decode().

Added a pkg-config meta file.


libPWMD v1.0.1
--------------
Added PWMD_ATTR_GET to get an attribute value from an element path.

pwmd_base64_decode() bugfix. Don't assume the return value is a character
array by nul-terminating it.

Added pwmd_list_free() to free a "list" result.

Can compile with g++ and maybe other C++ compilers.

Fixed some memory leaks.

Bugfix for the protocol parser.


libPWMD v1.0.0
--------------
Changed the version number as suggested by the libtool docs.

pwmd_base64_decode() bugfix. The returned string wasn't NULL terminated.

Updates for the OPEN and SAVE protocol commands. libPWMD no longer base64
encodes the key.

Updates for the new ATTR protocol command.


libPWMD v0.0.1
--------------
Initial release.
